← All posts

AI · May 19, 2026 · intSignal AI Team

MLOps: Running Models in Production Without the Firefights

The gap between a good model and a working one

A model that scores well in a notebook is a proof of concept, not a product. Industry surveys have long put the share of models that never reach production at well over half, and plenty of the ones that ship degrade quietly until someone notices the numbers stopped making sense. The failure is rarely the math. It is everything around the math: the training data nobody can reproduce, the feature code that lives only on a data scientist's laptop, the deployment that happened by copying a file to a server, and the total absence of anyone watching whether the model still works next month.

MLOps is the discipline that closes that gap. It borrows what DevOps taught software teams — version control, automated testing, repeatable builds, monitoring — and adds the two things that make machine learning harder than ordinary software: the behavior depends on data as much as code, and the system degrades on its own even when nothing is deployed. Get the lifecycle right and production stops being a series of 2 a.m. firefights. Get it wrong and every model becomes a bespoke, fragile artifact that only its author can touch.

The lifecycle, stage by stage

Treat a production model as a pipeline with distinct, versioned stages rather than a single hand-off. Each stage has an owner and an output the next stage can trust.

Data versioning

Code without its data is only half the recipe. If you cannot say exactly which rows trained a given model, you cannot reproduce it, debug it, or defend it to an auditor. Version the data the way you version code: snapshot the training set, record its schema, and pin it to the model built from it. Tools like DVC or a feature store give you content-addressed datasets and a lineage trail from a prediction back to the exact records behind it. This is also where a data analytics foundation pays off — clean, governed, well-labeled data is the input that caps everything downstream.

Training and experiment tracking

Training should be a script that runs the same way every time, not a sequence of cells someone executes by hand. Every run logs its inputs — dataset version, code commit, hyperparameters — and its outputs — metrics, artifacts, and the trained model file. An experiment tracker (MLflow, Weights and Biases, or equivalent) turns "which run was that?" from a memory test into a query. The discipline sounds bureaucratic until the first time a model regresses and you can diff the winning run against the losing one in seconds instead of guessing.

Model registry

The registry is the single source of truth for what exists and what is promotable. Each model version carries its lineage, its evaluation metrics, and a stage label — staging, production, archived. Promotion is an explicit, logged decision, not a file copy. When an incident forces a rollback, the registry is what lets you redeploy the previous version in minutes with confidence that it is exactly the one that worked before.

Automated pipeline moving a model from data and training through registry, CI/CD checks, deployment, and monitoring that feeds retraining back to the start Figure: the loop is the point — monitoring feeds retraining, so a model in production keeps earning its place instead of quietly decaying.

CI/CD for models is not CI/CD for code

Continuous integration for software asks one question: does the code build and pass its tests? For models you have to test the code, the data, and the model's behavior — three moving parts instead of one. A useful pipeline gates promotion on all of them:

  1. Code and data validation. Unit-test the feature transformations, and validate incoming data against an expected schema and distribution before it ever reaches training. A silent change in an upstream column is one of the most common causes of a model quietly breaking.
  2. Model evaluation as a gate. Do not promote a model because it trained without errors. Promote it because it beat the current production model on a held-out set and cleared minimum thresholds on the slices you care about — including fairness and error rates for the subgroups where a bad prediction is costly.
  3. Reproducible packaging. Build the model into a versioned, containerized artifact with its dependencies pinned, so the thing you tested is bit-for-bit the thing you deploy. Running this on managed cloud infrastructure keeps training and serving environments consistent instead of drifting apart.

The payoff is that a retrained model can move from commit to candidate automatically, and a human only weighs in on the promotion decision — the one place judgment actually belongs.

Deployment patterns that limit blast radius

How you ship the model matters as much as the model itself. Match the pattern to the risk and the latency budget:

  • Batch scoring runs predictions on a schedule and writes them to a table — simplest to operate, right for churn scores, forecasts, and anything that does not need an answer this second.
  • Real-time endpoints serve predictions synchronously behind an API for fraud checks, recommendations, and interactive use. They carry the latency and uptime obligations of any production service.
  • Shadow deployment runs the new model alongside the old on live traffic without acting on its output, so you can compare real-world behavior before you trust it.
  • Canary and blue-green shift a small slice of traffic to the new model first, watch the metrics, and roll forward or back with a switch rather than a redeploy.

Whatever the pattern, never let a new model take irreversible action on 100 percent of traffic on day one. Start narrow, measure against reality, and widen authority only as the evidence accumulates.

Monitoring: the model degrades even when nothing changes

This is the part traditional software teams underestimate. A shipped service that nobody touches keeps behaving the same way. A shipped model does not — the world it learned drifts away from it. Watch three distinct things, because they fail differently:

  • Data drift. The distribution of inputs shifts — a new product line, a seasonal pattern, a changed upstream system. The model still runs; it is just increasingly answering a question it was never trained on.
  • Concept drift. The relationship between inputs and the correct answer changes. Fraud tactics evolve, customer behavior shifts, and yesterday's signal becomes noise even though the inputs look familiar.
  • Operational health. Latency, error rates, throughput, and cost — the same signals you would track for any service, tied into your existing infrastructure monitoring rather than bolted on as a separate, ignored dashboard.

The trap is that prediction quality often lags the ground truth by weeks — you may not learn a loan model was wrong until the loans mature. Instrument proxy signals (confidence distributions, drift scores) so you get an early warning long before the outcome data confirms the damage.

Retraining closes the loop

Monitoring only earns its keep if it triggers action. Decide up front what retraining looks like: scheduled on a cadence that matches how fast your domain moves, or triggered when a drift metric crosses a threshold. Automate the retraining pipeline so a refresh is a governed, repeatable event — pull the current data, retrain, evaluate against the incumbent, and promote only on a genuine improvement. Every correction a human makes in production becomes a label you did not have to pay for, feeding the next training set. That loop is what turns a static model into a capability that compounds instead of decays.

Reproducibility is the thread through all of it

If you cannot rebuild a model exactly — same data version, same code commit, same environment, same result — you cannot trust anything else you do to it. Reproducibility is what makes a rollback safe, an audit answerable, and a debugging session finite. Pin the dataset, pin the code, pin the dependencies, and log the lineage from every production prediction back to the run that produced it. Regulated buyers increasingly require exactly this trail, and it is far cheaper to build in from the first commit than to reconstruct after the fact.

The organization behind the pipeline

MLOps is a team sport, and the missing role is usually the ML engineer — the person who lives between the data scientist who builds the model and the platform team that runs it. Data scientists optimize for accuracy; platform engineers optimize for uptime; someone has to own the seam. In practice, mid-market teams rarely have all three skill sets on staff, which is why the lifecycle so often stalls after the first promising prototype. What you actually need is clear ownership at each stage, a platform that enforces versioning and gates by default, and the operational muscle to watch models the way you watch any other production service.

Where to start

Pick one model that already delivers value in a notebook and make it survivable: version its data, register the artifact, put it behind a monitored endpoint, and wire a retraining trigger to a drift signal. That single end-to-end path teaches your team more than any platform evaluation. intSignal builds and runs this lifecycle as a managed capability, from machine learning and AI strategy through data readiness, CI/CD, deployment, and the monitoring that keeps models honest in production. If you have a model stuck between the notebook and production — or one already live that nobody is watching — talk to our team and we will help you build the pipeline around it.