Cos'è
Il supervised fine-tuning è il metodo più diretto per modificare il comportamento di un modello: si forniscono esempi delle conversazioni desiderate e lo si addestra a riprodurne le risposte. "Supervisionato" significa che ogni esempio è accompagnato dalla relativa risposta. Al modello non viene richiesto di giudicare o esplorare; gli viene indicato, per ogni contesto, quali siano le parole successive corrette.
Un modello pre-addestrato ha già assimilato il linguaggio e una vasta conoscenza del mondo attraverso testi pubblici. Ciò che non conosce è il Vostro prodotto, il tono del Vostro team o il formato atteso dai Vostri utenti. L'SFT colma questa lacuna con un dataset relativamente ridotto: da centinaia a poche migliaia di conversazioni valide, anziché i trilioni di token impiegati nel pre-addestramento. Lo studio LIMA ha evidenziato chiaramente questo aspetto: un modello da 65 miliardi di parametri, sottoposto a fine-tuning su soli 1.000 esempi accuratamente selezionati, si è comportato come un assistente estremamente valido. Gli autori hanno interpretato questo risultato come la prova che quasi tutta la conoscenza viene acquisita durante il pre-addestramento, mentre il fine-tuning insegna principalmente il formato con cui utilizzarla.
Come funziona
Ogni record di addestramento è una conversazione. Le risposte dell'assistente contrassegnate come addestrabili sono i target; tutto ciò che precede un target è il suo contesto.
{"messages": [
{"role": "system", "content": "You are Scalata's support assistant."},
{"role": "user", "content": "How do I reset my password?"},
{"role": "assistant", "content": "Open Settings → Security and choose Reset password. You'll get an email link valid for 30 minutes."}
]}Il modello legge il record come un'unica lunga sequenza di token. In ogni posizione all'interno del target prevede una probabilità per ogni token nel suo vocabolario, e il trainer verifica quanta probabilità ha assegnato al token effettivamente successivo. La penalità per un token è −ln p, il logaritmo naturale negativo di tale probabilità. La media calcolata sull'intera risposta rappresenta la cross-entropy loss.
loss for one reply = average over its target tokens of −ln p(correct next token | everything before it)
p = 0.90 → 0.11
p = 0.50 → 0.69
p = 0.05 → 3.00Vengono valutati solo i token target. Il messaggio di sistema e le parole dell'utente vengono letti, poiché modellano la previsione, ma non vengono mai valutati. Questo è il loss masking: il modello impara a rispondere come il Vostro team, non a imitare i Vostri utenti.
Openp 0.20 · 1.61␣Settingsp 0.85 · 0.16␣→p 0.62 · 0.48␣Securityp 0.90 · 0.11Dopo ogni batch, la back-propagation calcola come ogni peso addestrabile dovrebbe cambiare per rendere più probabili i token target, e l'ottimizzatore compie un piccolo passo in quella direzione. Il learning rate stabilisce la dimensione del passo. Un passaggio completo su tutti i record costituisce un'epoca.
- La risposta target inizia con “Apri Impostazioni → Sicurezza”. Supponiamo che il modello assegni a questi quattro token probabilità pari a 0,20, 0,85, 0,62 e 0,90.
- Le penalità sono −ln 0,20 = 1,61, −ln 0,85 = 0,16, −ln 0,62 = 0,48 e −ln 0,90 = 0,11.
- La loro somma è 2,36; la media su quattro token è circa 0,59. La maggior parte della penalità deriva dalla prima parola: il modello non si aspettava che la risposta iniziasse con “Apri”.
- L'aggiornamento aumenta tutte e quattro le probabilità, e in misura maggiore quella sorprendente, poiché la spinta su ciascun token cresce in base alla distanza della sua probabilità da 1. Dopo alcune epoche su risposte simili, la media potrebbe scendere a circa 0,2.
In cosa è efficace l'SFT e in cosa non lo è
| Obiettivo | SFT? | Perché |
|---|---|---|
| Un tono e una voce coerenti | Sì | Ogni risposta nei dati lo dimostra. |
| Un formato di output fisso (sezioni, JSON, lunghezza) | Sì | Il formato è facile da mostrare e da valutare token per token. |
| Fraseologia di dominio e vocabolario di prodotto | Sì | Il modello assimila i termini utilizzati dal Vostro team. |
| Dati soggetti a frequenti variazioni (prezzi, scorte, policy) | Raramente | I dati appresi diventano obsoleti; è più sicuro ricercarli al momento della risposta. |
| Giudizi di tipo "migliore di" senza un'unica risposta corretta | In parte | Il preference tuning esprime direttamente i confronti. |
| Attività con un risultato verificabile (un calcolo, codice che supera i test) | In parte | Il reinforcement fine-tuning può ricompensare i risultati corretti anziché una singola formulazione fissa. |
Una proprietà spiega la maggior parte delle sorprese dell'SFT: imita. Se una risposta su dieci dice "contattare l'assistenza" invece di rispondere, il modello impara a dirlo circa una volta su dieci. Se le risposte si contraddicono a vicenda, il modello apprende una combinazione confusa di entrambe. Avere target puliti e coerenti è più importante che averne in grande quantità.
Come ottimizzarlo
La maggior parte delle esecuzioni supervisionate richiede poco tuning. Iniziare dai valori predefiniti del provider ("Auto"), analizzare le curve, quindi modificare un parametro alla volta.
Quante volte il modello esamina ogni record di addestramento. Se sono troppo poche, le risposte cambiano a malapena; se sono troppe, la training loss continua a diminuire mentre la validation loss inizia a salire, poiché il modello sta memorizzando i Vostri esempi. I dataset di piccole dimensioni tollerano generalmente più epoche rispetto a quelli di grandi dimensioni.
I modelli in hosting espongono un moltiplicatore sul tasso di apprendimento predefinito del provider, anziché il valore grezzo. Un valore superiore a 1 accelera l'apprendimento, ma può superare il limite o compromettere le competenze generali; un valore inferiore a 1 è più graduale e lento. Lo riduca se la perdita di convalida è rumorosa o aumenta precocemente.
- Entrambe le loss in calo: apprendimento in corso; un'altra epoca potrebbe essere utile.
- Training in calo, validation si appiattisce: livello adeguato; fermarsi qui.
- Training in calo, validation in aumento: overfitting; utilizzare meno epoche, un moltiplicatore inferiore o dati più variegati.
- Nessuna delle due varia in modo significativo: i dati potrebbero essere incoerenti o il learning rate troppo basso.
Errori comuni
- Addestrare il modello su risposte che non si desidera vengano ripetute. Le risposte deboli, obsolete o incoerenti vengono apprese con la stessa fedeltà di quelle valide.
- Eseguire molte epoche su un dataset ridotto e fare affidamento sulla diminuzione della training loss. È necessario monitorare la validation loss.
- Utilizzare l'SFT per memorizzare dati soggetti a variazioni. Quando il dato cambia, il modello continua a ripetere quello vecchio.
- Valutare l'esecuzione basandosi esclusivamente sulla loss. Una loss inferiore indica un'imitazione più fedele delle risposte, ma non necessariamente risposte migliori: è consigliabile eseguire una valutazione.
- Omettere il validation split, eliminando così la possibilità di rilevare l'overfitting.
Riferimenti e letture di approfondimento
Le fonti esterne si aprono in una nuova scheda.
- 01SFT TrainerHugging Face TRL docs · huggingface.coDescrive la cross-entropy loss a livello di token e mostra come funziona l'addestramento basato esclusivamente sui completamenti.
- 02Supervised fine-tuningOpenAI API docs · developers.openai.comLa guida pratica di un provider in hosting: formato dei dati, iperparametri e valutazione del risultato.
- 03LIMA: Less Is More for AlignmentZhou et al., 2023 · arXiv · arxiv.org1.000 esempi accuratamente selezionati sono stati sufficienti per eseguire il fine-tuning di un modello da 65B e trasformarlo in un valido assistente.
- 04Training language models to follow instructions with human feedbackOuyang et al., 2022 · arXiv · arxiv.orgInstructGPT: il paper che ha reso il supervised fine-tuning il primo passo del moderno post-addestramento.
- 05Finetuned Language Models Are Zero-Shot LearnersWei et al., 2021 · arXiv · arxiv.orgLe prime evidenze che il fine-tuning sulle istruzioni aiuta un modello a seguire istruzioni mai viste prima.