Machine Learning β€Ί Machine Learning in Practice β€Ί Day 195

Day 195: Monitoring Models in Production

Day 195 of 365 β€” Monitoring Models in Production

Master production ML monitoring: distinguish data drift from concept drift, compute Population Stability Index (PSI) and Kolmogorov-Smirnov statistics from scratch, and architect real-time alerting engines.

Course
Machine Learning
Category
Machine Learning in Practice
Reading time
β‰ˆ 35 min
Practical time
β‰ˆ 50 min
Lesson duration
1h 25m
Last verified
2026-08-29

Hands-on lab for this lesson

Lab files on GitHub: https://github.com/ai-roadmap-365/ai-roadmap-365.github.io/tree/main/labs/sections/machine-learning/day-195-monitoring-models-in-production

  1. Get the hands-on files. Clone the labs repository once (you can reuse this clone for every lesson). This works on macOS, Linux, and Windows (PowerShell or WSL):
    git clone https://github.com/ai-roadmap-365/ai-roadmap-365.github.io.git
    cd ai-roadmap-365.github.io
  2. Open this lesson's lab. Move into the directory for this specific day. Every lab lives at the same predictable path β€” section / subsection / week / day:
    cd labs/sections/machine-learning/day-195-monitoring-models-in-production
  3. Read the lab guide. Open `README.md` in that directory. It lists the exact commands, what each does, the expected output, and how to check your work β€” read it before running anything.
  4. Run it and check your work. Follow the README's "How to run" section: run the example first to see the finished result, then complete the numbered exercises in `starter/`, then run the tests. The tests pass (exit 0) only when your work is correct.
    bash tests/run_tests.sh   # or the test command named in the lab README

You can also open the lab as a local page (works offline, shows the file tree and expected output).

Learning objectives

By the end of this lesson you will be able to:

Prerequisites

Why this matters

Deploying a machine learning model to production is not the end of the engineering lifecycle; it is the beginning of continuous operational decay.

Unlike traditional deterministic software, which functions reliably until a code bug is deployed or hardware fails, machine learning models degrade silently. A deployed model will continue returning 200 OK HTTP status codes and emitting clean probabilities while its real-world predictive accuracy drops from 90% to 50%.

Why does this happen?

  1. Covariate Shift (Data Drift): Consumer demographics change, marketing campaigns attract a new user segment, or a mobile iOS update modifies sensor telemetry format.
  2. Concept Drift: A global pandemic hits, a macroeconomic recession begins, or a new competitor launches, fundamentally altering the relationship between user features and purchasing decisions.
  3. Upstream Schema Corruption: An upstream database migration silently converts currency from USD to EUR or populates missing zip codes with "00000".

To prevent silent revenue destruction, you must master Production ML Observability, Population Stability Index (PSI), Kolmogorov-Smirnov Drift Detection, and Real-Time Alerting Pipelines.


The idea in plain language

Think of an automated airplane autopilot system flying from New York to London:

If you only monitor engine fuel (traditional server CPU), you will never know the plane is flying directly into a hurricane until it crashes.


Historical background

  1. 1951 (Solomon Kullback & Richard Leibler): Introduced Kullback-Leibler (KL) Divergence, defining the information-theoretic distance between two probability distributions.
  2. 1970s (Retail Banking & Credit Scoring): Credit risk underwriters developed the Population Stability Index (PSI) to monitor whether incoming loan applicant distributions diverged from credit score development samples.
  3. 2014 (Joao Gama et al.): Published A Survey on Concept Drift Adaptation, providing the modern theoretical taxonomy of concept drift, virtual drift, and adaptive sliding window algorithms.
  4. 2021–Present (Industrial ML Observability Platforms): Emergence of dedicated ML telemetry frameworks (Evidently AI, WhyLogs, Arize, Fiddler) integrating statistical drift metrics directly into Prometheus, Datadog, and Grafana.

What it is β€” and what it is not

What Production ML Observability IS:

What it is NOT:


Why it was created and what problems it solves

In supervised learning, models are trained on historical snapshots D_train = (X_train, y_train). In production, the model operates on an unbounded, non-stationary temporal stream D_prod = (X_t, y_t).

The fundamental challenge of production ML is The Ground Truth Feedback Delay:

Production ML monitoring solves this blind spot by tracking Proxy Signals (Data Drift and Prediction Drift) that can be computed instantly on every single inference payload without waiting for ground-truth labels.


How it works

Let us dissect the taxonomy of drift, the mathematical derivation of PSI and KS-tests, and the four pillars of ML observability.

1. The Taxonomy of Production Drift

Let P(X, Y) = P(X) * P(Y | X) represent the joint distribution of features X and target outcomes Y:

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                        TYPES OF PRODUCTION DRIFT                       β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Type              β”‚ Mathematical Shift    β”‚ Real-World Example         β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ 1. Covariate /    β”‚ P(X) changes          β”‚ Marketing campaign targets β”‚
β”‚    Data Drift     β”‚ P(Y|X) stationary     β”‚ older demographic cohort   β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ 2. Concept Drift  β”‚ P(Y|X) changes        β”‚ Macroeconomic recession:   β”‚
β”‚                   β”‚ P(X) can be stationaryβ”‚ same income defaults more  β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ 3. Prior Drift    β”‚ P(Y) changes          β”‚ Seasonal surge in total    β”‚
β”‚                   β”‚ (Target imbalance)    β”‚ fraud attempts on Black Friβ”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ 4. Upstream Data  β”‚ Corrupted X encoding  β”‚ Mobile app update converts β”‚
β”‚    Integrity Bug  β”‚ Nulls / Format change β”‚ integer timestamps to null β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

2. Population Stability Index (PSI) Derivation

Population Stability Index calculation workflow showing reference baseline vs current inference bin frequency comparisons and drift thresholds

The Population Stability Index (PSI) quantifies how much a variable distribution has shifted between a Reference dataset P (e.g. training set) and an Evaluation dataset Q (e.g. recent production traffic).

Step 1: Quantile Binning

Discretize the continuous reference feature into B equal-frequency bins (typically B = 10 deciles):

Step 2: Binning the Production Stream

Count the proportion of live production samples falling into each reference bin:

Step 3: Compute PSI Formulation

PSI = sum_{i=1}^B (A_i - E_i) * ln(A_i / E_i)

Notice that PSI is a symmetrized form of Kullback-Leibler (KL) Divergence:

PSI = D_{KL}(A || E) + D_{KL}(E || A)

Standard Industrial PSI Thresholds:


3. Kolmogorov-Smirnov (KS) Drift Test

For continuous numerical features, the Two-Sample Kolmogorov-Smirnov Test compares the Empirical Cumulative Distribution Functions (eCDFs) F_P(x) and F_Q(x):

D_{KS} = sup_x |F_P(x) - F_Q(x)|

4. Alternative Drift Distance Metrics: Wasserstein and Jensen-Shannon

While PSI and KS-tests are industry staples in credit and financial scoring, modern observability platforms compute complementary geometric distance metrics:

A. Wasserstein Distance (Earth Mover’s Distance):

Quantifies the minimum physical work (mass times distance) required to transform probability distribution P into distribution Q:

W_1(P, Q) = int_{-inf}^{+inf} |F_P(x) - F_Q(x)| dx

Unlike KL divergence (which explodes to infinity if support sets do not overlap), Wasserstein distance provides a smooth, bounded, and interpretable metric expressed directly in the physical units of the feature (e.g. β€œincome drifted by an average of $3,500 across the population”).

B. Jensen-Shannon (JS) Divergence:

A smoothed, symmetric version of KL divergence bounded strictly between 0.0 and 1.0 (when using base-2 logarithm):

JS(P || Q) = 0.5 * D_{KL}(P || M) + 0.5 * D_{KL}(Q || M)

where M = 0.5 * (P + Q) is the average mixture distribution. JS distance sqrt(JS(P || Q)) satisfies all formal mathematical properties of a true metric space.


5. The Four Pillars of ML Observability

Observability telemetry dashboard layout displaying four monitoring pillars service latency prediction drift error rate and resource saturation

  1. Pillar 1: Operational Health (DevOps Golden Signals):
    • p50 / p95 / p99 request latency (ms).
    • Throughput (Queries Per Second - QPS).
    • Container RAM, GPU VRAM, and CPU utilization.
  2. Pillar 2: Input Data & Feature Drift:
    • Per-feature PSI scores and KS-test p-values.
    • Missing value rates (% nulls) and schema constraint violations (422 rejections).
  3. Pillar 3: Prediction & Concept Drift:
    • Distribution of predicted probabilities P(y_hat = 1).
    • Classification output entropy and positive class ratio.
  4. Pillar 4: System Errors & Safety Fallbacks:
    • HTTP 5xx error rate and unhandled exception traces.
    • Fallback circuit breaker trigger frequency.

An everyday analogy

Think of a water treatment plant supplying clean drinking water to a major city:


Examples in practice

Let us inspect a complete, modular, pure Python implementation of Population Stability Index (PSI) calculation and feature drift detection:

import numpy as np
from typing import Dict, Any, List, Tuple

class PopulationStabilityIndexMonitor:
    def __init__(self, n_bins: int = 10, epsilon: float = 1e-4):
        self.n_bins = n_bins
        self.epsilon = epsilon

    def compute_bin_boundaries(self, reference: np.ndarray) -> np.ndarray:
        # Compute quantile bin edges on reference training data
        quantiles = np.linspace(0, 100, self.n_bins + 1)
        bin_edges = np.percentile(reference, quantiles)
        # Ensure strictly monotonic bin edges
        bin_edges[0] = -np.inf
        bin_edges[-1] = np.inf
        return bin_edges

    def calculate_psi(
        self, reference: np.ndarray, current: np.ndarray
    ) -> Tuple[float, Dict[str, Any]]:
        bin_edges = self.compute_bin_boundaries(reference)

        # Expected counts in reference
        ref_counts, _ = np.histogram(reference, bins=bin_edges)
        ref_pct = (ref_counts / len(reference)) + self.epsilon

        # Actual counts in current production stream
        cur_counts, _ = np.histogram(current, bins=bin_edges)
        cur_pct = (cur_counts / len(current)) + self.epsilon

        # Normalize to sum to 1.0
        ref_pct /= np.sum(ref_pct)
        cur_pct /= np.sum(cur_pct)

        # PSI formula: sum (A_i - E_i) * ln(A_i / E_i)
        psi_contributions = (cur_pct - ref_pct) * np.log(cur_pct / ref_pct)
        total_psi = float(np.sum(psi_contributions))

        # Classify drift level
        if total_psi < 0.10:
            status = "STABLE"
        elif total_psi < 0.20:
            status = "MODERATE_DRIFT"
        else:
            status = "SIGNIFICANT_DRIFT"

        details = {
            "psi": round(total_psi, 4),
            "status": status,
            "ref_distribution": np.round(ref_pct, 4).tolist(),
            "cur_distribution": np.round(cur_pct, 4).tolist(),
        }
        return total_psi, details

Implications: security, privacy, performance, scalability, and cost

  1. Streaming Drift vs Batch Sliding Windows:
    • In massive 10,000 QPS platforms, computing exact percentiles over millions of raw rows in memory is prohibitive. Streaming sketch algorithms (e.g. t-digest, KLL sketches, WhyLogs) compute exact approximate quantiles with fixed 50KB memory buffers.
  2. Alert Fatigue Prevention:
    • In enterprise models with 500 tabular features, random noise will trigger false drift alerts daily. Hierarchical alerting groups features by feature importance (e.g. alert on-call engineers only if top-10 SHAP importance features exhibit PSI > 0.20).

Alternatives: free, open source, and commercial

Tool / FrameworkArchitectureReal-Time vs BatchBest For
Evidently AIOpen Source / CloudInteractive Reports & TestsTabular, NLP, & LLM drift dashboards
WhyLogs (whylabs)Open Source / SaaSStreaming statistical sketchesHigh-throughput distributed telemetry
Alibi DetectOpen Source (Seldon)Outlier & drift algorithmsDeep learning & adversarial detection
Arize AI / FiddlerSaaS / CommercialReal-time observabilityEnterprise MLOps teams
Prometheus + GrafanaOpen SourceTime-series metrics exporterDevOps infrastructure integration

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                   MONITORING PARADIGM COMPARISON                       β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Dimension          β”‚ DevOps APM       β”‚ Data Quality   β”‚ ML Drift      β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Primary Focus      β”‚ CPU, RAM, 500s   β”‚ Nulls, Schemas β”‚ Distributions β”‚
β”‚ Latency Metric     β”‚ Milliseconds     β”‚ Hourly Batch   β”‚ Real-Time PSI β”‚
β”‚ Mathematical Basis β”‚ Counters/Gauges  β”‚ SQL Assertions β”‚ KL / KS Tests β”‚
β”‚ Feedback Horizon   β”‚ Instant (Seconds)β”‚ Ingestion Time β”‚ Delayed Weeks β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

When to use it β€” and when not to

When to USE Production ML Monitoring:

When NOT to use it:


Knowledge check

  1. What is the fundamental difference between Covariate (Data) Drift and Concept Drift?
  2. How does Population Stability Index (PSI) mathematically measure distribution divergence?
  3. What do the three standard PSI threshold ranges (<0.10, 0.10–0.20, β‰₯0.20) indicate?
  4. Why is Ground Truth Feedback Delay a primary obstacle in production machine learning?
  5. How does the Kolmogorov-Smirnov (KS) test detect continuous feature drift?

Hands-on exercise

In this lab, you will implement PopulationStabilityIndexMonitor in pure Python and NumPy, generate synthetic reference and shifted evaluation feature distributions, calculate PSI scores and bin contributions, classify drift status into STABLE, MODERATE_DRIFT, or SIGNIFICANT_DRIFT, and verify drift alerting logic.

Expected output

[Production ML Drift Monitor]
Reference Dataset: 1,000 samples ~ Normal(mean=50, std=10)
Stable Production Stream: 1,000 samples ~ Normal(mean=50.2, std=10.1) -> PSI = 0.0142 [STABLE]
Shifted Production Stream: 1,000 samples ~ Normal(mean=62.0, std=14.0) -> PSI = 0.4285 [SIGNIFICANT_DRIFT]
Alert Generator: Alert triggered for feature 'annual_income' (PSI >= 0.20)
Test Suite: 2 passed in 0.08s

Validate your work

Run the automated test runner:

./tests/run_tests.sh

Troubleshooting

Common mistakes


Practice assignment

  1. Implement a Multi-Feature Drift Scanner that computes PSI across 10 continuous tabular columns and outputs a sorted ranking of most-drifted features.
  2. Build an automated Kolmogorov-Smirnov drift evaluator using scipy.stats.ks_2samp.

Extension challenge

Implement an automated Streaming Sketch Drift Detector (T-Digest):

Quiz

Q1. What is the fundamental mathematical distinction between Covariate/Data Drift and Concept Drift?

  1. Data Drift is a shift in input feature distributions P(X) while relationship P(Y|X) remains unchanged; Concept Drift is a change in the true causal relationship P(Y|X) itself
  2. Data Drift only occurs in neural networks; Concept Drift only occurs in decision trees
  3. Data Drift means the server ran out of disk space; Concept Drift means the Python version was upgraded
  4. There is no difference between Data Drift and Concept Drift
Show answer

Answer: A. Data Drift is a shift in input feature distributions P(X) while relationship P(Y|X) remains unchanged; Concept Drift is a change in the true causal relationship P(Y|X) itself

Data drift means inputs change (e.g. users become wealthier), while concept drift means the underlying physical relationship changes (e.g. macroeconomic recession alters default risk for all incomes).

Q2. What does a Population Stability Index score of PSI = 0.24 between training and live inference data indicate?

  1. Significant distribution shift: the feature has drifted substantially and requires urgent model retraining or feature investigation
  2. Zero drift: the model is perfectly calibrated
  3. That 24% of requests resulted in HTTP 500 errors
  4. That the model accuracy increased by 24%
Show answer

Answer: A. Significant distribution shift: the feature has drifted substantially and requires urgent model retraining or feature investigation

Industry standard PSI benchmarks: PSI < 0.10 is stable, 0.10 <= PSI < 0.20 represents moderate shift, and PSI >= 0.20 signifies severe distribution drift.

Q3. Why is Ground Truth Label Feedback Delay a major challenge when monitoring production machine learning systems?

  1. In many real-world domains (e.g. loan defaults, fraud, 30-day churn), the true target label Y is not known for weeks or months after the prediction is served
  2. PostgreSQL databases cannot store dates
  3. Labels can only be downloaded once per year
  4. FastAPI blocks label logging
Show answer

Answer: A. In many real-world domains (e.g. loan defaults, fraud, 30-day churn), the true target label Y is not known for weeks or months after the prediction is served

Because ground truth labels arrive with significant latency, production monitors must rely on proxy signals: input data drift (PSI) and prediction probability distribution drift.

Q4. What does the Two-Sample Kolmogorov-Smirnov (KS) Test measure when comparing reference and production feature arrays?

  1. The maximum vertical distance (D-statistic) between the empirical cumulative distribution functions (eCDFs) of the two datasets
  2. The difference between the two maximum values
  3. The ratio of standard deviations
  4. The correlation between feature column names
Show answer

Answer: A. The maximum vertical distance (D-statistic) between the empirical cumulative distribution functions (eCDFs) of the two datasets

The KS-test compares empirical CDFs: D = sup_x |F_1(x) - F_2(x)|. A p-value < 0.05 rejects the null hypothesis that the two samples originate from the same continuous distribution.

Q5. Why is monitoring Prediction Distribution Drift (P(Y_hat)) an effective early warning proxy for model degradation?

  1. If the model output distribution suddenly shifts from 10% positive to 40% positive, it indicates underlying data distribution shifts even before ground-truth labels arrive
  2. Prediction drift automatically fixes model weights
  3. Prediction drift proves that server memory is corrupted
  4. It eliminates the need for Prometheus metrics
Show answer

Answer: A. If the model output distribution suddenly shifts from 10% positive to 40% positive, it indicates underlying data distribution shifts even before ground-truth labels arrive

Monitoring model output scores is instant and requires zero ground-truth labels, immediately catching upstream data pipeline corruptions or macroeconomic shocks.

Glossary

Model Observability
The capability to infer the internal health, accuracy, and data consistency of production ML systems from external telemetry metrics.
Data Drift (Covariate Shift)
A change in the statistical distribution of input features P(X) while the conditional target mapping P(Y|X) remains stationary.
Concept Drift
A change in the underlying physical or behavioral relationship P(Y|X) between input features and target outcomes.
Population Stability Index (PSI)
A metric measuring the degree of divergence between two probability distributions, based on symmetric Kullback-Leibler divergence.
Kolmogorov-Smirnov (KS) Test
A non-parametric statistical test comparing the continuous empirical cumulative distributions of two independent samples.
Prediction Drift
A shift in the distribution of model output probabilities or predicted class labels over time.
Feedback Delay
The time lag between when a model prediction is emitted and when the true ground-truth outcome is recorded.
Golden Signals
The four core SRE monitoring dimensions: Latency, Traffic (QPS), Errors, and Resource Saturation.

Sources and further reading


Kept in this browser, no account needed. Your progress page turns the whole record into one link you can bookmark or open on another device.