MLOps
Our current system does not include any tools or methods for Design or Deploy. To make the runs reproducible Weights and Biases is used for experiment tracking and logging.
Workflow
Current
- Start a notebook using
nbdev - When the notebook is created configure it to work with
wandb - Track runs, various parameters, graphs and other plots
- Push the notebook to the appropriate repo, repeat from Step 1.
New
- Start with designing the experiment in a design tool like
mlflow,metaflow, etc. - Create notebooks with
nbdevas usual - Track experiments with
wandb - Write unittests in
nbdev - Optional: Deploy (or operate) to see the results
Design
- There are a lot of tools for designing the entire ML experiment.
mlflowis a popular optionmetaflowis another one
Experiment tracking
- We are sticking with
Weights and Biasesfor this. - It has integration with all the frameworks we have used so far.
- It is easy to get started with and the export functionality is also available.
Train
Hyperparameter tuning
Options include:
- Optuna
- Ray distributed
- Weights and Biases Sweep
Deploy
We can deploy a few the models we've trained using fastAPI.
- Other options include
streamlitfor quick experimentation and giving it a basic UI. - Comprehensive option includes something with a React frontend, FastAPI backend and a lot more.
Future thoughts
- For deploying, REST endpoints can be made for say
image_classification,image_segmentationorwildfire_prediction, etc.