Cache KV
Une mémoire qui stocke les clés et valeurs d'attention de chaque token déjà traité, pour éviter de les recalculer à chaque nouveau token de sortie. Elle vit en VRAM et grossit avec la longueur du contexte et la concurrence.
Ce que c'est
Pour générer le token N, un modèle regarde les tokens 1..N-1. Sans cache, il retraiterait toute la séquence à chaque étape. Le cache KV garde les tenseurs clés/valeurs de ces tokens en VRAM, donc chaque nouveau token ne demande qu'une passe sur lui-même.
Pourquoi c'est important
Le cache KV rend le decode rapide, mais c'est aussi ce qui se dispute la VRAM avec les poids du modèle. Sa taille est ~2 x couches x dim_cachée x tokens_contexte x octets par séquence - donc linéaire avec la longueur de contexte et le nombre de requêtes simultanées.
Impact coût & infrastructure
Sur un modèle self-hosté, le cache KV fixe combien d'utilisateurs tu sers en parallèle sur un GPU donné. Long contexte + forte concurrence peuvent saturer la VRAM avant le calcul, forçant un GPU plus gros (plus cher) ou du multi-GPU.
La quantization du cache KV, la paged attention et la grouped-query attention existent justement pour réduire cette empreinte.
Exemple
Pour un modèle 70B, le cache KV peut peser ~0,3-0,5 Go par 1K tokens de contexte par requête. Servir 20 utilisateurs simultanés à 16K de contexte = ~100-160 Go - plus qu'un seul H100 80 Go ne contient avec les poids.
Concepts liés
Sur Obolith
FAQ
Le cache KV est-il la même chose que le cache de prompt ?
Non. Le cache KV est de la mémoire GPU transitoire, au sein d'une requête. Le cache de prompt est une fonctionnalité de facturation qui réutilise un préfixe calculé entre plusieurs appels d'API.