L'attention complète gatée¶
Les 23 couches qui coûtent cher et sans lesquelles rien ne marche.
Leur fonction¶
Les 69 couches DeltaNet compressent l'historique dans un état de taille fixe. C'est efficace, et c'est lossy : un identifiant vu une seule fois, 400 000 jetons plus tôt, ne survit pas à la compression.
Les 23 couches d'attention complète existent pour cela. Elles conservent toutes les clés et toutes les valeurs, et peuvent donc retrouver n'importe quel jeton exactement.
Une couche sur quatre suffit-elle ?
Empiriquement, oui — c'est le consensus de 2026, adopté par Qwen3-Next, Kimi K3 et plusieurs autres. L'intuition est qu'une information récupérée exactement à la couche 4 est ensuite disponible dans le flux résiduel pour les couches 5, 6 et 7, qui n'ont donc pas besoin de la rechercher.
Aucune ablation publiée par Alibaba ne le démontre pour ce modèle.
La configuration¶
"num_attention_heads": 64,
"num_key_value_heads": 4,
"head_dim": 256,
"attn_output_gate": true,
"partial_rotary_factor": 0.25,
"attention_bias": false,
"rope_parameters": { "rope_theta": 10000000, "rope_type": "default" }
Quatre choix méritent chacun un examen.
1. GQA à 16:1¶
64 têtes de requête, 4 têtes clé-valeur. Seize requêtes par couple clé-valeur — un des ratios les plus agressifs de la génération.
| Modèle | Requêtes | Clé-valeur | Ratio |
|---|---|---|---|
| Llama 3 70B | 64 | 8 | 8:1 |
| Qwen3.6-27B | 40 | 8 | 5:1 |
| Qwen3.8-Max | 64 | 4 | 16:1 |
Ce que cela économise, directement :
Sans GQA — 64 têtes clé-valeur — ce serait 65 536 octets par couche et par jeton, soit seize fois plus.
Un ratio agressif a un coût
Partager un couple clé-valeur entre 16 têtes de requête réduit la diversité des représentations disponibles. La littérature situe la dégradation comme faible mais réelle, et croissante avec le ratio.
Qwen compense partiellement en doublant la dimension de tête — voir le point suivant.
2. Une dimension de tête de 256¶
head_dim: 256, contre 128 dans la quasi-totalité des modèles.
Conséquence sur les dimensions internes :
| Projection | Dimensions | Paramètres |
|---|---|---|
| \(Q\) (avec porte, voir point 3) | \(8\,192 \to 32\,768\) | 268,4 M |
| \(K\) | \(8\,192 \to 1\,024\) | 8,4 M |
| \(V\) | \(8\,192 \to 1\,024\) | 8,4 M |
| \(O\) | \(16\,384 \to 8\,192\) | 134,2 M |
| Total | 419,4 M |
Noter la dissymétrie extrême : les projections \(K\) et \(V\) ne représentent que 4 % des paramètres de la couche.
L'arbitrage, en une phrase
Des têtes larges (256) mais peu nombreuses côté clé-valeur (4) donnent une dimension de cache de 1 024 — modeste — tout en offrant à chaque tête un espace de représentation riche.
Un modèle à 8 têtes clé-valeur de dimension 128 aurait la même dimension de cache, mais des têtes deux fois plus étroites. Qwen a choisi la profondeur plutôt que le nombre.
3. La porte de sortie¶
"attn_output_gate": true
Comme dans les couches DeltaNet, la sortie de l'attention est modulée par une porte apprise. En pratique, la projection \(Q\) produit deux fois la dimension attendue : une moitié sert de requêtes, l'autre de porte.
C'est ce qui explique les 268,4 M de la ligne \(Q\) du tableau : \(8\,192 \times 32\,768\) et non \(8\,192 \times 16\,384\).
Le gain : une couche d'attention peut s'annuler pour un jeton donné. Sur 23 couches d'ancrage réparties dans un modèle profond, toutes ne sont pas pertinentes pour chaque jeton, et pouvoir se taire évite d'ajouter du bruit au flux résiduel.
4. Le RoPE partiel¶
"partial_rotary_factor": 0.25,
"rope_theta": 10000000
Ce qu'est RoPE¶
L'attention, telle quelle, ignore l'ordre des jetons : permuter l'entrée donnerait le même résultat. Il faut donc injecter la position.
RoPE (Rotary Position Embedding) le fait en faisant tourner les vecteurs de requête et de clé d'un angle proportionnel à leur position. Deux jetons proches subissent des rotations proches ; leur produit scalaire est peu affecté. Deux jetons éloignés subissent des rotations très différentes.
Pour la paire de dimensions d'indice \(i\), l'angle vaut :
| Symbole | Signification | Valeur |
|---|---|---|
| \(p\) | position du jeton | 0 à 1 010 000 |
| \(\Theta\) | base de RoPE | 10 000 000 |
| \(d\) | dimension soumise à rotation | 64 ici |
| \(i\) | indice de la paire | 0 à 31 |
Pourquoi une base de 10 millions¶
Avec la base historique \(\Theta = 10\,000\), les angles bouclent trop vite : à grande distance, deux positions très différentes reçoivent des rotations presque identiques, et le modèle ne les distingue plus.
Multiplier la base par mille étale les fréquences et rend les positions distinguables sur des centaines de milliers de jetons. C'est la condition nécessaire — pas suffisante — du contexte long.
Pourquoi seulement 25 % des dimensions¶
partial_rotary_factor: 0.25 signifie que la rotation ne s'applique qu'à 64
des 256 dimensions de chaque tête. Les 192 autres passent sans modification.
L'intérêt du RoPE partiel
Les dimensions tournées portent l'information positionnelle ; les dimensions non tournées portent l'information sémantique pure, non dégradée par la rotation.
C'est aussi ce qui facilite l'extension de contexte : lors du passage de 262 144 à 1 010 000 jetons, seules les 64 dimensions tournées doivent être réinterpolées. Les trois quarts du vecteur sont inchangés, ce qui limite la perturbation.
Aucune information sur la méthode d'extension
La carte de modèle annonce 1 010 000 jetons « extensible » sans dire comment. Le chiffre exact — 1 010 000, et non 1 048 576 — correspond précisément à l'extension YaRN documentée sur Qwen3.6-27B, ce qui rend l'hypothèse YaRN très probable.
C'est une déduction de ce rapport, pas une information publiée.
Le décompte¶
| Composant | Paramètres |
|---|---|
| \(W_Q\) avec porte (\(8\,192 \times 32\,768\)) | 268 435 456 |
| \(W_K\) (\(8\,192 \times 1\,024\)) | 8 388 608 |
| \(W_V\) (\(8\,192 \times 1\,024\)) | 8 388 608 |
| \(W_O\) (\(16\,384 \times 8\,192\)) | 134 217 728 |
| normalisations \(q\) et \(k\) | 512 |
| Total par couche | 419 430 912 |
| × 23 couches | 9,65 G |
Une couche d'attention complète est donc moins chère en paramètres qu'une couche DeltaNet (419 M contre 438 M) — mais infiniment plus chère en calcul et en mémoire de cache à contexte long.
Ce que coûtent ces 23 couches¶
| Poste | Valeur |
|---|---|
| Cache par jeton et par couche | 4 096 octets |
| Cache par jeton, 23 couches | 92 KiO |
| Cache à 262 144 jetons | 24,7 Go |
| Cache à 1 010 000 jetons | 95,2 Go |
| Calcul | \(O(n^2)\), 23 fois |
Les 69 couches DeltaNet, elles, coûtent 0,58 Go constants et \(O(n)\).
Tout le rapport tient dans cette comparaison. Détail : Contexte 262 K et 1 M.
À retenir¶
Ce chapitre en cinq points
- Les 23 couches d'attention complète fournissent le rappel exact que l'attention linéaire ne peut pas garantir.
- Le GQA à 16:1 divise par 16 la mémoire de cache, au prix d'une diversité de représentation réduite.
- La dimension de tête de 256 compense partiellement : têtes larges et peu nombreuses plutôt qu'étroites et nombreuses.
- La porte de sortie permet à une couche de s'annuler ; elle double le coût de la projection \(Q\).
- Le RoPE partiel à 25 % avec une base de 10⁷ sépare information positionnelle et sémantique, et facilite l'extension à 1 M de jetons.
Chapitre suivant : Le MoE à 513 experts — où se trouvent 98 % des paramètres.