Integrating MLFlow
==================
Orthrus now includes an example `MLFlow `_ project for integrating orthrus pipelines seamlessly into MLFlow.
The user can access this example project from the github repository under the `mlflow `_ directory.
MLProject File
--------------
The mlflow directory contains an `MLProject `_ file which contains entry points to be run
in the mlflow workflow. For example, we include a tuning script which tunes an orthrus
pipeline and can be executed through the **tune** entry point. To run an entry point, simply
change to the mlflow directory, create an experiment, and then execute the mlflow run command:
.. code-block:: bash
(base) $ conda activate orthrus
(orthrus) $ cd $ORTHRUS_PATH/mlflow
(orthrus) $ mlflow experiments create --experiment-name hyperparam-tuning
(orthrus) $ mlflow run . --entry-point tune \
-P dataset-path=$ORTHRUS_PATH/test_data/GSE73072/Data/GSE73072.ds \
-P pipeline-path=$ORTHRUS_PATH/mlflow/pipelines/svm.py \
-P sample-query="Disease=='h1n1'" -P num-samples=100 --no-conda --experiment-id 1
Above we use the tag ``--no-conda`` to indicate that we are using our own conda environment. If this tag was omitted then
mlflow would install the conda environment specified in the MLProject file.
Hyperparameter Tuning Example
-----------------------------
For this example we will tune a support vector machine classifier
on validation data and test on test data. Our associated orthrus pipeline
is contained in the file `pipelines/svm.py `_. Within
the file we define our hyperparameter tuning search space and algorithm, hyperparameter tuning metric, and a function
to generate a pipeline based on a fixed hyperparameter configuration. Once these parameters. In particular, we define a logarithmic
search space for the ``C`` tuning parameter in SVM, use `HyperOpt `_ as a tuning algorithm, and limit
the number of concurrent tuning trials to 4. For a tuning metric we compute the mean validation balanced accuracy rate returned from
a pipeline that has been ran. During the tuning procedure, several pipelines will be built with different configurations
and then evaluated for their mean performance across validation splits.
Internally, the tune entry point calls the script `workflows/tune.py `_.
This script contains the boilerplate code for tuning a pipeline in general and can be reused for different pipelines outside of our
current example. This script also contains code for logging the metrics of the tuning process and finally logging the
best configuration of hyperparameters as an artifact. All metrics, parameters, and artifacts can be found in the mlruns directory
of the mlflow project folder. Read the `MLFlow docs `_ for more information on how to incorporate MLFlow into your workflow.