<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>MLOps on StackSimplify | DevOps &amp; Cloud Education by Kalyan Reddy</title><link>https://stacksimplify.com/tags/mlops/</link><description>Recent content in MLOps on StackSimplify | DevOps &amp; Cloud Education by Kalyan Reddy</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><lastBuildDate>Tue, 14 Apr 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://stacksimplify.com/tags/mlops/index.xml" rel="self" type="application/rss+xml"/><item><title>5 Levels of ML Model Deployment on Kubernetes</title><link>https://stacksimplify.com/blog/5-levels-ml-deployment/</link><pubDate>Tue, 14 Apr 2026 00:00:00 +0000</pubDate><guid>https://stacksimplify.com/blog/5-levels-ml-deployment/</guid><description>You deploy containers to Kubernetes every day. But how do you deploy ML models?
There are 5 levels. Each adds production capabilities. Here&amp;rsquo;s the progression.
The 5 Levels Level Pattern DevOps Equivalent When to Use L1 Baked Image Static binary in container Learning, simple models L2 MLflow Dynamic Config from external store Versioned, no rebuild L3 KServe Predictor Deployment + HPA + Ingress Scalable, zero downtime L4 KServe Transformer Sidecar pattern Modular, independent scaling L5 KServe Explainer Audit logging Compliance, GDPR Level 1: Baked Image Model baked into the Docker image at build time.</description></item><item><title>5 Questions to Ask Before Every ML Model Deployment</title><link>https://stacksimplify.com/blog/ml-deployment-checklist/</link><pubDate>Tue, 14 Apr 2026 00:00:00 +0000</pubDate><guid>https://stacksimplify.com/blog/ml-deployment-checklist/</guid><description>A data scientist hands you a model.pkl and says &amp;ldquo;deploy this.&amp;rdquo;
What do you ask?
Most engineers jump straight to containers and endpoints. But the questions that save you at 2 AM are the ones you ask before deployment, not during an incident.
The Checklist # Question Why It Matters 1 What input will break it? Models return garbage confidently on bad input 2 What&amp;rsquo;s the rollback plan? &amp;ldquo;Redeploy the old one&amp;rdquo; is not a plan 3 How do we know it&amp;rsquo;s broken?</description></item><item><title>A/B Testing for ML Models: When Offline Metrics Lie</title><link>https://stacksimplify.com/blog/ab-testing-ml-models/</link><pubDate>Tue, 14 Apr 2026 00:00:00 +0000</pubDate><guid>https://stacksimplify.com/blog/ab-testing-ml-models/</guid><description>You retrained the model. Accuracy went up 2% on the test set. You deployed it. Revenue dropped 5%.
What happened? Offline metrics lie. A model that scores better on historical data can score worse on real users.
Canary vs A/B Testing Approach Question It Answers Traffic Split Canary &amp;ldquo;Does it break anything?&amp;rdquo; 10-20% to new model A/B Testing &amp;ldquo;Does it actually improve outcomes?&amp;rdquo; 50/50 to both models You need both. Canary first, then A/B.</description></item><item><title>Canary Deployments for ML Models with KServe and Istio</title><link>https://stacksimplify.com/blog/canary-rollouts-ml-models/</link><pubDate>Tue, 14 Apr 2026 00:00:00 +0000</pubDate><guid>https://stacksimplify.com/blog/canary-rollouts-ml-models/</guid><description>You do canary deployments for APIs every day. Why not for ML models?
New model ready. Looks good in testing. Deploy to production. Hope it works. It doesn&amp;rsquo;t. Rollback takes 5 minutes. Five minutes of garbage predictions. Damage done.
How It Works Role Traffic Description Champion (80%) Production traffic Current model, proven, stable Canary (20%) Test traffic New version, running alongside Both run simultaneously. Same endpoint. Istio handles the traffic split.</description></item><item><title>CI/CD for ML: Same GitHub Actions, Different Artifact</title><link>https://stacksimplify.com/blog/cicd-for-ml/</link><pubDate>Tue, 14 Apr 2026 00:00:00 +0000</pubDate><guid>https://stacksimplify.com/blog/cicd-for-ml/</guid><description>Your CI/CD pipeline deploys code. Ours deploys models. Same tools.
GitHub Actions. ArgoCD. Docker. DVC. MLflow. Same stack you already run. The only difference is what triggers the pipeline and what gets deployed.
Code pipeline: git push &amp;gt; build &amp;gt; test &amp;gt; deploy ML pipeline: data change &amp;gt; retrain &amp;gt; evaluate &amp;gt; deploy
The 7-Job ML Pipeline Job What It Does Failure Action 0. Preflight 7 infra checks in 5 min (MLflow up?</description></item><item><title>Data Drift Detection: When Your Model Stops Being Right</title><link>https://stacksimplify.com/blog/data-drift-detection/</link><pubDate>Tue, 14 Apr 2026 00:00:00 +0000</pubDate><guid>https://stacksimplify.com/blog/data-drift-detection/</guid><description>Your model was trained on last year&amp;rsquo;s data. The world has moved on. Your model has not.
Your model can return predictions with perfect latency, zero errors, 200 OK on every request. And every single prediction can be wrong.
Operational monitoring tells you the model is running. Statistical monitoring tells you the model is still right.
The Three Types of Drift Type What Changed Example Data Drift The inputs changed Model trained on ages 25-45, now seeing ages 18-22 Concept Drift The relationships changed High frequency used to mean fraud, now means power user Prediction Drift The outputs changed Fraud rate prediction jumped from 5% to 15% The DevOps Parallel Infrastructure monitoring: Is the server healthy?</description></item><item><title>DevOps Thinking Applied to MLOps: 5 Essential Tools</title><link>https://stacksimplify.com/blog/devops-thinking-mlops-tools/</link><pubDate>Tue, 14 Apr 2026 00:00:00 +0000</pubDate><guid>https://stacksimplify.com/blog/devops-thinking-mlops-tools/</guid><description>If you&amp;rsquo;re a DevOps engineer and a data scientist has ever handed you a model.pkl and said &amp;ldquo;deploy this&amp;rdquo;, you know the feeling.
Where did this come from? What data trained it? Which version is this? How do I scale it?
Here&amp;rsquo;s what I&amp;rsquo;ve learned after months building MLOps pipelines: these aren&amp;rsquo;t new problems. We&amp;rsquo;ve already solved them in DevOps. The tools are different, but the thinking is identical.
The Mental Model: Same Problems, Different Artifacts Every MLOps challenge maps directly to a DevOps pattern you already understand:</description></item><item><title>DVC: Git for Your ML Training Data</title><link>https://stacksimplify.com/blog/dvc-data-version-control/</link><pubDate>Tue, 14 Apr 2026 00:00:00 +0000</pubDate><guid>https://stacksimplify.com/blog/dvc-data-version-control/</guid><description>You version code with Git. What about your model training data?
If you&amp;rsquo;ve ever asked &amp;ldquo;Which dataset trained this model?&amp;rdquo; or &amp;ldquo;Can we reproduce last month&amp;rsquo;s model exactly?&amp;rdquo;, you need DVC.
What DVC Solves Problem Without DVC With DVC Which dataset trained this model? &amp;ldquo;Check the shared drive, maybe?&amp;rdquo; git log shows exact data version Someone changed the training data No history, no diff dvc diff shows exactly what changed Reproduce last month&amp;rsquo;s model Impossible git checkout + dvc checkout Your Weekend Starter Six commands.</description></item><item><title>Feature Stores: The Package Registry for ML Features</title><link>https://stacksimplify.com/blog/feature-stores-ml/</link><pubDate>Tue, 14 Apr 2026 00:00:00 +0000</pubDate><guid>https://stacksimplify.com/blog/feature-stores-ml/</guid><description>Your training pipeline computes &amp;ldquo;average transaction amount&amp;rdquo; as the mean of the last 30 days. Your inference API computes it as the mean of the last 7 days.
Same feature name. Different values. Your model is silently wrong.
This is training-serving skew. The number one silent killer of ML models in production.
The Problem ML features get computed in two places:
Context How Features Are Computed Problem Training Batch job on historical data, saved to CSV Code written by data scientist Serving API computes on the fly per request Different code, different logic Two separate implementations.</description></item><item><title>ML Cost Optimization: One YAML Field Cut Our Bill by 80%</title><link>https://stacksimplify.com/blog/ml-cost-optimization/</link><pubDate>Tue, 14 Apr 2026 00:00:00 +0000</pubDate><guid>https://stacksimplify.com/blog/ml-cost-optimization/</guid><description>We changed one YAML field from 1 to 0. Infrastructure cost dropped 80%.
The field: minReplicas.
When set to 1, your ML inference pod runs 24/7. Even at 3 AM when nobody is making predictions. That&amp;rsquo;s $50-150 per month per model, running idle.
When set to 0, the pod scales to zero when idle. Traffic arrives, the pod spins up. Traffic stops, the pod disappears. You pay only for what you use.</description></item><item><title>ML Governance: The Champion-Challenger Pattern for Model Deployment</title><link>https://stacksimplify.com/blog/ml-governance-model-registry/</link><pubDate>Tue, 14 Apr 2026 00:00:00 +0000</pubDate><guid>https://stacksimplify.com/blog/ml-governance-model-registry/</guid><description>Your ML serving code should never know about version numbers. Ever.
If your inference service loads fraud-detector-v47, you have a problem. What happens when v48 is ready? Code change. New deploy. Downtime risk.
Now imagine this: your service always loads the model tagged @champion. (MLflow Model Registry docs) When v48 is promoted, the tag moves. Next request gets the new model. Zero code changes. Zero downtime.
The Champion-Challenger Pattern Role Alias Purpose Champion @champion Currently serving production traffic Challenger @candidate Being evaluated against the champion The flow:</description></item><item><title>ML Model Monitoring: Your Grafana Dashboard Is Lying to You</title><link>https://stacksimplify.com/blog/ml-model-monitoring/</link><pubDate>Tue, 14 Apr 2026 00:00:00 +0000</pubDate><guid>https://stacksimplify.com/blog/ml-model-monitoring/</guid><description>Your ML model was 95% accurate when you deployed it. That was 6 months ago. Nobody has checked since.
A model can show 10% CPU, zero errors, healthy pod status. And still return garbage predictions. Your Grafana dashboard shows all green. Your customers see wrong results.
Why This Happens Your monitoring tracks CPU, memory, and pod restarts. Your model cares about none of that.
Models degrade because the world changes:</description></item><item><title>ML Pipeline Orchestration with Kubeflow on Kubernetes</title><link>https://stacksimplify.com/blog/kubeflow-pipelines-orchestration/</link><pubDate>Tue, 14 Apr 2026 00:00:00 +0000</pubDate><guid>https://stacksimplify.com/blog/kubeflow-pipelines-orchestration/</guid><description>Your ML team has 47 Jupyter notebooks. 12 of them &amp;ldquo;should run in order.&amp;rdquo; Nobody remembers which 12.
One fetches data. Another cleans it. A third trains. A fourth evaluates. A fifth deploys. Different repos. Hardcoded paths. Two only work on Sarah&amp;rsquo;s laptop.
This is not a pipeline. This is a disaster waiting for a deadline.
Why ML Pipelines Are Different Data pipelines move data from A to B. ETL. Airflow handles this well.</description></item><item><title>ML Retraining Pipelines: From Drift Alert to Production Model</title><link>https://stacksimplify.com/blog/ml-retraining-pipelines/</link><pubDate>Tue, 14 Apr 2026 00:00:00 +0000</pubDate><guid>https://stacksimplify.com/blog/ml-retraining-pipelines/</guid><description>Your drift detector triggered an alert. Now what?
Most teams freeze. The runbook says &amp;ldquo;retrain the model.&amp;rdquo; Nobody knows how. Monitoring without a retraining pipeline is like alerting without a runbook.
The Retraining Spectrum Level Trigger Best For Manual Data scientist retrains in a notebook Small teams, low-risk models Scheduled Cron job retrains every week/month Predictable drift patterns Triggered Drift detector kicks off pipeline automatically High-value models Most teams should start with manual.</description></item><item><title>MLflow in 60 Seconds: The Complete ML Model Lifecycle</title><link>https://stacksimplify.com/blog/mlflow-model-lifecycle/</link><pubDate>Tue, 14 Apr 2026 00:00:00 +0000</pubDate><guid>https://stacksimplify.com/blog/mlflow-model-lifecycle/</guid><description>How does an ML model actually get from training to production?
If you&amp;rsquo;re a DevOps engineer stepping into MLOps, MLflow is the first tool you need to understand. It handles the entire lifecycle: tracking experiments, versioning models, and serving them in production.
The 5-Step Lifecycle Here&amp;rsquo;s the full journey of a model, from code to production.
Step What Happens DevOps Analogy Experiment Write training code, MLflow creates a &amp;ldquo;run&amp;rdquo; Starting a CI build Run Logs parameters, metrics, model files Build artifacts + test results Model Best run registered to Model Registry Pushing image to Container Registry Registry Versions (v1, v2, v3) with aliases (@champion, @candidate) Image tags (:latest, :staging, :prod) Serving API loads models:/fraud-detector@champion K8s Deployment pulling :prod tag Step 1: Experiment You write training code and run it.</description></item><item><title>Scale-to-Zero for ML Models: Stop Paying for Idle Compute</title><link>https://stacksimplify.com/blog/scale-to-zero-ml-models/</link><pubDate>Tue, 14 Apr 2026 00:00:00 +0000</pubDate><guid>https://stacksimplify.com/blog/scale-to-zero-ml-models/</guid><description>Your ML model runs 24/7. Inference requests come 2% of the time. You&amp;rsquo;re paying for 98% idle compute.
This is the most expensive mistake in ML deployment. And the fix takes one YAML field.
How It Works KServe + Knative handles this natively.
Your model is serving requests Traffic drops. 30 seconds of silence Knative scales pods to ZERO New request arrives Pod spins up in seconds. Request served. Zero requests = zero pods = zero cost.</description></item><item><title>SHAP Explainability: Why Your ML Model Flagged That Transaction</title><link>https://stacksimplify.com/blog/shap-explainability-ml/</link><pubDate>Tue, 14 Apr 2026 00:00:00 +0000</pubDate><guid>https://stacksimplify.com/blog/shap-explainability-ml/</guid><description>Your ML model flagged a customer&amp;rsquo;s transaction. They call support and ask: &amp;ldquo;Why?&amp;rdquo;
If you can&amp;rsquo;t answer, you might be breaking the law.
GDPR Article 22 gives users the right to an explanation for automated decisions. Financial regulators require it. Healthcare demands it.
The Explanation Instead of just HIGH RISK: 0.85, you get:
Feature SHAP Value Impact Amount 5x higher than average +0.32 Increases risk International from unusual country +0.21 Increases risk Transaction at 3 AM local time +0.</description></item><item><title>The Two-Container Pattern: Transformer + Predictor for ML Serving</title><link>https://stacksimplify.com/blog/transformer-predictor-pattern/</link><pubDate>Tue, 14 Apr 2026 00:00:00 +0000</pubDate><guid>https://stacksimplify.com/blog/transformer-predictor-pattern/</guid><description>Your ML model expects clean features. Your API receives raw data. Where does the preprocessing live?
Every team gets this wrong the first time. They stuff everything into one container: data validation, feature engineering, ML inference, output formatting. It works. Until it doesn&amp;rsquo;t.
The Problem with One Container Model retrained? Rebuild the whole container. Feature logic changed? Rebuild the whole container. Need to scale inference independently? Everything scales together. Or breaks together.</description></item><item><title>MLOps for DevOps Engineers</title><link>https://stacksimplify.com/blog/mlops-series/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://stacksimplify.com/blog/mlops-series/</guid><description/></item></channel></rss>