Questo articolo AI presenta DSPy un modello di programmazione che astrae i pipeline dei modelli di lingua come grafici di trasformazione del testo

Introduzione all'articolo DSPy, un modello di programmazione per visualizzare le pipeline dei modelli di lingua come grafici di trasformazione del testo

I modelli di linguaggio (LM) hanno dato ai ricercatori la capacità di creare sistemi di elaborazione del linguaggio naturale con meno dati e a livelli più avanzati di comprensione. Ciò ha portato a un crescente campo di metodi “prompting” e tecniche di sintonizzazione leggere per far funzionare gli LM per nuovi compiti. Tuttavia, il problema è che gli LM possono essere abbastanza sensibili a come si pongono loro domande per ogni compito, e questa problematica diventa più complessa quando si hanno più interazioni con gli LM in un singolo processo.

La comunità di machine learning (ML) ha esplorato attivamente metodi per promuovere modelli di linguaggio (LM) e costruire pipeline per affrontare compiti complessi. Purtroppo, le pipeline LM esistenti spesso si basano su “modelli di prompt” codificati manualmente, che sono stringhe lunghe scoperte attraverso tentativi ed errori. Nella loro ricerca di un approccio più sistematico allo sviluppo e all’ottimizzazione delle pipeline LM, un team di ricercatori provenienti da diverse istituzioni, tra cui Stanford, ha introdotto DSPy, un modello di programmazione che astrae le pipeline LM in grafi di trasformazione del testo. Questi sono essenzialmente grafi di calcolo imperativi in cui gli LM vengono invocati attraverso moduli dichiarativi.

I moduli in DSPy sono parametrizzati, il che significa che possono imparare come applicare combinazioni di tecniche di prompting, sintonizzazione fine, ampliamento e ragionamento attraverso la creazione e la raccolta di dimostrazioni. Hanno progettato un compilatore per ottimizzare qualsiasi pipeline DSPy al fine di massimizzare una metrica specificata.

Il compilatore di DSPy è stato sviluppato con l’obiettivo di migliorare la qualità o l’efficienza economica di qualsiasi programma DSPy. Il compilatore prende in input il programma stesso, insieme a un piccolo insieme di input di addestramento che possono includere etichette opzionali e una metrica di validazione per la valutazione delle prestazioni. L’operazione del compilatore coinvolge la simulazione di diverse versioni del programma utilizzando gli input forniti e la generazione di tracce di esempio per ogni modulo. Queste tracce servono come mezzo per l’auto-miglioramento e vengono utilizzate per creare approcci efficaci a pochi colpi o per sintonizzare modelli di linguaggio più piccoli in varie fasi della pipeline.

È importante sottolineare che il modo in cui DSPy ottimizza è piuttosto flessibile. Usano qualcosa chiamato “teleprompter”, che sono come strumenti generali per assicurarsi che ogni parte del sistema apprenda dai dati nel modo migliore possibile.

Attraverso due casi di studio, è stato dimostrato che i programmi DSPy concisi possono esprimere e ottimizzare pipeline LM sofisticate in grado di risolvere problemi di matematica, gestire il recupero a più passaggi, rispondere a domande complesse e controllare cicli di agenti. In pochi minuti dopo la compilazione, solo poche righe di codice DSPy consentono a GPT-3.5 e llama2-13b-chat di auto-avviare le pipeline che superano le tecniche standard di prompting di qualche colpo di oltre il 25% e il 65%, rispettivamente.

In conclusione, questo lavoro introduce un approccio innovativo all’elaborazione del linguaggio naturale attraverso il modello di programmazione DSPy e il suo compilatore associato. Trasformando le complesse tecniche di prompting in moduli dichiarativi parametrizzati e sfruttando strategie di ottimizzazione generali (teleprompter), questa ricerca offre un nuovo modo per costruire e ottimizzare le pipeline NLP con notevole efficienza.