P

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

Attention (mécanisme)TransformerFenêtre de contextePrompt Caching

FAQ

Quelle est la différence entre le KV Cache et le prompt caching ?
Le KV Cache est un mécanisme interne au modèle qui stocke les clés et valeurs d'attention pendant la génération d'une seule réponse. Le prompt caching est une optimisation au niveau de l'infrastructure qui réutilise le KV Cache du préfixe commun entre plusieurs requêtes successives, évitant de recalculer le prefill quand le début du prompt est identique.
Pourquoi le premier token est-il plus lent que les suivants ?
Le premier token nécessite la phase de prefill : le modèle doit traiter l'intégralité du prompt d'entrée et calculer tous les vecteurs K et V pour chaque token du contexte. Une fois ce KV Cache construit, chaque token suivant ne nécessite qu'un calcul incrémental, ce qui est beaucoup plus rapide. C'est la distinction classique entre le Time to First Token (TTFT) et le débit inter-tokens.
Le KV Cache a-t-il un impact sur la qualité des réponses ?
Non, le KV Cache est une optimisation purement computationnelle. Il produit des résultats mathématiquement identiques à un recalcul complet à chaque étape. En revanche, certaines techniques de compression du cache (comme la quantification en int8 ou l'éviction de tokens anciens) peuvent introduire de légères approximations, mais elles sont généralement imperceptibles en pratique.

Voir aussi

Recevez de nouveaux prompts chaque semaine

Rejoignez notre newsletter.