Built the initial pipeline and made Inference component compatible with KubeFlow
This PR makes the initial KubeFlow pipeline and aims at making the inference component compatible with KubeFlow pipelines and .
Inference Component:
-
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.
-
Exposed ORT EP configuration options for use via macrofile to give more flexibility for dynamic optimization
-
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 wayThe 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
.
-
- Added support for memory usage tracking for CPU and GPU.
Initial Model Optimization 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.