Make ML reproducible and shippable — track every experiment with MLflow, promote models through a registry with Staging and Production stages, serve them by stage, and version datasets and pipelines with DVC. The backbone every MLOps pipeline is built around. Every lesson is runnable.
Before you start
You will run real Python and CLI with mlflow and dvc. ML fundamentals help — see the ML Engineer roadmap. No GPU required.
Track Your First Experiment
Which run produced that model? What data and params made it? Without tracking, nobody knows. MLflow records every run so your work is reproducible — start here.
Params, Metrics & Artifacts
A run is only as useful as what you log into it. Capture hyperparameters, metrics over time, the model artifact, and the context needed to reproduce it.
Autologging & Comparing Runs
Manual logging is easy to forget. Autologging captures params, metrics, and the model automatically — then compare dozens of runs to find the best one.
The Model Registry
A logged model isn’t a released model. The registry gives models versions and stages — Staging, Production, Archived — with an approval gate before anything ships.
Serving Registered Models
The registry decouples "which model is live" from your serving code. Load a model by stage, serve it behind a REST API, and swap versions without a redeploy.
Versioning Data with DVC
Git handles code, not gigabytes of data. DVC versions datasets and models alongside your code — so a git commit pins the exact data a model was trained on.
Reproducible Pipelines
Tie it together: a DVC pipeline defines stages with their data, code, and outputs, so a single command reproduces everything — and only re-runs what actually changed.