A model can fail with no code change at all: the world moves on and your frozen model goes stale. Detect data and concept drift with a KS test, and build a retraining pipeline that only ships a new model if it beats the current one. Part 10 of the MLOps series.
Stop overwriting model.joblib. Track every experiment's params and metrics, register versions, and promote by a champion/challenger gate with MLflow, so 'which model is in production, and is it actually better' has an answer. Part 5 of the MLOps series.
Package the model, the exact scikit-learn version, and the API into one image that runs the same everywhere. Multi-stage builds, a lean non-root image, .dockerignore, and Docker Compose. Part 3 of the MLOps series.
Turn a model artifact into a real prediction API — request validation with Pydantic, automatic Swagger docs, real-time vs batch inference, and a Docker-ready project structure. Part 2 of the MLOps series.
MLOps explained for DevOps engineers — what it is, why plain DevOps isn't enough for ML, and a hands-on look at training vs inference using a real scikit-learn model. Part 1 of an 11-part series.