Linear Attention
L'attenzione lineare sostituisce la softmax con una mappa delle caratteristiche, così il costo cresce linearmente con la lunghezza e la decodifica mantiene uno stato di dimensione fissa. Panoramica su DeltaNet e modelli ibridi.
L'attenzione lineare è una famiglia di meccanismi di attenzione il cui costo cresce linearmente con la lunghezza della sequenza, anziché quadraticamente come nell'autoattenzione softmax standard. L'attenzione softmax assegna un punteggio a ogni query rispetto a ogni chiave, quindi N token producono una matrice di punteggi N × N per testa, e un transformer che genera testo mantiene una cache KV che cresce a ogni token. L'attenzione lineare sostituisce la similarità softmax con un prodotto scalare di mappe di caratteristiche, φ(q)·φ(k), consentendo al modello di raggruppare diversamente i prodotti tra matrici e riassumere tutte le chiavi e i valori precedenti in uno stato di dimensione fissa. Un articolo del 2020 di Katharopoulos e colleghi, Transformers are RNNs, ha dato al metodo la sua forma più comune, e oggi varianti con gating vengono usate nei modelli linguistici di grandi dimensioni (LLM) in produzione, insieme ai livelli di attenzione standard.
Come funziona l'attenzione lineare#
L'attenzione softmax calcola softmax(QKᵀ)V e, poiché exp(q·k) non si scompone in una parte relativa alla query e una alla chiave, è necessario assegnare un punteggio a ogni coppia query-chiave. Con una mappa di caratteristiche φ, come elu(x) + 1, l'output diventa φ(Q)(φ(K)ᵀV), normalizzato per φ(Q) moltiplicato per la somma delle righe di φ(K). La moltiplicazione tra matrici è associativa, quindi φ(K)ᵀV può essere calcolato per primo, producendo una matrice d × d, dove d è la dimensione della testa, indipendentemente dal numero di token. Il tempo di calcolo scende da O(N²d) a O(Nd²), un vantaggio quando le sequenze sono molto più lunghe della dimensione della testa.
Per i modelli causali, la stessa algebra trasforma l'attenzione in una rete neurale ricorrente (RNN) con uno stato a matrice. Ogni nuovo token aggiunge allo stato il prodotto esterno φ(k)vᵀ e la sua query legge da quello stato, quindi la generazione del testo richiede memoria e tempo costanti per token. L'addestramento usa la forma parallela o kernel a blocchi, come quelli della libreria flash-linear-attention, perciò una GPU elabora comunque intere sequenze alla volta. In PyTorch, le due forme producono gli stessi risultati:
import torch
import torch.nn.functional as F
torch.manual_seed(0)
n, d = 2048, 64
q, k, v = torch.randn(3, n, d).unbind(0)
phi_q, phi_k = F.elu(q) + 1, F.elu(k) + 1 # positive feature map in place of softmax
# Parallel form: an n x n causal score matrix, as in softmax attention
scores = torch.tril(phi_q @ phi_k.T)
parallel = (scores @ v) / scores.sum(dim=-1, keepdim=True)
# Recurrent form: a fixed d x d state that each new token updates
state, norm, outputs = torch.zeros(d, d), torch.zeros(d), []
for t in range(n):
state += torch.outer(phi_k[t], v[t])
norm += phi_k[t]
outputs.append(phi_q[t] @ state / (phi_q[t] @ norm))
recurrent = torch.stack(outputs)
print("Same outputs:", torch.allclose(parallel, recurrent, atol=1e-4))
print(f"Recurrent state: {state.numel():,} numbers; KV cache after {n:,} tokens: {2 * n * d:,} numbers")Stampa Same outputs: True. Lo stato 64 × 64 contiene 4.096 numeri, qualunque sia la lunghezza della sequenza, mentre la cache KV di una testa dopo 2.048 token contiene 262.144 numeri e cresce di 128 a ogni nuovo token.
DeltaNet, gating e modelli ibridi#
Uno stato di dimensione fissa è una memoria con perdita di informazioni. La semplice attenzione lineare vi aggiunge soltanto contenuti, così le associazioni precedenti si accumulano e interferiscono, e il richiamo di fatti specifici da una lunga finestra di contesto è inferiore a quello dell'attenzione softmax. Oggi prevalgono due soluzioni. Il gating moltiplica lo stato per un decadimento appreso prima di ogni aggiornamento, permettendo al modello di dimenticare; questo meccanismo è condiviso con i modelli a spazio di stato (SSM) come Mamba-2, i cui autori hanno dimostrato che le due famiglie sono forme duali l'una dell'altra. La regola delta, nata dal lavoro che collega i transformer lineari ai programmatori a pesi veloci, legge il valore attualmente memorizzato per una chiave e scrive soltanto la differenza tra il nuovo valore e la previsione memorizzata. DeltaNet ha reso parallelo lungo la sequenza l'addestramento con la regola delta nel 2024, Gated DeltaNet (ICLR 2025) ha aggiunto un gate di decadimento e Kimi Linear di Moonshot AI perfeziona il gate affinché agisca separatamente su ciascun canale.
I modelli in produzione alternano questi livelli con livelli di attenzione completa, così alcuni livelli softmax mantengono un richiamo esatto. Qwen3-Next e la famiglia Qwen3.5 ripetono un blocco di tre livelli Gated DeltaNet seguito da un livello di attenzione softmax con gating, mentre Kimi Linear usa una combinazione simile, 3:1, di Kimi Delta Attention e attenzione latente multi-testa:
Attenzione lineare e metodi correlati#
- Autoattenzione: la forma softmax esatta che assegna un punteggio a tutte le coppie di token, con tempo quadratico e una cache KV che cresce con la sequenza.
- Attenzione flash: un kernel GPU che calcola l'attenzione softmax esatta in blocchi mantenuti nella memoria on-chip. Riduce il traffico di memoria, ma il numero di operazioni resta quadratico.
- Attenzione sparsa: mantiene la softmax e assegna punteggi solo a coppie selezionate, come una finestra locale di token recenti.
- Attenzione a query raggruppate (GQA): condivide chiavi e valori tra le teste di query per ridurre la cache KV di un fattore costante, mantenendo l'attenzione softmax completa.
Dove si usa l'attenzione lineare#
I modelli linguistici con contesto lungo ne sono l'applicazione principale, perché i livelli lineari di un modello ibrido mantengono uno stato di dimensione costante durante la decodifica e solo i pochi livelli softmax hanno una cache KV in crescita. La visione è la seconda applicazione, dato che il numero di token aumenta con la risoluzione dell'immagine. EfficientViT usa un'attenzione lineare basata su ReLU per la segmentazione semantica ad alta risoluzione, mentre SANA di NVIDIA realizza un transformer di diffusione lineare che genera immagini fino a 4096 × 4096 pixel. Nel rilevamento degli oggetti, l'attenzione viene eseguita di solito solo dove le mappe delle caratteristiche sono più piccole. YOLO26 mantiene l'attenzione softmax standard e la esegue solo nel blocco C2PSA e in un blocco C3k2 abilitato all'attenzione, entrambi sulla mappa delle caratteristiche 20 × 20 con stride 32 di un'immagine da 640 pixel; ciascun livello di attenzione vede così 400 token e una matrice di punteggi completa di 160.000 elementi per testa.










