Instruction Tuning
L'ottimizzazione tramite istruzioni adatta un modello linguistico preaddestrato usando coppie di istruzioni e risposte affinché segua le richieste. Panoramica su FLAN, InstructGPT, dati e VLM.
L'instruction tuning è il fine-tuning di un modello linguistico di grandi dimensioni (LLM) preaddestrato su coppie di istruzioni e risposte desiderate, affinché segua le richieste formulate in linguaggio naturale. Un modello preaddestrato si limita a proseguire il testo: quando OpenAI gli ha chiesto di «Spiegare lo sbarco sulla Luna a un bambino di 6 anni in poche frasi», GPT-3 ha proseguito con richieste simili sulla gravità e la relatività, mentre InstructGPT, sottoposto a instruction tuning, ha scritto la spiegazione. I ricercatori di Google hanno descritto il metodo nel paper FLAN del 2021, che ha sottoposto a tuning un modello da 137 miliardi di parametri su oltre 60 set di dati di elaborazione del linguaggio naturale (NLP) riscritti come istruzioni; il modello sottoposto a tuning ha superato le prestazioni zero-shot di GPT-3, da 175 miliardi di parametri, in 20 delle 25 attività mai affrontate prima. Nelle pipeline dei modelli conversazionali, la stessa fase è generalmente chiamata fine-tuning supervisionato (SFT) e i due termini sono usati come sinonimi.
Come funziona l'addestramento alle istruzioni#
Ogni esempio viene formattato con un template che indica dove termina l'istruzione e inizia la risposta, come i template di chat dei modelli attuali o le intestazioni «### Instruction» e «### Response» usate da Alpaca di Stanford. L'addestramento usa la stessa funzione di perdita del token successivo usata nel preaddestramento, ma vengono conteggiati solo i token della risposta, così il modello impara a produrre risposte anziché a prevedere le istruzioni stesse. Un esempio di addestramento su GPT-2 di OpenAI illustra la procedura:
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("gpt2")
model = AutoModelForCausalLM.from_pretrained("gpt2")
optimizer = torch.optim.AdamW(model.parameters(), lr=5e-5)
# One instruction-response pair in the Alpaca prompt format
prompt_ids = tokenizer("### Instruction:\nName three animals that can fly.\n\n### Response:\n").input_ids
response_ids = tokenizer("Bats, eagles, and bees." + tokenizer.eos_token).input_ids
input_ids = torch.tensor([prompt_ids + response_ids])
# Label -100 drops the instruction from the loss, so the model learns only to respond
labels = torch.tensor([[-100] * len(prompt_ids) + response_ids])
for step in range(3):
loss = model(input_ids=input_ids, labels=labels).loss
loss.backward()
optimizer.step()
optimizer.zero_grad()
print(f"step {step}: loss {loss.item():.2f}")Solo i 10 token della risposta contribuiscono alla perdita e tre aggiornamenti su questo singolo esempio la riducono da 4,45 a 1,49. Una sessione di instruction tuning applica lo stesso aggiornamento a migliaia o milioni di coppie diverse di istruzioni e risposte, così il modello impara l'abitudine generale di rispondere invece di una singola risposta.
L'instruction tuning è di solito la prima fase del post-addestramento e i dati possono provenire da diverse fonti:
Set di dati per l'instruction tuning#
La raccolta Flan di Google è arrivata a 1.836 attività nel 2022 e l'instruction tuning su questa raccolta ha migliorato in media del 9,4% le prestazioni di PaLM, da 540 miliardi di parametri. InstructGPT di OpenAI ha combinato dimostrazioni scritte da annotatori con l'apprendimento per rinforzo dal feedback umano (RLHF); le persone hanno preferito le risposte del suo modello da 1,3 miliardi di parametri a quelle di GPT-3 da 175 miliardi. Alpaca di Stanford, pubblicato a marzo 2023, ha sottoposto a fine-tuning LLaMA 7B di Meta per meno di 600 dollari su 52.000 esempi generati da un modello OpenAI con il metodo Self-Instruct, uno dei primi esempi di dati sintetici usati come fonte di dati per le istruzioni. LIMA di Meta ha mostrato quanto si possa ottenere da un set di dati ridotto: ha sottoposto a tuning un LLaMA da 65 miliardi di parametri usando solo 1.000 esempi selezionati con cura; gli autori hanno concluso che un modello apprende quasi tutte le proprie conoscenze durante il preaddestramento, mentre l'instruction tuning gli insegna il formato e lo stile delle risposte. Metodi come l'ottimizzazione diretta delle preferenze (DPO) perfezionano poi il modello sottoposto a tuning con dati sulle preferenze.
Instruction tuning visivo#
I modelli visione-linguaggio (VLMs) imparano allo stesso modo a seguire istruzioni relative alle immagini. LLaVA, pubblicato ad aprile 2023, ha fornito a GPT-4, solo testuale, le didascalie e i riquadri di delimitazione delle immagini COCO, chiedendogli di scrivere 158.000 conversazioni, descrizioni dettagliate ed esempi di ragionamento complesso su queste immagini; poi ha sottoposto a tuning su quei dati un modello che collega un encoder di immagini CLIP a un modello linguistico: un metodo noto come instruction tuning visivo. I VLM sottoposti a instruction tuning rispondono a richieste libere su una foto e il blocco LLM negli Agenti di Ultralytics Platform si basa su questa capacità: invia l'immagine, i risultati a monte di YOLO26 e un prompt scritto al modello visione-linguaggio selezionato.
Instruction tuning e termini correlati#
Il prompt tuning apprende alcuni vettori soft di prompt e mantiene congelato il modello; il prompt engineering modifica solo il testo di input, mentre l'instruction tuning aggiorna i pesi del modello. Il fine-tuning di dominio adatta un modello a un ambito come la medicina o il diritto, senza necessariamente insegnargli a seguire le richieste. L'instruction tuning può essere eseguito anche con la messa a punto efficiente in termini di parametri (PEFT): QLoRA addestra gli adattatori LoRA su un modello quantizzato a 4 bit e gli autori di QLoRA hanno eseguito l'instruction tuning di un modello da 65 miliardi di parametri utilizzando un'unica GPU da 48 GB.










