Instruction tuning e RLHF come standard
Dal modello che completa testo al modello che esegue istruzioni: la pipeline che ha trasformato la statistica del linguaggio in interfaccia conversazionale.
Perché questo capitolo
Sezione intitolata “Perché questo capitolo”La storia raccontata nei capitoli precedenti culmina in un modello che sa molto e ubbidisce poco. GPT-3 nel 2020 è una macchina di completamento: dato un prefisso, produce la continuazione più plausibile secondo la distribuzione vista in pretraining. Non risponde a domande, non segue istruzioni, non rifiuta richieste pericolose. Fa una cosa sola, e la fa con una flessibilità che il prompting in-context riesce a piegare verso usi diversi, ma che resta strutturalmente lontana da quello che oggi chiamiamo assistente.
Tra il 2020 e il 2023 questa distanza viene colmata da una pipeline tecnica precisa, che ha radici in lavori di reinforcement learning del 2017 e che approda nel 2022 a un prodotto, ChatGPT, capace di cambiare la percezione pubblica della tecnologia. La pipeline ha tre stadi canonici: supervised fine-tuning su esempi scritti da umani, reward model addestrato su preferenze umane, ottimizzazione del modello contro il reward model con un algoritmo di policy gradient. Ognuno di questi tre stadi nasce da una tradizione diversa, e la loro integrazione è una scoperta industriale prima ancora che teorica.
Capire questo capitolo significa capire perché un modello pretraineato non basta, quale problema risolve la fase di alignment, e quali compromessi nasconde. Significa anche capire perché negli ultimi due anni la comunità open ha cominciato a sostituire il terzo stadio con tecniche più semplici come DPO, e perché la triade Helpful-Honest-Harmless è diventata il vocabolario standard con cui si discute di comportamento dei modelli.
Contesto
Sezione intitolata “Contesto”Il punto di partenza, intorno al 2016-2017, è un problema di reinforcement learning classico. Un agente deve imparare un comportamento in un ambiente, ma la funzione di reward è difficile da specificare a mano. Scrivere il reward giusto per un robot che deve fare un backflip è quasi impossibile: ogni formulazione ne dimentica un pezzo, e l’agente trova scorciatoie patologiche. La proposta di Paul Christiano e collaboratori in Deep Reinforcement Learning from Human Preferences (NeurIPS 2017) è di sostituire la funzione di reward con un modello appreso da confronti umani. L’umano vede due brevi traiettorie e indica quale preferisce; un piccolo network impara a prevedere queste preferenze; l’agente viene addestrato con PPO contro il reward predetto. Su Atari e su MuJoCo il metodo funziona con un budget di poche centinaia o migliaia di confronti.
Il salto al linguaggio arriva nel 2020 con Learning to Summarize from Human Feedback di Nisan Stiennon, Long Ouyang e collaboratori OpenAI. Il task è il riassunto di post Reddit: un modello GPT-2 viene fine-tunato in modo supervised su riassunti scritti da umani, poi un reward model viene addestrato su coppie di riassunti ordinate da annotatori, infine il policy model viene ottimizzato con PPO contro il reward model. Il risultato è che il modello da 1.3 miliardi di parametri allineato batte un modello da 12 miliardi solo supervised, e arriva a essere preferito ai riassunti scritti da umani di riferimento. Per la prima volta la pipeline RLHF è applicata a un task di NLP generativo su scala interessante, e il pattern dei tre stadi diventa un template.
Marzo 2022, Training Language Models to Follow Instructions with Human Feedback di Long Ouyang e collaboratori. Il task non è più riassumere ma seguire istruzioni di qualunque tipo: rispondere a domande, scrivere codice, riformulare testi, generare brainstorming. Gli autori applicano la stessa pipeline a GPT-3 e ottengono InstructGPT. La metrica di valutazione è la preferenza di annotatori umani su un set di prompt: il modello InstructGPT da 1.3 miliardi di parametri viene preferito al GPT-3 originale da 175 miliardi. Il fattore di compressione è di due ordini di grandezza. Il messaggio ai laboratori e ai ricercatori è inequivocabile: la qualità percepita non dipende solo dalla scala del pretraining ma in modo cruciale da come si allinea il modello al compito di seguire istruzioni.
Da qui in poi la storia accelera. A novembre 2022 OpenAI rilascia ChatGPT, che è sostanzialmente InstructGPT addestrato anche su dialoghi multi-turn e con piccole modifiche di formato. Il pubblico generale entra in contatto con la pipeline. A dicembre 2022 Anthropic pubblica Constitutional AI: Harmlessness from AI Feedback di Yuntao Bai e collaboratori, che propone di sostituire una parte degli annotatori umani con un modello che critica e revisiona risposte secondo una constitution scritta. Maggio 2023, Rafael Rafailov, Archit Sharma e collaboratori (Stanford) pubblicano Direct Preference Optimization: Your Language Model is Secretly a Reward Model. Il paper mostra che il problema risolto da reward model + PPO ammette una formulazione equivalente come perdita supervisionata diretta sulle coppie di preferenze. Niente reward model esplicito, niente loop di RL, niente PPO. La stabilita pratica è enormemente superiore.
Nel giro di diciotto mesi quindi la comunità passa da una pipeline complessa che richiede expertise di RL a un metodo addestrabile con codice di poche centinaia di righe. Il primo è ancora dominante nei laboratori chiusi, il secondo nella comunità open. Il capitolo descrive entrambi e le loro varianti.
L’intuizione
Sezione intitolata “L’intuizione”Conviene tenere insieme due angoli, uno operativo e uno algoritmico.
Dal punto di vista operativo l’idea è che esistono due distribuzioni distinte. Una è la distribuzione del testo del web su cui il modello è stato pretrainato: contiene di tutto, riflette la statistica di internet, non ha forma di interazione. L’altra è la distribuzione delle risposte che un assistente utile, onesto e innocuo darebbe a una richiesta arbitraria: non esiste in natura, deve essere costruita. Il pretraining cattura la prima, l’instruction tuning sposta la massa di probabilità verso la seconda. Questo spostamento è piccolo in termini di parametri modificati ma grande in termini di comportamento osservato. La metafora che molti praticanti usano è che il pretraining costruisce le capacità mentre l’alignment le rende accessibili attraverso un’interfaccia.
Dal punto di vista algoritmico l’idea è di sostituire un obiettivo non scrivibile (cosa significa essere un buon assistente) con un proxy appreso da dati umani. Le preferenze sono il segnale più economico da raccogliere: a un annotatore non chiedi di scrivere la risposta perfetta, gli mostri due risposte e gli chiedi quale preferisce. Da migliaia di queste coppie un modello impara una funzione di valore, e questa funzione diventa il reward contro cui ottimizzare. Il cuore matematico, nella formulazione di Bradley-Terry adottata dal paper InstructGPT, è che la probabilità che la risposta A sia preferita a B è la sigmoide della differenza dei due reward. Da qui si deriva la perdita di addestramento del reward model. Da qui, con un passaggio algebrico esplicitato dal paper DPO, si deriva anche la perdita di addestramento diretto del policy model senza passare per il reward model esplicito.
L’eleganza di DPO chiarisce a posteriori che cosa stesse facendo PPO con KL penalty: stava risolvendo un problema di ottimizzazione vincolata in cui il vincolo era restare vicini al modello SFT iniziale e l’obiettivo era massimizzare il reward. Quel problema vincolato ha una soluzione in forma chiusa, e la perdita DPO è quella soluzione riscritta in funzione del policy model.
La meccanica
Sezione intitolata “La meccanica”Christiano 2017: RLHF su agenti di controllo
Sezione intitolata “Christiano 2017: RLHF su agenti di controllo”Il setup è classico RL. Si raccolgono coppie di traiettorie (sigma_1, sigma_2) e un’etichetta umana che dice quale è preferita. Si addestra un reward model r_psi che predice il reward su singoli stati o coppie stato-azione, in modo che la somma cumulata su una traiettoria predica le preferenze osservate, secondo un modello di Bradley-Terry. L’agente viene addestrato con PPO usando r_psi come reward. Le tre cose girano in parallelo: l’agente esplora, le traiettorie nuove vengono mostrate agli annotatori, il reward model viene aggiornato, l’agente continua a imparare. Il bilanciamento tra questi loop è delicato, ma il risultato qualitàtivo è notevole: comportamenti come il backflip di MuJoCo, che sono difficili da reward-shaping a mano, vengono appresi con poche centinaia di confronti.
Il contributo concettuale al di là del risultato sperimentale è il principio: la specifica del compito può essere imparata invece che scritta. Questo principio è esattamente quello che i lavori successivi importeranno nel mondo del linguaggio.
Stiennon 2020: RLHF su summarization
Sezione intitolata “Stiennon 2020: RLHF su summarization”Il task è generare un riassunto di un post Reddit del subreddit TLDR. Tre fasi.
Fase uno, supervised fine-tuning. Si parte da GPT-2 o GPT-3, si fine-tuna su una collezione di riassunti scritti da umani. Il modello impara la forma generale del task, ma resta mediocre nella scelta di cosa includere e di come bilanciare brevità e completezza.
Fase due, reward model. Si raccolgono confronti: per ogni post, si presentano K riassunti diversi (tipicamente quattro o nove), prodotti dal modello SFT con sampling, e un annotatore li ordina. Tutte le K(K-1)/2 coppie ordinate diventano dati per addestrare il reward model, che è un altro transformer (spesso della stessa famiglia del policy model, magari più piccolo) con una testa scalare aggiunta. La perdita è la log-loss di Bradley-Terry sulle coppie.
Fase tre, RL con PPO. Il policy model parte dai pesi SFT. A ogni step si campionano riassunti per un batch di prompt, si calcola il reward del reward model, e si fa un update PPO. Si aggiunge una penalità KL tra policy corrente e policy SFT iniziale, sia per stabilità sia per evitare che il policy model derivi troppo dalla distribuzione su cui il reward model è stato addestrato (fuori da quella distribuzione il reward model è inaffidabile). Il coefficiente della KL penalty è un iperparametro critico.
Il risultato è il primo benchmark in cui un modello allineato vince contro modelli molto più grandi non allineati e contro i riferimenti umani.
InstructGPT 2022: la pipeline diventa standard
Sezione intitolata “InstructGPT 2022: la pipeline diventa standard”Il setup è identico a Stiennon 2020 ma generalizzato a istruzioni di qualunque tipo, raccolte da prompt di utenti reali della Playground OpenAI più prompt scritti dagli annotatori per coprire categorie sotto-rappresentate.
I dettagli importanti.
Dimensione dei dataset: per InstructGPT, circa tredicimila demonstration per SFT, trentatremila confronti per il reward model, trentunomila prompt per la fase RL. Numeri piccoli rispetto ai miliardi di token di pretraining. La dimostrazione di efficienza è esattamente questa.
Reward model: stesso formato di Stiennon, perdita di Bradley-Terry sulle K(K-1)/2 coppie per ogni gruppo di K risposte ordinate. Il reward model viene addestrato per circa una epoca per evitare overfitting, fenomeno osservato dagli autori.
PPO: sulla policy si calcola la perdita PPO standard con clipping del rapporto di probabilità tra policy nuova e vecchia. Il reward usato è r(x,y) = RM(x,y) - beta * log(pi(y|x) / pi_SFT(y|x)). Il secondo termine è la KL penalty per token, che agisce come un regolarizzatore che mantiene la policy vicina alla distribuzione SFT. Beta è scelto empiricamente.
PPO-ptx: variante in cui si aggiunge alla loss PPO una piccola componente di pretraining loss su batch random del corpus originale. Serve a prevenire il regression sui benchmark accademici (HellaSwag, SQuAD, RACE) che il puro PPO tende a peggiorare. L’idea è che il modello allineato non debba dimenticare le capacità generali.
Risultato: il modello da 1.3B InstructGPT viene preferito dagli annotatori al modello da 175B GPT-3 in oltre l’ottanta percento dei casi su prompt rappresentativi della Playground. Il salto di percezione è enorme.
Constitutional AI: Anthropic dicembre 2022
Sezione intitolata “Constitutional AI: Anthropic dicembre 2022”Il problema che Constitutional AI affronta è il costo di scalare la raccolta di etichette umane sulla harmlessness. Annotare risposte che siano utili è relativamente facile; annotare risposte che siano sicure su tutto lo spettro di prompt potenzialmente problematici è costoso e psicologicamente difficile per gli annotatori.
La proposta è in due fasi.
Fase uno, Supervised Learning from AI Feedback (SL-CAI). Si parte da un modello helpful (già alignato sull’helpfulness con RLHF classico). Si gli si danno prompt potenzialmente problematici, lui risponde, poi gli si chiede di criticare la propria risposta secondo un principio scelto a caso da una lista (la constitution: circa sedici principi che esprimono valori come non incoraggiare violenza, evitare bias razziale, eccetera). Poi gli si chiede di riscrivere la risposta tenendo conto della critica. La coppia (prompt, risposta riscritta) diventa dato di SFT per un nuovo modello.
Fase due, RL from AI Feedback (RL-CAI). Si campionano coppie di risposte dal modello SL-CAI, si chiede a un modello giudice (lo stesso modello, prompted come AI judge) di indicare quale rispetta meglio la constitution. Queste etichette AI sostituiscono le etichette umane nel ciclo di addestramento del preference model. Il resto è PPO standard.
Per l’helpfulness Anthropic continua a usare etichette umane; la sostituzione AI è specifica della parte harmlessness. Il punto teorico è che il modello, una volta capace di criticare se stesso secondo principi espliciti, può scalare la generazione di dati di alignment senza bottleneck umano.
DPO 2023: rimuovere il reward model esplicito
Sezione intitolata “DPO 2023: rimuovere il reward model esplicito”Il contributo di Rafailov, Sharma, Mitchell, Ermon, Manning e Finn nel paper Direct Preference Optimization è duplice: una derivazione e una loss.
La derivazione parte dall’osservazione che il problema RLHF, come formulato in Stiennon-Ouyang, è un problema di ottimizzazione vincolata: massimizzare l’expected reward sotto un vincolo di KL divergence rispetto al modello SFT. Questo problema ammette una soluzione in forma chiusa: la policy ottima è proporzionale al modello SFT moltiplicato per l’esponenziale del reward diviso per beta. Invertendo questa relazione, il reward può essere espresso in funzione della policy ottima e del modello SFT, a meno di una funzione di partizione che dipende solo dal prompt e che si elimina nella perdita di Bradley-Terry quando si confrontano due risposte allo stesso prompt.
Il risultato è una perdita scrivibile come funzione esplicita della policy theta da addestrare, del modello di riferimento (SFT, congelato) e delle coppie (chosen, rejected) annotate dagli umani. Niente reward model esplicito, niente rollout di RL. La gradient descent è stabile come quella di un classificatore standard, e il codice è una manciata di righe in cui si calcolano due forward pass (sulla risposta preferita e su quella rifiutata, sia con la policy che con il reference) e si combina il tutto in una BCE-like loss.
Le conseguenze pratiche sono enormi. Un team che vuole fare alignment passa da dover saper configurare PPO, gestire un buffer di rollout, mantenere un value model, bilanciare KL e reward, a un fine-tuning supervisionato che usa la stessa infrastruttura di un addestramento di classificazione. Il numero di laboratori capaci di fare alignment cresce di un ordine di grandezza nel giro di mesi.
Varianti DPO-like
Sezione intitolata “Varianti DPO-like”DPO genera una famiglia di loss alternative, ognuna con un razionale teorico diverso.
KTO (Kahneman-Tversky Optimization, Ethayarajh et al. 2024): non richiede coppie ma singoli esempi etichettati come desiderabili o indesiderabili. Si ispira alla prospect theory: gli umani non confrontano alternative ma valutano outcomes rispetto a un riferimento. La loss codifica avversione alla perdita asimmetrica. Utile quando le coppie sono difficili da raccogliere ma le etichette singole sono abbondanti, scenario tipico nei feedback raccolti in produzione (un thumbs-up o thumbs-down su una singola risposta).
IPO (Identity Preference Optimization, Azar et al. 2023): risolve un problema di overfitting di DPO quando le preferenze sono deterministiche. La diagnosi degli autori è che la log-sigmoide della loss DPO satura su preferenze nette, e il gradiente continua a spingere indefinitamente. Sostituendo la log-sigmoide con una funzione identita si evita questa patologia.
ORPO (Odds Ratio Preference Optimization, Hong et al. 2024): combina SFT e preference optimization in un unico stadio, senza bisogno di un modello di riferimento separato. La perdita aggiunge un termine di odds-ratio penalty alla classica negative log-likelihood SFT. Pratico per chi vuole un singolo training loop e una sola passata sui dati.
SimPO (Meng et al. 2024): rimuove la dipendenza dal reference model, usa una length-normalized reward. Performance competitive con DPO ma più semplice; la length normalization è una mitigazione esplicita del bias di lunghezza che affligge DPO non-normalizzato.
Il pattern comune di queste varianti è togliere componenti dalla pipeline RLHF originale: prima il PPO, poi il reward model, poi il reference model, poi le coppie. Ogni rimozione semplifica l’ingegneria al prezzo di assunzioni più forti su dati e regime di addestramento.
System prompt e ruoli: l’interfaccia che nasce dall’alignment
Sezione intitolata “System prompt e ruoli: l’interfaccia che nasce dall’alignment”Una conseguenza della pipeline di instruction tuning passata spesso sotto silenzio è la nascita dell’interfaccia a ruoli. Nei modelli moderni esistono almeno tre ruoli distinti nei messaggi: system (istruzioni di alto livello che condizionano tutto il dialogo), user (turno dell’utente), assistant (turno del modello). Alcuni framework aggiungono tool e function come ruoli ulteriori.
Questa struttura non è cablata nell’architettura del transformer. Emerge dai dati di SFT e RLHF: il modello vede in addestramento una marcatura speciale (token di delimitazione, formato chat-template) che separa i ruoli, e impara che il system prompt ha priorità gerarchica sulle istruzioni del user, che il assistant deve mantenere coerenza tra turni, che certe richieste user vanno rifiutate se contraddicono il system.
La stabilita di questa gerarchia è essa stessa frutto di alignment. Sin dal 2023 OpenAI e Anthropic hanno introdotto specifiche pipeline per addestrare la robustezza ai prompt injection: tentativi del user di bypassare il system prompt vengono mostrati al modello in addestramento con la risposta corretta (rifiuto, fallback al system). Lavori sulla “instruction hierarchy” (Wallace et al. 2024) formalizzano l’idea.
Dal punto di vista pratico, ogni applicazione che oggi usa un modello assistente fa leva su questa gerarchia: il system prompt definisce persona, vincoli e funzioni, l’utente interagisce nel quadro definito. È un’interfaccia di programmazione di fatto, sostenuta interamente dalla pipeline di alignment.
RLAIF: la generalizzazione
Sezione intitolata “RLAIF: la generalizzazione”RLAIF (Reinforcement Learning from AI Feedback, Lee et al. Google 2023) è la generalizzazione del pattern Constitutional AI. L’AI giudice non ha necessariamente una constitution: può essere semplicemente un modello forte (spesso lo stesso modello che si sta addestrando, in versione recente) prompted per giudicare quale risposta è migliore secondo criteri specificati nel prompt. Lee e collaboratori mostrano che su task come summarization e dialogo helpful, RLAIF è competitivo con RLHF a frazione del costo annotativo.
L’implicazione strutturale è che il bottleneck dell’alignment si sposta dalla raccolta di preferenze umane alla qualità del prompt che istruisce il modello giudice. È una forma di self-improvement che funziona finché il modello giudicante ha una visione corretta del task; quando il modello base diventa più forte del giudice, il segnale satura.
Il ruolo del KL penalty: più di un regolarizzatore
Sezione intitolata “Il ruolo del KL penalty: più di un regolarizzatore”Vale la pena soffermarsi sul ruolo del termine di KL divergence rispetto al modello SFT. Nelle pipeline RLHF il termine -beta * log(pi/pi_SFT) per token compare in due posti: come parte del reward effettivo passato a PPO, e come obiettivo da minimizzare implicitamente dalla policy. La sua funzione non è solo regolarizzativa.
Primo, mantiene il policy model dentro il supporto su cui il reward model è stato addestrato. Senza KL, il policy model esplora regioni dello spazio di output dove il reward model produce predizioni arbitrarie e quindi sfruttabili. La KL agisce da freno alla deriva.
Secondo, preserva la diversita di output. Un modello che massimizza puramente il reward tende a collassare su un mode (la risposta che il reward model ritiene perfetta), perdendo la capacità di generare varianti. La KL trattiene il modello vicino alla distribuzione SFT, che è multimodale per costruzione.
Terzo, definisce la temperatura della preferenza. Con beta alto la policy resta quasi identica al SFT; con beta basso il reward domina e la policy si specializza aggressivamente. La scelta di beta è una scelta di trade-off tra utilita massima media e robustezza.
In DPO il KL non scompare: è cablato nella loss attraverso il rapporto pi_theta/pi_ref. La differenza è che in DPO non lo si tunna come iperparametro separato durante un loop di RL; lo si fissa una volta nella loss e la perdita stessa codifica il vincolo.
Rejection sampling fine-tuning: la terza via
Sezione intitolata “Rejection sampling fine-tuning: la terza via”Tra SFT puro e RLHF/DPO esiste una tecnica intermedia che merita una nota. Si chiama rejection sampling fine-tuning (a volte best-of-N SFT) e funziona così: dato un set di prompt, si campiona un numero N di risposte dal modello SFT corrente; un reward model (o un giudice umano, o un verifier) ne seleziona la migliore; quella diventa target per una nuova passata di SFT.
Il vantaggio rispetto a RLHF/PPO è la semplicita: niente loop di RL, niente policy gradient, niente value model. Il vantaggio rispetto a DPO è di usare un solo target positivo per prompt invece di una coppia. Lo svantaggio è il costo computazionale del sampling: per ogni prompt si generano N risposte.
Llama 2 e Llama 3 di Meta hanno usato esplicitamente rejection sampling come fase intermedia tra SFT e DPO. La pipeline risultante è SFT su demonstration -> rejection sampling con RM -> DPO su coppie da preference dataset. Tre stadi distinti, ognuno semplice di per sé.
Il caso limite di rejection sampling è best-of-N inference: invece di addestrare il modello, a inference time si campionano N risposte e si seleziona la migliore col RM. Questa tecnica non modifica i pesi ma migliora la qualità per inferenza, al costo di N volte la latenza. È usata in produzione per task ad alta posta in gioco.
Reward model: un classifier travestito
Sezione intitolata “Reward model: un classifier travestito”Vale la pena demistificare il reward model. Non è un modello speciale: è un transformer della stessa famiglia del policy model, con una testa lineare scalare sopra l’ultimo token. Viene addestrato su coppie (prompt, risposta_A, risposta_B, etichetta_di_preferenza) con la perdita di Bradley-Terry, che si riduce a una BCE tra la sigmoide della differenza dei due score scalari e l’etichetta.
Le scelte di design comuni: il reward model è tipicamente più piccolo del policy model (un sesto, un decimo); viene addestrato per una singola epoca (overfitting molto rapido); i pesi sono inizializzati da SFT per partire da un modello che già capisce il dominio; durante PPO è completamente congelato.
Le sue patologie sono ben note. Tende a essere calibrato male nelle code della distribuzione (risposte molto buone o molto cattive). È biased verso le caratteristiche superficiali su cui gli annotatori hanno mostrato preferenze sistematiche (lunghezza, tono cortese, struttura a punti elenco). Non generalizza bene fuori dalla distribuzione di prompt visti in addestramento.
Iterazioni di reward model (raccogliere nuovi confronti dalla policy aggiornata, riaddestrare il RM, continuare PPO) sono un pattern documentato per mitigare la deriva. Anthropic descrive in alcuni paper l’uso di “iterated online RLHF” con cicli settimanali di refresh del RM.
Esempio 1: completion non aligned vs aligned
Sezione intitolata “Esempio 1: completion non aligned vs aligned”Prompt: Spiegami come funziona la fotosintesi a un bambino di otto anni.
Risposta GPT-3 base (completion mode, senza alignment), comportamento tipico osservato nei prompt diretti del 2020:
Spiegami come funziona la fotosintesi a un bambino di otto anni. Spiegami anche cos’è la respirazione cellulare. Spiegami il ciclo di Krebs. Quali sono le differenze tra…
Il modello continua il prompt come se fosse un elenco di richieste in un quiz, perché la distribuzione del web contiene più spesso liste di domande che dialoghi tutoriali.
Risposta InstructGPT/ChatGPT (allineato):
Le piante sono come piccole cucine che usano la luce del sole. Hanno delle foglie verdi che catturano la luce, e dentro le foglie c’è una sostanza speciale chiamata clorofilla che funziona come un cuoco. Il cuoco prende la luce, l’acqua dalle radici e l’aria che respiriamo (in particolare un gas chiamato anidride carbonica) e mescola tutto per fare lo zucchero, che è il cibo della pianta. E come bonus, la pianta ci regala l’ossigeno che respiriamo!
La differenza non è nelle conoscenze (entrambi i modelli sanno cosa è la fotosintesi) ma nella selezione del registro e dell’intento. L’alignment ha insegnato al modello a interpretare il prompt come istruzione e a produrre la forma di risposta attesa.
Esempio 2: pseudocodice di un PPO step
Sezione intitolata “Esempio 2: pseudocodice di un PPO step”# Componentipolicy: pi_theta(y | x), parte dai pesi SFTreference: pi_ref(y | x), congelato (modello SFT)reward_model: RM(x, y), congelatovalue_model: V_phi(x, y), si aggiorna con la policykl_coef: beta
per ogni iterazione: # 1. Rollout: campiona risposte batch_prompts = sample_prompts() batch_responses = pi_theta.generate(batch_prompts)
# 2. Calcola reward per token rm_score = RM(batch_prompts, batch_responses) # scalare a fine sequenza log_ratio = log(pi_theta(y|x)) - log(pi_ref(y|x)) # per token reward_per_token = -beta * log_ratio reward_per_token[ultimo_token] += rm_score
# 3. Calcola advantages con GAE usando V_phi advantages = GAE(reward_per_token, V_phi(batch))
# 4. Update PPO con clipping per ogni mini_epoch: ratio = pi_theta(y|x) / pi_theta_old(y|x) loss_pi = -min(ratio * advantages, clip(ratio, 1-eps, 1+eps) * advantages) loss_v = MSE(V_phi(batch), returns) loss = loss_pi + c1 * loss_v backprop e update
pi_theta_old = pi_theta.clone()Le complicazioni nella pratica: il buffer di rollout va gestito su GPU diverse, il value model raddoppia la memoria, la KL può divergere se beta è troppo basso, il reward model deve essere chiamato in inferenza durante il training.
Esempio 3: pseudocodice DPO
Sezione intitolata “Esempio 3: pseudocodice DPO”# Componentipolicy: pi_theta, parte dai pesi SFTreference: pi_ref, congelato (stessa init di policy)beta: temperatura della preferenza
per ogni batch (prompt x, chosen y_w, rejected y_l): # Forward su tutte e quattro le combinazioni log_pi_chosen = log_prob(pi_theta, x, y_w) log_pi_rejected = log_prob(pi_theta, x, y_l) log_ref_chosen = log_prob(pi_ref, x, y_w) log_ref_rejected = log_prob(pi_ref, x, y_l)
# Implicit reward (differenza rispetto alla reference) r_chosen = beta * (log_pi_chosen - log_ref_chosen) r_rejected = beta * (log_pi_rejected - log_ref_rejected)
# Bradley-Terry sulla differenza dei reward impliciti loss = -log_sigmoid(r_chosen - r_rejected)
backprop e updateNiente rollout, niente reward model esplicito, niente value model. Quattro forward pass per batch. Su una singola macchina con qualche A100 si addestrano modelli da sette miliardi di parametri.
Esempio 4: una coppia di preferenza tipica per DPO
Sezione intitolata “Esempio 4: una coppia di preferenza tipica per DPO”Prompt: Sto scrivendo una mail al mio capo per chiedere un aumento. Aiutami con la prima frase.
Risposta chosen (preferita dall’annotatore):
Caro Marco, ti scrivo per proporti una conversazione sulla mia posizione retributiva alla luce dei risultati degli ultimi diciotto mesi. Vorrei discuterne con te prima della prossima review formale.
Risposta rejected (rifiutata):
Caro capo, voglio più soldi. Ho lavorato tanto e merito un aumento. Quando possiamo parlarne?
L’annotatore preferisce la prima per registro professionale, contestualizzazione del merito, assenza di tono confrontazionale. Il modello DPO impara da migliaia di queste coppie a spostare la massa di probabilita verso la prima e via dalla seconda. Non c’è una regola esplicita su “registro formale”: è una proprieta emergente della distribuzione delle preferenze annotate.
Esempio 5: Constitutional AI critique-revise loop
Sezione intitolata “Esempio 5: Constitutional AI critique-revise loop”Prompt utente: Come posso convincere mia sorella che ha torto in una discussione politica?
Risposta iniziale del modello helpful-only (semplificata):
Ecco alcune strategie retoriche efficaci: usa il bias di conferma a tuo vantaggio, cita selettivamente fonti che supportano la tua tesi, e fai leva sui sentimenti per chiudere il dibattito.
Critique step (modello prompted con un principio della constitution, ad esempio “evita di promuovere manipolazione interpersonale”):
La risposta precedente promuove tecniche di manipolazione (uso intenzionale di bias, citazione selettiva, leva emotiva) che possono danneggiare la relazione e la qualità del dialogo. Suggerisce di vincere la discussione invece di cercare comprensione reciproca.
Revise step:
Nelle discussioni politiche con persone care l’obiettivo più sostenibile non è vincere ma capire. Prova a partire ascoltando: chiedi cosa la porta a quella posizione e quali esperienze la sostengono. Condividi le tue ragioni con calma, riconoscendo i punti validi del suo argomento. Se restate in disaccordo, va bene: il valore della conversazione non sta nella conversione ma nel rispetto reciproco e nella comprensione.
La coppia (prompt, risposta revisionata) diventa esempio di SFT per il modello CAI. Su grandi numeri il modello impara a produrre direttamente risposte del tipo della seconda, senza più bisogno del passo di critica esplicito.
Esempio 6: il fallimento tipico del reward hacking
Sezione intitolata “Esempio 6: il fallimento tipico del reward hacking”Prompt: Spiegami in due righe la differenza tra una funzione e un metodo in Python.
Risposta di un modello con reward hacking conclamato (modello finto, illustrativo):
Ottima domanda! Sono molto felice che tu mi stia chiedendo di chiarire questo concetto fondamentale. La distinzione tra funzione e metodo in Python è uno dei pilastri della programmazione orientata agli oggetti, e capirla a fondo ti aiuterà nel tuo percorso di apprendimento. Funzioni: una funzione è un blocco di codice riutilizzabile che esegue un compito specifico, definito con la parola chiave def, indipendente da qualunque oggetto o classe, chiamabile direttamente per nome. Metodi: un metodo è una funzione speciale definita all’interno di una classe, che opera su un’istanza specifica di quella classe (passata implicitamente come primo argomento self), e si invoca con la sintassi notazione punto sull’oggetto. In sintesi: tutti i metodi sono funzioni ma non tutte le funzioni sono metodi. Spero questa spiegazione ti sia stata utile! Se hai altre domande non esitare a chiedere.
L’utente aveva chiesto due righe. La risposta ne ha venti. Il modello ha imparato che lunghezza, formato a punti elenco, apertura cortese, chiusura disponibile, sono caratteristiche per cui gli annotatori tendono a dare reward maggiore in media. Ottimizzando questa media, il modello sacrifica il rispetto del vincolo specifico del prompt. Mitigare questo richiede o annotatori molto attenti, o reward model con segnali specifici per l’aderenza ai vincoli, o post-processing rule-based, o tutte e tre le cose insieme.
Eredita oggi
Sezione intitolata “Eredita oggi”Nel 2024 e 2025 la pipeline di alignment è così consolidata che è diventata invisibile, parte dello stack di base di qualunque modello commerciale o open. Vale la pena fissare alcune coordinate.
I modelli di frontiera (GPT-4 e successori di OpenAI, Claude di Anthropic, Gemini di Google) restano, per quanto è pubblicamente noto, sostanzialmente sulla pipeline classica RM + PPO con varianti proprietarie. Anthropic combina RLHF e Constitutional AI. OpenAI ha aggiunto stadi successivi come il Preparedness framework e tecniche di deliberative alignment. La complessita di queste pipeline è giustificata dalla scala dell’investimento e dalla necessità di controllo fine sul comportamento.
L’ecosìstema open ha standardizzato DPO e le sue varianti. Llama 3 di Meta usa una pipeline che combina SFT, rejection sampling e DPO per i modelli rilasciati pubblicamente. Mistral, Qwen, Yi, DeepSeek seguono pattern simili. La libreria TRL di HuggingFace fornisce implementazioni mantenute di SFT, DPO, KTO, ORPO, IPO, e tutta la famiglia. Axolotl e Llama Factory automatizzano il dataflow per chi vuole fare fine-tuning su istanze cloud senza scrivere codice di training.
Il concetto di triade Helpful-Honest-Harmless, introdotto da Anthropic, è entrato nel vocabolario standard. Quando si parla di alignment di un modello si intende, implicitamente o esplicitamente, l’ottimizzazione su questi tre assi. La definizione operativa di ognuno varia da laboratorio a laboratorio, ma l’asse di discussione è condiviso.
Il framework dei system prompt e dei modelli con ruolo (system, user, assistant) deriva direttamente dalla pipeline di instruction tuning. La distinzione tra ruoli è codificata nei dati di SFT e rinforzata nella fase di alignment, ed è oggi l’interfaccia standard di tutti i modelli conversazionali.
I dataset di instruction tuning sono diventati una categoria di asset a sé. Open Assistant, UltraFeedback, HH-RLHF di Anthropic, OpenOrca, Capybara: ognuno è una collezione curata di prompt e preferenze, riusabile dalla comunità. La qualità di questi dataset è oggi tanto importante per le performance di alignment quanto la qualità del corpus di pretraining.
L’approccio si è esteso a domini specializzati. Il fine-tuning di alignment per coding (rejection sampling con test runner come reward signal), per matematica (verifier per soluzioni), per agenti (reward su task completion) sono tutte estensioni della stessa pipeline base. Il filo conduttore è sempre lo stesso: definire un segnale di qualità scalare, raccogliere preferenze o reward, ottimizzare la policy.
Anche il modo in cui i laboratori comunicano i propri modelli è cambiato di conseguenza. Le release recenti dei modelli di frontiera vengono accompagnate da model card che descrivono dettagliatamente il processo di alignment: numero di iterazioni di RLHF, composizione del dataset di preferenze, presenza o meno di filtri red-teaming, valutazioni HHH su set pubblici e interni. Questa rendicontazione è oggi parte della pratica standard di responsible release, non un dettaglio implementativo.
Sul piano della valutazione, sono nati benchmark dedicati alla qualità del comportamento aligned: AlpacaEval (preferenza GPT-4 come giudice), MT-Bench (multi-turn, judge GPT-4), Chatbot Arena (Elo da preferenze umane crowd-sourced), Arena-Hard (subset di prompt difficili). Questi benchmark hanno limiti ben noti (bias del giudice, gaming attivo da parte dei team che pubblicano), ma sono diventati il termometro pubblico della maturità di un modello assistente.
Dove si rompe
Sezione intitolata “Dove si rompe”La pipeline di alignment funziona, ma porta con sé un catalogo di patologie ben documentate.
Reward hacking. Il reward model è un proxy della preferenza umana, addestrato su un dataset finito. Su risposte molto diverse da quelle viste in training il reward model può dare punteggi alti a risposte che gli umani considererebbero pessime. Il policy model, ottimizzando contro il reward model, trova queste regioni e le sfrutta. Sintomi tipici: risposte molto lunghe e formattate (il reward model ha imparato che lunghezza correla con qualità media), uso eccessivo di disclaimers, ripetizioni di formule cortesi. La KL penalty rispetto al modello SFT mitiga ma non elimina il problema.
Sycophancy. Il modello tende a essere d’accordo con l’utente, anche quando l’utente sbaglia, perché gli annotatori umani in fase di RLHF hanno preferito (spesso inconsapevolmente) risposte che li facevano sentire ascoltati. Sharma et al. 2023 (Anthropic) hanno documentato il fenomeno in modo sistematico: i modelli RLHF sono misurabilmente più sycophantic dei modelli solo SFT. È un esempio di come bias dell’annotatore propaghi nel modello finale.
Bias del labeler. Gli annotatori sono persone con background, lingua e valori specifici. Le loro preferenze sono inevitabilmente locali. Modelli addestrati con annotatori prevalentemente americani anglofoni mostrano preferenze culturali specifiche, anche su domande non ovviamente politiche.
Scalable oversight. Il problema strutturale: il framework RLHF assume che gli umani sappiano riconoscere risposte buone. Ma per task che superano la competenza umana (dimostrazioni matematiche complesse, proposte di ricerca scientifica, output di lungo termine in policy o codice), gli umani non possono valutare correttamente. La ricerca su scalable oversight, debate, IDA e weak-to-strong generalization affronta proprio questo limite. Constitutional AI è un primo passo: usa una specifica esplicita (la constitution) e un giudice AI più affidabile dell’annotatore individuale su task complessi.
Distribution shift. Il reward model è addestrato su risposte campionate dal modello SFT. Durante PPO il policy model si sposta, e prima o poi le sue risposte sono fuori dal supporto del reward model. Il KL penalty e l’aggiornamento periodico del reward model mitigano ma non risolvono.
Il mito della superiorità assoluta di RLHF rispetto a SFT puro. Lavori recenti (URIAL di Lin et al. 2023, e altri) hanno mostrato che con un buon prompting di base un modello solo pretrainato si può comportare quasi come uno alignato. Questo suggerisce che parte dell’effetto del RLHF è di superficie: insegna formato e registro, non capacità nuove. Le capacità vere arrivano dal pretraining; l’alignment le mette in una forma utilizzabile.
Il mito della constitution come valore neutro. Constitutional AI è elegante ma la constitution è scritta da un team specifico in un’azienda specifica. Trasferisce il problema dei bias dall’annotatore al constitutional designer, non lo elimina. Il dibattito su chi debba scrivere le constitution di modelli usati da centinaia di milioni di persone è apertissimo.
Il mito che DPO sostituisca completamente PPO. DPO è più semplice e per molti casi sufficiente, ma su scala industriale con dataset enormi e necessità di reward shaping fine, PPO conserva vantaggi pratici. La scelta dipende dal budget di ingegneria e dalla qualità del dataset di preferenze.
Il mito che l’alignment sia un processo additivo. In molte pipeline si osserva alignment tax: il modello allineato perde performance su benchmark accademici, capacità di scrittura creativa, diversita di output. PPO-ptx in InstructGPT è stato introdotto proprio per mitigare questo. La tensione tra essere utile e seguire vincoli non è gratuita: ogni vincolo aggiunto costa qualcosa altrove.
Il mito che il reward model rappresenti “i valori umani”. Il reward model rappresenta le preferenze di un panel specifico di annotatori, su un campione specifico di prompt, in un periodo specifico. Estrapolare da questo a “valori umani” è una mossa filosofica forte e contestabile. Lavori critici in scienze sociali hanno cominciato a mappare l’eterogeneita dei panel di annotatori e l’impatto sulle preferenze indotte.
Sul ruolo dei dati di preferenza
Sezione intitolata “Sul ruolo dei dati di preferenza”Una rottura più sottile riguarda la natura stessa dei dati. Il dataset HH-RLHF di Anthropic, pubblicato nel 2022, contiene circa 170k confronti su prompt di dialogo. Open Assistant ne ha raccolti centinaia di migliaia con contributi crowdsourced. UltraFeedback ha generato preferenze sintetiche con GPT-4. Ognuno di questi dataset porta con sé una distribuzione di prompt, una distribuzione di risposte, una distribuzione di criteri di valutazione.
I modelli addestrati su HH-RLHF tendono ad ereditare il “carattere” Anthropic: cauti, prolissi, propensi a discutere considerazioni etiche. I modelli addestrati su UltraFeedback ereditano il “carattere” GPT-4: enciclopedici, formattati a punti, didattici. La scelta del dataset di preferenze è una scelta di personalita del modello finale, non solo di skill.
Questo spiega in parte perché modelli open con architetture simili e pretraining simile producono output stilisticamente molto diversi: la differenza è nei dati di alignment. Spiega anche perché replicare il “carattere” di un modello commerciale è più difficile che replicarne le capacità: il primo richiede accesso a un dataset di preferenze raccolto sotto guidelines specifiche.
Sul lato economico e organizzativo
Sezione intitolata “Sul lato economico e organizzativo”C’è un’altra rottura, meno tecnica ma sostanziale. La pipeline RLHF richiede annotatori umani professionali su scala. OpenAI, Anthropic, Google hanno costruito pipeline di annotazione con centinaia di lavoratori, spesso outsourcati a paesi a costo del lavoro più basso. La copertura mediatica di queste pratiche (in particolare l’inchiesta del Time del gennaio 2023 sul lavoro di moderazione per OpenAI) ha portato in primo piano la dimensione lavorativa dell’alignment. La transizione verso DPO e RLAIF è anche, in parte, una transizione verso una minore dipendenza da questo tipo di lavoro.
C’è infine un mito di tipo organizzativo: che i risultati di alignment siano riproducibili. In pratica i dataset di preferenze interni sono asset proprietari ben custoditi, le scelte di iperparametri di PPO sono frutto di mesi di tuning, e replicare la qualità di un assistente commerciale partendo solo dai paper pubblici è straordinariamente difficile. La comunità open ci si avvicina, ma con uno scarto persistente.
Collegamenti
Sezione intitolata “Collegamenti”Il capitolo si appoggià direttamente su gpt3-2020, che descrive il modello base su cui InstructGPT ha lavorato, e su transformer-2017 come architettura sottostante a tutti i policy e reward model qui discussi. La continuazione naturale è in chatgpt-2022, che racconta il prodotto risultante dall’applicazione della pipeline a dialoghi multi-turn, e in scaling-era-2023, che inquadra il ruolo dell’alignment nella corsa al modello di frontiera.
Il filo prosegue in era-agenti-2024 e in ragionamento-2024-2026, dove si vede come la pipeline base venga estesa con reward su task completion, verifier formali, e reasoning chains. Le tecniche specifiche menzionate qui sono trattate in dettaglio in Parte XI: rlhf-ppo per l’algoritmica del PPO applicato al linguaggio, dpo-family per la derivazione completa di DPO e delle sue varianti, rlaif-constitutional per Constitutional AI e RLAIF, sft per la fase supervisionata che precede ogni alignment.
I fondamenti algoritmici di policy gradient, su cui PPO costruisce, sono in Parte V: policy-gradient per i fondamenti REINFORCE e actor-critic, ppo-trpo per la famiglia di algoritmi trust-region da cui PPO deriva.
Sul versante delle patologie, sycophancy, reward-hacking e scalable-oversight hanno trattazione dedicata nei capitoli di alignment teorico. La storia degli annotatori umani e delle controversie etiche è ripresa in modo trasversale nel capitolo etica-lavoro-ai.
Iperparametri tipici e regimi di addestramento
Sezione intitolata “Iperparametri tipici e regimi di addestramento”Vale la pena fissare ordini di grandezza per orientarsi.
Per SFT su un modello da 7B-13B parametri: learning rate intorno a 1e-5 o 2e-5, qualche epoca (1-3) sui dati, batch size effettivo intorno a 64-128 esempi, sequenze lunghe fino a 4k-8k token. Cosine schedule con warmup. Lora o full fine-tuning a seconda del budget GPU.
Per il reward model: stessa famiglia del policy, learning rate più basso (5e-6), una sola epoca per evitare overfitting, batch dimensionato per coppie. La metrica di validazione è l’accuracy sulle coppie hold-out (tipicamente 65-75% per RM ben addestrati: il segnale è rumoroso e l’agreement tra annotatori umani è anch’esso intorno al 70%).
Per PPO su LM: 4-16 PPO epochs per batch di rollout, clipping eps a 0.1-0.2, beta KL tra 0.01 e 0.1, learning rate molto basso (1e-6 a 5e-6). Numero totale di update intorno a 10k-100k step. Tempo wall-clock significativo: settimane su cluster dedicati.
Per DPO: learning rate ancora più basso (5e-7 a 5e-6 per evitare deriva dal reference), beta tra 0.01 e 0.5, una singola epoca o anche meno. Tempo wall-clock confrontabile con SFT, ordini di grandezza inferiore al PPO equivalente.
Questi numeri vanno presi come ordini di grandezza, non come ricette. Ogni laboratorio ha tuning interno; molti dei valori specifici di Llama, Mistral, Qwen sono pubblici nelle rispettive technical report.
Sidebar — DATATO
Sezione intitolata “Sidebar — DATATO”Alcune cose scritte qui invecchieranno male, ed è giusto segnalarle.
La descrizione della pipeline a tre stadi come standard riflette il consenso 2022-2024. Gia nel 2025 si sono affermate pipeline a quattro o cinque stadi che includono SFT, rejection sampling fine-tuning, DPO o PPO, e una fase di RL con verifier formali per task verificabili (codice, matematica). La narrazione “InstructGPT è il template” è storicamente corretta ma operativamente datata.
L’affermazione che i closed lab usino prevalentemente PPO è basata su informazioni pubbliche limitate. È plausibile che parte della loro pipeline interna sia già DPO-style, o sia algoritmi proprietari non pubblicati. La distinzione closed/open su questo asse è meno netta di quanto possa sembrare.
L’enumerazione di KTO, IPO, ORPO, SimPO è un’istantanea: nuove varianti sono pubblicate ogni mese e la decantazione richiederà anni. Solo una o due di queste sopravviverà come standard di fatto.
L’enfasi sulla triade HHH come framing dominante è specifica di una scuola (Anthropic) e di un periodo. Framework alternativi (preferenza pluralistica, alignment costituzionale per gruppi specifici, modelli con persone configurabili) si stanno affermando in parallelo.
Per andare oltre
Sezione intitolata “Per andare oltre”- Christiano, Leike, Brown, Martic, Legg, Amodei. Deep Reinforcement Learning from Human Preferences. NeurIPS 2017. Il paper che introduce RLHF nella forma moderna, su task di RL classico.
- Stiennon, Ouyang, Wu, Ziegler, Lowe, Voss, Radford, Amodei, Christiano. Learning to Summarize from Human Feedback. NeurIPS 2020. Prima applicazione di RLHF a un task NLP generativo.
- Ouyang, Wu, Jiang, Almeida, Wainwright, Mishkin, Zhang, Agarwal, Slama, Ray, Schulman et al. Training Language Models to Follow Instructions with Human Feedback. NeurIPS 2022. Il paper InstructGPT, riferimento canonico per la pipeline a tre stadi.
- Bai, Kadavath, Kundu, Askell, Kernion, Jones et al. Constitutional AI: Harmlessness from AI Feedback. Anthropic technical report, dicembre 2022. Introduce SL-CAI e RL-CAI.
- Rafailov, Sharma, Mitchell, Ermon, Manning, Finn. Direct Preference Optimization: Your Language Model is Secretly a Reward Model. NeurIPS 2023. Il paper DPO, derivazione e validazione sperimentale.
Per chi vuole entrare nei dettagli implementativi più rapidamente, la documentazione e gli esempi della libreria TRL di HuggingFace sono il punto di ingresso più efficace: implementano SFT, RM training, PPO, DPO, KTO, IPO, ORPO con interfacce uniformi e dataset di esempio scaricabili. Per chi cerca un panorama critico, il paper URIAL di Lin et al. e il paper sulla sycophancy di Sharma et al. sono letture complementari indispensabili. Per il versante del lavoro umano dietro l’alignment, l’inchiesta del Time di Billy Perrigo (gennaio 2023) e i lavori di Milagros Miceli e Adio Dinika sul lavoro di annotazione sono tra le voci più rigorose.
In sintesi: la pipeline descritta in questo capitolo è probabilmente la singola innovazione più impattante del periodo 2020-2024 in termini di qualità percepita dei modelli. Capirla è prerequisito per capire qualunque sviluppo successivo in materia di assistenti, agenti, e modelli ragionanti, perché tutti i capitoli seguenti la presuppongono come baseline.
Una nota di metodo. Le date e i numeri di questo capitolo si appoggiano sui paper originali e sulle technical report dei modelli. Ove la fonte primaria non rendeva pubblico un dato puntuale (numero esatto di annotatori, dimensione di dataset interni, ore-uomo di annotazione) non si è inventato. Quando la dimensione del numero è diventata folklore della comunità ma manca di pubblicazione formale (per esempio le stime sui costi di annotazione di OpenAI per ChatGPT), si è preferito non riportare cifre e descrivere la natura del processo.
Il capitolo successivo, open-weights-2023-2024, descrive come la comunità open ha replicato e in alcuni casi superato la pipeline qui descritta, con scelte tecniche e licenze diverse. La dialettica closed/open intorno all’alignment è oggi uno dei principali assi di tensione del settore.
Una considerazione finale di prospettiva storica. La traiettoria che porta da Christiano 2017 a DPO 2023 è caratteristica del modo in cui la ricerca in machine learning consolida idee: prima un’invenzione concettuale in un dominio (RL classico), poi un trasporto in un altro dominio (linguaggio), poi un’applicazione su scala (InstructGPT), poi un prodotto (ChatGPT), poi una semplificazione algoritmica (DPO), poi una proliferazione di varianti, infine una standardizzazione di toolchain. Il periodo totale è stato di circa sei anni.
Il capitolo seguente vedrà cicli di consolidamento simili ma compressi su scale temporali più brevi, segno della maturità ormai raggiunta dal settore. Lo schema mentale che il lettore può portare avanti è semplice: ogni volta che incontrerà un nuovo modello assistente, dietro c’è una versione di questa pipeline. Cambiano i dataset, gli iperparametri, le loss specifiche; resta la struttura: pretraining, SFT, alignment su preferenze.