Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Refer Intelligent Slicing flow for complete closed loop sequence. Existing ML MS (not officially exposed to ONAP) requires certain enhancements to satisfy the intent guarantee. PM data generated for the closed loop realization is based on the RAN network elements - GNBCUCPFunction .

Overview


Prerequisites:

Functionality of ML block is divided into three parts. 

  1. Model Training (Offline) and validation
  2. Prediction

Step1: ML Offline Training

This step requires a huge amount of historical data for the analysis. It requires both the input (PM metrics) and output data (intent). 

  1. Configuration of E2E network slices  (~ 5 slices)
  2. RAN Simulator, VES Collector, PM Mapper, Data File Collector, Slice Analysis MS, ML Prediction MS, SO, Policy, SDNR, Config DB components should be up and running
  3. SFTP setup to store the PM messages from RAN Simulator
  4. Manual configurations are detailed at Closed Loop for Network Slicing
  5. To Train and predict Machine learning model, following ML frameworks are used Tensorflow, Keras and sklearn.


Functionality of ML block is divided into two parts. 

  1. Model Training (Offline) and validation
  2. Prediction

Step 1: ML Offline Training

This step requires a huge amount of historical data for the analysis. It requires both the input (PM metrics) and output data (intent). 

Configure E2E Slice (shared or non-shared) that need to Configure E2E Slice (shared or non-shared) that need to be trained.

draw.io Diagram
bordertrue
diagramNameOffline Training
simpleViewerfalse
width
linksauto
tbstyletop
lboxtrue
diagramWidth811
revision3

...

  • The training modules trigger PM data generation for slices using the below RAN Simulator API topics
  • The process typically waits for more data to be generated. Currently it waits for 2 hours.

...

  • After the time elapse, the training modules perform stop PM data generated for slices using following topicAPI.
Code Block
curl -X POST -H "Content-Type:  text/plain" http://localhost:8081/ransim/api/stopIntelligentSlicingPmData -i 
  • The Training module start to get the acquired data for all the slices and cells using PM Mapper topic
Code Block
curl -X POST -H "Content-Type:  text/plain" https://localhost:8081/events/org.onap.dmaap.mr.PERFORMANCE_MEASUREMENTS/mlms-cg/mlms-cid 
  • While acquiring each slice and cell data, the training module also acquire the intent configuration for each cell and slices. using following topic.Config DB API. Config DB will be replaced by CPS in the next release.
Code Block
curl -X POST -H "Content-Type:  text/plain" https://localhost:8081/api/sdnc-config-db/v4/nrcellcu-configdata/1/snssai/01-B989BD
  • Following are the processes involved in the training the model.

Image Added

  • Once the all the training data are acquired, the training module performs preprocessing to convert the data in json from JSON format into Dictionary format
  • Data are split into training and validation datasets
  • The expected results for each time instance cell data are synthetically generated based on rule conditions and the cell intends.
  • The training module perform Training against an LSTM model.
  • The Training model file are archived.
  • The results are manually verified .

PM file format

  • In Preprocessing the training Data is normalized and Transformed.
  • The preprocessed data (PM data Parameters data content) for all slices and cells which are in time series are converted into forecast series.
    • The forecast series is cells PM data parameters for current time instance, Plus the previous past or last four time instance data.
    • Similar forecast series data is prepared for all the cells in the slice.
  • Data are split into training and validation datasets
  • The expected results for each time instance cell data are synthetically generated based on rule conditions and the cell intends.
    •  Sample training data referred at following source code location components/ml-prediction-ms/train/ExampleSample_train_data_s1.xlsx
    • P.S: This file is only for reference, on how the training data are prepared. In actual training process, the data are fetched  RANSim topics.
    • Following wiki attached excel file contains sample cell data from a slice. Here each of the cell's timeseries data will appended from first cells to the last cell along with respective its cells time series  to that  slice. or the cells are append successively within the slice. This action in training module results in large training data to train the model.
    • Spreadsheets
      containerTypePAGE
      documentIdExampleSample_train_data_s1_smaller.xlsx_0.ssc
      containerId117743292
      documentTitle
      titleExampleSample_train_data_s1_smaller.xlsx
      • Here on each cell parameters like PDUSessionSetupReq, PDUSessionSetupSucc & PDUSessionSetupFail are obtained from RANSim or PM Data Topics.
      • Parameter maxNumberOfConns_configured also obtained from configDB Topic. 
      • The prediction parameter for each timeseries are computed for each cells independently with respect to previous time series data.
        • By change in current ratio on PDUSessionSetupFail verses PDUSessionSetupReq minus the respective cells  previous time instance PDUSessionSetupFail verses PDUSessionSetupReq, this results in computation on +/- change percentage that needs to applied against the config data.
  • The training module perform Training against an LSTM model.
  • The Training model file are archived.
  • The results are manually verified .

PM file format

Expand
titleTraining data format

[
  "{\"event\": {\"commonEventHeader\": {\"domain\": \"perf3gpp\",\"eventId\": \"2ff40cb0-377b-49f6-acea-5c7893e53f07\",\"sequence\": 0,\"eventName\": \"perf3gpp_AcmeNode-Acme_pmMeasResult\",\"sourceName\": \"oteNB5309\",\"reportingEntityName\": \"\",\"priority\": \"Normal\",\"startEpochMicrosec\": 1602686360469,\"lastEpochMicrosec\": 1602686360474,\"version\": \"4.0\",\"vesEventListenerVersion\": \"7.1\",\"timeZoneOffset\": \"UTC+05:00\"},\"perf3gppFields\": {\"perf3gppFieldsVersion\": \"1.0\",\"measDataCollection\": {\"granularityPeriod\": 1602686360473,\"measuredEntityUserName\": \"\",\"measuredEntityDn\": \"cucpserver1\",\"measuredEntitySoftwareVersion\": \"r0.1\",\"measInfoList\": [{\"measInfoId\": {\"sMeasInfoId\": \"measInfoIsVal\"},\"measTypes\": {\"sMeasTypesList\":[\"SM.PDUSessionSetupReq.0011-0010\",\"SM.PDUSessionSetupSucc.0011-0010\",\"SM.PDUSessionSetupFail.0\",\"SM.PDUSessionSetupReq.0010-1110\",\"SM.PDUSessionSetupSucc.0010-1110\"]},\"measValuesList\": [{\"measObjInstId\": \"113025289

Expand
titleTraining data format

[
  "{\"event\": {\"commonEventHeader\": {\"domain\": \"perf3gpp\",\"eventId\": \"2ff40cb0-377b-49f6-acea-5c7893e53f07\",\"sequence\": 0,\"eventName\": \"perf3gpp_AcmeNode-Acme_pmMeasResult\",\"sourceName\": \"oteNB5309\",\"reportingEntityName\": \"\",\"priority\": \"Normal\",\"startEpochMicrosec\": 1602686360469,\"lastEpochMicrosec\": 1602686360474,\"version\": \"4.0\",\"vesEventListenerVersion\": \"7.1\",\"timeZoneOffset\": \"UTC+05:00\"},\"perf3gppFields\": {\"perf3gppFieldsVersion\": \"1.0\",\"measDataCollection\": {\"granularityPeriod\": 1602686360473,\"measuredEntityUserName\": \"\",\"measuredEntityDn\": \"cucpserver1\",\"measuredEntitySoftwareVersion\": \"r0.1\",\"measInfoList\": [{\"measInfoId\": {\"sMeasInfoId\": \"measInfoIsVal\"},\"measTypes\": {\"sMeasTypesList\":[\"SM.PDUSessionSetupReq.0011-0010\",\"SM.PDUSessionSetupSucc.0011-0010\",\"SM.PDUSessionSetupFail.0\",\"SM.PDUSessionSetupReq.0010-1110\",\"SM.PDUSessionSetupSucc.0010-1110\"]},\"measValuesList\": [{\"measObjInstId\": \"113025289\",\"suspectFlag\": \"false\",\"measResults\": [{\"p\": 4,\"sValue\": \"4364\"},{\"p\": 5,\"sValue\": \"2739\"},{\"p\": 3,\"sValue\": \"1517\"}]},{\"measObjInstId\": \"113025290\",\"suspectFlag\": \"false\",\"measResults\": [{\"p\": 4,\"sValue\": \"4742\"},{\"p\": 5,\"sValue\": \"3184\"},{\"p\": 3,\"sValue\": \"1459\"}]},{\"measObjInstId\": \"113025296\",\"suspectFlag\": \"false\",\"measResults\": [{\"p\": 4,\"sValue\": \"5264\"},{\"p\": 5,\"sValue\": \"3545\"},{\"p\": 3,\"sValue\": \"1629\"}]},{\"measObjInstId\": \"82268687\",\"suspectFlag\": \"false\",\"measResults\": [{\"p\": 4,\"sValue\": \"69524364\"},{\"p\": 5,\"sValue\": \"43372739\"},{\"p\": 3,\"sValue\": \"23631517\"}]},{\"measObjInstId\": \"82268689113025290\",\"suspectFlag\": \"false\",\"measResults\": [{\"p\": 4,\"sValue\": \"42294742\"},{\"p\": 5,\"sValue\": \"30213184\"},{\"p\": 3,\"sValue\": \"11351459\"}]},{\"measObjInstId\": \"95697155113025296\",\"suspectFlag\": \"false\",\"measResults\": [{\"p\": 4,\"sValue\": \"43645264\"},{\"p\": 5,\"sValue\": \"32013545\"},{\"p\": 3,\"sValue\": \"10541629\"}]},{\"measObjInstId\": \"9569717482268687\",\"suspectFlag\": \"false\",\"measResults\": [{\"p\": 4,\"sValue\": \"70416952\"},{\"p\": 5,\"sValue\": \"42294337\"},{\"p\": 3,\"sValue\": \"25992363\"}]},{\"measObjInstId\": \"9569717582268689\",\"suspectFlag\": \"false\",\"measResults\": [{\"p\": 14,\"sValue\": \"35024229\"},{\"p\": 25,\"sValue\": \"25983021\"},{\"p\": 3,\"sValue\": \"8511135\"}]},{\"measObjInstId\": \"9569717695697155\",\"suspectFlag\": \"false\",\"measResults\": [{\"p\": 14,\"sValue\": \"48584364\"},{\"p\": 25,\"sValue\": \"34303201\"},{\"p\": 3,\"sValue\": \"12951054\"}]},{\"measObjInstId\": \"10359782595697174\",\"suspectFlag\": \"false\",\"measResults\": [{\"p\": 14,\"sValue\": \"51347041\"},{\"p\": 25,\"sValue\": \"31354229\"},{\"p\": 3,\"sValue\": \"18472599\"}]},{\"measObjInstId\": \"10359782695697175\",\"suspectFlag\": \"false\",\"measResults\": [{\"p\": 1,\"sValue\": \"47733502\"},{\"p\": 2,\"sValue\": \"30072598\"},{\"p\": 3,\"sValue\": \"1650851\"}]},{\"measObjInstId\": \"8432742595697176\",\"suspectFlag\": \"false\",\"measResults\": [{\"p\": 1,\"sValue\": \"45734858\"},{\"p\": 2,\"sValue\": \"33473430\"},{\"p\": 3,\"sValue\": \"11111295\"}]},{\"measObjInstId\": \"84327426103597825\",\"suspectFlag\": \"false\",\"measResults\": [{\"p\": 1,\"sValue\": \"43165134\"},{\"p\": 2,\"sValue\": \"31263135\"},{\"p\": 3,\"sValue\": \"11021847\"}]},{\"measObjInstId\": \"103593999103597826\",\"suspectFlag\": \"false\",\"measResults\": [{\"p\": 1,\"sValue\": \"53144773\"},{\"p\": 2,\"sValue\": \"32713007\"},{\"p\": 3,\"sValue\": \"1860\"}]},{\"measObjInstId\": \"103594000\",\"suspectFlag\": \"false\",\"measResults\": [{\"p\": 1,\"sValue\": \"5037\"},{\"p\": 2,\"sValue\": \"3732\"},{\"p\": 3,\"sValue\": \"1193\"}]}]}]}}}}"
]

Step2: Prediction

<update in progress>

To fetch the Slice Profile (intent) from config DB, below API can be used.

GET: http://localhost:8080/api/sdnc-config-db/v4/profile-config/{nSSAI}

The response will be in the form of:

{

    "dLThptPerSlice": 1,

    "uLThptPerSlice": 2,

    "maxNumberOfConns":300

}

Once the CPS integration for RAN slice allocation is completed, Config DB API needs to be replaced with the CPS API.

CPS API:

...

1650\"}]},{\"measObjInstId\": \"84327425\",\"suspectFlag\": \"false\",\"measResults\": [{\"p\": 1,\"sValue\": \"4573\"},{\"p\": 2,\"sValue\": \"3347\"},{\"p\": 3,\"sValue\": \"1111\"}]},{\"measObjInstId\": \"84327426\",\"suspectFlag\": \"false\",\"measResults\": [{\"p\": 1,\"sValue\": \"4316\"},{\"p\": 2,\"sValue\": \"3126\"},{\"p\": 3,\"sValue\": \"1102\"}]},{\"measObjInstId\": \"103593999\",\"suspectFlag\": \"false\",\"measResults\": [{\"p\": 1,\"sValue\": \"5314\"},{\"p\": 2,\"sValue\": \"3271\"},{\"p\": 3,\"sValue\": \"1860\"}]},{\"measObjInstId\": \"103594000\",\"suspectFlag\": \"false\",\"measResults\": [{\"p\": 1,\"sValue\": \"5037\"},{\"p\": 2,\"sValue\": \"3732\"},{\"p\": 3,\"sValue\": \"1193\"}]}]}]}}}}"
]

Step2: Prediction 


The prediction is performed by first by acquiring the current time instance data from slices and cells. The data are acquired from following APIs.

  • The Prediction modules trigger PM data generation for slices using the below RAN Simulator API
  • The process typically waits for more data to be generated. Currently it waits for 2 hours.
Code Block
curl -X POST -H "Content-Type:  text/plain" http://localhost:8081/ransim/api/GenerateIntelligentSlicingPmData -i
  • After the time elapse, the Prediction modules perform stop PM data generated for slices using following API.
Code Block
curl -X POST -H "Content-Type:  text/plain" http://localhost:8081/ransim/api/stopIntelligentSlicingPmData -i 
  • The Prediction module start to get the acquired data for all the slices and cells using the PM Mapper topic
  • At start of the prediction process, we have a cold start condition for the model to make accurate predictions, The actual prediction starting from the 5th time instance, while each time instance data are generated for every 15 minutes, the 5th time instance data will be retrieved after 1 hour 15 minutes, till then the model generated synthetic data for the first 4 time instant we are generating and then performs prediction. This is  done as a softmax correction, essential to get better accuracy. After the first 4 time instance the predicted values are used and and taken forward.

Code Block
curl -X POST -H "Content-Type:  text/plain" https://localhost:8081/events/org.onap.dmaap.mr.PERFORMANCE_MEASUREMENTS/mlms-cg/mlms-cid 
  • While acquiring each slice and cell data, the Prediction module also acquire the intent configuration for each cell and slices. using following Config DB API. Config DB will be replaced by CPS in the next release.
Code Block
curl -X POST -H "Content-Type:  text/plain" https://localhost:8081/api/sdnc-config-db/v4/nrcellcu-configdata/1/snssai/01-B989BD

The response will be in the form of:

{

    "dLThptPerSlice": 1,

    "uLThptPerSlice": 2,

    "maxNumberOfConns":300

}

  • Following are the processes involved in the Prediction the model. 

Image Added

  • The data from above PM DATA topics are used to acquire the current time instance and also the previous last four time instance data for all cells and slice. 
  • The collected data are parsed, normalized, transformed and converted into forecast series, the steps followed here are almost the same to the input preprocessing steps used in Training module.
  • The preprocess forecast series along with the intend are fed to the ML model to perform prediction for the resource allocation for each cells.
  • The predicted results are  are further processed in the post processing were they are  optimized by the 25% +/- on w.r.t cell config and 10% +/- w.r.t aggregation on overall resources available at slice config thresholds.
  • Recommendation for each cell can be maximum of

...

  • 25% +/-. The aggregation of maximumNoOfConnections recommended for a slice (sNSSAI) can be upto 110% (10 % buffer)  of the intent.

Step3: Prediction

...

  • Now predict recommend suggestions for the cell level configurations (maxNumberOfConns)  for

...

  • each slice and cells are updated via DMAP POLICY UPDATE Topic. 

Suggested Configuration from the ML MS DMAP POLICY UPDATE Topic should be in the form of below format were the predictedMaxNumberofConns values are updated for all cells in slices.

Expand
titleRecommendation format

{
    "snssai": "0001-0111",
    "data": [{
        "gNBCUName": "cucpName",
        "nearRTRICId": "NearRTRIC1",
        "cellCUList": [{
            "cellLocalId": 111,
            "configData": {
                "maxNumberofConns": "20",
                "predictedMaxNumberofConns": "25",
                "lastUpdatedTS": "yyyy/MM/dd HH:mm:ss"
            }
        }, {
            "cellLocalId": 112,
            "configData": {
                "maxNumberofConns": "20",
                "predictedMaxNumberofConns": "25",
                "lastUpdatedTS": "yyyy/MM/dd HH:mm:ss"
            }
        }]
    }, {
        "gNBCUName": "cucpName2",
        "nearRTRICId": "NearRTRIC2",
        "cellCUList": [{
            "cellLocalId": 113,
            "configData": {
                "maxNumberofConns": "20",
                "predictedMaxNumberofConns": "25",
                "lastUpdatedTS": "yyyy/MM/dd HH:mm:ss"
            }
        }, {
            "cellLocalId": 114,
            "configData": {
                "maxNumberofConns": "20",
                "predictedMaxNumberofConns": "25",
                "lastUpdatedTS": "yyyy/MM/dd HH:mm:ss"
            }
        }]
    }]
}


CPS API:

The CPS integration for RAN slice allocation is done in J-release, Config DB API will be replaced with the CPS API in the next release.