Tutte le funzioni chiamano

Tutte le funzioni richiamano

Immagine creata dall'autore utilizzando Dall-E

Benchmarking delle chiamate alle funzioni di OpenAI e delle spiegazioni

Grazie a Roger Yang per il suo contributo a questo articolo

L’osservabilità dei modelli di lingua di terze parti (LLM) è principalmente affrontata con il benchmarking e le valutazioni, poiché modelli come Claude di Anthropic, i modelli GPT di OpenAI e PaLM 2 di Google sono proprietari. In questo post, distruggiamo i modelli GPT di OpenAI con chiamate alle funzioni e spiegazioni contro vari indicatori di prestazione. Siamo particolarmente interessati a come i modelli GPT e le funzionalità di OpenAI si comportano nella classificazione corretta delle risposte allucinate e pertinenti. I risultati di seguito mostrano i compromessi tra velocità e prestazioni per diversi sistemi di applicazione LLM, oltre a una discussione su come questi risultati con spiegazioni possano essere utilizzati per l’etichettatura dei dati, la valutazione assistita da LLM e i controlli di qualità. Il quadro sperimentale che abbiamo utilizzato è fornito di seguito in modo che gli operatori possano iterare e migliorare sul modello di classificazione predefinito.

Chiamata delle funzioni di OpenAI e Spiegazioni

Con la chiamata delle funzioni di OpenAI è possibile descrivere funzioni per vari modelli GPT, che possono quindi essere utilizzate per restituire un oggetto JSON contenente gli argomenti per chiamare tali funzioni. La chiamata di funzione agisce essenzialmente come uno strumento o un agente per registrare una risposta in un formato specifico al fine di collegare in modo affidabile le capacità del modello GPT di OpenAI con strumenti e API esterni. Per quanto riguarda le spiegazioni, poiché può essere difficile capire in molti casi perché un LLM risponda in un certo modo, queste sono progettate per sollecitare il LLM a giustificare se una risposta è corretta o meno. È quindi possibile applicare un’etichetta di output (‘pertinente’ o ‘non pertinente’) e una spiegazione dal LLM. Di seguito è riportato un esempio di valutazione ‘pertinente’ con una spiegazione per la risoluzione dei problemi delle risposte del LLM.

Immagine dell'autore

Nella sezione Risultati e scambi seguenti, sono fornite tabelle comparative per due casi d’uso: predizione della pertinenza e predizione delle allucinazioni (queste sono rispettivamente Tabella 1 e Tabella 2). Ogni tabella confronta le prestazioni di GPT-4-turbo, GPT-4, GPT-3.5 e GPT-3.5-turbo attraverso una varietà di metriche di classificazione (accuratezza, precisione, richiamo e punteggio F1) in base a istruzioni specifiche per le prompt e attributi LLM.

I quattro modelli fondamentali testati sono valutati con tali metriche (oltre al tempo di elaborazione mediano) nei seguenti casi:

  • Senza_chiamata_di_funzione & senza_spiegazioni
  • Con_chiamata_di_funzione & senza_spiegazioni
  • Con_chiamata_di_funzione & con_spiegazioni
  • Senza_chiamata_di_funzione & con_spiegazioni

Il modello di prompt negli LLM rimane invariato (cioè il completamento del prompt ordinario) per gli esempi senza_chiamata_di_funzione & senza_spiegazioni. Gli esempi con_chiamata_di_funzione & senza_spiegazioni richiedono al LLM di inserire la sua risposta in un oggetto JSON che accetta solo l’enumerazione come input e gli esempi con_chiamata_di_funzione & con_spiegazioni chiedono al LLM di fornire una spiegazione insieme alla sua risposta nello stesso oggetto JSON (vedi Colab Notebook di Google).

Dataset di confronto e metriche di valutazione

Identificare correttamente le risposte allucinate e rilevanti nelle uscite LLM sono due dei maggiori punti critici per i nostri clienti che stanno attualmente implementando applicazioni LLM. Ottimizzare i sistemi di valutazione LLM per le allucinazioni significa identificare correttamente tutte le risposte allucinate, mantenendo traccia delle uscite reali. Per i casi d’uso che utilizzano la ricerca e le raccomandazioni come parte della loro esperienza utente, i fattori più importanti legati alla soddisfazione dell’utente sono la velocità e la rilevanza dei risultati. Al fine di valutare le prestazioni di un sistema LLM per le uscite pertinenti e non pertinenti, è necessario conoscere le metriche chiave:

  • Precisione e Richiamo: Quanto è rilevante l’informazione recuperata?
  • Accuratezza: Quanto sono accurate le risposte dal punto di vista contestuale?
  • Tempo di risposta: Quanto tempo impiega il sistema per fornire la risposta?
  • Feedback degli utenti: Come l’impatto sulla rilevanza e il tempo di risposta hanno influenzato l’esperienza dell’utente?

Risultati e Compromessi

Ecco i risultati per il benchmarking dei sistemi LLM per le previsioni irrilevanti e rilevanti:

Tabella 1 di autore

Ecco i risultati per il benchmarking dei sistemi LLM per le previsioni di allucinazione e di fatto:

Tabella 2 di autore

Prima di entrare nell’analisi dei risultati, è possibile riprodurre questi risultati da soli in questo quaderno Google Colab. Nota che normalmente non sarebbe possibile ricreare gli stessi numeri di queste tabelle esattamente, a causa della natura non deterministica dei LLMs, ma per questo quaderno abbiamo aggiunto un seed al campionamento in modo che sia lo stesso ogni volta. Inoltre, è stato aggiunto un campionamento stratificato in modo che le categorie binarie siano esattamente 50/50. Sii consapevole che c’è un costo computazionale associato all’esecuzione di questo quaderno con le tue api chiavi OpenAI. Il numero predefinito di campioni è stato impostato su 2, ma puoi cambiare il numero a 100 se desideri replicare i risultati di questo post sul blog.

Tempo di Elaborazione VoAGI

Per chiarezza, questi confronti (usando 100 campioni) sono stati eseguiti su Google Colab con un account e una chiave API standard di OpenAI. Quindi, mentre i valori di latenza sono improbabili che siano esatti quando eseguiti su una configurazione diversa, i modelli più lenti e più veloci saranno riprodotti.

Inoltre, l’uso delle spiegazioni nelle tue valutazioni probabilmente richiederà da 3 a 20 volte più tempo per essere compilato (indipendentemente dalla chiamata di funzione).

Per l’abilità predittiva del modello sulla rilevanza complessiva

  • Latency: GPT-3.5-instruct > GPT-3.5-turbo > GPT-4-turbo > GPT-4

Per l’abilità predittiva del modello sulle allucinazioni

  • Latency: GPT-3.5-instruct > GPT-3.5-turbo ~ GPT-4-turbo > GPT-4

I modelli GPT con chiamata di funzione tendono ad avere una latenza leggermente superiore rispetto ai LLM senza chiamata di funzione, ma prendi queste considerazioni con le pinze perché ci sono alcune avvertenze. Innanzitutto, la latenza è estratta dagli header HTTP restituiti da OpenAI, quindi a seconda del tuo account e del tuo metodo di effettuare queste richieste, i valori di latenza possono variare poiché sono stati calcolati internamente da OpenAI. I compromessi tra la chiamata di funzione dipendono anche dal tuo caso d’uso. Ad esempio, senza chiamata di funzioni, dovresti specificare esattamente come desideri che la tua uscita sia strutturata fornendo esempi e una descrizione dettagliata. Tuttavia, se il tuo caso d’uso è l’estrazione di dati strutturati, è più semplice lavorare direttamente con l’API di chiamata di funzione OpenAI.

In generale, i LLM con chiamata di funzione si comportano allo stesso livello dei LLM che non fanno uso della chiamata di funzione e invece utilizzano il completamento della richiesta ordinaria. La scelta di utilizzare l’API di chiamata di funzione di OpenAI rispetto all’ingegneria della richiesta dovrebbe dipendere dal tuo caso d’uso e dalla complessità delle tue uscite.

Confronti delle Prestazioni dei Modelli GPT

Per l’abilità predittiva del modello sulla rilevanza complessiva:

  • Prestazione: GPT-4 ~ GPT-4-turbo ~ GPT-3.5-turbo >>> GPT-3.5-instruct

Per la capacità predittiva del modello sulle allucinazioni:

  • Prestazione: GPT-4 ~ GPT-4-turbo > GPT-3.5-turbo > GPT-3.5-instruct

Interessantemente, in entrambi i casi d’uso, l’utilizzo delle spiegazioni non migliora sempre le prestazioni. Maggiori dettagli a riguardo sono descritti di seguito.

Indicatori di Valutazione

Se stai decidendo quale LLM utilizzare per prevedere la rilevanza, è consigliabile utilizzare GPT-4, GPT-4-turbo o GPT-3.5-turbo.

GPT-4-turbo sta identificando precisamente quando un output è rilevante, ma sta sacrificando il richiamo di tutti i 50 esempi, infatti il richiamo non è migliore di un lancio di moneta, anche quando si utilizzano le spiegazioni.

GPT-3.5-turbo soffre dello stesso compromesso, ma ha una latenza e un’accuratezza inferiori. Da questi risultati, GPT-4 ha i punteggi F1 più alti (media armonica di precisione e richiamo) e prestazioni complessive migliori, pur mantenendo tempi di esecuzione comparabili a GPT-4-turbo.

GPT-3.5-instruct predice tutto come rilevante e quindi non è un LLM valido per prevedere la rilevanza. Interessante notare che, utilizzando le spiegazioni, le prestazioni predittive migliorano drasticamente, sebbene siano comunque inferiori rispetto agli altri LLM. Inoltre, GPT-3.5-instruct non può utilizzare l’API di chiamata delle funzioni di OpenAI ed è probabile che sia deprecato all’inizio del 2024.

Se stai decidendo quale LLM utilizzare per prevedere le allucinazioni, è consigliabile utilizzare GPT-4, GPT-4-turbo o GPT-3.5-turbo.

I risultati mostrano che GPT-4 identifica correttamente gli output allucinati e quelli reali più spesso (~3% in più) in termini di precisione, accuratezza, richiamo e F1 rispetto a GPT-4-turbo.

Anche se sia GPT-4 che GPT-4-turbo hanno prestazioni leggermente superiori rispetto a GPT-3.5-turbo (si noti che è necessario utilizzare un maggior numero di campioni prima di concludere che la piccola differenza non è rumore), potrebbe essere utile lavorare con GPT-3.5-turbo se si prevede di utilizzare le spiegazioni.

Le spiegazioni per prevedere gli output allucinati e quelli reali vengono restituite più di tre volte più velocemente per GPT-3.5-turbo rispetto a entrambi GPT-4 e GPT-4-turbo, tuttavia il richiamo è inferiore per entrambi i modelli GPT-3.5 quando confrontato con il richiamo dei modelli GPT-4 nel predire correttamente le allucinazioni.

Discussione e Implicazioni

Quando si decide quale LLM utilizzare per la propria applicazione, è necessario eseguire una serie di esperimenti e iterazioni per prendere tale decisione. Allo stesso modo, sono necessari anche il benchmarking e l’esperimento per decidere se un LLM debba essere utilizzato come valutatore. Fondamentalmente, questi sono i due metodi principali di benchmarking per gli LLM: la valutazione del modello LLM (valutazione dei modelli fondamentali) e la valutazione del sistema LLM attraverso l’osservabilità.

Immagine dell'autore | Valutazione di due diversi modelli di prompt su un singolo modello fondamentale. Stiamo testando lo stesso set di dati sui due modelli e vedendo come i loro indicatori, come precisione e richiamo, si confrontano.

In ultima analisi, quando si decide se un LLM sarà un buon valutatore delle prestazioni per il proprio caso d’uso, è necessario considerare la latenza del sistema oltre alle prestazioni dei metrici di previsione rilevanti. In questo post riassumiamo come questi modelli si comportano immediatamente, senza l’aggiunta di tecniche per aumentare velocità e prestazioni. Ricorda che, al momento dell’utilizzo, tutti questi LLM utilizzano modelli di promemoria zero-shot, quindi non sono stati aggiunti esempi al modello LLM per migliorare gli output del modello. Poiché questi numeri fungono da punto di riferimento, i team sono in grado di migliorare le prestazioni del sistema LLM con l’ingegneria del prompt, i modelli di prompt (e le librerie memorizzate), gli agenti, il fine-tuning e anche con applicazioni di ricerca e recupero come RAG e HyDE.

Potenziali Sviluppi Futuri: Spiegazioni per l’Etichettatura dei Dati

Attraverso questo benchmarking, abbiamo trovato alcuni esempi interessanti in cui fornire una spiegazione cambia l’etichetta prevista. L’esempio di seguito predice “rilevante” quando non viene utilizzata una spiegazione e ha persino un’etichetta “rilevante” per la verità fondamentale. Poiché anche i “dataset d’oro” possono presentare errori di etichettatura (specialmente per compiti più soggettivi), potrebbe essere sufficiente una spiegazione ben giustificata da un LLM per modificare l’etichetta della verità fondamentale. Questo può essere considerato come una valutazione o un controllo di qualità assistito da un LLM.

Sotto è riportato un esempio del dataset wiki per la rilevanza, la colonna ‘D’ è l’etichetta della verità fondamentale fornita dal dataset, la colonna ‘E’ è l’etichetta prevista senza chiamate di funzione e senza spiegazione, mentre la colonna ‘F’ è l’etichetta prevista (senza chiamate di funzione) con la spiegazione nella colonna ‘G’. Pertanto, la colonna ‘E’ e le colonne ‘F’ e ‘G’ sono risposte da due chiamate separate di LLM. F e G sono state generate insieme dalla stessa chiamata come si può vedere dalla Figura 1 qui sotto.

Figura 1 (di autore): Schermata dello script (codice fornito in colab). Qui, l'etichetta e la spiegazione vengono restituite insieme, ma chiediamo che la spiegazione venga fornita per prima (vedere prompt).

La tabella qui sotto mostra un esempio in cui abbiamo un’etichetta della verità fondamentale = ‘rilevante’, un’etichetta prevista di LLM senza chiamate di funzione = ‘rilevante’, ma poi abbiamo un cambio di etichetta in ‘irrilevante’ quando viene chiesto a LLM di fornire prima una spiegazione. Come molti esempi simili che abbiamo incontrato, LLM fa un valido argomento per etichettare la risposta recuperata alla domanda dell’utente come ‘irrilevante’. Mentre molti di noi pensano spesso all’Impero Romano, possiamo concordare sul fatto che la risposta a più paragrafi alla domanda “quanto è durato l’Impero Romano?” non è una risposta sufficientemente concisa e rilevante per suscitare un feedback positivo dall’utente finale. Esistono molte possibilità per valutazioni assistite da LLM, compresi i risparmi di tempo e costi per le aziende che hanno bisogno di dati etichettati. Questo, insieme alla visibilità fornita dalle spiegazioni, insieme al ritorno dei riferimenti (documenti utilizzati nella previsione) da parte dei LLM, rappresenta progressi significativi per lo spazio di osservabilità dei LLM.

Esempio dell'autore

Conclusioni

Speriamo che questo articolo fornisca un buon punto di partenza per le squadre che cercano di comprendere meglio e bilanciare i compromessi tra prestazioni e velocità con i nuovi sistemi di applicazione LLM. Come sempre, lo spazio dell’IA generativa e LLMOps sta evolvendo rapidamente, quindi sarà interessante osservare come questi risultati e lo spazio cambiano nel tempo.

Domande? Non esitate a contattarci!