2.3.18 Knowledge Packs

The model that gets generated for your edge device is called a Knowledge Pack. A Knowledge Pack contains the device firmware code for detecting events in your application and will be flashed to your device. The Knowledge Pack contains all the information about how the model was trained, the metrics for the trained model, as well as the full trained pipeline model.

Download Knowledge Pack

To download a Knowledge Pack, you need to create a configuration for the download.

The first part of the configuration is the kb_description, which describes the models that will be part of the Knowledge Pack. The format is as follows:

kb_description = {
   "MODEL_1": {
      "source": "<CAPTURE CONFIG UUID>",
      "uuid": "<Model UUID>"
   },
}

Where model name can be whatever you choose. Source is the capture configuration that the model should use (this is used to set up the correct sensors and sample rate). uuid is the model UUID to use.

To get the UUID of the capture configuration and Knowledge Pack for a particular project, use the following:

client.project.list_knowledgepacks()

client.list_capture_configurations()

Next, we will create the config for the download. To see a list of available target platforms along with their application and output_options use:

client.platforms_v2()

You can generate the template configuration by using the following:

config = client.platforms_v2.get_platform_by_name('x86 GCC Generic').get_config()

Replace the <x86 GCC Generic> platform name with the platform you want to download.

print(config)

{'target_platform': '26eef4c2-6317-4094-8013-08503dcd4bc5',
'test_data': '',
'debug': False,
'output_options': ['serial'],
'application': 'AI Model Runner',
'target_processor': '822581d2-8845-4692-bcac-4446d341d4a0',
'target_compiler': '62aabe7e-4f5d-4167-a786-072e468dc158',
'float_options': '',
'selected_platform_version': ''}

config["kb_description"] = kb_description

And finally, we can download the model as a library source (if supported by your subscription) or binary (if supported by your platform).

kp = client.get_knowledgepack("<MODEL UUID>")

kp.download_library_v2(config=config)
# kp.download_binary_v2(config=config)
# kp.download_source_v2(config=config)

Multi Model Knowledge Pack

If you want to download multiple Knowledge Packs at once, you need to use the programmatic interface. Models can either be Parent or Children models. Parent models require a source. Children models require a segmenter_from and parent flag. Optional flags are results that allow a Child model to be called depending on the output of a Parent model.

The model graphs are defined in the kb_description. The format for multiple parent models is as follows:

{
   "MODEL_1": {
      "source": "<CAPTURE CONFIG UUID>",
      "uuid": "<Model UUID>"
   },
   "MODEL_2": {
      "source": "<CAPTURE CONFIG UUID>",
      "uuid": "<Model UUID>"
   },
   "MODEL_3": {
      "source": "<CAPTURE CONFIG UUID>",
      "uuid": "<Model UUID>"
   }
}

The format for multiple parent models and with multiple child models is as follows:

{
   "PARENT_1": {
      "source": "<CAPTURE CONFIG UUID>",
      "uuid": "<Model UUID>",
      "results": {
            "1": "CHILD_1",
            "2": "CHILD_2"
      }
   },
   "PARENT_2": {
      "source": "<CAPTURE CONFIG UUID>",
      "uuid": "<Model UUID>",
   },
   "CHILD_1": {
      "uuid": "<Model UUID>",
      "parent": "PARENT_1",
      "results": {
            "1": "Child 4",
      },
      "segmenter_from": "parent"
   },
   "CHILD_2": {
      "uuid": "<Model UUID>",
      "parent": "PARENT_1",
      "segmenter_from": "parent"
   },
   "CHILD_3": {
      "uuid": "<Model UUID>",
      "parent": "PARENT_1",
      "segmenter_from": "parent"
   },
   "CHILD_4": {
      "uuid": "<Model UUID>",
      "parent": "PARENT_1",
      "segmenter_from": "parent"
   }
}
class mplabml.datamanager.knowledgepack. KnowledgePack(connection, project_uuid, sandbox_uuid='')

Base class for a KnowledgePack

property class_map

A summary of the integer classes/categories used by the KnowledgePack and the corresponding application categories

property cost_dict

A summary of device costs incurred by the KnowledgePack

property cost_report

A printed tabular report of the device cost incurred by the KnowledgePack

property cost_report_json

A JSON report of the KnowledgePack cost summary

cost_resource_summary(processor_uuid=None, hardware_accelerator=None)

A summary of resources and time needed in a classification from a KnowledgePack

create()

Create a new KnowledgePack on the server using the internal data for this model

Returns

KnowledgePack object

delete()

Deletes the KnowledgePack

Returns

Result of executed pipeline, specified by the sandbox (dict): execution summary including execution time and whether cache was used for each step; also contains a feature cost table if applicable

Return type

(DataFrame or ModelResultSet)

download_binary_v2(folder='', run_async=True, platform=None, renderer=None, *args, **kwargs)

Calls the server to generate full binary image based on device config

Parameters

folder (str) – Folder to save to if not generating a link

Returns

Denoting success or link to file download

Return type

str

download_library_v2(folder='', run_async=True, platform=None, renderer=None, *args, **kwargs)

Calls the server to generate static library image based on device config

Parameters

folder (str) – Folder to save to if not generating a link

Returns

Denoting success or link to file download

Return type

str

download_source_v2(folder='', run_async=True, platform=None, renderer=None, *args, **kwargs)

Calls the server to generate static library image based on device config.

Parameters

folder (str) – Folder to save to if not generating a link

Returns

Denoting success, or link to file download

Return type

str

export()

Export a Knowledge Pack Model

Returns

Knowledge Pack Export Dict

property feature_summary

A summary of the features generated by the KnowledgePack

get_report(report_type, processor_uuid=None, hardware_accelerator=None)

Sends a request for a report to the server and returns the result

Parameters

report_type (string) – String name of report, ex: ‘cost’

Returns

string representation of desired report

Return type

(string)

property knowledgepack_description

Description of KnowledgePack. It is for the hierarchical model created by Autosense.

property knowledgepack_summary

A summary of device costs incurred by the KnowledgePack

property model_configuration

Model Configuration

property model_parameters

The model’s parameters

property model_results

The model results associated with the KnowledgePack (in JSON form)

property neuron_array

The model’s neuron array

property pipeline_summary

A summary specification of the pipeline which created the KnowledgePack

property query_summary

A summary specification of the query used by the pipeline which created the KnowledgePack

recognize_features(data)

Sends a single vector of features to the KnowledgePack for recognition.

Parameters
data (dict) – dictionary containing
  • A feature vector in the format ‘Vector’: [126, 32, 0, …]

  • ‘DesiredResponses’ indicating the number of neuron responses to return

Returns
dictionary containing
  • CategoryVector (list): numerical categories of the neurons that fired

  • MappedCategoryVector (list): Original class categories of the neurons that fired

  • NIDVector (list): ID numbers of the neurons that fired

  • DistanceVector (list): Distances of the feature vector to each neuron that fired

Return type

(dict)

recognize_signal(capture=None, datafile=None, stop_step=False, segmenter=True, platform='emulator', get_result=True, kb_description=None, compare_labels=False, renderer=None)

Sends a DataFrame of raw signals to be run through the feature generation pipeline and recognized

Parameters
  • capturefile (str) – The name of a file uploaded through the data capture lab

  • datafile (str) – The name of an uploading datafile

  • platform (str) – “emulator” or “cloud”. The “emulator” will run compiled c code giving device exact results, the cloud runs similarly to training providing more flexibility in returning early results by setting the stop step.

  • stop_step (int) – For debugging, if you want to stop the pipeline at a particular step, set stop_step to its index

  • compare_labels (bool) – If there are labels for the input dataframe, use them to create a confusion matrix

  • segmenter (bool or FunctionCall) – To suppress or override the segmentation algorithm in the original pipeline, set this to False or a function call of type ‘segmenter’ (defaults to True)

  • lock (bool , True) – If True, waits for the result to return before releasing the ipython cell.

Returns

dictionary of results and summary statistics from the executed pipeline and recognition

Return type

(dict)

retrieve(silent=False)

Gets the result of a prior asynchronous execution of the sandbox

Returns

result of executed pipeline, specified by the sandbox (dict): Execution summary including execution time and whether cache was used for each step; also contains a feature cost table if applicable

Return type

(DataFrame or ModelResultSet)

property reverse_class_map

A summary of the category/integer class used by the KnowledgePack and the corresponding application categories

save(name)

Rename a knowledge pack

Returns

result of executed pipeline, specified by the sandbox (dict): Execution summary including execution time and whether cache was used for each step; also contains a feature cost table if applicable

Return type

(DataFrame or ModelResultSet)

property sensor_summary

A summary of sensor streams used by the KnowledgePack

stop_recognize_signal()

Sends a kill signal to a pipeline

property training_metrics

The training metrics associated with the KnowledgePack

property transform_summary

A summary of transform parameters used by the KnowledgePack