LYCÉE → PRÉPA · L35

Module L35 · Partie K · Ingénierie de l’IA

Maintenir un modèle : le monde change, le modèle non.

Un modèle déployé est une photographie du passé. Les données dérivent (nouveaux capteurs, nouveaux clients, nouvelles formulations), les relations changent (dérive de concept), les dépendances évoluent (API, bibliothèques, modèles amont), et personne ne remarque tant que quelqu’un ne mesure pas. Ce chapitre couvre la détection de dérive (tests statistiques, distances entre distributions, monitoring sans étiquettes), le monitoring de qualité (étiquettes différées, échantillonnage, LLM-juge en production), le ré-entraînement (quand, comment, avec quelles données), le versionnage, les retours utilisateurs, la gestion des incidents et les coûts — avec la théorie et les articles.

Durée : 3 séances · Prérequis : L11, L32, L33, L34. Objectifs : implémenter des détecteurs de dérive (KS, PSI, KL/JS, MMD, classifieur adversarial) ; concevoir un tableau de bord de production ; définir une politique de ré-entraînement ; gérer les versions et les retours arrière ; rédiger un post-mortem.

Ce que vous saurez faire à la fin
  • Distinguer dérive de covariables, de concept, de prior, et les détecter avec ou sans étiquettes.
  • Fixer des seuils d’alerte fondés sur des tests et un taux de fausses alertes contrôlé.
  • Décider entre ré-entraîner, réajuster un seuil, recalibrer ou revenir en arrière.
  • Outiller : versions de modèle/données/prompt, déploiement progressif, journalisation, boucle de retours.

Fiche de cours · Définitions

Définitions

Définition (dérives). Soit p(x, y) = p(x)p(y | x). Dérive de covariables : p(x) change, p(y | x) stable (nouveaux types d’entrées). Dérive de concept : p(y | x) change (la même entrée mérite une autre sortie : changement de règle, de comportement). Dérive de prior : p(y) change (proportion des classes). Dérive de prédiction : la distribution des sorties du modèle change (symptôme observable sans étiquettes).
Définition (étiquettes différées, proxy). En production, la vérité (y) arrive souvent en retard (fraude confirmée un mois plus tard) ou jamais. On surveille des proxys : distribution des entrées, des prédictions, des confiances, des retours utilisateurs, des taux d’escalade, du temps de traitement.
Définition (test de dérive). Test statistique entre une fenêtre de référence (données d’entraînement ou période stable) et une fenêtre courante : Kolmogorov-Smirnov (1D continu), χ² (catégoriel), PSI (population stability index), divergence KL/JS, distance de Wasserstein, MMD (noyaux, multidimensionnel), classifieur adversarial (un modèle qui distingue les deux fenêtres : son AUC mesure la dérive).
Définition (monitoring). Collecte, agrégation et visualisation de métriques système (latence, erreurs, coût), données (dérive, valeurs manquantes, schémas) et modèle (qualité sur étiquettes disponibles, calibration, tranches), avec alertes à seuils et runbooks.
Définition (ré-entraînement). Périodique (chaque semaine), déclenché (dérive détectée, qualité sous seuil), ou continu (apprentissage en ligne) ; sur fenêtre glissante, cumulatif, ou pondéré par récence ; toujours suivi de l’évaluation complète (L32) et d’un déploiement progressif.
Définition (versionnage et déploiement). Version = (code, données, hyperparamètres, poids, prompt, dépendances) hachés et liés. Déploiement shadow (le nouveau modèle prédit sans agir), canary (1–5 % du trafic), A/B (comparaison mesurée), retour arrière (rollback) en un geste.
Définition (boucle de retour, feedback loop). Les prédictions influencent les données futures (un système de recommandation façonne les clics ; un détecteur de fraude change le comportement des fraudeurs) : l’évaluation naïve est biaisée ; il faut des données de contrôle (trafic non traité ou aléatoire).
Définition (incident, post-mortem). Dégradation ou comportement dangereux en production. Post-mortem sans blâme : chronologie, cause racine, impact, ce qui a détecté (ou pas), actions.

Fiche de cours · Formules

Formules à connaître

Kolmogorov-Smirnov : D = supx |Fréf(x) − Fcour(x)| ; seuil à 5 % ≈ 1,36·√((n + m)/(nm))
PSI = Σbins (pcour − préf)·ln(pcour/préf) ; repères : < 0,1 stable, 0,1–0,25 à surveiller, > 0,25 dérive (PSI = KL symétrisée sur bins)
KL(p ‖ q) = Σ p log(p/q) (asymétrique, infinie si q = 0 où p > 0) ; JS = ½KL(p ‖ m) + ½KL(q ‖ m), m = (p + q)/2, bornée par ln 2
Wasserstein-1 (1D) : W₁ = ∫ |Fréf(x) − Fcour(x)| dx — en unités de x, sensible aux déplacements, pas aux bins
MMD² = E[k(x, x′)] + E[k(y, y′)] − 2E[k(x, y)] avec un noyau k (gaussien) ; nul ssi les distributions sont égales (noyau caractéristique)
Classifieur adversarial : AUC ≈ 0,5 ⇒ pas de dérive détectable ; AUC → 1 ⇒ fenêtres séparables ; les variables importantes du classifieur localisent la dérive
χ² d’homogénéité (catégoriel) : Σ (O − E)²/E, ddl = (k − 1) ; attention : avec n grand, tout est « significatif » — regarder la taille d’effet (V de Cramér)
Taux de fausses alertes : avec m tests par jour au seuil α, ≈ mα alertes/jour sans dérive ⇒ Bonferroni ou seuils sur la taille d’effet
Estimation de la qualité sans étiquettes (sous dérive de covariables seule) : exactitude ≈ moyenne des confiances calibrées (ATC, DoC) ; invalide sous dérive de concept
Pondération par importance : w(x) = pcour(x)/préf(x) ; risque courant ≈ Σ w(xi)ℓi/Σ w(xi) sur le jeu de référence étiqueté

Fiche de cours · Théorèmes et démonstrations

Démonstrations à savoir refaire

Théorème 1 (sous dérive de covariables, le risque se corrige par pondération d’importance). Si pcour(y | x) = préf(y | x) et que le support de pcour est inclus dans celui de préf, alors Ecour[ℓ(h(x), y)] = Eréf[w(x)·ℓ(h(x), y)] avec w = pcour(x)/préf(x).
Ecour[ℓ] = ∫∫ ℓ(h(x), y) pcour(x) p(y | x) dx dy = ∫∫ ℓ(h(x), y) [pcour(x)/préf(x)] préf(x) p(y | x) dx dy = Eréf[w(x)ℓ]. On peut donc estimer la qualité courante à partir du jeu de référence étiqueté et d’une estimation de w (par un classifieur réf/cour : w(x) = P(cour | x)/P(réf | x) × nréf/ncour). Limites : variance explosive si w prend de grandes valeurs (régions nouvelles), et faux dès que p(y | x) change (dérive de concept) — que rien ne peut détecter sans étiquettes.
Théorème 2 (la dérive de concept est indétectable sans étiquettes). Il existe deux situations, l’une sans dérive et l’autre avec dérive de concept, produisant exactement la même distribution des entrées et des prédictions.
Prenons p(x) inchangé et un modèle h fixé ; les prédictions h(x) ont donc la même distribution dans les deux cas. Situation 1 : p(y | x) inchangé. Situation 2 : p(y | x) modifié (par exemple, étiquettes inversées sur une région). Toute statistique calculée sur (x, h(x)) est identique ; seule l’observation de y (ou d’un proxy corrélé à y : retours utilisateurs, escalades) sépare les deux. Conséquence pratique : le monitoring sans étiquettes détecte les dérives de covariables et de prédiction ; pour le concept, il faut organiser l’arrivée d’étiquettes — échantillonnage aléatoire annoté chaque semaine, boucle de retour, LLM-juge validé — et surveiller les proxys métier.
Théorème 3 (taille d’effet vs significativité dans les tests de dérive). Pour un test de KS avec n = m échantillons, le seuil de détection est D* ≈ 1,36√(2/n) ; pour n = 10⁶, D* ≈ 0,002 : une dérive infime est « significative ». Le seuil d’alerte doit porter sur une taille d’effet (D, PSI, W₁) choisie pour son impact, pas sur la p-valeur.
Le seuil de KS décroît en 1/√n (statistique de Kolmogorov). À grande échelle, la p-valeur tend vers 0 pour tout écart non nul — or les distributions de production ne sont jamais exactement égales à la référence (saisonnalité, mélange). La question utile est « l’écart est-il assez grand pour dégrader le modèle ? » : calibrer le seuil de taille d’effet sur l’historique (relation observée entre PSI et perte de qualité quand des étiquettes étaient disponibles), et contrôler le taux de fausses alertes par variable (Bonferroni sur m variables, ou fenêtres plus longues).
Théorème 4 (une boucle de retour biaise l’évaluation). Si les données étiquetées observées sont celles que le modèle a sélectionnées (crédit accordé, contenu montré), la métrique estimée sur ces données n’est pas celle sur la population : l’estimateur est biaisé par la sélection, et le biais ne se réduit pas avec n.
Observé = {(x, y) : h(x) = 1}. E[ℓ | h(x) = 1] ≠ E[ℓ] en général : on ne voit jamais les faux négatifs (crédit refusé qui aurait remboursé). Plus de données de la même sélection n’aident pas (biais, pas variance). Remède : une fraction aléatoire non filtrée (exploration, ε %), ou une pondération inverse de la probabilité de sélection (IPW) quand celle-ci est connue (politique stochastique) ; c’est le problème des bandits/contrefactuels (L16).

01 / Détecter

Détecteurs de dérive implémentés : KS, PSI, JS, Wasserstein, MMD, classifieur

01 / Détecter

Seuils, fausses alertes, fenêtres : régler un détecteur comme un test

02 / Surveiller la qualité

Qualité sans étiquettes, avec étiquettes différées, et par pondération d’importance

03 / Agir

Politique de ré-entraînement : quand, sur quoi, comment valider — et les alternatives

SignalDiagnostic probableActionCoût / risque
Dérive de prédiction (plus de classe A), entrées stablesBug amont (schéma, unité, encodage), changement de prétraitementVérifier le pipeline avant tout ré-entraînement ; rollback si régressionFaible ; le ré-entraînement « guérirait » le symptôme en apprenant le bug
Dérive de covariables, qualité stable sur l’échantillon annotéNouveaux cas couvertsSurveiller ; enrichir le jeu de test avec les nouveaux casAucun
Dérive de covariables + baisse de qualitéRégions nouvelles mal couvertesRé-entraîner avec données récentes (fenêtre glissante ou pondérée) ; augmentationModéré ; valider par tranche
Dérive de prior (proportion des classes)Saisonnalité, campagneRéajuster le seuil de décision ou les a priori (correction bayésienne) sans ré-entraînerFaible
Calibration dégradée, ordre correctConfiances décaléesRecalibrer (température, Platt) sur l’échantillon récentFaible
Dérive de concept confirmée par étiquettesLa règle du monde a changéRé-entraîner sur données récentes étiquetées ; revoir les variables ; parfois refaire le modèleÉlevé ; risque d’oubli des cas anciens (garder un mélange)
Qualité stable, coût/latence en hausseVolume, longueur des entréesOptimisation infra (L33), distillation, cacheModéré
Changement de version d’un modèle amont (API, embeddings)Rupture silencieuseBanc d’essai automatique à chaque version ; ré-indexer si les embeddings changent (RAG)Variable ; figer les versions

04 / Outiller

Versionnage, déploiement progressif, retour arrière, journalisation

PratiqueContenuOutilsRègle
Version de modèleHash du code (commit), des données (DVC), des hyperparamètres, des poids, du prompt, de l’environnement (lockfile), du tokeniseurMLflow/W&B + registre, DVC, Git, conteneurToute prédiction en production est traçable à une version complète
Journalisation des prédictionsEntrée (ou son hash/plongement), sortie, confiance, version, latence, horodatage, identifiant de session ; échantillon des entrées brutes (avec consentement/anonymisation)Base événementielle, stockage objet, Langfuse/Arize pour LLMSans journal, pas de post-mortem ni de ré-entraînement
Déploiement shadowLe candidat prédit en parallèle sans agir ; on compare hors ligneRoutage applicatifAvant tout canary sur un modèle critique
Canary / A/B1 → 5 → 25 → 100 % ; métriques métier et techniques comparées avec IC (L32)Feature flags, service mesh, KServeCritère d’arrêt automatique (p95, erreurs, qualité proxy)
Retour arrièreVersion précédente prête, données compatibles, prompts et index associésRegistre + déploiement immuableTesté régulièrement (comme une sauvegarde)
Tests de non-régressionBanc d’essai (L32) exécuté en CI à chaque changement de modèle, prompt, index, dépendanceCI/CD, pytestUne régression bloque le déploiement
Runbooks et alertesPour chaque alerte : quoi vérifier, qui appeler, comment revenir en arrièreGrafana/Prometheus, PagerDutyUne alerte sans runbook est du bruit
Boucle de retoursBouton « réponse utile ? », corrections des opérateurs, escalades → file d’annotation → jeu de test enrichiOutil d’annotation (Label Studio, Argilla)Fermer la boucle : chaque incident devient un cas de test

05 / Incidents

Post-mortem d’un incident IA : modèle et exemple

POST-MORTEM #23 — Assistant support : réponses erronées sur les procédures de sécurité (2026-08-12 → 08-19)

Impact : 7 jours ; ~340 réponses citant une version obsolète de la procédure P-17 (révisée le 08-11) ; 2 escalades ; 0 accident.
Détection : plainte d'un technicien (08-19). Le monitoring n'a rien signalé : entrées et sorties stables, fidélité 0,92 (le modèle citait
  fidèlement… un document périmé), pas d'étiquettes sur ces questions dans l'échantillon hebdomadaire (0 sur 200).
Chronologie : 08-11 nouvelle P-17 publiée dans la GED ; l'ingestion nocturne a échoué (format PDF/A non géré) ; l'erreur est allée dans un
  journal non surveillé ; l'index a gardé l'ancienne version ; 08-19 plainte ; 08-19 14:00 ré-indexation manuelle ; 08-20 correctif du parseur.
Cause racine : pipeline d'ingestion sans alerte sur échec ni contrôle de fraîcheur ; métadonnée « version du document » absente du contexte.
Facteurs contributifs : la fidélité (L26) mesure la cohérence avec le contexte, pas l'actualité du contexte ; l'échantillon annoté
  hebdomadaire ne stratifie pas par document ; aucune règle « documents de sécurité = priorité ».
Ce qui a bien marché : rollback inutile (correction par ré-indexation en 1 h) ; les citations ont permis de retrouver les 340 réponses.
Actions : (1) alerte sur échec d'ingestion + contrôle de fraîcheur (âge max de l'index par collection) — fait ; (2) métadonnée de version
  et date dans chaque extrait, et consigne de privilégier la plus récente — fait ; (3) stratifier l'échantillon annoté par criticité — en cours ;
  (4) test de non-régression : « question sur P-17 → cite la version du jour » — fait ; (5) rappel aux utilisateurs des 340 réponses — fait.
Sans blâme : le parseur a été écrit pour les formats vus en 2025 ; le problème est l'absence de filet, pas l'erreur.

Un post-mortem se lit en 3 minutes et produit des actions vérifiables. Les incidents IA typiques : données périmées, changement silencieux amont, dérive de concept non étiquetée, seuil non réajusté, boucle de retour (le modèle apprend ses propres sorties), injection, coût qui dérive.

06 / Articles

Les articles à lire

ArticleContributionÀ retenir
Sculley et al., Hidden Technical Debt in Machine Learning Systems, NeurIPS 2015Dettes : enchevêtrement, boucles de retour, dépendances de données, glue code« Changer quoi que ce soit change tout » (CACE)
Gama et al., A Survey on Concept Drift Adaptation, ACM CSUR 2014Taxonomie des dérives et des détecteursSoudaine, graduelle, incrémentale, récurrente
Rabanser, Günnemann & Lipton, Failing Loudly: An Empirical Study of Methods for Detecting Dataset Shift, NeurIPS 2019 — 1810.11953Comparaison des détecteurs ; réduction de dimension + testsLe classifieur adversarial et les tests sur les sorties du modèle marchent bien
Lipton, Wang & Smola, Detecting and Correcting for Label Shift with Black Box Predictors, ICML 2018 — 1802.03916Dérive de prior : estimation et correction via la matrice de confusionCorrection sans ré-entraînement
Saerens, Latinne & Decaestecker, Adjusting the Outputs of a Classifier to New a Priori Probabilities, Neural Computation 2002EM pour estimer la prévalenceLe code de la partie 03
Sugiyama et al., Covariate Shift Adaptation by Importance Weighted Cross Validation, JMLR 2007Pondération d’importanceThéorème 1 et sa variance
Garg et al., Leveraging Unlabeled Data to Predict Out-of-Distribution Performance (ATC), ICLR 2022 — 2201.04234Estimer l’exactitude sans étiquettes par un seuil de confianceValide sous covariables, pas sous concept (Théorème 2)
Breck et al., The ML Test Score: A Rubric for ML Production Readiness, IEEE Big Data 201728 tests pour données, modèle, infra, monitoringUne liste de contrôle concrète
Shankar et al., Operationalizing Machine Learning: An Interview Study, 2022 — 2209.09125Ce que font vraiment les ingénieurs MLOpsVitesse, validation, versionnage ; la plupart des incidents viennent des données
Chen et al., How Is ChatGPT’s Behavior Changing over Time?, 2023 — 2307.09009Dérive des API de LLM entre versionsBanc d’essai à chaque version amont
Google SRE Book (chap. incidents, post-mortems) ; Allspaw, Blameless PostMortemsCulture de l’incidentSans blâme, avec actions

TP guidé

TP — Un modèle en production simulée pendant « 12 semaines » (5 h)

Exercices

Exercices auto-corrigés

Exercice 1 — PSI et ses propriétés

Implémentez psi(ref, cur, bins) avec des bins définis par les quantiles de la référence (bornes ±∞), et vérifiez : PSI ≈ 0 pour deux échantillons de la même loi ; PSI croît avec le décalage ; PSI est invariant par transformation monotone croissante (appliquée aux deux) ; PSI(ref, cur) ≠ PSI(cur, ref) en général mais les deux sont ≥ 0.

Correction
def psi(ref, cur, bins=10):
    edges = np.quantile(ref, np.linspace(0, 1, bins + 1)); edges[0], edges[-1] = -np.inf, np.inf
    pr = np.histogram(ref, edges)[0] / len(ref) + 1e-6; pc = np.histogram(cur, edges)[0] / len(cur) + 1e-6
    return float(np.sum((pc - pr) * np.log(pc / pr)))

Exercice 2 — Pondération d’importance (Théorème 1)

Écrivez poids_importance(Xref, Xcur) qui estime w(x) = pcur(x)/pref(x) par un classifieur logistique réf/cour (avec correction des effectifs), puis exactitude_ponderee(pred_ok_ref, w). Vérifiez sur une dérive de covariables 1D que l’estimation approche la vraie exactitude courante à ±0,03.

Correction
def poids_importance(Xref, Xcur, iters=500, lr=0.5):
    Z = np.vstack([Xref, Xcur]); t = np.r_[np.zeros(len(Xref)), np.ones(len(Xcur))]; mu, sd = Z.mean(0), Z.std(0); Zs = (Z - mu) / sd
    w = np.zeros(Z.shape[1]); b = 0.0
    for _ in range(iters):
        p = 1 / (1 + np.exp(-(Zs @ w + b))); w -= lr * Zs.T @ (p - t) / len(t); b -= lr * (p - t).mean()
    p_ref = 1 / (1 + np.exp(-(((Xref - mu) / sd) @ w + b)))
    return p_ref / (1 - p_ref) * len(Xref) / len(Xcur)
def exactitude_ponderee(ok_ref, w): return float(np.sum(w * ok_ref) / np.sum(w))

Exercices

Exercices auto-corrigés (suite)

Exercice 3 — Correction de dérive de prior et estimation EM

Implémentez corriger_prior(p, pi_ref, pi_cur) et estimer_prior(p, pi_ref, iters) (EM de Saerens : itérer π ← moyenne des probabilités corrigées). Vérifiez que la correction est l’identité si π ne change pas, qu’elle augmente les probabilités quand π augmente, et que l’EM retrouve une prévalence de 0,25 à ±0,02 à partir de scores calibrés pour π_ref = 0,5.

Correction
def corriger_prior(p, pi_ref, pi_cur):
    a = p * pi_cur / pi_ref; b = (1 - p) * (1 - pi_cur) / (1 - pi_ref); return a / (a + b)
def estimer_prior(p, pi_ref, iters=100):
    pi = pi_ref
    for _ in range(iters): pi = corriger_prior(p, pi_ref, pi).mean()
    return float(pi)

Exercice 4 — Politique d’alerte à taux de fausses alertes contrôlé

Écrivez seuil_effet(ref, n_cur, alpha_jour, m_vars, essais, rng) : par simulation sans dérive (rééchantillonner la référence), le seuil D de KS tel que la probabilité qu’au moins une des m_vars variables dépasse D en un jour soit ≈ alpha_jour. Puis puissance(ref, n_cur, D, decalage, essais, rng) : fraction de détections pour un décalage de moyenne donné.

Correction
def seuil_effet(ref, n_cur, alpha_jour=0.05, m_vars=10, essais=200, rng=None):
    rng = rng or np.random.default_rng(0)
    maxs = [max(ks_stat(ref, rng.choice(ref, n_cur)) for _ in range(m_vars)) for _ in range(essais)]
    return float(np.quantile(maxs, 1 - alpha_jour))
def puissance(ref, n_cur, D, decalage, essais=100, rng=None):
    rng = rng or np.random.default_rng(0)
    return float(np.mean([ks_stat(ref, rng.choice(ref, n_cur) + decalage) > D for _ in range(essais)]))

Fiche de cours · Exercices corrigés

Exercices corrigés (rédaction)

Exercice 1. Le monitoring d’un détecteur de défauts sur une ligne de production n’a déclenché aucune alerte en six mois ; le taux de défauts non détectés, mesuré par le contrôle final, a pourtant doublé. Expliquer et corriger.
Correction. Les entrées (images) et les prédictions étaient stables : ni dérive de covariables ni de prédiction détectable. Le doublement des ratés signale une dérive de concept (nouveaux types de défauts, ou changement de ce qui est considéré comme défaut) que le monitoring sans étiquettes ne peut voir (Théorème 2) — alors que des étiquettes existaient (le contrôle final !) mais n’étaient pas reliées au monitoring. Corrections : (1) brancher les étiquettes du contrôle final (même en retard) sur les prédictions journalisées (identifiant de pièce) : rappel hebdomadaire par type de défaut avec IC ; (2) alerte sur cette métrique ; (3) file d’annotation des faux négatifs → ré-entraînement mensuel sur fenêtre glissante + test de non-régression sur les anciens défauts ; (4) échantillon d’images de la nouvelle production annoté pour enrichir le jeu de test.
Exercice 2. Un système de recommandation est ré-entraîné chaque nuit sur les clics de la veille. Après trois mois, la diversité des recommandations s’est effondrée et les ventes baissent. Quel mécanisme ? Quelle correction ?
Correction. Boucle de retour (Théorème 4) : le modèle apprend sur les clics qu’il a lui-même provoqués ; les articles jamais montrés n’ont jamais de clics, donc jamais de score, donc ne sont jamais montrés — effondrement vers quelques items populaires (« rich get richer »). L’évaluation hors ligne sur les clics observés reste bonne (biais de sélection), ce qui masque le problème. Corrections : (1) trafic d’exploration (ε = 5 % de recommandations aléatoires ou par échantillonnage de Thompson) qui fournit des données non biaisées ; (2) journaliser la probabilité de présentation et pondérer par inverse de propension (IPW) à l’entraînement et à l’évaluation ; (3) métriques de diversité/couverture dans le tableau de bord avec alertes ; (4) contrainte de diversité dans le classement final ; (5) un A/B contre une version figée pour mesurer l’effet réel sur les ventes, pas sur les clics.
Exercice 3. Le fournisseur d’API d’embeddings de votre RAG annonce une nouvelle version « améliorée » et la dépréciation de l’ancienne dans 90 jours. Plan d’action.
Correction. Les nouveaux embeddings ne sont pas comparables aux anciens : requêtes et documents doivent être dans le même espace — mélanger les deux casse la recherche silencieusement. Plan : (1) figer la version actuelle jusqu’à la bascule ; (2) ré-indexer tout le corpus avec la nouvelle version dans un index parallèle (coût : n documents × prix par token, à chiffrer) ; (3) banc d’essai de recherche (R@k, nDCG, L26) sur les deux index : la « meilleure » version l’est-elle sur vos données ? ; (4) shadow puis canary sur la recherche ; (5) bascule atomique (requêtes et index ensemble), rollback préparé (ancien index conservé jusqu’à la dépréciation) ; (6) ADR mis à jour : envisager un modèle d’embeddings ouvert hébergé localement pour supprimer ce risque récurrent ; (7) ajouter au monitoring la version d’embeddings de chaque requête et de l’index (invariant : égales).

Vérification

Le monitoring de dérive des entrées et des prédictions est vert depuis six mois. Peut-on conclure que la qualité du modèle est stable ?

Deux questions supplémentaires

1. Pourquoi ne pas alerter sur la p-valeur d’un test de KS à grande échelle ? Elle tend vers 0 pour tout écart non nul ; alerter sur une taille d’effet calibrée sur l’impact (Théorème 3).

2. Que faire face à une dérive de prior seule ? Réajuster le seuil ou corriger les probabilités a posteriori, sans ré-entraîner.

Référence

Les mots à retenir

MotDéfinition
Dérive de covariables / concept / priorp(x) / p(y | x) / p(y) change.
KS, PSI, JS, W₁, MMD, AUC adversarialDétecteurs 1D et multidimensionnels ; alerter sur la taille d’effet.
Étiquettes différéesOrganiser leur arrivée : échantillon annoté, retours, juge.
Pondération d’importanceCorriger le risque sous dérive de covariables.
Correction de priorRéajuster les probabilités sans ré-entraîner.
Shadow / canary / rollbackDéploiement progressif et retour arrière.
Boucle de retourLe modèle façonne ses données ; exploration ou IPW.
Post-mortemChronologie, cause racine, détection, actions ; sans blâme.

Suite

Tout commence et finit par les données.

Chapitre suivant : créer un jeu de données from scratch — collecte, annotation, qualité, nettoyage, déduplication, fuites, biais, documentation, licences, et les mathématiques de l’annotation.

← L34SommaireL36 : données →