Nel campo del Machine Learning, un argomento sempre più popolare è il Model Monitoring, ovvero il monitoraggio continuo delle prestazioni di un modello in produzione, che è una componente importante di qualsiasi soluzione MLOps (Machine Learning Operations) completa.
Il monitoraggio del modello comprende l’identificazione e il monitoraggio di una serie di possibili problemi, come la qualità dei dati di input, le prestazioni di previsione del modello e le metriche di “salute” del sistema (compreso l’utilizzo delle risorse computazionali, l’I/O di rete, ecc.) Recentemente, uno dei problemi più discussi nei sistemi di ML in produzione è la degradazione del modello, cioè il peggioramento delle prestazioni di previsione nel tempo, che è stato ampiamente studiato in studi come [Vela et al.], in cui gli autori hanno osservato una degradazione temporale del modello nel 91% dei modelli ML testati.
Questo studio, e molti altri (si veda [Bayram et al.]), indicano Data Drift come una delle cause principali del degrado del modello; un’altra causa potrebbe essere la dimensione dei dati di addestramento (che non potrebbero catturare sufficientemente la complessità dello spazio del problema), o la scelta degli iperparametri del modello.
Che cos’è Data Drift
Data drift è un cambiamento nella distribuzione di probabilità congiunta delle variabili di input e di destinazione di un set di dati tra due istanti di tempo. Per studiare ulteriormente questo cambiamento, la distribuzione di probabilità congiunta può essere scomposta in diverse parti: distribuzione di probabilità dei dati di input, distribuzione di probabilità precedente delle etichette di destinazione, distribuzione di densità di probabilità condizionale della classe e distribuzione di probabilità posteriore delle etichette di destinazione. La deriva dei dati può essere attribuita a un cambiamento in una o più di queste componenti e, in base a quali componenti sono coinvolte, possiamo classificare la deriva in diversi tipi. Tuttavia, come spiegato nei prossimi paragrafi, questo non è l’unico principio utilizzato per distinguere i tipi di deriva. Questo cambiamento può causare la degradazione del modello, e quindi diventare un problema nei sistemi di ML, quando si verifica tra i dati di addestramento e quelli utilizzati per il test o l’inferenza.
Cause
Data drift deriva da una moltitudine di fattori, quali: il degrado della qualità dei materiali delle apparecchiature di un sistema, i cambiamenti dovuti alla stagionalità, i cambiamenti nei comportamenti o nelle preferenze personali e le attività avversarie. Queste cause di deriva dei dati sono elementi intrinseci a diversi scenari del mondo reale e, data la difficoltà di prevederle o addirittura di rilevarle, negli ultimi anni il rilevamento e l’adattamento della deriva sono stati affrontati in una vasta gamma di domini e applicazioni.
Possiamo affermare che ogni sistema ML che opera in un ambiente non stazionario deve affrontare la deriva dei dati, con il rilevamento e/o con l’adattamento passivo o attivo del modello.
Tipi di Drift
Come accennato in precedenza, possiamo identificare diversi tipi di deriva, in base a quali componenti della distribuzione di probabilità congiunta dei dati cambiano. Questo criterio, solitamente chiamato Fonte di variazione, è uno dei due principi principali utilizzati per differenziare le derive, l’altro è il Modello di deriva, che verrà spiegato più avanti nel paragrafo.
In letteratura si trovano numerosi termini e definizioni matematiche per descrivere lo stesso tipo di deriva dei dati in base alla fonte del cambiamento, rendendo difficile per i ricercatori trovare una definizione unica di un determinato tipo di deriva. Tuttavia, anche grazie al lavoro svolto in [Bayram et al.], è possibile distinguere 3 tipi principali di deriva:
- Deriva del concetto reale: si riferisce a un cambiamento nella distribuzione di probabilità posteriore delle etichette di destinazione. Indica un cambiamento nel concetto di target sottostante ai dati, quindi richiede un adattamento del confine decisionale del modello per preservarne l’accuratezza. Questo tipo di deriva può essere accompagnato da cambiamenti nella distribuzione di probabilità dei dati di input. Tuttavia, in caso contrario, si può parlare di deriva vera e propria.
- Spostamento delle covariate: si riferisce a un cambiamento nella distribuzione di probabilità dei dati di input. In pratica, questo tipo di deriva e la deriva del concetto reale spesso si verificano contemporaneamente. In caso contrario, si può parlare di deriva virtuale. Lo spostamento delle covariate può anche manifestarsi solo in una sottoregione dello spazio di input (deriva locale del concetto) e può anche essere implicato da un’arisal di nuovi attributi (feature-evolution).
- Label Shift: si riferisce a un cambiamento nella distribuzione di probabilità precedente delle etichette di destinazione. Se la variazione della distribuzione è significativa, ciò può influire negativamente sulle prestazioni di previsione del modello. Lo spostamento delle etichette può essere causato dall’emergere di nuove classi nella distribuzione (evoluzione dei concetti) o dalla scomparsa di una o più classi (eliminazione dei concetti).
Drift pattern, invece, categorizza la deriva dei dati in 4 tipi in base al modello di evoluzione della deriva (cioè la transizione di una distribuzione da un concetto a un altro). Questi sono:
- Deriva improvvisa: quando la distribuzione cambia bruscamente in un momento.
- Deriva incrementale: quando il nuovo concetto prende il sopravvento in modo continuo durante una fase di transizione, senza una chiara separazione dal vecchio.
- Deriva graduale: quando la distribuzione cambia progressivamente, alternando periodi del nuovo concetto a periodi del vecchio concetto in una fase di transizione, e infine stabilizzandosi nel nuovo concetto.
- Deriva ricorrente: quando un altro concetto appare periodicamente, in modo simile alla deriva graduale, ma con la distribuzione che non si stabilizza mai in un unico concetto.
Possibili Soluzioni
Ora che sappiamo cos’è la deriva dei dati e quali sono le sue conseguenze sulle prestazioni dei modelli ML in produzione, la domanda successiva è: quali sono le possibili soluzioni?
Come accennato in precedenza, la deriva dei dati viene gestita impiegando tecniche di rilevamento e/o adattamento. Esistono due possibili strategie per un framework di gestione della deriva dei dati: l’approccio passivo (chiamato anche adattamento cieco), che utilizza un modello di apprendimento che viene costantemente aggiornato con nuove istanze di dati, e l’approccio attivo (chiamato anche adattamento informato), che utilizza un componente di rilevamento della deriva e un componente di adattamento della deriva che viene attivato dal primo.
L’approccio passivo è reso possibile dall’impiego dei cosiddetti algoritmi di apprendimento adattivo. Questi includono algoritmi incrementali e algoritmi online, che elaborano i dati in modo sequenziale e quindi producono un modello che viene continuamente aggiornato all’arrivo di nuovi dati di addestramento. Al contrario, gli approcci attivi impiegano algoritmi che non si adattano intrinsecamente all’evoluzione della distribuzione dei dati. In primo luogo, gli algoritmi rilevano quando si verifica una deriva dei dati utilizzando uno dei numerosi rilevatori di deriva e quindi innescano il meccanismo di adattamento del modello di apprendimento. Questo processo comporta tipicamente un lavoro di ri-addestramento utilizzando dati più recenti.
Drift Detectors
Il rilevamento della deriva si riferisce ai metodi che aiutano a rilevare e identificare un istante (o un intervallo di tempo) in cui si verifica un cambiamento nella distribuzione dei dati target. Questi metodi utilizzano tipicamente un test statistico per quantificare la somiglianza tra i vecchi e i nuovi campioni. Per valutare il cambiamento del concetto e la significatività della deriva, il valore di somiglianza viene confrontato con una soglia predefinita. Questo test di ipotesi utilizza la seguente ipotesi nulla: “la statistica del test non produrrà una differenza significativa tra i vecchi e i nuovi dati”, il che significa che non viene rilevata alcuna deriva del concetto. Se non si rifiuta l’ipotesi nulla, il sistema non apporta alcuna modifica all’apprendista corrente e continua con il flusso di dati.
Gli studi sul rilevamento delle derive possono essere classificati in base alle statistiche di test utilizzate per rilevare il cambiamento. Gli approcci più diffusi sono:
- Data Distribution-Based Detection: utilizza misure di divergenza tra le distribuzioni dei dati in due finestre temporali diverse per stimare la loro somiglianza. Una deriva viene rilevata se le due distribuzioni mostrano una divergenza significativa, utilizzando un valore di soglia. Il vantaggio principale dei metodi basati sulla distribuzione dei dati è che possono essere applicati sia a problemi supervisionati che non supervisionati, poiché considerano solo la distribuzione dei punti di dati. Tuttavia, possono produrre falsi positivi perché le variazioni nella distribuzione dei dati non sempre degradano le prestazioni del modello.
- Performance-Based Detection: è la categoria più esplorata e costituisce il gruppo più numeroso di rilevatori di deriva. Rilevano le variazioni nell’errore di previsione del modello per dedurre i cambiamenti nei dati. Questi metodi hanno il vantaggio di rilevare una deriva solo quando le prestazioni del modello sono influenzate. Tuttavia, il loro problema principale è che richiedono un feedback immediato sulle previsioni, cosa non sempre possibile. I metodi basati sulle prestazioni possono essere inoltre suddivisi in tre gruppi in base alla strategia utilizzata per rilevare il degrado delle prestazioni: controllo statistico del processo (tracciare l’evoluzione “online” dell’errore del modello), tecniche di windowing (utilizzare finestre scorrevoli per monitorare le prestazioni delle osservazioni più recenti, confrontandole con quelle di una finestra di riferimento) e ensemble learning (combinare i risultati di più apprendenti diversi in un ensemble).
Di seguito è riportato un elenco di alcuni rilevatori di deriva per entrambe le categorie:
![](https://bitrock.it/wp-content/uploads/2024/07/58.png)
Anche gli algoritmi di apprendimento automatico possono essere utilizzati per rilevare la deriva dei dati; alcuni esempi sono: k-Nearest Neighbors, isolation forest e autoencoder. Tipicamente utilizzati per il rilevamento delle anomalie, questi metodi possono essere adattati anche per il rilevamento delle derive. Utilizzano un approccio a finestra scorrevole, in cui una sottofinestra addestra il modello e una sottofinestra più recente viene utilizzata per rilevare una potenziale deriva.
Il rilevamento della deriva è una componente fondamentale del monitoraggio del modello in produzione, parte del lavoro degli ingegneri ML (o, più specificamente, degli ingegneri MLOps) quando creano e gestiscono un sistema MLOps. Come già detto, il monitoraggio del modello è fondamentale per garantire che il nostro modello di ML (sia che si tratti di una messa a punto di un LLM o di un algoritmo tradizionale) rimanga operativo in scenari reali rilevanti, senza diventare obsoleto. Molte piattaforme offrono funzionalità di MLOps, e ogni principale fornitore di cloud ha di solito la sua soluzione, come Amazon SageMaker, Google Cloud Vertex AI e Microsoft Azure ML Platform. Inoltre, la crescente domanda di pratiche MLOps ha portato alla nascita di numerose altre piattaforme, tra cui Databricks, Modelbit e Radicalbit, una consociata di Bitrock.
Durante il mio stage presso Bitrock, ho lavorato a lungo con la piattaforma Radicalbit, conducendo esperimenti con i rilevatori di deriva e confrontando i modelli ML batch con quelli online, che hanno costituito la base della mia tesi di master.
Radicalbit è una piattaforma MLOps e AI Observability che semplifica la gestione del flusso di lavoro dell’apprendimento automatico, offrendo implementazione, monitoraggio e spiegabilità avanzate. La piattaforma è disponibile anche come soluzione open source incentrata sul monitoraggio dell’intelligenza artificiale, con dashboard per la qualità dei dati, la qualità del modello e il rilevamento delle derive; è disponibile su GitHub.
LLM Drift
Con i recenti sviluppi nel campo dei Large Language Models (o LLM), un argomento di discussione emergente è la deriva dei LLM. Se applichiamo la definizione formale di deriva dei dati agli LLM, possiamo incontrare alcune difficoltà. In primo luogo perché tracciare le loro prestazioni non è banale, inoltre essi svolgono un lungo elenco di compiti (che non sono realmente limitati e predefiniti). Tuttavia, con il termine “deriva degli LLM” non ci riferiamo solo a questo. Ci sono alcuni problemi che sono stati studiati di recente in letteratura: il primo che viene in mente è probabilmente il fatto che questi modelli sono addestrati su enormi lotti di dati e non sono costantemente aggiornati, quindi se un modello viene utilizzato per molti mesi (o addirittura anni) dopo il suo addestramento, può avere limitazioni significative quando produce risultati su argomenti che sono cambiati di recente nel mondo reale o su eventi accaduti dopo il suo addestramento. Proiettando questo scenario per molti anni, potremmo anche includere i cambiamenti nel linguaggio naturale, come nuove espressioni o termini sempre più utilizzati o alcuni termini naturalmente deprezzati dalle persone.
Naturalmente, sappiamo tutti che i LLM più diffusi vengono frequentemente aggiornati con nuove informazioni per evitare questo tipo di problemi. Questo è stato anche un argomento di discussione e di ricerca, ad esempio in [Chen et al.] che analizza i cambiamenti nel comportamento di ChatGPT (sia 3.5 che 4) tra marzo e giugno del 2023. Hanno scoperto che le prestazioni e i comportamenti di GPT-3.5 e GPT-4 possono variare notevolmente nel tempo. Durante la valutazione dei modelli su diversi compiti (problemi matematici, domande sensibili/pericolose, sondaggi d’opinione, domande multi-hop ad alta intensità di conoscenza, generazione di codice, ecc.) hanno osservato alcuni miglioramenti ma anche alcuni degradi significativi (fino al 60% di perdita di prestazioni), e in generale molti cambiamenti nel loro comportamento in quantità relativamente piccole di tempo. Gli autori sottolineano anche l’importanza del monitoraggio del LLM, soprattutto per questi servizi che, come ChatGPT, deprezzano e aggiornano i loro modelli sottostanti in modo opaco. Ciò causa anche la cosiddetta deriva del prompt, ovvero il fenomeno per cui un prompt produce risposte diverse nel tempo a causa di cambiamenti del modello, migrazioni del modello o cambiamenti nei dati di iniezione del prompt durante l’inferenza. In effetti, di recente sono nate molte interfacce per la gestione e il test dei prompt. Il mercato richiede chiaramente un modo per testare le applicazioni generative prima della migrazione/deprecazione del LLM e per sviluppare un’applicazione che sia in qualche modo agnostica rispetto al LLM sottostante.
Conclusioni
La deriva dei dati pone problemi significativi ai sistemi di apprendimento automatico in produzione. È fondamentale comprendere e affrontare la deriva attraverso pratiche di monitoraggio efficaci (ad esempio, utilizzando metodi di rilevamento della deriva e riqualificando regolarmente i dati aggiornati).
Il rilevamento della deriva è una fase fondamentale di MLOps, un campo cruciale per portare i modelli di apprendimento automatico dallo sviluppo alla produzione, e dovrebbe essere parte integrante di qualsiasi piano di distribuzione, non un ripensamento. Dovrebbe essere automatizzato, con un’attenta considerazione della metodologia di rilevamento, delle soglie e delle azioni da intraprendere quando viene rilevata una deriva. Il monitoraggio e l’adattamento proattivo della deriva garantiscono che il sistema di apprendimento automatico rimanga valido nel tempo. Inoltre, i recenti sviluppi dei sistemi di apprendimento automatico hanno introdotto il concetto di deriva dei sistemi di apprendimento automatico, che comporta problemi di monitoraggio delle prestazioni a causa dell’ampia gamma di attività in continua evoluzione e problemi di dati di formazione obsoleti che influiscono sull’accuratezza nel tempo, evidenziando l’importanza del monitoraggio e della gestione tempestiva dei sistemi di apprendimento automatico.
Autore: Nicola Manca, MLOps Engineer @ Bitrock