Capitolo 09 · Contesto · 8 min
Cosa ricorda il modello
La finestra di contesto: memoria perfetta ma limitata. Perché ChatGPT dimentica e quanto costa.
Il paradosso della memoria
Un LLM ha una memoria perfetta — eppure dimentica.
Perfetta perche tutto cio che sta nella sua finestra di contesto e accessibile istantaneamente, con precisione assoluta. Il modello non "ricorda approssimativamente" cio che hai detto dieci scambi fa: lo vede ancora, tale e quale.
Limitata perche questa finestra ha una dimensione massima. Oltre, i token spariscono — definitivamente, senza residui. Nessuna degradazione progressiva, nessuna sfocatura. Solo: presente o assente.
Questo spiega l'esperienza strana di parlare con ChatGPT per un'ora su un progetto, poi aprire una nuova conversazione e vederlo "dimenticare" tutto quel contesto. Non e un bug: e il limite fondamentale dell'architettura.
Cos'e davvero la finestra di contesto
La finestra di contesto e la quantita di token che il modello puo trattare in una sola volta. Tutto cio che entra in questa finestra — la tua domanda, lo storico della conversazione, le istruzioni di sistema, i documenti che hai incollato — viene elaborato insieme, in un solo passaggio.
Le prime versioni di GPT-3 avevano finestre da 2.048 token. Oggi alcuni modelli arrivano a 1 milione di token. E un'evoluzione enorme, ma non cambia la natura del problema: c'e sempre un limite.
E questo limite ha una conseguenza diretta sul costo.
L'attenzione costa cara
Ricordi il meccanismo di attenzione? Ogni token guarda tutti gli altri token per calcolare i suoi pesi. Se hai n token nella finestra, l'attenzione effettua n² operazioni.
Raddoppiare la finestra non raddoppia il costo: lo quadruplica.
A 1.000 token: 1 milione di operazioni.
A 2.000 token: 4 milioni.
A 8.000 token: 64 milioni.
A 128.000 token: 16 miliardi.
E per questo che i provider fatturano a token. Ed e per questo che le conversazioni lunghe costano esponenzialmente piu di quelle brevi.
Gioca con la finestra
Invia messaggi uno per uno. Osserva quando i turni vecchi cadono fuori dalla finestra: il modello non puo piu accedervi, anche se li richiami esplicitamente.
Cambia la dimensione della finestra per vedere come l'oblio accelera o rallenta.
Fai scorrere il contenuto: ciò che esce dalla finestra è dimenticato per sempre. Il costo computazionale dell'attention cresce in O(n²) con la dimensione del contesto, e questo spiega la corsa alle finestre da 1M token.
Il KV cache, in due parole
Calcolare l'attenzione su tutti i token a ogni nuovo passo sarebbe catastrofico. L'ottimizzazione che salva la situazione si chiama KV cache: si tengono in memoria i calcoli gia fatti, e a ogni passo si aggiunge solo la riga del nuovo token.
E cio che rende possibile la generazione in tempo reale — e cio che consuma VRAM in proporzione alla lunghezza del contesto. Torneremo in dettaglio sull'argomento al capitolo 18.
Il system prompt e i chat templates
Quando invii un messaggio a ChatGPT o Claude, cio che il modello riceve non e esattamente il tuo messaggio. E una sequenza accuratamente formattata che assomiglia a:
<|im_start|>system
Sei un assistente utile e conciso.
<|im_end|>
<|im_start|>user
Qual e la capitale della Francia?
<|im_end|>
<|im_start|>assistant
Questa formattazione — il chat template — trasforma un dialogo in una sequenza lineare di token, con marcatori speciali che distinguono i ruoli (system, user, assistant). E cio che il modello ha imparato a riconoscere durante il fine-tuning.
Il system prompt e un messaggio speciale posto proprio all'inizio. Fissa il comportamento, il tono, i vincoli ("rispondi in JSON", "non rispondere mai a domande sul tema X", "sei un avvocato americano specializzato in proprieta intellettuale"). Vive nella finestra di contesto come tutto il resto, ma la sua posizione iniziale e il suo ruolo privilegiato fanno si che pesi piu dei messaggi ordinari.
Ogni famiglia di modelli ha il proprio template: ChatML per OpenAI, [INST]…[/INST] per Llama 2, varianti piu recenti per Llama 3 e Claude. Se digiti il dialogo a mano senza rispettare il formato giusto, il modello si comporta male: e stato addestrato a vedere quei marcatori e si aspetta di vederli.
Perche la posizione nella finestra conta
Una scoperta sorprendente della ricerca recente: gli LLM non usano tutto il contesto con la stessa efficacia.
Le informazioni all'inizio e alla fine della finestra sono sfruttate meglio di quelle al centro. Questo fenomeno si chiama "lost in the middle": il modello tende a ignorare i passaggi sepolti al centro di un lungo contesto.
Conseguenza pratica: se crei un assistente con documenti di riferimento, metti le informazioni piu importanti all'inizio o alla fine del prompt, non in mezzo.
Verso finestre piu lunghe
I ricercatori esplorano diverse piste per estendere le finestre senza far esplodere il costo:
- Sparse attention: invece di guardare tutti i token, ogni token ne guarda solo un sottoinsieme (vicini, o selezionati per importanza).
- Sliding window attention: una finestra scorrevole — ogni token guarda solo i suoi k vicini piu prossimi.
- Flash Attention: non una riduzione del calcolo, ma un'implementazione GPU molto piu efficiente dell'attenzione esatta.
Ma tutte queste tecniche hanno un costo in precisione o complessita di implementazione. Non esiste ancora una soluzione perfetta. I dettagli lato inferenza — e in particolare come interagiscono con il KV cache — sono al capitolo 18.
Cosa cambia per te
Alcune regole pratiche che derivano da tutto questo:
Sii conciso nei prompt. Ogni token nel contesto costa memoria e calcolo. Un contesto da 10.000 token costa molto piu di dieci volte un contesto da 1.000.
Struttura i documenti. Se inietti contenuto (note, articoli, codice), taglia e filtra prima: non incollare lunghi blocchi di cui il 90% non e pertinente.
Usa sessioni brevi. Per compiti lunghi e iterativi, spesso e meglio iniziare una nuova conversazione con un riassunto del contesto invece di lasciare crescere una conversazione gigantesca.
E se hai bisogno di dare al modello accesso a quantita enormi di informazione — migliaia di pagine, un database — la finestra di contesto non e la soluzione giusta. E qui entra in gioco il prossimo capitolo.
Aggiornato il