Guida alle valutazioni di LLM configurazione e metriche che contano

Guida alla valutazione di LLM configurazione e metriche fondamentali

Immagine creata dall'autore utilizzando Dalle-3 tramite Bing Chat

Come costruire ed eseguire valutazioni LLM – e perché dovresti usare precisione e richiamo per confrontare il tuo modello di prompt LLM

Questo articolo è co-scritto da Ilya Reznik

I modelli di linguaggio di grandi dimensioni (LLM) sono uno strumento incredibile per sviluppatori e dirigenti aziendali per creare nuovo valore per i consumatori. Forniscono raccomandazioni personalizzate, traducono tra dati non strutturati e dati strutturati, riassumono grandi quantità di informazioni e fanno molto di più.

Alla crescita delle applicazioni, cresce anche l’importanza di misurare le prestazioni delle applicazioni basate su LLM. Questo è un problema non banale per diversi motivi: i feedback degli utenti o qualsiasi altra “fonte di verità” è estremamente limitata e spesso inesistente; anche quando è possibile, l’etichettatura umana è ancora costosa; ed è facile rendere queste applicazioni complesse.

Questa complessità è spesso nascosta dai livelli di astrazione del codice e diventa evidente solo quando qualcosa va storto. Una linea di codice può innescare una cascata di chiamate (span). Sono necessarie valutazioni diverse per ogni span, moltiplicando così i tuoi problemi. Ad esempio, il semplice snippet di codice di seguito attiva multiple chiamate di sub-LLM.

Immagine dell'autore

Fortunatamente, possiamo utilizzare la potenza dei LLM per automatizzare la valutazione. In questo articolo, approfondiremo come impostare tutto ciò e assicurarci che sia affidabile.

Immagine creata dall'autore utilizzando Dall-E 3

Il cuore delle valutazioni LLM è l’intelligenza artificiale che valuta l’intelligenza artificiale.

Anche se può sembrare circolare, abbiamo sempre avuto l’intelligenza umana che valuta l’intelligenza umana (ad esempio, in un colloquio di lavoro o all’esame finale del college). Ora i sistemi di intelligenza artificiale possono finalmente fare lo stesso per altri sistemi di intelligenza artificiale.

Il processo qui è che i LLM generano una verità sintetica che può essere utilizzata per valutare un altro sistema. Sorge quindi una domanda: perché non utilizzare direttamente il feedback umano? Semplicemente perché non ne avrai mai abbastanza.

Ottenere il feedback umano anche su solo l’uno percento delle coppie input/output è una grande impresa. La maggior parte dei team non raggiunge nemmeno questo risultato. Ma affinché questo processo sia veramente utile, è importante avere valutazioni su ogni chiamata di sub-LLM, delle quali abbiamo già visto che possono essere molte.

Esploriamo come fare ciò.

Valutazione del Modello LLM vs Valutazione del Sistema LLM

Valutazioni_del_modello_LLM != Valutazioni_del_sistema_LLM

Valutazioni del Modello LLM

Probabilmente hai sentito parlare delle valutazioni LLM. Questo termine viene utilizzato in modi molto diversi che sembrano tutti molto simili ma in realtà sono molto diversi. Uno dei modi più comuni in cui viene utilizzato è ciò che chiameremo valutazioni del modello LLM. Le valutazioni del modello LLM si concentrano sulle prestazioni complessive dei modelli fondamentali. Le aziende che lanciano i LLM per i clienti hanno bisogno di un modo per quantificarne l’efficacia su una gamma di diverse attività.

Diagramma dell'autore | In questo caso, stiamo valutando due diversi modelli fondamentali open source. Stiamo testando lo stesso dataset sui due modelli e vediamo come si confrontano le loro metriche, come hellaswag o mmlu.

Una libreria popolare che ha modelli LLM di valutazione è la OpenAI Eval library, che originariamente si concentrava sul caso d’uso della valutazione del modello. Ci sono molte metriche disponibili, come HellaSwag (che valuta quanto bene un LLM può completare una frase), TruthfulQA (che misura la veridicità delle risposte del modello) e MMLU (che misura quanto bene il LLM può svolgere più compiti contemporaneamente). C’è persino una classifica che valuta quanto bene i LLM open-source si confrontano tra loro.

Valutazioni del sistema LLM

Fino a questo punto, abbiamo discusso la valutazione del modello LLM. In contrasto, la valutazione del sistema LLM è la valutazione completa dei componenti che controlli nel tuo sistema. I componenti più importanti sono la richiesta (o il modello di richiesta) e il contesto. La valutazione del sistema LLM valuta quanto bene i tuoi input possono determinare le tue uscite.

Le valutazioni del sistema LLM possono, ad esempio, mantenere costante il LLM e cambiare il modello di richiesta. Poiché le richieste sono parti più dinamiche del tuo sistema, questa valutazione ha molto senso durante il ciclo di vita del progetto. Ad esempio, un LLM può valutare le risposte del tuo chatbot in termini di utilità o cortesia, e la stessa valutazione può fornirti informazioni sui cambiamenti di performance nel tempo in produzione.

Diagramma dell'autore | In questo caso, stiamo valutando due diversi modelli di richiesta su un singolo modello di base. Stiamo testando lo stesso insieme di dati su entrambi i modelli e verificando come le loro metriche come la precisione e il richiamo si confrontano.

Quale Usare? Dipende dal tuo Ruolo

Esistono persone distinte che utilizzano le valutazioni LLM. Una è il ricercatore o un ingegnere incaricato di ottimizzare il nucleo del LLM, e l’altra è il praticante che assembla il sistema rivolto agli utenti.

Ci sono pochissimi sviluppatori di modelli LLM, e tendono a lavorare per luoghi come OpenAI, Anthropic, Google, Meta e altrove. Gli sviluppatori di modelli si preoccupano delle valutazioni del modello LLM, perché il loro compito è quello di fornire un modello che si adatti a una vasta gamma di casi d’uso.

Per i praticanti di ML, il compito inizia anche con la valutazione del modello. Uno dei primi passi nello sviluppo di un sistema LLM è scegliere un modello (ad esempio GPT 3.5 vs 4 vs Palm, ecc.). La valutazione del modello LLM per questo gruppo, tuttavia, è spesso un processo unico. Una volta risolta la questione di quale modello si comporta meglio nel tuo caso d’uso, la maggior parte del resto del ciclo di vita dell’applicazione sarà definito dalle valutazioni del sistema LLM. Di conseguenza, i praticanti di ML si preoccupano sia delle valutazioni del modello LLM che delle valutazioni del sistema LLM, ma probabilmente dedicano molto più tempo a quest’ultime.

Le Metriche di Valutazione del Sistema LLM Variano in Base al Caso d’Uso

Avere lavorato con altri sistemi di ML, la tua prima domanda è probabilmente questa: “Quali dovrebbero essere le metriche di risultato?” La risposta dipende da ciò che stai cercando di valutare.

  • Estrazione di informazioni strutturate: Puoi valutare quanto bene il LLM estrae informazioni. Ad esempio, puoi valutare la completezza (ci sono informazioni nell’input che non sono presenti nell’output?).
  • Risposta alle domande: Quanto bene il sistema risponde alla domanda dell’utente? Puoi valutare l’accuratezza, la cortesia o la brevità della risposta, o tutto ciò che è stato menzionato.
  • Generazione con recupero assistito (RAG): I documenti recuperati e la risposta finale sono pertinenti?

Come progettista di sistema, sei responsabile delle prestazioni del sistema e quindi spetta a te capire quali aspetti del sistema devono essere valutati. Ad esempio, se hai un LLM che interagisce con bambini, come un’app di tutoraggio, vorresti essere sicuro che le risposte siano appropriate per la loro età e non siano tossiche.

Alcune valutazioni comuni utilizzate oggi sono rilevanza, allucinazioni, precisione nelle risposte alle domande e tossicità. Ognuna di queste valutazioni avrà modelli diversi in base a ciò che si sta cercando di valutare. Ecco un esempio con la rilevanza:

Questo esempio utilizza lo strumento open-source Phoenix per semplicità (completa divulgazione: faccio parte del team che ha sviluppato Phoenix). All’interno dello strumento Phoenix, esistono modelli predefiniti per la maggior parte dei casi d’uso comuni. Ecco quello che useremo per questo esempio:

Stai confrontando un testo di riferimento con una domanda e stai cercando di determinare se il testo di riferimento contiene informazioni rilevanti per rispondere alla domanda. Ecco i dati:    [INIZIO DATI]    ************    [Domanda]: {query}    ************    [Testo di riferimento]: {reference}    [FINE DATI]Confronta la Domanda sopra con il Testo di riferimento. Devi stabilire se il Testo di riferimento contiene informazioni che possono rispondere alla Domanda. Ti preghiamo di concentrarti sul fatto che la domanda specifica possa essere risolta con le informazioni nel Testo di riferimento.La tua risposta deve essere una singola parola, sia "rilevante" che "non rilevante", e non deve contenere altro testo o caratteri oltre a quella parola."non rilevante" significa che il testo di riferimento non contiene una risposta alla Domanda."rilevante" significa che il testo di riferimento contiene una risposta alla Domanda.

Useremo anche il modello GPT-4 di OpenAI e le metriche di precisione/recall di scikitlearn.

Prima di tutto, importeremo tutte le dipendenze necessarie:

from phoenix.experimental.evals import (   RAG_RELEVANCY_PROMPT_TEMPLATE_STR,   RAG_RELEVANCY_PROMPT_RAILS_MAP,   OpenAIModel,   download_benchmark_dataset,   llm_eval_binary,)from sklearn.metrics import precision_recall_fscore_support

Ora, importiamo il dataset:

# Scarica un "dataset dorato" integrato in Phoenixbenchmark_dataset = download_benchmark_dataset(   task="binary-relevance-classification", dataset_name="wiki_qa-train")# Per motivi di velocità, prenderemo solo 100 esempi in modo ripetibilebenchmark_dataset = benchmark_dataset.sample(100, random_state=2023)benchmark_dataset = benchmark_dataset.rename(   columns={       "query_text": "query",       "document_text": "reference",   },)# Abbina l'etichetta tra il nostro dataset e ciò che l'eval genererày_true = benchmark_dataset["relevant"].map({True: "rilevante", False: "non rilevante"})

Ora effettuiamo la nostra valutazione:

# Qualsiasi LLM ad uso generale dovrebbe funzionare qui, ma è una pratica ottimale mantenere la temperatura a 0model = OpenAIModel(   model_name="gpt-4",   temperature=0.0,)# Rails definirà le nostre classi di outputrails = list(RAG_RELEVANCY_PROMPT_RAILS_MAP.values())benchmark_dataset["eval_relevance"] = \   llm_eval_binary(benchmark_dataset,                   model,                   RAG_RELEVANCY_PROMPT_TEMPLATE_STR,                   rails)y_pred = benchmark_dataset["eval_relevance"]# Calcola le metriche di valutazioneprecision, recall, f1, support = precision_recall_fscore_support(y_true, y_pred)

Valutare i sistemi basati su LLM con LLM

Ci sono due fasi distinte nel processo di valutazione del tuo sistema basato su LLM con un LLM. Prima di tutto, stabilire un benchmark per la metrica di valutazione del LLM. Per fare ciò, si crea una valutazione del LLM dedicata il cui unico compito è etichettare i dati in modo efficace come un umano ha etichettato il “dataset dorato”. Poi si confronta la metrica con quella valutazione. Successivamente, si esegue questa metrica di valutazione del LLM sui risultati dell’applicazione del LLM (ulteriori dettagli di seguito).

Come Costruire una Valutazione LLM

Il primo passo, come abbiamo visto prima, è costruire un benchmark per le valutazioni.

Per fare ciò, devi iniziare con una metrica più adatta al tuo caso d’uso. Quindi, hai bisogno del dataset dorato. Questo dovrebbe essere rappresentativo del tipo di dati che ci si aspetta che la valutazione LLM incontri. Il dataset dorato dovrebbe avere l’etichetta “verità fondamentale” in modo da poter misurare la performance del modello di valutazione LLM. Spesso tali etichette provengono dal feedback umano. Costruire un tale dataset è laborioso, ma spesso è possibile trovare uno standardizzato per i casi d’uso più comuni (come abbiamo fatto nel codice sopra).

Diagramma di autore

Poi devi decidere quale LLM desideri utilizzare per la valutazione. Questo potrebbe essere un LLM diverso da quello che stai utilizzando per la tua applicazione. Ad esempio, potresti utilizzare Llama per la tua applicazione e GPT-4 per la valutazione. Spesso questa scelta è influenzata da questioni di costo e precisione.

Diagramma dell'autore

Ora arriva il componente principale che stiamo cercando di valutare e migliorare: il modello di valutazione. Se stai utilizzando una libreria esistente come OpenAI o Phoenix, dovresti partire da un modello esistente e vedere come si comporta il prompt.

Se c’è una sfumatura specifica che desideri incorporare, regola il modello di conseguenza o crea il tuo da zero.

Tieni presente che il modello dovrebbe avere una struttura chiara, come quella che abbiamo utilizzato nella sezione precedente. Sii esplicito riguardo ai seguenti punti:

  • Qual è l’input? Nel nostro esempio, sono i documenti/contesti che sono stati recuperati e la query dell’utente.
  • Cosa stiamo chiedendo? Nel nostro esempio, stiamo chiedendo all’LLM di dirci se il documento è pertinente alla query.
  • Quali sono i possibili formati di output? Nel nostro esempio, è un risultato binario pertinente/non pertinente, ma può essere anche multinomiale (ad esempio, completamente pertinente, parzialmente pertinente, non pertinente).
Diagramma dell'autore

Ora devi eseguire la valutazione sul tuo set di dati d’oro. Quindi puoi generare metriche (accuratezza complessiva, precisione, richiamo, F1, ecc.) per determinare il punto di riferimento. È importante guardare più di semplicemente l’accuratezza complessiva. Discuteremo questo in dettaglio di seguito.

Se non sei soddisfatto delle prestazioni del tuo modello di valutazione LLM, devi modificare il prompt per migliorare le prestazioni. Si tratta di un processo iterativo basato su metriche concrete. Come sempre, è importante evitare l’overfitting del modello di valutazione sul set di dati d’oro. Assicurati di avere un set di dati rappresentativo per la validazione incrociata o esegui una validazione incrociata k-fold.

Diagramma dell'autore

Infine, arrivi al tuo punto di riferimento. Le prestazioni ottimizzate sul set di dati d’oro rappresentano quanto puoi essere sicuro della tua valutazione LLM. Non sarà accurato come il tuo ground truth, ma sarà sufficientemente accurato e costerà molto meno che avere un etichettatore umano coinvolto per ogni esempio.

Preparare e personalizzare i tuoi modelli di prompt ti consente di impostare casi di test.

Perché dovresti utilizzare precisione e richiamo quando valuti il tuo modello di prompt LLM

Il settore non ha ancora standardizzato appieno le migliori pratiche per le valutazioni LLM. Le squadre spesso non sanno come stabilire le metriche di riferimento corrette.

Spesso si utilizza l’accuratezza complessiva, ma non è sufficiente.

Questo è uno dei problemi più comuni nell’azione della scienza dei dati: uno squilibrio di classe molto significativo rende l’accuratezza una metrica poco pratica.

Pensare in termini di metrica di pertinenza è utile. Supponiamo che tu faccia tutti gli sforzi e le spese necessarie per creare il chatbot più pertinente possibile. Scegli un LLM e un modello che siano adatti al caso d’uso. Questo dovrebbe significare che un numero significativamente maggiore dei tuoi esempi dovrebbe essere valutato come “pertinente”. Scegliamo un numero estremo per illustrare il punto: il 99,99% di tutte le query restituisce risultati pertinenti. Evviva!

Ora guardiamolo dal punto di vista del modello di valutazione LLM. Se l’output fosse sempre “pertinente”, senza nemmeno guardare i dati, sarebbe corretto il 99,99% delle volte. Ma nel frattempo non riuscirebbe a catturare tutti i (argomentati più) casi importanti: quelli in cui il modello restituisce risultati non pertinenti, che sono quelli che dobbiamo individuare.

In questo esempio, l’accuratezza sarebbe alta, ma la precisione e il richiamo (o una combinazione dei due, come il punteggio F1) sarebbero molto bassi. La precisione e il richiamo sono una misura migliore delle prestazioni del tuo modello qui.

L’altra visualizzazione utile è la matrice di confusione, che ti permette di vedere le percentuali di esempi rilevanti e non rilevanti correttamente e erroneamente predetti.

Diagramma dell'autore | In questo esempio, vediamo che la percentuale più alta di previsioni è corretta: un esempio rilevante nel dataset dorato ha un'88% di possibilità di essere etichettato come tale dal nostro valutatore. Tuttavia, vediamo che il valutatore svolge significativamente peggio sugli esempi 'non rilevanti', etichettandoli erroneamente più del 27% delle volte.

Come Eseguire LLM Evals Sulla Tua Applicazione

A questo punto dovresti avere sia il tuo modello che la tua LLM eval testata. Hai dimostrato a te stesso che la valutazione funziona e hai una comprensione quantificabile delle sue prestazioni rispetto alla verità fondamentale. È ora di avere più fiducia!

Ora possiamo effettivamente utilizzare la nostra valutazione sulla nostra applicazione. Questo ci aiuterà a misurare quanto bene sta andando la nostra applicazione LLM e capire come migliorarla.

Diagramma dell'autore

La valutazione del sistema LLM esegue l’intero sistema con un passaggio in più. Ad esempio:

  • Recuperi i tuoi documenti di input e li aggiungi al tuo modello di richiesta, insieme all’input utente di esempio.
  • Fornisci quella richiesta al LLM e ricevi la risposta.
  • Fornisci la richiesta e la risposta alla tua valutazione, chiedendo se la risposta è pertinente alla richiesta.

È una buona pratica non eseguire valutazioni LLM con codice isolato, ma piuttosto con una libreria che ha modelli di richiesta incorporati. Questo aumenta la riproducibilità e consente una valutazione più flessibile in cui è possibile sostituire diverse parti.

Queste valutazioni devono funzionare in tre diversi ambienti:

Pre-produzione

Quando stai facendo il benchmarking.

Pre-produzione

Quando stai testando la tua applicazione. Questo è in qualche modo simile al concetto di valutazione offline nel ML tradizionale. L’idea è capire le prestazioni del tuo sistema prima di distribuirlo ai clienti.

Produzione

Quando è distribuito. La vita è disordinata. I dati si spostano, gli utenti si spostano, i modelli si spostano, tutto in modi imprevedibili. Il fatto che il tuo sistema abbia funzionato bene una volta non significa che lo farà di nuovo il martedì alle 19. Le valutazioni ti aiutano a capire continuamente le prestazioni del tuo sistema dopo la distribuzione.

Diagramma dell'autore

Domande Da Considerare

Quante righe dovresti campionare?

Il paradigma di valutazione LLM-evaluating-LLM non è magico. Non puoi valutare ogni esempio che hai mai incontrato, sarebbe proibitivamente costoso. Tuttavia, durante l’etichettatura umana, devi già campionare i dati e avere una maggiore automazione rende questo più facile e più economico. Quindi puoi campionare più righe rispetto a quanto faresti con l’etichettatura umana.

Quali valutazioni dovresti usare?

Questo dipende principalmente dal tuo caso d’uso. Per la ricerca e il recupero, le valutazioni di tipo rilevanza funzionano meglio. La tossicità e le allucinazioni hanno modelli di valutazione specifici (ne parleremo in dettaglio in seguito).

Alcune di queste valutazioni sono importanti nel flusso di risoluzione dei problemi. L’accuratezza delle risposte potrebbe essere una metrica globale valida, ma se analizzi il motivo per cui questa metrica non raggiunge le prestazioni desiderate nel tuo sistema, potresti scoprire che è a causa di un recupero errato, ad esempio. Ci possono essere molte possibili ragioni e potresti aver bisogno di più metriche per arrivare alla soluzione.

Quale modello dovresti usare?

È impossibile dire quale modello funzioni meglio per tutti i casi. Invece, dovresti eseguire valutazioni dei modelli per capire quale modello è adatto alla tua applicazione. Potresti anche dover considerare i compromessi tra richiamo e precisione, a seconda di ciò che ha senso per la tua applicazione. In altre parole, fai un po’ di data science per capirlo nel tuo caso specifico.

Diagramma dell'autore

Conclusioni

Avere la possibilità di valutare le prestazioni della tua applicazione è molto importante quando si tratta di codice di produzione. Nell’era dei LLMs, i problemi sono diventati più complessi, ma fortunatamente possiamo usare proprio la tecnologia dei LLM per aiutarci nell’esecuzione delle valutazioni. Tali valutazioni dovrebbero testare l’intero sistema e non solo il modello LLM sottostante: pensa a quanto un modello di prompt sia importante per l’esperienza dell’utente. Le migliori pratiche, le strumentazioni standardizzate e i dataset curati semplificano il lavoro di sviluppo di sistemi LLM.