Sparse Attention
L’attention parcimonieuse permet à chaque jeton de se concentrer sur un sous-ensemble choisi d’autres jetons, par exemple une fenêtre locale, des jetons globaux ou les meilleurs candidats top-k, afin de réduire le coût des longues séquences.
L’attention parcimonieuse regroupe des mécanismes d’attention dans lesquels chaque requête évalue uniquement un sous-ensemble choisi de clés, plutôt que toutes les clés de la séquence. L’auto-attention complète sur N jetons calcule N² scores par tête ; doubler la longueur d’un document quadruple donc le coût de l’attention, tandis qu’un motif où chaque jeton se concentre sur k autres coûte N·k. Le motif peut être défini à l’avance, par exemple sous la forme d’une fenêtre locale, ou choisi à partir du contenu, par exemple en retenant les clés ayant les scores les plus élevés pour chaque requête. Le Sparse Transformer d’OpenAI, en 2019, utilisait des motifs à pas de coût O(N√N) pour modéliser des séquences de plusieurs dizaines de milliers d’étapes. Les grands modèles de langage (LLM) actuels utilisent des couches parcimonieuses pour prendre en charge des fenêtres de contexte de plus de 100 000 jetons.
Motifs de parcimonie courants#
Les motifs fixes déterminent à l’avance quelles paires évaluer. L’attention à fenêtre glissante permet à chaque jeton de consulter uniquement les w jetons précédents : Mistral 7B utilise une fenêtre de 4 096 jetons, et les modèles à poids ouverts gpt-oss d’OpenAI alternent des couches denses et des couches à fenêtre de 128 jetons, comme le faisait déjà GPT-3 avec son alternance de couches denses et de couches à bande locale. Chaque couche à fenêtre transmet les informations de w jetons supplémentaires ; une pile profonde relie donc encore les jetons éloignés. Les motifs à pas ajoutent chaque s-ième jeton précédent, afin que l’information puisse également parcourir de longues distances en une seule couche. Les jetons globaux prêtent attention à toutes les positions et reçoivent l’attention de chacune d’elles : Longformer les attribue à des jetons de tâche, comme un jeton de classification ; BigBird ajoute aussi des connexions aléatoires ; et les puits d’attention maintiennent les premiers jetons visibles par toutes les requêtes, pour stabiliser la génération en continu.
Les motifs fondés sur le contenu choisissent les paires à partir des données. La Native Sparse Attention de DeepSeek (NSA, 2025) combine des résumés compressés de blocs de clés, une sélection des blocs les plus pertinents et une fenêtre glissante, le tout entraîné de bout en bout. DeepSeek Sparse Attention, dans DeepSeek-V3.2, exécute un petit « indexeur éclair » qui attribue un score à chaque jeton précédent pour chaque requête, puis calcule l’attention complète uniquement sur les 2 048 premiers ; le coût principal de l’attention pour chaque requête reste donc constant, quelle que soit la longueur du contexte. En production, les modèles combinent souvent ces règles :
Transformer un motif en gains de calcul#
Un masque appliqué à une matrice de scores dense calcule tout de même tous les scores ; les gains de vitesse proviennent donc de noyaux qui ignorent les tuiles vides de la matrice. Les noyaux d’attention Flash prennent directement en charge les fenêtres glissantes, et PyTorch compile, grâce à FlexAttention, toute fonction de masque en un noyau GPU à structure creuse par blocs. Son create_block_mask montre quels blocs un tel noyau ignore pour une fenêtre de 1 024 jetons, à laquelle s’ajoutent quatre jetons de puits d’attention :
from torch.nn.attention.flex_attention import create_block_mask
seq_len, window, sinks = 8192, 1024, 4
def local_plus_sinks(b, h, q_idx, kv_idx):
"""Causal attention to the previous 1,024 tokens plus the first 4 tokens."""
causal = q_idx >= kv_idx
return causal & ((q_idx - kv_idx <= window) | (kv_idx < sinks))
# FlexAttention divise le masque en blocs de 128 x 128 pour que ses noyaux puissent ignorer les blocs vides
block_mask = create_block_mask(local_plus_sinks, B=None, H=None, Q_LEN=seq_len, KV_LEN=seq_len, device="cpu")
print(block_mask)La sortie affiche sparsity=85.47%, la proportion de blocs de 128 × 128 de la matrice de scores de 8 192 × 8 192 qui ne contiennent aucune paire autorisée, et représente le motif par une bande diagonale pour la fenêtre et une colonne à gauche pour les jetons puits. Lorsque flex_attention s’exécute sous torch.compile, son noyau ignore entièrement ces blocs.
Attention parcimonieuse et notions connexes#
- Attention Flash : noyau sensible aux entrées-sorties qui calcule l’attention exacte sur toutes les paires en répartissant les opérations dans la mémoire rapide intégrée à la puce. Ses tuiles sont aussi l’unité ignorée par les noyaux à blocs parcimonieux.
- Attention linéaire : conserve toutes les paires, mais remplace la softmax par une application de caractéristiques, de sorte que toutes les clés et valeurs passées sont compressées dans un état de taille fixe.
- Attention déformable : mécanisme de vision où chaque requête se concentre sur quelques points d’échantillonnage situés à des décalages appris dans une carte de caractéristiques, plutôt que de suivre un motif fixe.
- Mélange d’experts (MoE) : parcimonie des paramètres où chaque jeton active seulement quelques réseaux experts, tandis que son motif d’attention reste dense.
Applications#
Les modèles de langage à long contexte constituent la principale application : les couches parcimonieuses limitent le calcul, et les couches à fenêtre limitent aussi le cache KV, ce qui permet aux modèles de résumer de longs rapports ou de rechercher dans de grandes bases de code en une seule requête. BigBird a appliqué son motif parcimonieux à des séquences d’ADN, dont les milliers de paires de bases dépassent largement la longueur d’une phrase classique, pour prédire les régions promotrices. En vision par ordinateur, le nombre de jetons augmente avec la résolution de l’image ; les modèles limitent donc l’attention à des régions locales. Le Swin Transformer se concentre sur des fenêtres décalées. YOLO12, un détecteur axé sur l’attention, développé par des chercheurs de l’University at Buffalo et de l’University of Chinese Academy of Sciences et disponible dans le package Ultralytics, utilise l’attention par zone : son étape de backbone à stride 16 divise la carte de caractéristiques de 40 × 40 d’une image de 640 pixels en quatre bandes horizontales de 400 jetons, et applique l’attention uniquement dans chaque bande. Il évalue ainsi un quart des 2,56 millions de paires que nécessiterait l’attention complète sur les 1 600 jetons.










