Capitolo 07 · Generazione · 7 min

Scegliere la parola successiva

Temperature, top-k, top-p. L'arte di trasformare una distribuzione di probabilità in testo.

La distribuzione e calcolata. E poi?

A questo punto del libro, il modello sa calcolare una distribuzione di probabilita sul prossimo token. Per generare testo bisogna ora sceglierne uno. Questo e il passaggio di sampling (campionamento).

Abbiamo gia intravisto questo meccanismo nel capitolo 01. Ora vale la pena tornarci con attenzione: e cio che distingue un modello prudente da uno creativo, un assistente affidabile da un pappagallo ripetitivo.

Perche non sempre il piu probabile?

La strategia piu semplice — greedy decoding — consiste nel prendere sempre il token di probabilita massima. Rapida, deterministica, riproducibile.

Eppure, quasi mai usata da sola. Perche?

Perche il greedy decoding produce testo stranamente piatto. Si chiude in loop ("molto molto molto interessante interessante interessante…"). Sceglie sempre la parola piu convenzionale. Genera frasi tecnicamente corrette, ma senza rilievo. Il modello e stato addestrato su testo umano, che contiene sempre una quota di imprevedibilita: e questa imprevedibilita deve ritrovarsi nella generazione.

Da qui il campionamento stocastico: si estrae un token a caso secondo la distribuzione. Piu un token e probabile, piu ha possibilita di essere scelto — ma anche gli altri hanno una possibilita.

Tre leve

Questo campionamento stocastico grezzo sarebbe troppo rumoroso. Di solito applichiamo tre filtri prima di estrarre:

Temperatura

La temperatura T divide i logits prima del softmax. E il controllo piu potente.

  • T = 1.0 — distribuzione cosi come esce dal modello (riferimento)
  • T < 1.0 — distribuzione piu appuntita: gli alti diventano piu alti, i bassi piu bassi. Il modello diventa piu prevedibile.
  • T → 0 — equivale al greedy decoding (un solo token possibile).
  • T > 1.0 — distribuzione appiattita: le opzioni poco probabili risalgono. Il modello diventa creativo, persino strano.
  • T → ∞ — uniforme, il modello tira completamente a caso.

La temperatura e un cursore tra prevedibilita e immaginazione.

Top-k

Invece di autorizzare tutti i token del vocabolario (50.000+), manteniamo i k piu probabili e azzeriamo il resto, poi rinormalizziamo. k = 40 e un valore classico per la creativita, k = 1 riporta al greedy.

Vantaggio: elimina subito i token assurdi (quelli allo 0,0001%) che potrebbero essere estratti per caso. Svantaggio: il valore ottimale di k dipende da ogni passo — a volte bastano 5 candidati, a volte 100 sono tutti plausibili.

Top-p (nucleus sampling)

Piu furbo di top-k. Manteniamo il piu piccolo insieme la cui massa cumulata supera p, poi rinormalizziamo.

  • In un passo in cui il modello esita tra 30 opzioni vicine → top-p mantiene tutte le opzioni la cui somma raggiunge p.
  • In un passo in cui il modello e sicuro al 95% → top-p mantiene un solo token.

In pratica, top-p ≈ 0.9 e diventato il default degli LLM moderni. Si adatta da solo alla fiducia del modello.

Manipola di nuovo

Abbiamo gia visto questa visualizzazione nel capitolo 01: la riprendiamo qui perche e esattamente il tema:

Gioca con la temperature: a 0, il modello è deterministico e ripetitivo; a 1.5, diventa creativo fino a diventare incoerente. Top-k e top-p tagliano la coda dei candidati improbabili senza toccare quelli probabili.

Questa volta osserva:

  • Su Capitale, il modello e cosi sicuro (10.0 contro 5.0 per il successivo) che serve una temperatura molto alta (>1.5) per fargli produrre qualcosa di diverso da Roma. E tipico dei prompt in cui la risposta e nota.
  • Su Il cielo al secondo passo, diverse continuazioni sono semanticamente plausibili. Con temperature = 1.5, si puo ottenere colore o mare invece di luce. Il senso resta corretto, ma il testo diventa meno prevedibile.
  • A top-k = 1, qualunque altro parametro diventa inutile: siamo in greedy.
  • A top-p = 0.5 sul prompt Capitale, sopravvive solo Roma (perche da sola raggiunge gia il 50%).

Alcune impostazioni culturali

Impostazioni tipiche a seconda del caso d'uso:

CasoTemperatureTop-p
Codice, dati strutturati0.0-0.21.0
Risposta fattuale0.3-0.50.9
Conversazione generica0.70.9
Brainstorming, scrittura creativa0.9-1.20.95
Generazione di varianti1.2-1.50.95

Non sono regole rigide. Ma e l'ordine di grandezza che ritroverai nella maggior parte dei prodotti che usano un LLM.

Tre altre leve da conoscere

Oltre a temperatura / top-k / top-p, qualche parametro torna ovunque nelle API.

Repetition penalty (o frequency penalty / presence penalty da OpenAI). Penalizza i token gia comparsi nell'output. Utile per spezzare i loop ripetitivi senza dover alzare la temperatura. Valore tipico: 1.05-1.2.

Stop sequences. Una lista di stringhe che, se compaiono nell'output, fermano la generazione immediatamente. Indispensabile per gli usi strutturati: in un dialogo formattato, ci si ferma su <|im_end|> o \n\nUser: per impedire al modello di continuare la conversazione da solo.

Beam search. Invece di campionare in modo stocastico, si tengono in parallelo le k migliori sequenze parziali a ogni passo, e si sceglie quella che massimizza la probabilita complessiva alla fine. Il risultato e piu "liscio" ma spesso meno naturale. Usato in traduzione automatica e riconoscimento vocale, molto meno nella generazione creativa.

Il determinismo illusorio

Un'ultima sottigliezza. Anche con temperature = 0, due chiamate allo stesso modello possono dare risultati diversi in pratica:

  • Quantizzazione non deterministica (i calcoli in INT8/FP8 hanno margini d'errore).
  • Batching dinamico lato server (a seconda delle altre richieste, cambiano gli ordini delle operazioni floating point).
  • Versioni del modello che cambiano silenziosamente presso il provider.

Se scrivi test che dipendono dall'uscita esatta di un LLM, soffrirai.

Il seguito

A questo punto sai come un LLM:

  • taglia il testo in token,
  • li trasforma in vettori,
  • li fa guardare tra loro tramite l'attenzione,
  • impila blocchi Transformer per raffinare la rappresentazione,
  • predice una distribuzione sul prossimo token,
  • ne estrae uno con una strategia di campionamento.

Eppure cio che chiamiamo "un assistente" — qualcosa come ChatGPT o Claude — non e solo questo. Un modello di base a questo punto sarebbe un completatore di testo, non un assistente. Come passiamo dall'uno all'altro? E il tema dell'ultimo capitolo: l'allineamento.

Aggiornato il

Scegliere il prossimo token: temperature, top-k, top-p · Step by Token