Differential Transformer
Le Differential Transformer soustrait une carte d’attention softmax d’une autre pour annuler le bruit d’attention, ce qui améliore la recherche d’information dans les longs contextes et la quantification.
Le Differential Transformer, ou DIFF Transformer, est une architecture de transformer dont les têtes d’attention calculent deux cartes d’attention softmax et soustraient l’une à l’autre, annulant ainsi le poids que les deux cartes répartissent sur le contexte non pertinent. Tianzhu Ye, Li Dong, Furu Wei et leurs collègues de Microsoft Research et de l’université Tsinghua l’ont présenté en octobre 2024 dans Differential Transformer, un article présenté oralement à ICLR 2025. La conception s’inspire des amplificateurs différentiels et des casques à réduction de bruit, qui soustraient deux signaux afin d’éliminer le bruit qu’ils ont en commun. En modélisation du langage, un DIFF Transformer avait besoin d’environ 65 % des paramètres ou des jetons d’entraînement d’un transformer standard pour atteindre la même perte : un modèle de 6,8 milliards de paramètres a égalé un transformer de 11 milliards de paramètres.
Fonctionnement de l’attention différentielle#
L'auto-attention standard attribue à chaque token un poids non négatif ; un certain poids revient donc toujours à des tokens sans importance, ce que les auteurs appellent le bruit d'attention. L'attention différentielle divise en deux les projections des requêtes et des clés de chaque tête, calcule une carte softmax à partir de chaque paire et combine les valeurs comme suit : (carte1 − λ × carte2) × V. Les deux cartes attribuent un poids aux mêmes tokens non pertinents, donc la soustraction annule ce poids, tandis que le poids attribué uniquement par la carte1 subsiste. Comme chaque carte a une somme égale à 1, chaque ligne du résultat a une somme égale à 1 − λ, et certains poids individuels peuvent être négatifs :
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")Le code affiche Each row sums to 0.20; 13 of 36 weights are negative, deux propriétés qu'aucune carte d'attention softmax ne peut avoir. Dans le modèle réel, λ est appris au moyen de quatre petits vecteurs et commence à 0.8 − 0.6 × exp(−0.3 × (l − 1)) pour la couche l ; les couches plus profondes commencent donc plus près de 0.8. La sortie de chaque tête est normalisée individuellement, ce que l'article désigne par GroupNorm, puis mise à l'échelle par (1 − λ à l'initialisation) afin de conserver des gradients de même amplitude que dans un transformeur standard. Le modèle utilise deux fois moins de têtes, chacune ayant des valeurs deux fois plus larges, ce qui lui donne le même nombre de paramètres que le modèle de référence. Chaque carte utilise une attention softmax ordinaire, les implémentations réutilisent donc les noyaux flash attention, et le débit d'entraînement sur les GPU H100 était inférieur de 6 % à 12 % à celui d'un transformeur de même taille.
Avantages rapportés#
Lors d'un test du problème de l'aiguille dans une botte de foin avec 6 aiguilles et 2 questions dans une fenêtre de contexte de 4K tokens, le DIFF Transformer a obtenu un score de 0.85, contre 0.55 pour un transformeur standard. L'analyse de l'attention présentée dans l'article attribue ce résultat à la capacité de focalisation : le modèle a consacré de 0.27 à 0.40 de son attention à la réponse, contre 0.03 à 0.09 pour le transformeur. Il a également produit moins d'hallucinations en résumé de texte et en réponse aux questions ; pour l'apprentissage en contexte few-shot, il s'est aussi montré plus précis et moins sensible à l'ordre des exemples.
Les valeurs aberrantes des activations ont elles aussi diminué. Le logit d'attention maximal était de 38.8, contre 318.0 pour un transformeur standard, et l'activation maximale de l'état caché était de 1 688, contre 3 609. Avec des logits d'attention quantifiés sur 4 bits, le modèle a égalé la précision d'un transformeur standard sur 6 bits et a dépassé d'environ 25 % la précision d'un transformeur sur 4 bits.
Ce résultat compte pour la quantification de modèles, car quelques activations extrêmes déterminent la plage que toutes les autres valeurs doivent partager. Il en va de même pour les modèles de vision : lorsque Ultralytics YOLO26 est exporté avec quantize=8, l'exportateur calibre les plages d'activation sur des images du jeu de données data et en recommande au moins 300, tandis que quantize="w8a16" conserve les poids sur 8 bits et les activations sur 16 bits pour les exports LiteRT, Core ML et QNN.
DIFF Transformer et termes associés#
- Transformeur de diffusion (DiT) : Transformeur qui remplace le U-Net dans les modèles de diffusion pour la génération d'images et de vidéos.
- Confidentialité différentielle : Garantie mathématique de confidentialité pour les données d'entraînement.
- Attention parcimonieuse : Évalue uniquement un sous-ensemble fixe de paires de tokens et met d'avance tous les autres poids à zéro.
- Transformateur différentiel à variable linéaire : Capteur électrique qui mesure un déplacement linéaire.










