Last Updated: May 1, 2025
Experiment Tracking
mlflow.set_experiment('my-experiment')Create or set active experiment
mlflow.start_run()Begin a tracked run — all subsequent logging goes here
mlflow.log_params({'lr': 0.001, 'batch_size': 32})Log hyperparameters — key-value pairs
mlflow.log_metric('accuracy', 0.95, step=epoch)Log metrics — can log per-step during training
mlflow.log_artifact('model.pkl')Log files — models, plots, configs
mlflow.autolog()Auto-log from PyTorch, TensorFlow, sklearn, XGBoost, LightGBM — one line magic
mlflow.end_run()End the current run
Model Registry
| Item | Description |
|---|---|
Register Model | mlflow.register_model(model_uri, name) — promote from experiment to registry |
Versioning | Each registration creates a new version — immutable, auditable |
Stages | None → Staging → Production → Archived. Promote via UI or API. |
Stage Transitions | mlflow.transition_model_version_stage(name, version, 'Production') |
Aliases | 'champion'/'challenger' — newer than stages, more flexible. Assign via UI/API. |
Model Signature | Input/output schema — enforced at serving time. Add with infer_signature(). |
MLflow Projects
| Item | Description |
|---|---|
MLproject File | Define environment (conda/docker), entry points, parameters — reproducible runs |
mlflow run . | Run current project — auto-creates conda env or Docker container |
mlflow run -P param=value | Pass parameters — overrides MLproject defaults |
GitHub Integration | mlflow run [email protected]:user/repo — run projects from Git |
Multi-step Workflows | Compose projects: preprocess → train → evaluate → register |
Serving Models
mlflow models serve -m runs:/run-id/model --port 5000Serve model as REST API locally
mlflow models build-docker -m models:/name/versionBuild Docker image for deployment
mlflow deployments create -t sagemaker -m models:/name/1Deploy to cloud: SageMaker, Azure ML, Databricks
POST /invocationsREST endpoint — send DataFrame JSON, get predictions
--env-manager localSkip conda — use existing environment (faster, simpler for Docker)
Pro Tip: Log EVERYTHING — parameters, metrics, artifacts, environment. Disk is cheap; the time you spend wondering 'what hyperparameters did I use?' is expensive.