🧙 Maestro Yoda Cap. 19 · Architetture

Puntata 201

Puntata 201 — “Attention Is All You Need”

Livello: 🧙 Maestro Yoda · Capitolo 19 · Architetture

Otto autori, dieci pagine, una citazione ogni 90 secondi. Probabilmente il paper più letto del secolo, anche da chi non l’ha letto.

la figura 1 del paper originale (encoder-decoder con i blocchi grigi e le frecce di attention), annotata con post-it tipo “qui nasce GPT”, “qui muoiono le RNN”, “qui inizia la bolla NVIDIA”

Il contesto pre-2017: tutti remavano controvento

Fino al 2017 il modello standard per il linguaggio era la RNN (LSTM, GRU): leggi un token alla volta, aggiorni uno stato nascosto, produci output. Funzionava — ma con tre difetti strutturali:

  1. Sequenziale per costruzione — non parallelizzi nel tempo, allenamento lento.
  2. Vanishing gradient sui contesti lunghi: dopo 200 token il segnale evapora.
  3. Bottleneck dello stato fisso — riassumere “tutto fin qui” in un vettore è una violenza compressiva.

Ci avevano provato a turare le falle con attention sopra la RNN (Bahdanau 2014, Luong 2015), ma l’attention restava un accessorio.

Nel giugno 2017 otto ricercatori di Google Brain (Vaswani, Shazeer, Parmar, Uszkoreit, Jones, Gomez, Kaiser, Polosukhin) pubblicano arXiv:1706.03762 con un titolo provocatorio: “Attention Is All You Need”. Buttano via la RNN, tengono solo l’attention. Funziona meglio. Si chiama Transformer.


L’idea in una frase

Sostituire la ricorrenza con un’operazione parallela in cui ogni token guarda tutti gli altri e decide quanto pesarli.

Niente più “passa lo stato al prossimo step”. Tutti i token visti insieme, in parallelo, su GPU.

Conseguenza pratica: l’allenamento smette di essere sequenziale → puoi saturare hardware moderno → puoi scalare. Tutto quello che è successo dopo (GPT, BERT, Claude, Gemini) discende da questa abilitazione.


I componenti, vista alto livello

Il Transformer originale è un encoder-decoder per traduzione automatica (EN→DE, EN→FR). Da quel grafico decennale ormai mitologico, i pezzi:

Per ogni token in input:

  • Embedding — token → vettore (d_model = 512 nell’originale).
  • Positional encoding — somma un vettore che codifica la posizione (sin/cos di varie frequenze).

Encoder (×6 stack identici):

  • Multi-head self-attention — il cuore (vedi 202, 208).
  • Feed-forward network (MLP a 2 strati, espande a d_ff = 2048).
  • Residual connection + LayerNorm attorno a ogni sotto-blocco.

Decoder (×6 stack identici):

  • Self-attention mascherata (non puoi guardare il futuro durante generation).
  • Cross-attention verso l’output dell’encoder.
  • Feed-forward + residual + LayerNorm.

Output head:

  • Proiezione lineare + softmax → distribuzione sul vocabolario.

Perché ha funzionato così bene

Tre ragioni che oggi diamo per scontate, ma allora non erano ovvie:

  1. Parallelismo nel tempo. Con la RNN, per fare il passo t aspetti il passo t-1. Con l’attention calcoli tutto insieme: una GPU in 2017 (Tesla V100) finalmente lavorava al 100%.
  2. Path length costante. In una RNN il segnale tra il token 1 e il token 1000 attraversa 1000 step (e si attenua). Nel transformer è un solo step di attention: la distanza in path è O(1).
  3. Induktive bias minimo. RNN e CNN portano assunzioni forti sulla struttura. L’attention dice: “impara tu da te quali token sono importanti per quale”. Con tanti dati, vince sempre.

I numeri originali (oggi sembrano giocattoli)

Il modello “big” del paper:

  • 65M parametri (GPT-5 ne ha qualche miliardo×N; un modello «piccolo» moderno parte da 7B).
  • Trained su WMT14 EN-DE (~4.5M frasi) in 3.5 giorni su 8× P100.
  • BLEU 28.4 (EN-DE), 41.8 (EN-FR), nuovo state-of-the-art.

Per metterlo in prospettiva: oggi alleneresti un modello identico in qualche ora su una singola H100, come prova del concetto pre-colazione.


Cosa NON c’è ancora nel paper del 2017

Importante, perché capire il gap ti aiuta a leggere il resto del capitolo:

  • Decoder-only (la scelta di GPT) — il paper è encoder-decoder.
  • Encoder-only (la scelta di BERT) — arrivata nel 2018.
  • RoPE / ALiBi — non ancora, qui è positional encoding sinusoidale fisso (vedi 207).
  • Layer norm in posizione “Pre-norm” — la versione originale è Post-LN, instabile su modelli grandi. La fix arriverà dopo.
  • MoE, sparsity, MLA, Flash-Attention — futuro.
  • Tokenizer BPE moderno — usa WordPiece via SentencePiece-like (vedi 206).

In altre parole: la forma è fissata, ma ogni singolo dettaglio è stato poi modificato. Il transformer attuale assomiglia all’originale come un’auto del 2026 a una Ford T: stesso schema, ogni pezzo cambiato.


Perché lo devi leggere davvero

Sì, anche se lo conosci di seconda mano. Tre motivi:

  1. È corto (10 pagine + riferimenti). Si legge in un pomeriggio.
  2. La sezione 3.2 (Scaled Dot-Product Attention) è la base concettuale di tutto. Senza, parli per slogan.
  3. Le citazioni mancanti raccontano una storia. Vedi cosa hanno scelto di non citare e capisci cosa è stato silenzioso negli anni dopo.

Glossario lampo

  • Encoder/decoder — due stack: encoder comprime l’input, decoder genera l’output.
  • Self-attention — ogni token attende su tutti i token della stessa sequenza.
  • Cross-attention — i token del decoder attendono sull’output dell’encoder.
  • Residual connection — somma input + output del blocco, per non perdere segnale (eredità da ResNet 2015).
  • LayerNorm — normalizza media e varianza su un layer (ortogonale a BatchNorm).

TEST hands-on

  1. Scarica il paper (arXiv:1706.03762) e leggi solo Sez. 3 (Architecture). Tempo target: 45 minuti, matita alla mano.
  2. Apri Annotated Transformer (nlp.seas.harvard.edu/annotated-transformer/): l’implementazione PyTorch del paper riga per riga.
  3. Su un foglio, disegna a memoria un blocco encoder. Verifica: hai 2 sotto-blocchi (attn + ffn), 2 residual, 2 LayerNorm? Bene.
  4. Ora prova a riprodurre la formula Attention(Q,K,V) = softmax(QK^T / sqrt(d_k)) V. Spiega ad alta voce ogni simbolo. Se non sai dire cos’è d_k e perché c’è quella radice quadrata, torna alla puntata 202.

Take-away

Il transformer non è “intelligente”: è massicciamente parallelizzabile. È stato il primo modello linguistico che ha smesso di sprecare GPU. Tutto il resto — scaling, emergenza, AGI talk — è conseguenza di quella scelta di ingegneria.


➡️ Prossima puntata: Self-attention — il meccanismo chiave spiegato con esempi numerici.