KV Cache : Définition et Exemples
Le KV Cache (Key-Value Cache) est un mécanisme d'optimisation utilisé par les modèles de langage (LLM) pour stocker les clés et valeurs des couches d'attention déjà calculées, évitant ainsi de les recalculer à chaque nouveau token généré.
Définition complète
Le KV Cache, ou cache clé-valeur, est une technique d'optimisation fondamentale dans le fonctionnement des grands modèles de langage basés sur l'architecture Transformer. Lors de la génération de texte, le mécanisme d'attention doit calculer des vecteurs de clés (Keys) et de valeurs (Values) pour chaque token de la séquence. Sans cache, ces calculs seraient répétés intégralement à chaque nouveau token produit, ce qui serait extrêmement coûteux en ressources.
Le principe du KV Cache est simple : une fois qu'un token a été traité, ses vecteurs de clés et de valeurs sont stockés en mémoire. Quand le modèle génère le token suivant, il n'a besoin de calculer les K et V que pour ce nouveau token, puis les combine avec les valeurs déjà en cache. Cela transforme une opération quadratique en opération quasi-linéaire, accélérant considérablement la génération.
En pratique, le KV Cache est ce qui détermine la quantité de mémoire GPU nécessaire pour servir un modèle. Pour un modèle comme GPT-4 ou Claude, le cache peut consommer plusieurs gigaoctets de VRAM par requête, surtout avec de longs contextes. C'est pourquoi des techniques comme le Multi-Query Attention (MQA), le Grouped-Query Attention (GQA) ou la quantification du cache ont été développées pour réduire cette empreinte mémoire.
Pour l'utilisateur final, le KV Cache explique pourquoi le premier token d'une réponse est plus lent à apparaître (phase de "prefill" où tout le prompt est traité) alors que les tokens suivants arrivent beaucoup plus rapidement (phase de "decode" où le cache est réutilisé). C'est aussi la raison pour laquelle les requêtes avec de très longs contextes coûtent plus cher et sont plus lentes.
Étymologie
Le terme combine "KV" pour Key-Value (clé-valeur), issu du mécanisme d'attention des Transformers qui projette les embeddings en trois vecteurs — Query, Key et Value — et "Cache", emprunté à l'informatique où il désigne une mémoire rapide stockant des données fréquemment utilisées pour éviter de les recalculer.
Exemples concrets
Optimisation d'inférence — Comprendre pourquoi une longue conversation ralentit
Si tu remarques que ton chatbot IA devient plus lent au fil de la conversation, c'est parce que le KV Cache grossit avec chaque message échangé. Réduire la longueur du contexte envoyé ou résumer les échanges précédents peut aider.
Déploiement de modèles — Dimensionner l'infrastructure GPU
Pour estimer la VRAM nécessaire au KV Cache : taille_cache = 2 × nombre_couches × taille_hidden × longueur_séquence × précision_octets × batch_size. Un Llama 70B en fp16 avec 4096 tokens de contexte consomme environ 2,5 Go de KV Cache par requête.
Prompt engineering — Structurer ses prompts pour optimiser les coûts
Place les instructions système et le contexte statique en début de prompt. Le KV Cache du prefill est réutilisé entre les requêtes successives par certains fournisseurs (prompt caching), ce qui réduit la latence et le coût si le début du prompt reste identique.
Usage pratique
En prompt engineering, comprendre le KV Cache permet d'optimiser ses prompts pour la vitesse et le coût. Placez le contenu statique (instructions système, few-shot examples) en début de prompt pour bénéficier du prompt caching proposé par des fournisseurs comme Anthropic ou OpenAI. Gardez aussi à l'esprit que des contextes très longs augmentent la consommation mémoire et la latence, donc résumez ou tronquez les conversations longues quand c'est possible.
Concepts liés
FAQ
Quelle est la différence entre le KV Cache et le prompt caching ?
Pourquoi le premier token est-il plus lent que les suivants ?
Le KV Cache a-t-il un impact sur la qualité des réponses ?
Voir aussi
Recevez de nouveaux prompts chaque semaine
Rejoignez notre newsletter.