Polydesk-logotype
Polydesk.ai — Header

Sliding Window Attention (SWA)

La Sliding Window Attention (attention à fenêtre glissante) est un mécanisme d’attention efficace qui restreint chaque token à ne s’attendre qu’aux W tokens voisins (la « fenêtre »), au lieu de toute la séquence, réduisant la complexité du calcul d’attention de O(n²) à O(n × W) et bornant la taille du KV cache à W tokens quelle que soit la longueur de la séquence.

Sliding Window Attention en bref
Origine
Longformer (Beltagy et al., 2020), Sparse Transformer (Child et al., 2019)
Principe
Chaque token ne s’attent qu’aux W tokens les plus proches
Complexité
O(n × W) au lieu de O(n²) pour l’attention complète
KV cache
Borné à W tokens (rolling buffer) au lieu de n
Fenêtre typique
4 096 tokens (Mistral 7B) à 8 192 tokens (Gemma 3)
Modèles notables
Mistral 7B, Gemma 3, GPT-OSS, Longformer, BigBird
Combinaison
Souvent associée à GQA, RoPE, attention sinks

Le problème : l’attention complète est quadratique

Dans un Transformer standard, le mécanisme d’attention calcule la relation entre chaque paire de tokens dans la séquence. Pour une séquence de n tokens, cela produit une matrice d’attention de taille n × n. La complexité en calcul et en mémoire est donc O(n²), ce qui pose un problème croissant à mesure que les fenêtres de contexte des LLM s’allongent.

Avec n = 128K tokens, la matrice d’attention contient plus de 16 milliards d’éléments. Même avec FlashAttention qui évite de matérialiser cette matrice, le nombre d’opérations reste proportionnel à n². Pour n = 1M tokens, le coût devient prohibitif.

La sliding window attention part d’une observation empirique : dans la plupart des tâches de langage naturel, les dépendances les plus importantes sont locales. Un token est généralement le plus influencé par ses voisins proches. Les relations longue distance existent, mais elles sont plus rares et peuvent être capturées indirectement par l’empilement de couches.

Fonctionnement de la Sliding Window Attention

Le mécanisme de base

La SWA restreint l’attention de chaque token à une fenêtre fixe de W tokens. Si le token à la position i est en train d’être traité, il ne s’attent qu’aux tokens dans l’intervalle [i – W, i]. Les tokens en dehors de cette fenêtre sont invisibles pour le calcul d’attention à cette couche.

La matrice d’attention résultante n’est plus dense (n × n) mais bande-diagonale, avec une largeur de bande W. La complexité passe de O(n²) à O(n × W). Pour W = 4096 et n = 128K, c’est une réduction de 32x du calcul d’attention.

Rolling buffer KV cache

L’avantage le plus concret de la SWA en production est la taille bornée du KV cache. Au lieu de stocker les K et V de tous les n tokens de la séquence (qui croît linéairement), le cache ne conserve que les W derniers tokens dans un buffer circulaire (rolling buffer).

Quand le buffer est plein, le nouveau token écrase le plus ancien. La position physique dans le buffer est calculée par position mod W. Cette approche borne strictement la consommation mémoire du KV cache à W × taille_par_token, indépendamment de la longueur totale de la séquence. C’est ce mécanisme qui permet à Mistral 7B de gérer des contextes de 16K tokens avec un cache limité à 4K tokens.

Fenêtre vs contexte effectif La fenêtre W n’est pas la longueur de contexte du modèle. Le contexte effectif théorique est W × L, où L est le nombre de couches : à chaque couche, l’information se propage de W tokens supplémentaires. Pour Mistral 7B avec W = 4096 et 32 couches, le contexte théorique est ~131K tokens. En pratique, l’information se dilue exponentiellement à travers les couches, et le contexte réellement exploitable est plus limité.

Propagation de l’information à travers les couches

L’argument classique en faveur de la SWA est que l’empilement de couches compense la localité de l’attention. À la couche 1, le token i voit les tokens [i-W, i]. À la couche 2, le token i-W a déjà intégré l’information des tokens [i-2W, i-W]. Par transitivité, le token i à la couche 2 a accès indirectement à l’information des tokens jusqu’à i-2W. Après L couches, le champ réceptif théorique est W × L.

Cependant, des recherches récentes (Xiao, 2025) démontrent mathématiquement que cette propagation est beaucoup moins efficace qu’on ne le pensait. Les connexions résiduelles (skip connections) du Transformer créent une « barrière exponentielle » : l’information des tokens lointains est exponentiellement diluée à chaque couche traversée. En pratique, l’empilement de fenêtres glissantes ne permet pas d’atteindre un contexte effectif proche de W × L. C’est pourquoi les architectures modernes combinent souvent SWA avec d’autres mécanismes pour les dépendances longue distance.

Architectures utilisant la SWA

Longformer (2020) : SWA + attention globale

Le Longformer a été l’un des premiers modèles à exploiter systématiquement la SWA. Sa contribution clé est de combiner l’attention locale (fenêtre glissante) avec des tokens globaux. Certains tokens spéciaux (comme le token [CLS] ou des tokens sélectionnés) ont le droit de s’attendre à toute la séquence, et toute la séquence peut s’attendre à eux. Cela permet de capturer les dépendances longue distance via ces « relais » globaux, tout en gardant la complexité linéaire pour la majorité du calcul.

BigBird (Zaheer et al., 2021) étend cette idée en ajoutant des patterns d’attention aléatoires en plus de la fenêtre locale et des tokens globaux, formant un mélange de trois types d’attention.

Mistral 7B (2023) : SWA optimisée pour la production

Mistral 7B a popularisé la SWA pour les LLM decoder-only en production. Son implémentation combine trois optimisations :

Fenêtre de 4 096 tokens. Chaque couche ne s’attent qu’aux 4096 tokens précédents, avec un rolling buffer KV cache qui borne la mémoire.

Grouped-Query Attention. 8 groupes K/V pour 32 têtes Q, réduisant encore le KV cache de 4x en plus de la réduction apportée par la fenêtre.

Pas de tokens globaux explicites. Contrairement à Longformer, Mistral ne définit pas de tokens globaux. Il s’appuie sur la profondeur du réseau (32 couches) pour propager le contexte. Cette simplicité architecturale, combinée à la qualité du pré-entraînement, lui a permis de rivaliser avec Llama 2 13B tout en n’ayant que 7B paramètres.

Mistral 7B a démontré que la SWA pouvait être utilisée à grande échelle sans perte de qualité significative. Des benchmarks ont montré un throughput d’inférence environ 70% plus rapide que Llama 2 sur le même matériel.

Gemma 3 (Google, 2025) : SWA hybride

Gemma 3 de Google utilise une approche hybride qui alterne couches SWA et couches d’attention complète. La majorité des couches utilisent la SWA pour l’efficacité, tandis que quelques couches clés conservent l’attention complète pour capter les dépendances globales. Cette alternance offre un meilleur compromis que la SWA pure : l’efficacité de la fenêtre glissante pour la plupart des calculs, avec la capacité longue distance de l’attention complète aux endroits stratégiques.

SWAA (2025-2026) : adapter la SWA sans ré-entraînement

SWAA (Sliding Window Attention Adaptation) propose un toolkit pour convertir des modèles pré-entraînés avec attention complète vers la SWA, sans ré-entraînement coûteux. Le framework combine cinq stratégies : appliquer la SWA uniquement pendant le prefill, préserver les tokens « sink », alterner couches FA et SWA, utiliser le chain-of-thought, et un fine-tuning léger. Les combinaisons synergiques de ces stratégies permettent de récupérer les capacités long-contexte originales avec des speedups de 30% à 100% sur l’inférence long-contexte.

SWAT (2025) : repenser le softmax pour la SWA

SWAT (Sliding Window Attention Training) identifie un problème fondamental de la SWA avec softmax : le phénomène d’attention sink. La haute variance de l’opération softmax concentre artificiellement l’attention sur les premiers tokens de la séquence, même quand ils n’ont pas d’importance sémantique. SWAT propose de remplacer le softmax par une fonction sigmoïde (pas de compétition entre tokens) et d’utiliser une combinaison équilibrée de ALiBi et RoPE pour l’encodage positionnel. Les résultats montrent des performances état de l’art comparées aux architectures récurrentes linéaires (Mamba, GLA, DeltaNet, Gated DeltaNet) sur huit benchmarks.

Limites de la Sliding Window Attention

Dilution exponentielle de l’information

Le problème le plus fondamental de la SWA est la dilution exponentielle de l’information à travers les couches. L’analyse mathématique de Xiao (2025) montre que les connexions résiduelles, pourtant essentielles au fonctionnement des Transformers, créent une barrière : à chaque couche, le signal des tokens éloignés est exponentiellement atténué par rapport au signal local. Concrètement, après quelques couches, un token ne « voit » plus efficacement que quelques fenêtres en arrière, pas W × L.

C’est la raison pour laquelle les modèles SWA purs (sans attention globale ni couches d’attention complète) montrent une dégradation de perplexité quand la séquence d’évaluation dépasse significativement la taille de la fenêtre. Les mesures sur Llama-2-7b, Llama-3.1-8B, Qwen2-7B et Mistral-7B confirment ce pattern : pour une fenêtre fixe, la perplexité augmente systématiquement avec la longueur de séquence.

Efficacité hardware paradoxale

En théorie, la SWA réduit le nombre d’opérations. En pratique, sur les GPU modernes, elle peut être plus lente que l’attention complète à séquence égale. La raison : l’attention complète se traduit par une seule grande multiplication matricielle, hautement optimisée par les kernels fusionnés (FlashAttention). La SWA, avec ses fenêtres multiples, se traduit par de nombreuses petites multiplications moins efficaces sur le hardware GPU.

FlashAttention supporte nativement la SWA via des masques de fenêtre, ce qui atténue ce problème. Mais pour les séquences qui tiennent confortablement en mémoire avec l’attention complète, la SWA n’offre pas de gain pratique. Son avantage se manifeste principalement pour les séquences très longues où le KV cache de l’attention complète dépasserait la mémoire disponible.

Tâches sensibles au contexte global

Les tâches qui nécessitent de raisonner sur l’ensemble du contexte (résumé de long document, Q&A sur un corpus, needle-in-a-haystack) sont pénalisées par la SWA. Si l’information clé se trouve en dehors de la fenêtre courante et qu’aucun mécanisme ne la propage efficacement, le modèle la manque. C’est pourquoi les architectures de production combinent la SWA avec des couches d’attention complète (Gemma 3), des tokens globaux (Longformer), ou des mécanismes d’attention sink (SWAA).

Combinaisons avec d’autres techniques

SWA + GQA. La combinaison la plus courante en production. Mistral 7B utilise les deux : SWA (W = 4096) borne le nombre de tokens dans le cache, et GQA (8 groupes) réduit la taille par token. Les réductions se multiplient : si la SWA réduit de 32x (128K/4K) et GQA de 4x, le gain total est 128x par rapport à l’attention complète MHA.

SWA + attention sinks. StreamingLLM démontre que conserver les tout premiers tokens de la séquence (les « attention sinks ») dans le cache, en plus de la fenêtre récente, stabilise considérablement la qualité de génération pour les séquences infiniment longues. Les tokens intermédiaires sont évincés, mais les sinks et la fenêtre récente suffisent pour une génération fluide.

SWA + couches d’attention complète. L’alternance de couches SWA (efficaces) et de couches d’attention complète (expressives) est l’approche adoptée par Gemma 3 et SWAA. Quelques couches d’attention complète suffisent à capturer les dépendances globales que la SWA seule manquerait.

SWA + RoPE/ALiBi. Les encodages positionnels relatifs comme RoPE et ALiBi sont naturellement compatibles avec la SWA car ils encodent les distances relatives entre tokens plutôt que les positions absolues. SWAT propose même une combinaison équilibrée des deux pour optimiser la compression et la rétention d’information dans le contexte de la SWA.

Quand utiliser la Sliding Window Attention

Utilisez la SWA quand : votre cas d’usage implique des séquences très longues (100K+ tokens) et que la mémoire GPU est un facteur limitant. Les tâches avec des dépendances principalement locales (génération conversationnelle, complétion de code ligne par ligne, streaming de texte) bénéficient le plus de la SWA. C’est également le bon choix pour le serving à haute concurrence, où le KV cache borné permet de multiplier le nombre de requêtes simultanées sur un même GPU.

Préférez l’attention complète quand : vos séquences tiennent confortablement en mémoire, que vos tâches nécessitent du raisonnement global (résumé, Q&A sur document, needle-in-a-haystack), ou que la vitesse brute sur des séquences moyennes (< 32K tokens) est la priorité (l'attention complète + FlashAttention est souvent plus rapide que la SWA à ces longueurs sur du hardware moderne).

Considérez l’approche hybride (Gemma 3, SWAA) quand : vous avez besoin d’efficacité pour les longues séquences tout en préservant la capacité de raisonnement global. L’alternance de couches SWA et d’attention complète est le meilleur compromis identifié à ce jour.

L’avenir de la SWA

La sliding window attention reste un composant pertinent de l’écosystème LLM, mais elle évolue. Plusieurs directions se dessinent :

Fenêtres multi-échelles. L’approche MSWA (Multi-Scale Sliding Window Attention) utilise des fenêtres de tailles différentes selon les couches. Les couches inférieures utilisent des petites fenêtres (patterns locaux), les couches supérieures des fenêtres plus larges (patterns globaux). Cela capture naturellement la hiérarchie des dépendances linguistiques.

PowerAttention. Pour contourner la dilution exponentielle, PowerAttention propose un scaling exponentiel du champ réceptif, où chaque couche voit exponentiellement plus loin que la précédente, contrebalançant l’atténuation des connexions résiduelles.

Convergence avec les SSM. Les State Space Models (Mamba, DeltaNet) et la SWA convergent conceptuellement : les deux limitent le contexte accessible pour gagner en efficacité. SWAT montre qu’une SWA bien conçue (avec sigmoïde au lieu de softmax) rivalise avec les architectures récurrentes linéaires les plus récentes. L’attention hybride de Qwen3-Next, qui mélange couches DeltaNet et attention standard, illustre cette convergence.


Questions fréquentes sur la Sliding Window Attention

La Sliding Window Attention dégrade-t-elle la qualité du modèle ?

Cela dépend de la tâche et de l’implémentation. Pour les tâches avec des dépendances principalement locales (conversation, code), la dégradation est minimale ou nulle. Mistral 7B, qui utilise la SWA, rivalise avec des modèles presque deux fois plus gros sans SWA. Pour les tâches nécessitant un raisonnement global sur de longs documents, la SWA seule peut manquer des informations hors fenêtre. Les approches hybrides (SWA + couches d’attention complète, comme dans Gemma 3) résolvent ce problème en préservant la capacité longue distance aux endroits stratégiques.

Quelle taille de fenêtre choisir ?

Les configurations validées en production sont W = 4096 (Mistral 7B) et W = 8192 (Gemma 3). La fenêtre doit être suffisamment grande pour couvrir les dépendances locales pertinentes pour votre cas d’usage. Pour du code, une fenêtre de 4K tokens couvre généralement une fonction entière et son contexte. Pour de la conversation, 4K à 8K tokens suffisent pour les échanges récents. Pour du traitement de documents longs, envisagez une fenêtre plus grande ou une approche hybride.

La SWA est-elle compatible avec FlashAttention ?

Oui. FlashAttention supporte nativement les masques de fenêtre glissante. Quand la SWA est activée, FlashAttention applique automatiquement le masque de fenêtre pendant le calcul d’attention tiled en SRAM, sans matérialiser la matrice d’attention complète. FlexAttention (PyTorch) permet également de définir des patterns SWA personnalisés via des fonctions mask_mod.

Comment la SWA réduit-elle le KV cache ?

Au lieu de stocker les K et V de tous les n tokens (croissance linéaire avec la séquence), la SWA utilise un rolling buffer de taille fixe W. Les K/V des tokens les plus anciens sont écrasés quand le buffer est plein. La consommation mémoire du KV cache est donc bornée à W tokens, indépendamment de la longueur totale de la séquence. Combinée avec GQA, la réduction peut atteindre 100x+ par rapport à l’attention complète MHA.

Peut-on appliquer la SWA à un modèle déjà entraîné avec attention complète ?

Oui, via des techniques comme SWAA (Sliding Window Attention Adaptation). Les stratégies incluent l’application de la SWA uniquement au prefill, la préservation des tokens « sink », l’alternance de couches FA et SWA, et un fine-tuning léger. Les meilleures combinaisons récupèrent les capacités long-contexte originales avec des speedups de 30 à 100%. Il n’est pas nécessaire de ré-entraîner le modèle from scratch.

Polydesk.ai — Footer