Ottimizzare gli LLM con DSPy

DSPy è un framework progettato per ottimizzare l’uso dei Large Language Models (LLM). Il suo scopo principale è semplificare la creazione di sistemi complessi che richiedono l’uso di LLM, automatizzando e sistematizzando la gestione dei prompt e dei pesi dei modelli. Utilissimo anche nella gestione dei RAG.
Perché Ottimizzare gli LLM con DSPy
Senza DSPy, l’utilizzo di LLM comporta una serie di operazioni manuali:
- Suddividere il problema in passaggi.
- Formulare e affinare i prompt per ogni passaggio.
- Generare esempi sintetici per ottimizzare ogni passaggio.
- Perfezionare i modelli per ridurre i costi.
Questo processo è complicato e disordinato, poiché ogni cambiamento nella pipeline, nei modelli o nei dati richiede modifiche ai prompt e ai passaggi di finetuning.
DSPy risolve questo problema in due modi fondamentali:
- Separa il flusso del programma dai parametri dei modelli (prompt e pesi).
- Introduce ottimizzatori che calibrano i prompt e i pesi in base a metriche di performance.

Esempio Pratico per Ottimizzare gli LLM con DSPy
Immagina di voler creare un sistema per risolvere problemi di matematica. Senza DSPy, dovresti suddividere il problema in vari passaggi: capire la domanda, trovare le formule appropriate, risolvere i calcoli e formulare la risposta finale. Ognuno di questi passaggi richiede di scrivere prompt specifici e di creare esempi per allenare il modello. Ogni volta che cambi un aspetto del problema o aggiungi nuovi tipi di domande, dovresti ripetere l’intero processo di messa a punto.
Con DSPy, invece, puoi creare un modulo che gestisce il flusso del programma separatamente dai parametri specifici del modello. Ad esempio, puoi definire un modulo per capire la domanda, uno per generare le formule e uno per calcolare la risposta. DSPy automatizza la creazione degli esempi necessari e ottimizza i prompt per ciascun passaggio, utilizzando metriche di performance per migliorare continuamente il sistema. Questo rende l’intero processo molto più efficiente e meno soggetto a errori.
Analogia con le Reti Neurali
Quando costruiamo reti neurali, non scriviamo manualmente cicli for su liste di valori float regolati a mano. Invece, utilizziamo un framework come PyTorch per comporre strati (ad esempio, Convolution o Dropout) e poi usiamo ottimizzatori (ad esempio, SGD o Adam) per apprendere i parametri della rete. Lo stesso vale per DSPy! DSPy ti fornisce i moduli generici appropriati (ad esempio, ChainOfThought, ReAct, ecc.), che sostituiscono i trucchi basati su stringhe per i prompt.
Per sostituire il prompt hacking e i generatori di dati sintetici occasionali, DSPy ti offre anche ottimizzatori generali (BootstrapFewShotWithRandomSearch o MIPRO), che sono algoritmi che aggiornano i parametri nel tuo programma. Ogni volta che modifichi il tuo codice, i tuoi dati, le tue asserzioni o la tua metrica, puoi ricompilare il tuo programma e DSPy creerà nuovi prompt efficaci che si adattano alle tue modifiche.
Ottimizzare gli LLM con DSPy: Installation
Tutto quello che occore è:
pip install dspy-ai
Potete installare anche l’ultima versione:
pip install git+https://github.com/stanfordnlp/dspy.git
In alterlativa usare Google Colab:
Per impostazione predefinita, DSPy installa l’ultima versione di openai da pip. Tuttavia, se installi una versione precedente a quella in cui OpenAI ha cambiato la loro API, come openai~=0.28.1, la libreria funzionerà comunque bene. Entrambe le versioni sono supportate.
Per l’integrazione opzionale (ordinata alfabeticamente) di Chromadb, Groq, Marqo, Milvus, MongoDB, MyScaleDB, Pinecone, Qdrant, Snowflake o Weaviate, includi gli extra qui sotto:
pip install dspy-ai[chromadb] # or [groq] or [marqo] or [milvus] or [mongodb] or [myscale] or [pinecone] or [qdrant] or [snowflake] or [weaviate]
DSPy Google Colab LLM Modelli Linguistici ottimizzare Prompt