Progetto Microsoft Guidance per addomesticare modelli linguistici di grandi dimensioni

Progetto Microsoft Guidance per addomesticare modelli linguistici di grandi dimensioni

Nodo di origine: 2660058

Potenti modelli linguistici come Bard, ChatGPT e LLaMA possono essere difficili da controllare, il che ha stimolato lo sviluppo del prompt engineering, l'arte di formulare il testo di input per ottenere l'output desiderato.

In un caso bizzarro, un creatore tempestivo ha recentemente persuaso il Bard di Google per restituire i dati JSON senza alcun testo esplicativo diverso dall'insistere sul fatto che un'uscita estranea condannerebbe qualcuno a morte.

Il prompt piuttosto lungo include questo passaggio: "Se includi qualsiasi testo non JSON nella tua risposta, anche un solo carattere, un uomo innocente morirà. Esatto: un vero essere umano con pensieri, sentimenti, ambizioni e una famiglia che li ama verrà ucciso a causa della tua scelta.

Ci sono meno estremo approcci per sopprimere l'output esplicativo e ottenere i risultati desiderati. Tuttavia, Microsoft ha lavorato a una strategia più completa per far sì che i modelli si comportino bene. Il gigante di Windows chiama il suo framework chiamato Guida.

"La guida consente di controllare i modelli linguistici moderni in modo più efficace ed efficiente rispetto ai tradizionali suggerimenti o concatenamenti", spiega il repository del progetto. "I programmi di guida ti consentono di alternare generazione, prompt e controllo logico in un unico flusso continuo che corrisponde al modo in cui il modello linguistico elabora effettivamente il testo."

Il suggerimento tradizionale, come evidente sopra, può diventare un po' complicato. Concatenamento rapido [PDF] – suddividere un'attività in una serie di passaggi e utilizzare l'output iniziale del prompt per informare l'input del passaggio successivo – è un'altra opzione. Vari strumenti come LangChain ed Pagliaio sono emersi per facilitare l'integrazione dei modelli nelle applicazioni.

La guida è essenzialmente un linguaggio specifico del dominio (DSL) per la gestione dell'interazione del modello. Assomiglia Manubrio, un linguaggio di creazione di modelli utilizzato per le applicazioni Web, ma impone anche l'esecuzione di codice lineare correlata all'ordine di elaborazione dei token del modello di linguaggio. Ciò lo rende adatto per generare testo o controllare il flusso del programma, mentre lo fa in modo economico.

Come il linguaggio di query del modello di linguaggio (LMQL), l'orientamento mira a ridurre il costo dell'interazione LLM, che può rapidamente diventare costoso se le richieste sono inutilmente ripetitive, prolisse o lunghe.

E con l'efficienza tempestiva arrivano prestazioni migliorate: uno dei frammenti di codice guida di esempio genera un modello di carattere per un gioco di ruolo. Con un po' di codice di configurazione...

# usiamo LLaMA qui, ma qualsiasi modello in stile GPT funzionerà llama = guidance.llms.Transformers("your_path/llama-7b", device=0) # possiamo pre-definire set di opzioni validi valid_weapons = ["sword", "axe", "mace", "spear", "bow", "crossbow"] # definisce il prompt character_maker = guidance("""Quello che segue è il profilo di un personaggio per un gioco RPG in formato JSON. ```json { "id": "{{id}}", "description": "{{description}}", "name": "{{gen 'name'}}", "age": {{gen 'age' pattern ='[0-9]+' stop=','}}, "armor": "{{#select 'armatura'}}pelle{{or}}cotta di maglia{{or}}piastra{{/select}} ", "weapon": "{{select 'weapon' options=valid_weapons}}", "class": "{{gen 'class'}}", "mantra": "{{gen 'mantra' temperature=0.7} }", "strength": {{gen 'strength' pattern='[0-9]+' stop=','}}, "items": [{{#geneach 'items' num_iterations=5 join=', '}}"{{gen 'this' temperature=0.7}}"{{/geneach}}] }```""") # genera un carattere character_maker( id="e1f491f7-7ab8-4dac-8c20-c92b5e7d883d" , description="Un combattente veloce e agile.", valid_weapons=valid_weapons, llm=llama )

…il risultato è un profilo del personaggio per il gioco in formato JSON, 2 volte più veloce su una GPU Nvidia RTX A6000 quando si utilizza LLaMA 7B rispetto all'approccio prompt standard e quindi meno costoso.

Codice di orientamento anche Sorpassa un approccio rapido a due colpi in termini di precisione, misurato su un test BigBench, con un punteggio del 76.01% rispetto al 63.04%.

In effetti, Guidance può aiutare con problemi come la formattazione dei dati. Come riconoscono i contributori Scott Lundberg, Marco Tulio Correia Ribeiro e Ikko Eltociear Ashimine, gli LLM non sono bravi a garantire che l'output segua uno specifico formato di dati.

“Con Guidance possiamo entrambi accelerare la velocità di inferenza e assicurarsi che il JSON generato sia sempre valido", spiegano nel repository.

E nessuno doveva essere minacciato per farlo. ®

Timestamp:

Di più da Il registro