En production, rien ne clignote quand le monde change. Le modèle continue de répondre, avec la même assurance, sur des données qui ne ressemblent plus à celles de son entraînement. On l'apprend des semaines plus tard, quand les étiquettes arrivent.
Une balance de précision étalonnée en laboratoire à 20 °C, puis installée dans un hangar à 5 °C. Elle affiche toujours un chiffre, avec le même nombre de décimales. Mais ce n'est plus le bon. Aucune alarme ne se déclenche : seuls un étalonnage régulier ou un contrôle de ses conditions de mesure le révèlent.
On parle de dérive dès que la distribution des données vues en production s'écarte de celle de l'entraînement. Selon ce qui bouge, la détection et le remède ne sont pas les mêmes.
Un modèle classe des mesures en deux familles, avec un seuil fixé à l'entraînement (x = 1). Les deux groupes sont centrés en 0 et en 2, avec la même dispersion. Décalez la production (capteur qui dérive) ou élargissez-la (bruit en plus) : la courbe cyan est la référence d'entraînement, la magenta ce que le modèle voit aujourd'hui.
Le PSI, le KS et la distance de Jensen-Shannon se calculent sur les entrées seules, sans étiquettes. La précision réelle n'est connue que quand les étiquettes arrivent (ici calculée exactement, pour la comparaison).
Détecter ne suffit pas : il faut décider quoi faire de l'alerte, et à quelle vitesse.
import numpy as np from scipy.stats import ks_2samp def psi(reference, production, bins=10): # bornes = déciles de la référence d'entraînement edges = np.quantile(reference, np.linspace(0, 1, bins + 1)) edges[0], edges[-1] = -np.inf, np.inf p = np.histogram(reference, edges)[0] / len(reference) q = np.histogram(production, edges)[0] / len(production) p, q = np.clip(p, 1e-6, None), np.clip(q, 1e-6, None) return np.sum((q - p) * np.log(q / p)) # psi < 0.10 stable · 0.10 à 0.25 à surveiller · > 0.25 dérive forte stat, pvalue = ks_2samp(reference, production) # test de Kolmogorov-Smirnov
Quand une seule observation sort du lot, la dérive ne suffit plus : il faut décider si ce point est étrange, et pourquoi.
Statistiques, finance quantitative, machine learning, deep learning, LLM, agents IA, MLOps : 321 épisodes avec des simulateurs à manipuler, pas des vidéos.
Statistics, quantitative finance, machine learning, deep learning, LLMs, AI agents, MLOps: 321 interactive episodes with simulators to play with, not videos.