Architettura Transformer e Meccanismo di Attention: Analisi Tecnica
Introdotta da Google nel paper del 2017 "Attention Is All You Need", l’architettura Transformer costituisce la spina dorsale dell’intelligenza artificiale moderna. Tutti i principali modelli linguistici come GPT, Claude e Gemini si basano su questa architettura.
Prima dei Transformer: Limitazioni di RNN e LSTM
Prima dell’era dei Transformer, i compiti di NLP si basavano su Recurrent Neural Networks (RNN) e Long Short-Term Memory (LSTM):
Problemi di RNN/LSTM:
- Necessità di elaborazione sequenziale → L’elaborazione in parallelo è impossibile.
- Gradienti che svaniscono/esplodono nelle sequenze lunghe.
- Difficoltà nell’apprendere dipendenze a lungo raggio.
- Tempi di addestramento molto lunghi.
Meccanismo di Self-Attention
La self-attention è un meccanismo che calcola la relazione tra ogni elemento in una sequenza e tutti gli altri elementi.
Formulazione Matematica
Attention(Q, K, V) = softmax(QK^T / √d_k) × V
Parametri:
- Q (Query): Il vettore di interrogazione.
- K (Key): Il vettore chiave da confrontare.
- V (Value): Il vettore contenente l’informazione effettiva.
- d_k: La dimensione del vettore Key.
Calcolo Step-by-Step
- Proiezione: Input → matrici Q, K, V
1Q = X × W_Q 2K = X × W_K 3V = X × W_V
- Attention Scores: Prodotto scalare tra Q e K
scores = Q × K^T
- Scaling: Divisione per √d_k per stabilità del gradiente
scaled_scores = scores / √d_k
- Softmax: Conversione in una distribuzione di probabilità
attention_weights = softmax(scaled_scores)
- Somma Ponderata: Moltiplicazione con Value
output = attention_weights × V
Multi-Head Attention
Invece di una singola testa di attention, vengono utilizzate più teste in parallelo:
1MultiHead(Q, K, V) = Concat(head_1, ..., head_h) × W_O 2 3where head_i = Attention(QW_Q^i, KW_K^i, VW_V^i)
Vantaggi della Multi-Head Attention
- Apprendimento in differenti sotto-spazi di rappresentazione.
- Cattura di vari tipi di relazioni contestuali.
- Estrazione di feature più ricca.
Configurazioni tipiche:
- GPT-3: 96 teste di attention, d_model = 12288.
- GPT-4: Stimate oltre 120 teste.
Positional Encoding
Poiché i Transformer elaborano i dati in parallelo, viene aggiunta informazione posizionale per preservare il contesto sequenziale:
Sinusoidal Positional Encoding
PE(pos, 2i) = sin(pos / 10000^(2i/d_model)) PE(pos, 2i+1) = cos(pos / 10000^(2i/d_model))
Rotary Positional Embedding (RoPE)
Un metodo più avanzato usato nei modelli moderni:
f(x, pos) = x × e^(i × pos × θ)
Vantaggi di RoPE:
- Codifica naturalmente l’informazione di posizione relativa.
- Migliore capacità di estrapolazione per sequenze più lunghe.
- Utilizzato nei modelli GPT-NeoX, LLaMA e Mistral.
Feed-Forward Network
Un livello MLP che segue ogni livello di attention:
FFN(x) = GELU(xW_1 + b_1)W_2 + b_2
Dimensioni tipiche:
- d_model = 4096.
- d_ff = 4 × d_model = 16384.
Funzioni di Attivazione
- ReLU: Classica e semplice.
- GELU: Preferita nei modelli tipo GPT.
- SwiGLU: Utilizzata nei modelli LLaMA e PaLM.
Layer Normalization
Fondamentale per la stabilità dell’addestramento:
Pre-LN vs Post-LN
Post-LN (Originale):
x = x + Attention(LayerNorm(x))
Pre-LN (Moderno):
x = LayerNorm(x + Attention(x))
Il Pre-LN garantisce un addestramento più stabile ed è diventato lo standard industriale.
Architetture Encoder vs Decoder
Encoder-Only (stile BERT)
- Attention bidirezionale.
- Utilizzato per Classification, NER e similarità semantica.
- Masked Language Modeling.
Decoder-Only (stile GPT)
- Attention causale/autoregressiva.
- Utilizzato per generazione di testo e chat.
- Predizione del token successivo.
Encoder-Decoder (T5, BART)
- Compiti sequence-to-sequence.
- Traduzione e riassunto.
Causal Masking
Mascheramento dei token futuri nei modelli decoder:
mask = triu(ones(seq_len, seq_len), diagonal=1) masked_scores = scores + mask × (-inf)
Questo garantisce che il modello guardi solo ai token precedenti durante la generazione.
Ottimizzazione della KV-Cache
Per evitare calcoli ridondanti durante l'inferenza:
1Step 1: Calculate K_1, V_1 → save to cache 2Step 2: Calculate K_2, V_2 → K = [K_1, K_2], V = [V_1, V_2] 3Step n: Calculate only for the new token, retrieve old values from cache
Risparmio di memoria: O(n²) → O(n) per i passaggi di elaborazione.
Flash Attention
Un'implementazione di attention a uso di memoria ottimizzato:
Problemi della Standard Attention:
- Uso di memoria O(n²).
- Collo di bottiglia della HBM (high bandwidth memory).
Soluzione Flash Attention:
- Tiling: suddivisione dell’attention in blocchi.
- Online Softmax: calcolo incrementale.
- I/O Aware: ottimizzazione della gerarchia di memoria della GPU.
Risultato: accelerazione di 2-4x, risparmio di memoria del 5-20%.
Varianti di Sparse Attention
Riduzione della complessità dell’attention per contesti lunghi:
Local Attention
Focalizzazione solo sui token vicini.
Dilated Attention
Applicazione dell’attention a intervalli specifici.
Longformer Pattern
Combinazione di Local + Global attention.
Varianti Moderne dei Transformer
| Model | Feature | Context Length |
|---|---|---|
| GPT-4 | MoE, long context | 128K |
| Claude 3 | Constitutional AI | 200K |
| Gemini 1.5 | Sparse MoE | 1M |
| Mistral | Sliding window | 32K |
Conclusione
L'architettura Transformer è il blocco fondamentale dell'AI moderna. Il suo meccanismo di self-attention, la capacità di elaborazione parallela e la capacità di apprendere dipendenze a lungo raggio hanno reso questa architettura rivoluzionaria.
In Veni AI utilizziamo efficacemente modelli basati su Transformer nelle nostre soluzioni enterprise. Contattaci per consulenza tecnica.
