← Tutte le lezioni
Lezione 02 Fondamenti 7:41

Transformer e Attention

L'architettura su cui si basano tutti i LLM moderni. Il salto: invece di leggere una parola alla volta, guardare l'intera frase e decidere a cosa prestare attenzione.

Il video parte solo se lo chiedi: nessuna richiesta a YouTube prima del click.

Tutti i modelli di cui si parla oggi — GPT, Llama, Qwen, Claude — poggiano sulla stessa architettura, presentata nel 2017 in un paper dal titolo diretto: Attention Is All You Need. Capire cosa cambiò allora spiega perché questi modelli funzionano.

Il problema che c’era prima

Fino al 2017 i modelli linguistici usavano le reti ricorrenti, le RNN. Leggono il testo una parola alla volta, in sequenza, come leggiamo noi.

"Il gatto che il mio amico mi ha regalato ieri è molto carino"

Il → gatto → che → il → mio → amico → mi → ha → regalato → ieri → è → molto → carino
                                                                              ^
                                                          qui bisogna ricordare
                                                          che si parla del gatto,
                                                          ma sono passate dieci parole

Da qui tre guai. Le dipendenze lontane si perdono: arrivato a “carino”, il modello ha ormai sbiadito il soggetto. La lentezza è strutturale: un token alla volta, in ordine, senza possibilità di parallelizzare — e i dati di addestramento sono miliardi di token. E in fase di apprendimento il segnale di errore si dissolve tornando indietro lungo la sequenza, rendendo difficile imparare relazioni distanti.

L’idea: guardare tutto insieme

La mossa del Transformer è semplice da dire: invece di leggere parola per parola, guarda l’intera frase in un colpo solo e decide cosa conta.

Pensa a un tavolo con dieci persone. Le RNN sono il telefono senza fili: il messaggio passa di bocca in bocca e si deforma. L’attention è una conversazione in cui ognuno può rivolgersi direttamente a chiunque altro, subito.

Per ogni parola il modello si chiede: a quali altre parole devo prestare attenzione per capire questa?

"Il gatto si è seduto sul tappeto perché era stanco"

Per capire "era":
  gatto    → attenzione ALTA   (chi era stanco? il gatto)
  tappeto  → attenzione BASSA  (il tappeto non è stanco)
  stanco   → attenzione MEDIA  (ne descrive lo stato)

Query, Key, Value

Il meccanismo usa tre viste di ogni token, e l’analogia della biblioteca le rende immediate:

  • Query — la domanda che il token pone: “cerco libri sulla fotosintesi”
  • Key — l’etichetta che ogni token espone: “Biologia”, “Chimica”, “Cucina”
  • Value — il contenuto effettivo del libro

Il punteggio nasce dall’incontro fra Query e Key: quanto quel libro è rilevante per quella domanda. Poi si prende il Value, pesato per quel punteggio. Ripetuto per ogni parola rispetto a tutte le altre, questo è il cuore della self-attention.

Perché “multi-head”

Una sola attenzione coglie un tipo di relazione per volta. I Transformer ne usano diverse in parallelo — le teste — e ciascuna impara a guardare qualcosa di diverso: una segue i legami grammaticali fra soggetto e verbo, un’altra i riferimenti dei pronomi, un’altra ancora le relazioni di significato. I risultati vengono poi rimessi insieme.

È la differenza fra rileggere una frase con un solo criterio e rileggerla con più criteri contemporaneamente.

Il prezzo da pagare

L’attention confronta ogni token con ogni altro token. Con una sequenza di lunghezza n il costo cresce con : raddoppiare il testo in ingresso quadruplica il lavoro.

È il motivo per cui le finestre di contesto molto ampie costano care in memoria e in tempo, ed è il problema su cui si concentra buona parte della ricerca recente.

Perché il primo token è lento e gli altri no

Chiunque usi un modello in locale nota due tempi diversi: un’attesa iniziale, poi un flusso regolare di parole. La spiegazione sta in una struttura di cui si parla poco, la cache delle chiavi e dei valori.

Durante la generazione, per ogni nuovo token il modello dovrebbe ricalcolare Key e Value di tutti i token precedenti. Sarebbe uno spreco enorme, perché quei valori non cambiano mai. Quindi si conservano.

PRIMO TOKEN
  elabora tutto il prompt          → lento, e cresce con la lunghezza
  salva Key e Value di ogni token

TOKEN SUCCESSIVI
  calcola solo quelli del token nuovo   → veloce e costante
  riusa tutto il resto dalla cache

Tre conseguenze che si toccano con mano. Il tempo prima della prima parola dipende da quanto è lungo il prompt; quello fra le parole successive no. La cache occupa memoria e cresce con il contesto, ed è il motivo per cui una conversazione lunga può esaurire la memoria anche se il modello, da solo, ci stava comodo. E cambiare l’inizio del prompt invalida tutto: conviene tenere in testa le parti fisse — istruzioni di sistema, documenti — e in coda quelle variabili, perché diversi sistemi riusano il prefisso già elaborato.

Un ordine di grandezza per capirsi: su contesti lunghi questa cache arriva a occupare diversi gigabyte, a volte più del modello stesso.

Come si riduce quella memoria

Se la cache è il problema, la mossa ovvia è farla più piccola. Nella versione classica ogni testa dell’attention ha le proprie Key e i propri Value, quindi la memoria si moltiplica per il numero di teste.

VarianteCome funzionaEffetto
ClassicaOgni testa ha Key e Value propriMemoria massima, qualità massima
A query multipleTutte le teste condividono un solo insiemeMemoria minima, qualche perdita
A gruppi (GQA)Le teste sono divise in gruppi, uno per gruppoQuasi la qualità della classica, molta meno memoria

La terza è ormai lo standard: Llama, Qwen e Mistral la usano tutte. È una di quelle scelte invisibili all’utente e decisive nei fatti, perché è ciò che rende praticabili le finestre di contesto ampie su hardware normale.

Il costo quadratico, aggirato

La complessità che cresce col quadrato della lunghezza è teorica e non si elimina. Si può però eliminare il collo di bottiglia vero, che non è il calcolo ma il traffico verso la memoria.

L’implementazione ingenua costruisce l’intera matrice di attenzione e la scrive in memoria. Con sequenze lunghe quella matrice è enorme, e spostarla avanti e indietro costa più dei calcoli stessi. La tecnica nota come flash attention la elabora invece a blocchi, tenendo i pezzi nella memoria veloce vicina al processore, senza mai materializzarla per intero.

Ingenua:  calcola tutta la matrice → scrivi in memoria → rileggi
A blocchi: lavora un pezzo per volta nella memoria veloce → scrivi solo il risultato

Il numero di operazioni resta identico, il tempo cala parecchio. Non è un dettaglio da specialisti: è uno dei motivi per cui i contesti da decine di migliaia di token sono diventati usabili, ed è attiva quasi ovunque senza che l’utente lo sappia.

Cosa è cambiato dal 2017

L’architettura originale è ancora riconoscibile, ma diversi pezzi interni sono stati sostituiti. I nomi ricorrono nelle schede dei modelli, quindi vale la pena riconoscerli.

Nel paper originaleOggiPerché
Normalizzazione dopo il bloccoRMSNorm, prima del bloccoPiù economica, addestramento più stabile
Attivazione ReLUSwiGLUQualità migliore a parità di parametri
Posizione codificata in modo assolutoRoPERegge meglio le sequenze lunghe
Attention densaGQAMeno memoria per la cache

Nessuna di queste tocca l’idea di fondo: sono ottimizzazioni accumulate in otto anni sullo stesso impianto. Che l’impianto abbia retto senza sostituzioni radicali, in un campo che si muove così in fretta, è di per sé notevole.

In sintesi

ConcettoIn una riga
RNNLegge in sequenza, perde le relazioni lontane, non parallelizza
Self-attentionOgni token guarda tutti gli altri e pesa quanto contano
Query / Key / ValueDomanda, etichetta e contenuto: da qui nasce il punteggio
Multi-headPiù attenzioni in parallelo, ognuna su un tipo di relazione
Costo n²Il conto cresce col quadrato della lunghezza del testo
Cache di Key e ValueRende veloci i token dopo il primo, ma occupa memoria
GQATeste raggruppate: molta meno memoria, qualità quasi intatta
Flash attentionElabora l’attenzione a blocchi: stesso calcolo, molto meno traffico

Lezioni collegate

  • Cosa sono i Large Language Model

    Un LLM predice la parola successiva, un token alla volta. Da qui nasce tutto: cosa sanno fare davvero, perché ogni tanto inventano, e cosa vogliono dire sigle come 7B, Instruct o MoE.

  • La tokenizzazione

    Il modello non legge lettere né parole: legge token. Capire come il testo viene spezzato spiega i costi, i limiti di contesto e certi errori che sembrano assurdi.

Guarda su YouTube