KV-кеш (Key-Value Cache)
Оптимізація пам'яті в моделях Transformer, яка зберігає вектори ключів і значень (Keys and Values) уже оброблених токенів у швидкій пам'яті GPU. Дозволяє генерувати кожне наступне слово миттєво, але стрімко росте в розмірі з кожним новим повідомленням у чаті.
1. Aperçu du concept et de sa finalité
Lorsque vous interagissez avec un modèle de langage, deux phénomènes se manifestent :
- Le modèle génère des mots à une vitesse stable (par exemple, 40 mots par seconde). Il ne ralentit pas vers la fin d'une réponse longue.
- Cependant, si le dialogue dure depuis une heure et que l'historique des messages devient très volumineux, l'application affiche soudainement une erreur : « Out of Memory » (mémoire vidéo saturée).
Ces deux phénomènes sont régis par un même mécanisme : le KV-cache (Key-Value Cache).
D'un point de vue pratique, il s'agit d'un carnet de mémoire à court terme pour l'IA : afin d'éviter de relire toute la conversation précédente depuis le début pour chaque nouveau mot, le modèle conserve les résultats mathématiques des tokens déjà traités dans un tampon ultra-rapide de la mémoire GPU.
2. Comment le KV-cache préserve la vitesse de génération
SANS CACHE KV (Ralentissement catastrophique) :
Génération du mot 1 ➔ Calcul du mot 1 (1 opération)
Génération du mot 2 ➔ Recalcul des mots 1 et 2 (2 opérations)
Génération du mot 100 ➔ Recalcul complet de tous les 100 mots (100 opérations !)
... La vitesse chute presque à zéro !
─────────────────────────────────────────────────────────────
AVEC LE CACHE KV (Vitesse éclair constante) :
Les mots 1..99 sont déjà calculés et stockés dans le cache KV de la mémoire vidéo !
Génération du mot 100 ➔ Calcul d’UN SEUL nouveau jeton !
⚡ La vitesse reste identiquement élevée, du premier au dernier mot.
3. Pourquoi la mémoire libre du GPU fond comme neige au soleil
De nombreux utilisateurs s'étonnent :
- « Le modèle pèse 5 Go, ma carte graphique dispose de 8 Go. Pourquoi plante-t-elle après l'ingestion d'un gros fichier PDF ? »
Parce que ces 3 Go de marge sont instantanément occupés par le KV-cache :
- Chaque token du contexte nécessite le stockage des vecteurs Key et Value dans chaque couche du transformer.
- Si vous traitez un document long de 32 000 tokens, la taille de cette table en mémoire peut dépasser le poids du modèle lui-même !
4. Conclusion pratique
Si votre application de chat local plante faute de mémoire, vous n'êtes pas obligé de passer à un modèle moins performant : il suffit souvent de limiter la taille de la fenêtre contextuelle (par exemple, de 32k à 8k tokens) ou de purger l'historique de l'ancienne session, libérant ainsi le KV-cache.
FAQ: KV-кеш (Key-Value Cache)
Termes associés
Taille de la fenêtre contextuelle (Mémoire de la conversation en cours)
Volume maximal de texte (en jetons) qu'un modèle linguistique peut conserver simultanément en mémoire lors d'une conversation en cours. Détermine la longueur des documents pouvant être téléchargés en une seule fois sans perte de contenu.
Mémoire vidéo (VRAM) pour l'IA
La mémoire vidéo (Video RAM) du processeur graphique, dans laquelle sont chargés les poids des réseaux de neurones et la fenêtre de contexte. C'est le principal goulot d'étranglement matériel : si un modèle ne tient pas dans la VRAM, il ne démarrera pas ou fonctionnera dix fois plus lentement sur un processeur standard.
Streaming de texte via SSE (Effet machine à écrire)
Technologie permettant la transmission des tokens générés au navigateur en temps réel via le protocole Server-Sent Events (SSE). Elle crée un effet machine à écrire, éliminant l'attente désagréable jusqu'à la fin complète de la réponse.