Architecture & Analyse Mémoire
Qu'est-ce que le Cache KV ? Calcul, Formules & Dimensionnement VRAM
Comprenez comment la mise en cache des Clés et Valeurs accélère la génération de texte, pourquoi elle sature la mémoire sur les longs contextes et comment la réduire de 50% à 75%.
Interactive KV Cache Calculator
See how architecture, context tokens, and precision dictate real GPU memory consumption.
32 layers · 32 query heads · 8 KV heads (4:1 GQA group)
Multi-user servers (like vLLM) multiply the KV cache by active parallel requests.
Formula: 2 (Keys + Values) × 32 layers × 8 KV heads × 128 head dim × 32,768 tokens × 2 bytes
Because this model uses GQA (8:1 ratio), this KV cache is 4x smaller than it would be with legacy MHA (which would have required 16.0 GiB).
1. Pourquoi la Génération Autorégressive Requiert un Cache KV
Dans un modèle transformer, les tokens sont générés les uns après les autres. Pour produire le token N, le réseau doit calculer l'attention sur tous les tokens précédents. Sans cache KV, les vecteurs de clés et valeurs de tout le texte devraient être recalculés à chaque étape, entraînant un coût quadratique en O(N²).
En conservant ces vecteurs en VRAM, la charge de calcul reste linéaire en O(N) par token. Mais ce compromis consomme de la mémoire vive : chaque nouveau mot ajouté au contexte fait grossir le cache jusqu'à la fin de la réponse.
2. La Formule Mathématique Exacte
Le facteur 2 représente la paire Clés (Keys) et Valeurs (Values). n_couches est le nombre de couches, n_tetes_kv le nombre de têtes KV, dim_tete la dimension d'attention et long_seq la longueur de contexte en tokens.
Exemple : Llama 3 8B avec GQA (8 têtes KV, dimension 128, 32 couches) à 16k tokens de contexte en précision FP16 (2 octets) consomme : 2 x 32 x 8 x 128 x 16 384 x 1 x 2 = 2,15 Go de VRAM par requête.
3. Évolution des Architectures : MHA vs GQA vs MLA
4. Comment Quantifier le Cache KV (50% à 75% d'Économie)
Par défaut, les moteurs d'inférence allouent le cache en FP16 (2 octets par valeur). En quantifiant le cache en FP8 (1 octet) ou INT4 (0,5 octet), vous divisez immédiatement par deux ou par quatre la mémoire nécessaire sans toucher aux poids du modèle.
Sous vLLM, ajoutez l'option --kv-cache-dtype fp8. Avec llama.cpp, utilisez les paramètres -ctk q8_0 -ctv q8_0 ou -ctk q4_0 -ctv q4_0 pour traiter de longs documents sans encombre.
Foire Aux Questions
Le serveur d'inférence s'arrête brutalement avec une erreur CUDA Out of Memory (OOM), ou tronque les premiers messages de la discussion si un mécanisme de fenêtre glissante est actif. Conserver une marge de sécurité en VRAM est capital.
Elle dépend de la longueur cumulée de la séquence (consigne initiale plus texte généré). Un prompt de 20 000 tokens avec 2 000 tokens de réponse consomme rigoureusement la même mémoire qu'un prompt de 2 000 tokens avec 20 000 de réponse.
Non. Les benchmarks approfondis confirment que la quantification FP8 du cache n'entraîne aucune baisse mesurable de cohérence logique, tout en libérant de précieux gigaoctets de mémoire pour étendre la conversation.
De manière rigoureusement linéaire. Si 4 utilisateurs génèrent du texte en parallèle avec 8k tokens de contexte, la mémoire consommée par le cache est multipliée par 4. Des moteurs comme vLLM intègrent PagedAttention pour éviter tout gaspillage mémoire.
MLA compresse les vecteurs de clés et de valeurs dans un espace vectoriel réduit avant de les stocker, diminuant l'empreinte mémoire jusqu'à 93% par rapport à l'attention classique MHA. C'est ce qui permet aux modèles DeepSeek de traiter 128k tokens avec une grande sobriété matérielle.
Estimez précisément votre besoin en cache KV
Utilisez notre Calculateur VRAM interactif pour simuler différents contextes et volumes de requêtes sur des centaines de modèles.
Knowledge & Deep Dives
Centre de Connaissances VRAM & LLM Locaux
Guides approfondis, analyses architecturales et manuels de dimensionnement matériel pour déployer et exécuter vos modèles d'IA en local sans mauvaise surprise.