Lightening Tech Evidence, not opinion

AI & Machine Learning

Getting models out of notebooks and keeping them honest

Serving, versioning, monitoring and drift alerting for models that currently run on a schedule nobody owns.

From
$3,000–$30,000
Typical time
1–4 months
Usually bought by
ML teams

What this actually solves

The hard part of machine learning turned out not to be the modelling. A capable data scientist can build a genuinely useful churn or demand or fraud model in a couple of weeks. Keeping three of them running correctly for three years, through staff changes and platform migrations and a business that keeps changing shape underneath them, is the part nobody budgeted for.

The state this usually reaches looks like this. Models live in notebooks on a shared server, triggered by a cron entry someone added a year ago. Predictions land in a database table. The code is in version control but the models are not, so nobody can say with certainty which version is serving or what data it was trained on. Accuracy gets checked when someone remembers. And the whole arrangement depends on one person who knows how it fits together, which means it is fragile in a way that never appears on a status page.

The failure that makes this urgent is a silent one. A model does not crash when it becomes wrong. It carries on responding in milliseconds, returning perfectly well-formed predictions, and every dashboard stays green while the decisions those predictions drive get steadily worse. Weeks pass before someone notices the business outcome, and by then the cause is weeks behind. What is being bought here is not deployment. Deployment is the easy half. It is the ability to notice, to know which version did it, and to get back to the previous one quickly.

How the work runs

  1. Assess what actually runs, and where. Every model in production or claiming to be, how it is triggered, what data it consumes, who owns it, and how anyone would know if it broke. This is done by looking rather than by asking, because the documented picture and the real one rarely match. Output is a maturity placement and a phased roadmap with the worst pain first. One to two weeks.
  2. Put a registry in first. Every model version recorded with its training data, its parameters, its validation scores and its deployment status, through MLflow or Weights and Biases. This comes before serving because until you can answer which version is live, nothing else you build can be trusted. One to two weeks.
  3. Containerise and serve, with a route back. Models packaged in Docker and served behind a versioned API using BentoML, KServe or your cloud's managed endpoints, with the rollback path built and — this is the part usually skipped — actually tested by performing a rollback before anything depends on it. Two to four weeks.
  4. Instrument the predictions. Every prediction logged with its inputs, its output, the model version that produced it and the latency, into a store you can query. Prometheus and Grafana for the operational view, joined to the model view so an incident can be traced from a business symptom back to a specific version. Two to three weeks.
  5. Add drift detection and set thresholds that mean something. Input distributions and prediction distributions compared against the training baseline through Evidently AI, with alert thresholds tuned so they fire on real movement rather than on ordinary weekly variation. An alert nobody believes is worse than no alert. One to two weeks.
  6. Automate retraining behind a validation gate. The pipeline in Airflow or Dagster, and a gate that refuses to promote a newly trained model unless it beats the incumbent on a held-out set. Retraining without that gate is an automated route to shipping a worse model. Two to four weeks.
  7. Document and hand over. Runbooks for the failures that will actually occur, the retraining trigger, the rollback procedure, and a working session with the team who will own it. About a week.

What moves the price

The range is $3,000–$30,000 over 1–4 months, with a standalone assessment sitting at the bottom of it. Three things drive the rest.

How many models and how uniform they are. Three models built by the same person in the same framework standardise easily. Three built over four years in different frameworks with different dependency requirements need their differences resolved before any shared platform can hold them.

The platform, and whether the data pipeline underneath is sound. A team already on one cloud with clean, scheduled data feeds is a contained project. A team whose training data is assembled semi-manually each time, or who are split across environments, is carrying a data engineering project inside the MLOps one, and it has to be sequenced first.

Compliance and where it has to run. Regulated environments add auditability requirements — reproducing exactly which model version produced a specific historical decision, and proving it. On-premise or air-gapped deployment removes the managed services that would otherwise absorb a large part of the work.

What usually goes wrong

Infrastructure monitoring gets mistaken for model monitoring. The dashboards are comprehensive, the alerts are wired to a pager, uptime is excellent and response times are low. None of it watches the thing that matters. A model whose input population has shifted returns confident predictions at full speed, and every operational signal reports health while the predictions decay. The distinction has to be built in deliberately, because nothing about the infrastructure stack suggests it is missing.

Retraining is automated before there is a gate to stop it. Automatic retraining sounds like maturity and is dangerous without validation. If the drift that triggered the retrain came from a broken upstream feed or a contaminated period of data, the newly trained model is worse than the one it replaces, and the automation promotes it without a human in the path. The gate is simple — the challenger must beat the incumbent on held-out data or it does not ship — and it is what makes the automation safe rather than merely fast.

The deployment path is automated and the way back is not. Pushing a new model version becomes a single command, while rolling back is a manual sequence written in a document that has never been executed. The first bad promotion then turns into a slow, improvised afternoon under pressure, usually with the person who wrote the document unavailable. The rollback is built at the same time as the deployment and rehearsed once while nothing is wrong, which is the only time it can be rehearsed calmly.

See where the site stands before you brief anyone.

If the site is already live, start from what it scores rather than from a guess. The audit reports what it checked, what it found, and — the part most tools leave out — what it could not check, and why.

See the website audit Talk about this work

Questions people ask before they commit.

Can we buy just the assessment?
Yes, and for a team that wants the plan before it commits a budget, it is the right first purchase. It produces an honest picture of where your models actually run, a placement against the usual maturity stages, and a three-phase roadmap with the highest-pain item first. It sits at the lower end of the range and it gives you something you can act on with your own engineers if you decide to.
Our uptime monitoring is already in place. Is that not enough?
It covers a different failure. Infrastructure monitoring tells you the service responded quickly and returned a two hundred. A model can do that flawlessly while its predictions have quietly become worthless, because the population it scores has shifted away from the population it was trained on. Nothing in an availability dashboard notices that. Model monitoring watches the inputs and the outputs, not the wire.
What exactly is drift, and which kind matters?
Two kinds, and they need different responses. Data drift is your inputs changing shape — a new customer segment, a supplier who changed a code, a field that started arriving null. Concept drift is the relationship changing — the same inputs no longer imply the same outcome, which is what happens after a pricing change or a market shift. Data drift is detectable immediately from the inputs alone. Concept drift usually needs outcomes, which is why the alerting is built on both.
Our ground truth arrives weeks after the prediction. Does monitoring still work?
It works, but it has to be designed for it. If you only find out whether a churn prediction was right ninety days later, an accuracy dashboard is empty for ninety days and is not an early warning of anything. So the immediate signal comes from input distributions and prediction distributions, which are available the moment a prediction is made, and the accuracy view fills in behind it as labels arrive. Ignoring the lag is how monitoring gets built and then never alerts.
Do we need Kubernetes for this?
Often not, and we will say so. Containerised services on a managed platform, or the managed model endpoints your cloud already offers, are simpler to run and sufficient for a small number of models at modest traffic. Kubernetes earns its complexity at a certain scale and team size, and below that it is infrastructure you have to staff.
We have models running fine on a cron job. Why change anything?
The question worth asking is what happens on the day they do not run fine. If a prediction is wrong tomorrow, can you say which version produced it, what data trained that version, and what it scored in validation? If the answer to any of those is that one person would have to reconstruct it, you have a working system with a single point of failure and no way to investigate an incident.

Often taken together.

Start with the brief, not the invoice.

Send what you are trying to achieve. You get a written scope, a price and a date — or an honest “this is not the right service for that”.

Talk about MLOps & model deployment All AI & Machine Learning services