Differential Transformer
Il Differential Transformer sottrae una mappa di attenzione softmax da un'altra per annullare il rumore dell'attenzione, migliorando il recupero nei contesti lunghi e la quantizzazione.
Il Differential Transformer, o DIFF Transformer, è un'architettura Transformer le cui teste di attenzione calcolano due mappe di attenzione softmax e ne sottraggono una all'altra, annullando il peso che entrambe distribuiscono sul contesto irrilevante. Tianzhu Ye, Li Dong, Furu Wei e colleghi di Microsoft Research e della Tsinghua University lo hanno presentato nell'ottobre 2024 in Differential Transformer, un articolo presentato oralmente a ICLR 2025. Il progetto si ispira agli amplificatori differenziali e alle cuffie con cancellazione del rumore, che sottraggono due segnali eliminando il rumore condiviso. Nella modellazione del linguaggio, un DIFF Transformer ha richiesto circa il 65% dei parametri o dei token di addestramento di un Transformer standard per raggiungere la stessa loss: un modello da 6,8 miliardi di parametri ha eguagliato un Transformer da 11 miliardi di parametri.
Come funziona l’attenzione differenziale#
La self-attention standard assegna a ogni token un peso non negativo, quindi una parte del peso ricade sempre su token irrilevanti, che gli autori chiamano rumore dell’attenzione. L’attenzione differenziale divide le proiezioni di query e key di ciascuna testa in due metà, calcola una mappa softmax per ogni coppia e combina i valori come (map1 − λ × map2) × V. Entrambe le mappe assegnano peso agli stessi token irrilevanti, quindi la sottrazione li annulla, mentre sopravvive il peso assegnato solo da map1. Poiché ciascuna mappa ha somma 1, ogni riga del risultato ha somma 1 − λ e i singoli pesi possono essere negativi:
import torch
torch.manual_seed(0)
n, d, lam = 6, 8, 0.8 # 6 tokens, head size 8, lambda near the paper's 0.8 initialization
q1, k1, q2, k2 = torch.randn(4, n, d)
v = torch.randn(n, 2 * d) # values are twice as wide as each query-key pair
# Two ordinary softmax attention maps from separate query and key projections
map1 = torch.softmax(q1 @ k1.T / d**0.5, dim=-1)
map2 = torch.softmax(q2 @ k2.T / d**0.5, dim=-1)
# Subtracting cancels weight that both maps place on the same tokens
diff = map1 - lam * map2
out = diff @ v
print(f"Each row sums to {diff.sum(dim=-1)[0]:.2f}; {(diff < 0).sum().item()} of {n * n} weights are negative")Stampa Each row sums to 0.20; 13 of 36 weights are negative, due proprietà che nessuna mappa di attenzione softmax può avere. Nel modello reale, λ viene appreso tramite quattro piccoli vettori e inizializzato a 0.8 − 0.6 × exp(−0.3 × (l − 1)) per il livello l, quindi i livelli più profondi partono da valori più vicini a 0.8. L’output di ogni testa viene normalizzato autonomamente, con una procedura che il documento chiama GroupNorm, quindi moltiplicato per (1 − λ all’inizializzazione) per mantenere i gradienti delle stesse dimensioni di quelli di un transformer standard. Il modello usa la metà delle teste, ciascuna con valori larghi il doppio, quindi il numero di parametri corrisponde a quello del modello di riferimento. Ogni mappa è una normale attenzione softmax, quindi le implementazioni riutilizzano i kernel di flash attention; il throughput di addestramento sulle GPU H100 era dal 6% al 12% inferiore rispetto a quello di un transformer delle stesse dimensioni.
Vantaggi dichiarati#
In un test needle-in-a-haystack con 6 aghi e 2 domande in una finestra di contesto di 4K token, DIFF Transformer ha ottenuto un punteggio di 0.85, contro 0.55 per un transformer standard; l’analisi dell’attenzione del documento ha ricondotto il risultato alla capacità di concentrarsi: il modello ha indirizzato dal 0.27 al 0.40 dell’attenzione sulla risposta, contro un intervallo da 0.03 a 0.09 per il transformer. Ha anche prodotto meno allucinazioni nella sintesi del testo e nella risposta alle domande; inoltre, nell’apprendimento in contesto few-shot è risultato più accurato e meno sensibile all’ordine degli esempi.
Anche gli outlier delle attivazioni si sono ridotti. Il logit di attenzione massimo era 38.8, contro 318.0 per un transformer standard, e l’attivazione massima dello stato nascosto era 1.688, contro 3.609. Con i logit di attenzione quantizzati a 4 bit, ha eguagliato l’accuratezza di un transformer standard a 6 bit e superato di circa il 25% quella di un transformer a 4 bit.
Questo risultato è importante per la quantizzazione dei modelli, perché poche attivazioni estreme determinano l’intervallo che tutti gli altri valori devono condividere. Lo stesso vale per i modelli di visione: quando Ultralytics YOLO26 viene esportato con quantize=8, l’esportatore calibra gli intervalli delle attivazioni sulle immagini del dataset data e ne consiglia almeno 300, mentre quantize="w8a16" mantiene i pesi a 8 bit e le attivazioni a 16 bit per le esportazioni LiteRT, Core ML e QNN.
DIFF Transformer a confronto con termini correlati#
- Diffusion Transformer (DiT): Transformer che sostituisce U-Net nei modelli di diffusione per la generazione di immagini e video.
- Privacy differenziale: Garanzia matematica di tutela della privacy per i dati di addestramento.
- Attenzione sparsa: Assegna punteggi solo a un sottoinsieme fisso di coppie di token e imposta in anticipo a zero tutti gli altri pesi.
- Trasformatore differenziale a variabile lineare: Sensore elettrico che misura lo spostamento lineare.










