Why 87% Never Ship
You will meet the number "87% of ML models never reach production" in roughly every deck written on this subject. It is worth knowing where it comes from: a 2019 VentureBeat article reporting a figure an executive cited on a conference panel. There is no study behind it and no stated method. Quote it and someone will eventually ask you for the source, and you will not have one.
What survives without the number is the observation underneath it. The models that never ship almost never fail on accuracy. They fail on ownership, on data access, and on the absence of anyone whose job it is to run them next quarter. The constraint is operational, not technical.
The three patterns that account for failed deployments:
- Trained on data that does not match production. Notebook accuracy was 94%. Production accuracy is 61%. The model never saw real input.
- No one owns the deployment. The data scientist who built the model has no production access. The DevOps team has no ML context. The model sits in a notebook for 9 months.
- Success measured on offline accuracy, not business metric. Model improves AUC by 0.04. Business metric does not move. Project filed under "AI initiative."
The fix is the inversion: build the deployment skeleton first, model second.
The Five Pieces of an MLOps Skeleton
Before you train, build these five components. Without them, the model never ships.
| Component | What it does | When you build it |
|---|---|---|
| Feature pipeline | Compute features identically for training and serving | Before training |
| Model registry | Version, store, and load model weights | Before first deploy |
| Serving infrastructure | Take request, run model, return prediction | Before first deploy |
| Monitoring | Track input drift, prediction drift, accuracy | Before first deploy |
| Rollback | Switch back to previous model version in 60 seconds | Before first deploy |
If any one is missing on day 1, the deployment will fail within 90 days. Build all five before you spend a week on hyperparameter tuning.
Training-Serving Skew: The #1 Failure Mode
Training-serving skew is the most common way a model that passed evaluation fails in production: it sees different data in training and in serving, because feature engineering happens twice, in two pipelines, written by two teams.
Examples we have debugged:
- Training computes age from
dobparsed asMM/DD/YYYY. Production parses it asDD/MM/YYYY. Half the ages are wrong. - Training one-hot encodes 11 product categories. Production sees a 12th category and the encoding silently fails to a zero vector.
- Training imputes missing values with median computed on training set. Production imputes with rolling median over the past hour. Different distributions.
The fix is structural: one feature pipeline, used identically in training and serving. Tools like Tecton, Feast, and Hopsworks exist exactly for this. If the team will not adopt a feature store, the alternative is training data captured directly from production logs - never from synthetic samples.
Monitoring That Catches Real Drift
Without monitoring, degradation is invisible rather than absent. The model still returns predictions on schedule. Nothing throws. The predictions are simply worse than they were, and the first person to notice is usually a customer.
Three monitoring signals, in order of how often they catch problems:
Input distribution drift. Feature statistics (mean, variance, top-k categorical values) move away from training distribution. Catches 60% of issues. Automated by Evidently, Whylogs, Arize.
Prediction distribution drift. Output class proportions or score distributions change without an input cause. Catches 25% of issues. Often signals upstream data corruption.
Ground-truth accuracy. When real labels become available (often delayed days or weeks), measure accuracy against them. Catches the remaining 15%, including subtle issues the first two miss.
Without all three, you are flying blind. Most teams have only the first two. The accuracy signal is the expensive one - it requires a labeling pipeline - but it is the only signal that catches concept drift, where features look the same but their relationship to the target changed.
Retraining Cadence
Three options, in increasing maturity:
Scheduled retraining (weekly/monthly): Easy to set up. Wasteful when the model is stable. Too slow when distributions shift fast. The default starting point but not the right end state.
Drift-triggered retraining: Monitor for drift, retrain when drift exceeds threshold, validate, deploy with human approval. Catches 95% of issues at 30% of the compute cost of weekly schedules. The right end state for most production models.
Continuous online learning: Model updates from production data in near-real-time. Looks great in conference talks. Has very narrow legitimate use cases (recommender systems, ad ranking). Most teams should not attempt this.
Cost Reality: 85% Is Not Training
The unit economics of production ML in 2026:
| Cost component | Share of total |
|---|---|
| Training compute | 8-15% |
| Serving compute | 35-50% |
| Monitoring + observability | 10-15% |
| Retraining infrastructure | 10-20% |
| Engineering time (the largest line) | 30-50% (in TCO) |
The "GPU cost" obsession in 2024-2025 was misplaced. Training compute is 15% of TCO at most. The expensive parts are serving infrastructure (driven by latency requirements) and engineering time (driven by deployment complexity). Tools and patterns that reduce engineering time are higher-ROI than tools that reduce training cost.
The 30-Day MLOps Playbook for a First Production Model
Week 1: Build the deployment skeleton. Feature pipeline (offline + online), model registry, serving stub returning a constant, monitoring on the stub, rollback path tested. Ship the stub to production.
Week 2: Train a baseline model (logistic regression or shallow tree). Replace the stub. Verify production predictions match offline predictions on the same input. Set up drift monitoring.
Week 3: Deploy the baseline to handle 100% of real production traffic. Monitor for drift, latency, error rate. Set up alerts.
Week 4: Now train your real model. Replace the baseline if and only if it beats baseline on the business metric (not just AUC). Document the rollback procedure.
By day 30, you have one production model with monitoring, drift detection, rollback, and a baseline to fall back to. The next models inherit the skeleton. Cost per subsequent deployment drops 60-80%. The forecasting variant of this same pipeline is in predictive analytics for business; the analytics layer that consumes its output is in AI data analytics.
What to Reject
When evaluating MLOps proposals or vendor pitches, reject any of these:
- "Auto-ML platform" with no ownership of monitoring or drift.
- Training-only tooling without serving and monitoring.
- "Model accuracy" as the primary success metric, without a business metric.
- Promises to "deploy in days" without naming who owns production access.
- Vendors who cannot show their drift detection running on real customer data.
The Bottom Line
ML in production is mostly not ML. It is feature pipelines, monitoring, rollback paths, and clear ownership of who pages when something breaks. The 13% of projects that ship in 2026 are the ones that build this skeleton first. The 87% that fail spend three months tuning a notebook before they think about deployment. If you can ship a constant-prediction stub to production in week 1 of your project, you are in the 13%. If your team is debating model architecture before the deployment skeleton exists, you are in the 87%. The compliance evidence required around all of this is in responsible AI in 2026.
Top comments (0)