Model Monitoring
Il monitoraggio del modello tiene traccia degli input, delle previsioni, della precisione e della latenza di un modello distribuito, facendo emergere il drift dei dati e i malfunzionamenti silenziosi prima che gli utenti se ne accorgano.
Il monitoraggio dei modelli consiste nella misurazione continua degli input, degli output, delle prestazioni e dello stato di servizio di un modello di machine learning distribuito, con avvisi quando uno di questi elementi esce dall'intervallo previsto. I guasti dei modelli sono di solito silenziosi: un rilevatore continua a restituire riquadri con valori di confidenza plausibili anche dopo che una telecamera è stata spostata, un obiettivo si è sporcato o un prodotto è stato riprogettato; cambia soltanto la sua accuratezza. Il monitoraggio confronta il comportamento in tempo reale con un riferimento, di solito i dati di validazione usati per approvare il modello, così i team rilevano la deriva dei dati e il calo di accuratezza tramite dashboard, anziché accorgersene dagli utenti. Chiude il ciclo delle operazioni di machine learning (MLOps) dopo la distribuzione del modello e determina quando occorre riaddestrarlo.
Cosa monitorare#
Il monitoraggio in produzione copre di solito quattro livelli:
- Latenza di inferenza e stato del servizio: Tasso di richieste, tasso di errori, latenze p95 e p99, memoria e utilizzo della GPU, spesso raccolti con Prometheus e visualizzati in Grafana.
- Dati di input: Violazioni dello schema, valori mancanti e variazioni nelle statistiche delle caratteristiche o delle immagini, come luminosità, risoluzione o dimensioni degli oggetti.
- Confidenza delle previsioni e distribuzione degli output: Distribuzione delle classi, rilevamenti per immagine e punteggi di confidenza. Una variazione in questi dati, detta deriva delle previsioni, è un segnale d'allarme precoce, prima ancora che siano disponibili le etichette.
- Prestazioni del modello: Accuratezza, precisione, richiamo o mAP, calcolati quando sono disponibili le etichette di riferimento. Le etichette delle frodi possono arrivare settimane dopo, sotto forma di storni, e i team di visione etichettano manualmente un campione di immagini di produzione.
Ultralytics Platform integra il livello di predizione nei suoi endpoint dedicati: la scheda Monitoring mostra la distribuzione della confidenza di un modello YOLO distribuito, la confidenza media nel tempo, le classi più frequenti e le previsioni per immagine; le immagini recenti possono essere salvate con le relative previsioni in un dataset per la revisione e il riaddestramento. La guida al monitoraggio e alla manutenzione dei modelli e la lezione di Ultralytics Academy Osservabilità e deriva illustrano i controlli della deriva per le distribuzioni YOLO.
Due tipi di cambiamento causano la maggior parte dei cali di prestazioni. La deriva dei dati, detta anche spostamento delle covariate, modifica gli input, per esempio quando si sposta una telecamera di ispezione su una linea di produzione o cambia l'illuminazione. La deriva del concetto modifica il rapporto tra gli input e le risposte corrette, per esempio quando i truffatori cambiano tattica e transazioni un tempo normali diventano fraudolente. Le statistiche degli input rivelano direttamente la deriva dei dati, mentre la deriva del concetto emerge solo dalle metriche delle prestazioni quando arrivano le etichette. Entrambe rientrano tra le cause più comuni di malfunzionamento dei modelli di visione artificiale in produzione.
Rilevare la deriva#
Un controllo comune della deriva confronta la distribuzione di una statistica in tempo reale con quella di riferimento usando un test di Kolmogorov-Smirnov a due campioni, che misura la distanza massima tra due distribuzioni cumulative. Questo script lo applica a confidenze di rilevamento simulate: un campione di riferimento dalla validazione, una settimana di produzione che corrisponde al riferimento e una settimana con valori più bassi:
import numpy as np
from scipy.stats import ks_2samp
rng = np.random.default_rng(0)
# Detection confidences logged at validation time form the reference distribution
reference = rng.beta(8, 2, size=2000)
# Two simulated production windows: one like the reference, one shifted lower
windows = {"week 1": rng.beta(8, 2, size=500), "week 2": rng.beta(5, 3, size=500)}
for name, live in windows.items():
# Two-sample Kolmogorov-Smirnov test: do both samples come from one distribution?
result = ks_2samp(reference, live)
drift = result.pvalue < 0.01
print(f"{name}: mean {live.mean():.2f}, KS {result.statistic:.3f}, p {result.pvalue:.1e}, drift {drift}")La settimana 1 supera il controllo, con una statistica KS di 0,037 e p = 0,64. Nella settimana 2, la confidenza media scende a 0,63 rispetto allo 0,80 della settimana 1; la statistica KS di 0,456 con p = 1,2e-75 segnala una deriva. Con molte migliaia di campioni, anche variazioni innocue diventano statisticamente significative; perciò i controlli in produzione spesso inviano un avviso quando la statistica KS o l'indice di stabilità della popolazione (PSI) supera una soglia fissa. Librerie open source come Evidently e NannyML raccolgono questi test in report sulla deriva; NannyML stima inoltre l'accuratezza di un classificatore senza etichette, usando i suoi punteggi di confidenza calibrati. Amazon SageMaker Model Monitor e Vertex AI Model Monitoring offrono gli stessi controlli come servizi gestiti. Un avviso avvia quindi un'indagine:
Monitoraggio, osservabilità e valutazione#
- Osservabilità: Log, tracce e input salvati che spiegano perché è scattato un avviso. Il monitoraggio esegue controlli predefiniti e molti fornitori offrono insieme i due servizi come osservabilità ML.
- Valutazione del modello: Assegna un punteggio al modello su un set di test tenuto da parte prima del rilascio. Il monitoraggio ripete questa misurazione sul traffico in tempo reale per tutto il periodo in cui il modello è in servizio.
- Tracciamento degli esperimenti: Registra le esecuzioni di addestramento durante lo sviluppo, prima che esistano dati di produzione.










