Skip to content

Built the initial pipeline and made Inference component compatible with KubeFlow

Priyam Mehta requested to merge par04-gsoc-priyam into master

This PR makes the initial KubeFlow pipeline and aims at making the inference component compatible with KubeFlow pipelines and .

Inference Component:

  1. Added support for ONNXRuntime(ORT) Execution Providers(EP) - oneDNN, CUDA and TensorRT. OpenVINO is added but is not recommended for use due to internal errors yet to be solved.

  2. Exposed ORT EP configuration options for use via macrofile to give more flexibility for dynamic optimization

  3. Added 3 commandline argument as an alternate way of setting the output .root filepath. The current way of setting filepath via /analysis/setFilename has 2 drawbacks:

  • It only allows for the output file to be placed in a directory already present. It will throws an error when the directory is not present.

  • The recommended way of data passing in KubeFlow is via auto-generated input and output paths to make the components reusable and scalable. /analysis/setFilename is set during macro-creation and is hardcoded, thus not aligning well with KubeFlow recommnded way

    The 3 new command-line args are:

    • -k: if passed, specifies the component is going to be used in kubeflow
    • -o: commandline arg for specifying the name of the output .root file.
    • -do: commandline arg for specifying the output directory path where the output .root file will be stored. -o and -do are only used when -k is set. If you are not using inference module as a kubeflow component, but as a standalone process, then use the your manually generated macro file for output path through /analysis/setFilename.
  1. Added support for memory usage tracking for CPU and GPU.

Initial Model Optimization Pipeline:

GSoC-Initial-Pipeline

MacroHandler Component:

Exposes the macro file params used for inference outside through kubeflow UI dashboard to give more flexibility to the users. It takes a jsonlines (.jsonl) file as input which contains the macrofile steps in the exact manner required for the .mac file.

Input Checker:

It displays the values and inputtypes of params which are passed from KubeFlow UI to the pipeline. It can help with input debugging

Benchmark:

It takes the outputs of 2 inference components as inputs, processes them, obtains the similarity measures - KL Divergence and Jensen-Shannon Divergence of different physics quantities, plots the comparison histograms of both the root files and outputs the entire folder.

Merge request reports