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%.
Calculateur Interactif de Mémoire Cache KV
Ajustez la taille du contexte, le lot de requêtes et l'architecture d'attention pour observer la consommation de VRAM en temps réel.
32 couches · 32 têtes de requête · 8 têtes KV (Groupe GQA 4:1)
Les serveurs multi-utilisateurs (ex. vLLM) multiplient le cache KV par les requêtes parallèles actives.
Formule : 2 (Clés + Valeurs) × 32 couches × 8 têtes KV × 128 dimension de tête × 32,768 tokens × 2 octets
Grâce à l'architecture GQA (ratio 8:1), ce cache KV est 4x plus compact qu'avec l'ancienne architecture MHA (qui aurait nécessité 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
Que se passe-t-il lorsque le cache KV sature la VRAM restante ?
La taille du cache KV dépend-elle de la consigne ou de la réponse ?
La quantification du cache KV en FP8 dégrade-t-elle les modèles de raisonnement comme DeepSeek-R1 ?
Comment le cache KV évolue-t-il avec plusieurs utilisateurs simultanés ?
Pourquoi l'architecture MLA de DeepSeek est-elle si performante pour les longs contextes ?
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.
Connaissances & analyses approfondies
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.