Évolution de l'Attention et Compression du KV Cache
Lors de l'inférence des modèles de langage autorégressifs, la phase de décodage de l'attention est strictement limitée par la bande passante mémoire. En contexte long, le KV Cache croît linéairement avec la séquence et dépasse rapidement la taille des poids statiques du modèle.
1. Panorama architectural : de MHA à GQA et MLA
2. Comparaison des coûts mémoire et de calcul
Pour une dimension cachée , têtes, , couches et une séquence :
2.1 Multi-Head Attention (MHA)
Le MHA standard alloue des têtes Key et Value indépendantes pour chaque tête Query :
- Goulot d'étranglement : Avec et , le KV Cache d'une seule requête dépasse 50 Go.
2.2 Grouped-Query Attention (GQA)
Le GQA regroupe têtes Query pour partager têtes Key/Value (généralement ) :
- Compromis : Compression fixe de (–), avec une légère perte d'expressivité dans les contextes denses.
3. Architecture DeepSeek MLA (Multi-Head Latent Attention)
Le MLA introduit une compression conjointe de bas rang, réduisant le KV Cache de plus de 93 % tout en préservant l'expressivité multi-têtes complète.
3.1 Projection de bas rang et vecteur latent
Au lieu de stocker toutes les têtes Key et Value, l'état caché est projeté dans un espace latent () :
- Absorption matricielle : En VRAM, seul le vecteur latent est conservé. Les matrices et sont absorbées directement dans les matrices de Query, évitant de matérialiser le Value Cache en mémoire.
3.2 Decoupled RoPE
Les encodages positionnels rotatifs (RoPE) ne pouvant être absorbés dans une projection statique, une tête dédiée transporte les coordonnées positionnelles :
| Architecture | Cache KV par Token et par Couche (fp16) | Empreinte Relative | Expressivité |
|---|---|---|---|
| MHA | (Référence) | Têtes totalement indépendantes | |
| GQA () | Multi-têtes contraint par groupe | ||
| DeepSeek MLA | (-98.2%) | Multi-têtes intégral |
4. Attention éparse : SnapKV et PyramidKV
4.1 SnapKV : Fenêtre d'observation
- SnapKV observe que les têtes d'attention se concentrent sur des empreintes stables. Une petite fenêtre d'observation en fin de prompt suffit pour identifier et évincer 80 % des jetons historiques inactifs avec une dégradation quasi nulle de perplexité ().
4.2 PyramidKV : Allocation hiérarchique
- Les couches profondes du Transformer nécessitent moins de jetons historiques que les couches superficielles. PyramidKV réduit l'allocation du KV Cache de manière pyramidale, abaissant l'empreinte VRAM de 50 % à 70 %.
5. Recommandations d'ingénierie
- Serveurs haute cadence et contextes 100k+ : Privilégier les modèles à architecture MLA native (DeepSeek-V3 / DeepSeek-R1).
- Inférence locale sur GPU unique : Sur modèles GQA (Qwen, Llama), utiliser SnapKV ou la quantification 4-bit du KV Cache pour ramener 64k jetons de 16 Go à moins de 4 Go.