Chapitre 2 — Le défi du cache KV

Publié le: 2026-04-24 Dernière mise à jour le: 2026-07-07 Version: 1
Chapitre 2 — Le défi du cache KV

Chapitre 2 — Le défi du cache KV

Deuxième billet de la tournée chapitre par chapitre de LLM Primer VI : Mettre à l'échelle les systèmes IA. Le chapitre qui nomme la structure de données qui dévore la VRAM de tout système de service avant même que les poids n'aient une chance de le faire.


Pourquoi ce chapitre existe

La boucle autoregressive du Chapitre 1 évite le travail quadratique en se souvenant. À chaque pas de décodage, le modèle doit attendre à chaque token précédent, et le faire depuis zéro reviendrait à rejouer tout le préremplissage à chaque itération — un multiplicateur N sur la longueur de la complétion. Le cache clé-valeur est l'espace de travail qui économise cette arithmétique. Il stocke les projections K et V par token à chaque couche, de sorte que les tokens suivants ne calculent que leurs propres K et V et lisent les précédents en retour. Le cache est la raison pour laquelle le décodage reste à peu près en O(N) plutôt qu'en O(N²). C'est aussi, dans chaque système de production que j'ai examiné, le plus grand consommateur unique de VRAM. Le Chapitre 2 parcourt la formule qui gouverne sa taille, les variantes architecturales qui la rétrécissent, et le problème de fragmentation qui ruine la manière naïve de l'allouer.

En une ligne : le cache KV échange de l'arithmétique contre de la mémoire — et cette mémoire croît avec le batch, la longueur de séquence, les couches, les têtes et la dimension de tête toutes ensemble, ce qui explique pourquoi les clusters de service tombent à court de VRAM avant tout le reste.

2.1 La formule qui gouverne la taille du cache

La mémoire KV pour une séquence vaut 2 × L × H_kv × D × S × octets : deux tenseurs (K et V), L couches, H_kv têtes clé/valeur, dimension de tête D, longueur de séquence S, et octets par élément selon la précision. Multipliez par la taille de batch pour le chiffre à l'échelle du parc. Chaque axe est multiplicatif. Llama-3-70B avec L=80, H_kv=8 (GQA), D=128, à S=8 192 et BF16, retient environ 40 Go de cache par séquence — avant batch. À batch 32, le cache seul frôle 1,3 To, plusieurs fois la taille des poids eux-mêmes et plusieurs fois la VRAM d'un H100. Llama-2-70B, le dernier grand modèle MHA, a H_kv=64 plutôt que 8 et son cache est huit fois plus gros à configuration égale. La formule n'est pas une curiosité ; c'est le chiffre qui détermine combien d'utilisateurs concurrents une puce peut retenir. Tout autre budget mémoire sur la carte — activations, surcoût du framework, tampons temporaires — doit tenir autour.

2.2 MHA, GQA et MQA sont des choix de conception sur la taille du cache

Le terme H_kv est celui que les architectures modernes ont travaillé à réduire. L'attention multi-tête (MHA) utilise une tête K et V par tête de requête ; le cache est gras, la qualité est maximale, et chaque tête peut spécialiser sa notion d'où porter l'attention. L'attention multi-requête (MQA) se réduit à une seule tête K et V partagée ; le cache rétrécit d'un facteur H, mais les têtes perdent leur spécialisation et une baisse de qualité mesurable apparaît sur les contextes longs. L'attention groupée (GQA), introduite en 2023 et devenue le choix dominant pour Llama-3, Mistral, Mixtral, Qwen et DeepSeek, partitionne les têtes de requête en G groupes qui partagent K et V ; un G = H/8 typique livre une réduction de cache d'un facteur huit à un coût de qualité si petit que les suites d'évaluation ne le distinguent pas de manière fiable. GQA n'est pas gratuit — il réduit aussi le nombre de paramètres des projections K/V, et ce budget est redistribué ailleurs dans le modèle — mais empiriquement la redistribution nuit rarement. MLA (attention multi-latente, DeepSeek-V2) pousse plus loin avec un cache latent de rang faible ; c'est la direction de recherche, mais les déploiements de production en 2026 sont dominés par GQA.

2.3 L'allocation naïve gaspille la majeure partie du budget

La manière évidente d'allouer la mémoire KV — réserver une tranche contiguë par séquence, dimensionnée à la longueur maximale possible — échoue au contact du trafic réel. La plupart des requêtes se terminent bien avant le maximum ; la queue réservée est de la mémoire morte. Sur Llama-3-70B avec une limite de 32K, une complétion à 1 000 tokens gaspille la valeur de 31 tranches de cache KV. Un batch 32 avec une limite à 8K et une longueur moyenne de 800 laisse environ 90 pour cent du cache KV réservé inutilisé à tout instant. Pire, la disposition est rigide : une nouvelle arrivée ne peut pas utiliser la queue inutilisée d'une autre séquence, car cette queue est déjà engagée. La concurrence se replie sur ce que permet le budget dans le pire cas, non sur ce que le trafic moyen pourrait soutenir. Le problème est la fragmentation interne — le même mode d'échec que les systèmes d'exploitation ont résolu par la pagination dans les années 1960. Le Chapitre 8 montre comment PagedAttention porte cette solution vers l'inférence.

À retenir : le cache KV — non les poids — est la raison pour laquelle la concurrence d'un cluster de service plafonne. Toute technique qui le rétrécit (GQA, MLA, KV quantifié, fenêtres glissantes, pagination) achète de la concurrence au même rythme qu'elle rachète de la mémoire.

Ce que prépare le Chapitre 2

La formule du cache et ses axes reviendront chaque fois que les chapitres suivants raisonneront sur le nombre d'utilisateurs qui tiennent sur un GPU. Le Chapitre 3 s'en sert pour expliquer pourquoi la capacité VRAM compte plus que les FLOPs au moment de choisir un GPU de service. Le Chapitre 7 s'en sert pour expliquer pourquoi le batching continu est borné par le cache KV, non par le modèle. Le Chapitre 8 s'en sert pour justifier PagedAttention, l'éviction H2O et le cache de préfixe — trois techniques dont l'objet est de faire se comporter le cache davantage comme une mémoire virtuelle paginée que comme une tranche d'octets réservés. La formule est la grammaire des raisonnements sur la mémoire du reste du livre.


Prochaine étape — Chapitre 3 : GPU de centre de données pour l'IA générative. Le silicium qui doit contenir à la fois les poids et le cache KV, lu par le mécanisme plutôt que par la fiche technique.

Vous voulez le tableau complet ? Le chapitre du livre inclut la dérivation complète de la formule KV, le pseudocode d'un pas de décodeur avec cache, un exemple numérique travaillé sur Llama-3-70B à S=8 192 et batch 32, et l'encadré « En clair » qui compare MHA, GQA et MQA à des stratégies de classement documentaire. LLM Primer VI sur Amazon →

SHO
SHO
CTO et Fondateur de RECEIPTROLLER. Axé sur les données, motivé par l'innovation, toujours curieux.