AI & integration

Model monitoring in production: metrics, drift, and alerts

A model that performs well during testing can fail within weeks of deployment without showing obvious errors in its output. You must monitor models in production to identify these issues before they affect your business operations or your customers.

Model monitoring in production involves the continuous observation of a deployed model's inputs, outputs, and performance. This process ensures that issues are identified before they cause damage, as a model may appear technically functional while its predictions become inaccurate. Monitoring includes tracking input drift, output drift, and performance relative to ground truth. These metrics are supported by thresholds based on business requirements and alerts that provide specific details about any changes.

Deploying a model has become a straightforward task. The more difficult work is maintaining accuracy when the model encounters actual customer behaviour and seasonal changes. Most teams do not invest enough resources into this stage. At Shipshape Data, we frequently observe teams celebrating a launch and then failing to review the model's predictions for the following six months. The model continues to operate, but its accuracy remains unverified. By the time someone checks the performance, a full quarter of decisions may have already been affected by incorrect data.

The problem is easy to describe. The world changes and the model does not have access to that new information.

Customer behaviour changes, an upstream pipeline modifies a field format, or a new product category appears that was not in the training data. These events do not trigger errors. The model continues to provide confident answers because standard serving pipelines do not include requirements for the model to verify its own output.

This is a practical walk through building monitoring that catches these problems: which metrics matter and why the default one is often wrong, how data drift differs from prediction drift and concept drift, what to do when ground truth turns up months after the prediction did, and how to write alerts that get acted on instead of muted at 2am. We'll also get into monitoring large language models and retrieval pipelines, where the old statistical toolkit stops applying cleanly.

What monitoring actually needs to cover

Model monitoring in production is the continuous observation of a deployed model's inputs, outputs, and performance to identify issues before they cause damage. After a model is deployed, it processes actual requests. Any failure in this process affects downstream decisions. This task involves more than checking if a system is running. A model might be technically functional with low latency and no errors while still producing inaccurate or biased predictions that standard infrastructure tools do not detect. Model monitoring focuses on the machine learning layer. This includes the structure of inputs, the distribution of predictions, and the accuracy of outputs compared to actual results when that data is available.

Three layers and three types of failure

Input monitoring tracks whether the data arriving at inference time still resembles the data the model trained on. If your model learned on customers aged 25 to 45 and starts receiving a flood of customers in their sixties, that's worth flagging well before anyone downstream notices. Output monitoring watches the predictions themselves: the spread of predicted values, confidence scores, class probabilities. A classifier that suddenly returns one label far more often than it did in validation is telling you something changed. Performance monitoring, comparing predictions to actual outcomes, is the most direct signal you have, and the hardest to get quickly, since labelled feedback tends to arrive late or not at all. Designing around that lag is most of the actual work.

Why your uptime dashboard won't catch this

Standard software is deterministic. The same input always produces the same output. Machine learning models are statistical. They make probabilistic judgements based on patterns in historical data. A model can appear functional from an infrastructure perspective when its predictive quality has declined significantly. The system may show no errors, low latency, and normal CPU usage while every prediction provides incorrect guidance to the business. Standard observability tools lack the design to detect this type of performance decay. Model monitoring requires its own specific discipline for this reason.

Reasons teams are unprepared for this situation

Most machine learning failures in production do not involve system crashes. These failures are usually gradual and difficult to detect without active monitoring. For example, a churn model with 89% accuracy during testing may drop to 72% accuracy over six months as user behaviour changes. During this time, the business might continue to make decisions based on outputs it believes are reliable. Upstream systems often change data formats, new customer segments appear, and seasonal trends shift input values. External events can also change behaviour in ways that were not present in the training data. The model cannot identify these changes without external oversight.

A model cannot identify its own errors. Your monitoring system is responsible for performing that task.

If you do not use monitoring, you must rely on delayed indicators such as lower sales, more complaints, or manual errors. When these signals appear, the model has typically been underperforming for several weeks. Every decision made during that period has already been implemented. A fraud model that drifts will begin to approve transactions it should have blocked. A forecasting model that loses accuracy results in overstocking or empty shelves. A recommendation engine that degrades reduces customer trust. This loss of trust often occurs before it is reflected in your model metrics.

Regulated industries also have compliance requirements. Several frameworks now require evidence that a model performs consistently over time, rather than just a single validation at the time of launch.

Complete the preparation before you deploy

You should not add monitoring after a launch. You must make monitoring decisions before the model goes live. This is necessary because you compare all monitored data against a baseline that you capture during the training phase.

Record a baseline before you ship any changes

Record the statistical properties of your training and validation data before you deploy. Document the mean, variance, and distribution for every feature. You should also record the distribution of the model output scores or class predictions and the performance levels reached during evaluation. These figures serve as the benchmark for all future comparisons. Capture these details before any code enters production:

  • Feature distributions (mean, median, standard deviation, minimum, and maximum per input)
  • Prediction distribution (class frequencies or score histograms)
  • Validation performance metrics: accuracy, F1, AUC-ROC, whatever fits the task
  • Known edge cases or subgroups that behaved differently during evaluation

Wire it into the pipeline that carries the traffic

Monitoring is only useful if it analyses actual traffic. Most teams log model inputs and outputs during inference and send those logs to a storage system for statistical analysis. This logging can happen in the serving layer, an API gateway, or a feature store. After you set up logging, run scheduled checks on the incoming data. Daily checks are sufficient for low-risk applications. Use near real-time monitoring for any application where an incorrect prediction causes immediate financial or operational loss. You should set the monitoring frequency based on the actual level of risk. If the frequency is too high, your team will receive too many alerts before you have calibrated the detection thresholds.

Choose metrics for the model, not the default

People often pick accuracy as a metric simply because they are familiar with it. This mistake occurs often. The appropriate metric depends on the model's purpose, the particular costs of various error types, and the risk level of a wrong result.

Choose a metric that matches the model type

Classification models need different treatment depending on how balanced the classes are. Accuracy looks great on a dataset where 95% of examples belong to one class, even if the model ignores the minority class completely. For those cases, precision, recall, and F1 give you a far more honest picture of what is happening where it matters, and AUC-ROC tells you how well a probability model separates classes across the full range of decision thresholds, beyond the one you happened to pick.

Regression models need either mean absolute error or root mean squared error. Selecting between them depends on whether large errors are considerably more expensive than small ones. Root mean squared error imposes a heavier penalty on large errors. Use it when a large deviation causes more harm than a small one. Mean absolute error treats every error the same. This is suitable when the cost of an error grows linearly with the magnitude of the prediction mistake.

Weigh what it costs to be wrong

The risk level decides which metrics matter most and how tightly you set their thresholds.

It shouldn't sit as background context.

In areas such as credit decisioning, medical triage, or fraud detection, a false negative and a false positive represent distinct errors. You should not consider them identical. For lower-stakes tasks like content recommendations or internal reporting, a broader error tolerance is typically acceptable. You need to make these decisions intentionally and record them, instead of relying on the default settings set by the original model developers.

Watch data quality and training-serving skew together

Data quality problems and training-serving skew cause most production model failures, and teams often treat them as unrelated when they are really two versions of the same risk. Corrupted input data damages predictions immediately; a mismatch between training data and production data wears performance down more slowly.

Your model cannot validate the data it receives. It will handle null values, numbers outside expected ranges, or wrong formats and produce an output without signaling an error. You should embed schema validation and completeness checks into the inference pipeline to catch these problems before they reach the model. You should record how often missing values, out-of-range inputs, and all required features occur.

Training-serving skew is a separate problem where the statistical characteristics of production data differ from those of the training data. This issue can appear right at deployment rather than emerging over time. A common cause is a mismatch in feature calculation, for example using a 30-day rolling average during training but a 7-day average during serving because of pipeline differences. You can assess this skew by comparing each feature's distribution at inference time with your training baseline. You should concentrate on features that go through transformation steps, as these often cause inconsistencies.

Three kinds of drift, and why they need separate handling

Drift is a hard failure mode to detect because it rarely triggers immediate system crashes. A model loses effectiveness over time as the statistical properties of its inputs, outputs, or learned relationships diverge from the training data. Merging these three drift types into one dashboard slows the diagnostic process more than needed.

Data drift

Data drift happens when the distribution of your input features changes over time. It may involve a shift in the mean of a continuous feature, the emergence of new values in a categorical field, or a rare input becoming more common. Statistical tests such as Kolmogorov-Smirnov for continuous features and chi-squared for categorical features give a way to measure these changes. These methods let you decide if an incoming distribution has passed acceptable limits without depending on visual chart estimates.

Prediction drift

Prediction drift tracks changes in model outputs without needing ground truth data. If the model once flagged 15% of transactions as high risk and now flags 40%, you should examine this shift even without confirming the accuracy of the new predictions. Monitoring output scores or class frequencies over rolling windows offers an early warning system. This approach does not depend on labels and can spot issues several days before they lead to downstream consequences.

Concept drift

Concept drift is hard to spot because the link between inputs and correct answers changes. Fraud patterns adapt to evade detection models. Economic conditions modify the factors that predict default risk. Inputs may look normal even when the decision boundary the model learned no longer matches reality. To detect this, you must monitor performance as labels arrive and compare error rates across different time windows.

Measuring performance with delayed labels

Ground truth is the most reliable data available, yet it often arrives late. A loan default can take a year to resolve. A churn model cannot verify its accuracy until a considerable amount of time passes after a customer departs. This delay does not remove the need to monitor performance. Instead, you must create a method to assess quality when direct feedback is delayed or missing.

Proxy metrics give data you can use before final labels are available. They are indirect signals based on observable outcomes that show whether a model is working correctly. For example, a credit risk model can track approval rates and early repayment patterns to evaluate predictions long before default events happen. Although these metrics are not perfect, they are more helpful than waiting months for definitive results with no data. You should choose proxy metrics before deployment to avoid picking signals that only confirm your existing assumptions. Log downstream events that relate to correct predictions with the original records so you can link them once the final outcome is known.

Assign a unique identifier to each prediction you store. You also need to create a process that gathers outcomes as they become available and connects them to the original records. If you fail to do this, your performance metrics will stay incomplete. When labels are unavailable, such as with unsupervised systems or generative applications, you should use signals like user corrections, escalations, or override rates as proxy data.

Ensure the team acts on monitoring data

An alert works only if the recipient knows the required action. Most monitoring problems stem from poor alert design rather than a failure to detect issues. These failures happen when notifications are vague, occur too often to be seen as urgent, or lack the context needed for diagnosis. When no specific team owns a monitoring system, the organisation typically stops trusting that system.

Set thresholds by business impact, not by default

Set your thresholds based on what defines a problem for your specific model instead of using the default settings in your monitoring tool. A 2% drop in accuracy might be acceptable for a low-stakes recommendation engine, but it would be a major issue for a credit risk model.

When you set alert thresholds based on statistical sensitivity rather than business impact, you create alert fatigue. This leads staff to ignore real problems.

Review your thresholds. The first month of production usually shows if initial settings are too restrictive or too broad. You should adjust these values as a standard part of maintaining a monitoring system.

Write alerts with enough in them to act on

Every alert should answer three things: what changed, how much, and where to look first. "Model performance degraded" makes the engineer start from nothing. "Prediction confidence on the checkout feature group dropped 18% over the last four hours, baseline 0.87, current 0.71" gives them a starting point. Build a standard structure-metric name, current value, expected range, time window, and a link to the dashboard or runbook-and stick to it.

Give every model a named owner, and write it down

Each model in production must have one specific person assigned to monitor its health and responses. This responsibility belongs to an individual rather than a team.

Incident responders do not need to resolve every issue independently, but they are the initial contact when an alert is triggered and are responsible for escalation. Distributing this responsibility among an undefined group can result in critical alerts going unacknowledged. When a model's ownership changes between teams, ensure the transfer of ownership is clearly documented.

A runbook, one for each alert or failure mode, is what makes that ownership useful under pressure: what the alert means, the likely causes, what to check first, when to escalate. Writing them forces the team to think through failure before it happens. It beats improvising while a model misbehaves in front of a customer. Link each one from the alert it belongs to, because searching a wiki at 3am costs time the business doesn't have, and update them whenever an incident reveals a gap between the runbook and what fixed things.

Monitoring LLMs and retrieval pipelines

Traditional model monitoring relies on structured, tabular data where it is possible to calculate means and variances. Large language models and unstructured pipelines do not fit this framework. Because inputs consist of documents, transcripts, and free text, and outputs are generated content instead of class labels or numbers, standard drift tests are not applicable.

Instead, track proxy quality signals: on the input side, average token length, language mix, how often inputs exceed your context window or trip your content filters. On the output side, response length, refusal rates, and latency per token. A model that starts refusing 30% of requests when it used to refuse 5% is telling you something changed. Sample outputs and route them through a lightweight evaluation step, a secondary model scoring for relevance and coherence, or a human review queue for the higher-stakes cases. Neither is perfect, but both beat infrastructure metrics, which can't see the content at all.

Retrieval-augmented systems require a dedicated monitoring process because ineffective retrieval reduces the quality of all subsequent generated output. You should track hit rates, average similarity scores, and the frequency of low-confidence retrievals across the entire corpus over time. If retrieval scores decline while the knowledge base remains the same, the data indicates a change in user queries. If these scores remain consistent but user satisfaction drops, the issue is likely located in the generation stage. Distinguishing between these two types of failure prevents the team from treating the entire pipeline as a single, unidentifiable problem.

Where to start

You do not need to implement all of these features immediately. Begin with a baseline, record every prediction, and monitor a single performance metric. Do not attempt to manage data quality, multiple types of drift, and a library of runbooks simultaneously at the start. Add new monitoring layers as you discover the specific ways your model fails, as these failures will likely differ from standard examples.

We include this type of monitoring in the production AI systems we build for clients. This allows them to identify model drift on a dashboard immediately rather than learning about it from customer complaints later. If you would like an assessment of your current monitoring setup or need to build monitoring into a new model from the beginning, talk to us. We will review the specific requirements of your models with you.

From concept to production in weeks, not quarters: our bespoke AI development puts articles like this to work on your data.

Monitoring works best when it is planned before launch, as described in our guide to the seven stages from AI pilot to production.

Frequently asked questions

What does model monitoring in production need to cover?

The monitoring must cover three specific areas. First, it should determine if the data received during inference is still similar to the training data. Second, it should track whether the distribution or confidence levels of the predictions are changing. Third, when labels are available, it should measure if the model's actual performance against real outcomes remains stable. Infrastructure monitoring is insufficient for this task because a model can maintain high uptime and low latency even after its predictive quality has significantly declined.

How do you choose metrics for monitoring a model in production?

You should choose a metric based on the model type and the cost of errors instead of defaulting to accuracy. Classification models with imbalanced classes require precision, recall, and F1 scores rather than accuracy alone. Regression models require mean absolute error or root mean squared error, depending on the impact of large errors. High-stakes decisions like fraud detection or credit approval require stricter thresholds than low-stakes recommendation systems.

What are the three kinds of drift to watch for in production?

Data drift occurs when the distribution of input features changes, such as when the mean of a continuous feature shifts or a categorical field includes new values. Prediction drift is the tracking of changes in model outputs before labels are available. Concept drift is a change in the relationship between inputs and the correct answer. This type of drift is difficult to detect because the input data may appear unchanged.

How do you measure model performance when ground-truth labels are late?

When labels like loan defaults or customer churn take months to arrive, you can use proxy metrics to monitor performance. These metrics include downward trends in prediction confidence, changes in the ratio of positive to negative predictions, or an increasing number of predictions near the decision boundary. You should store every prediction with a unique identifier. This allows you to join resolved outcomes to the original predictions when the data becomes available.

How do you monitor large language models and retrieval pipelines?

Standard drift tests require structured data with specific means and variances. These methods do not work for large language models that process free text and generated content. You should monitor proxy signals instead. Track token length, refusal rates, and latency for both inputs and outputs. For retrieval-augmented systems, monitor hit rates and average similarity scores. These metrics allow you to distinguish between a drop in retrieval quality and a decline in generation quality.

Start at your core.

Tell us where your data is today and what you want AI to do. We'll come back with a straight answer on what your foundation needs and where the quickest real win is.

Talk to us