Yolo Vision Shenzhen
Shenzhen
Rejoindre maintenant
Glossaire

Cache KV

Découvrez comment KV Cache optimise les modèles Transformer tels que les LLM. Découvrez comment cette technique réduit la latence d'inférence et améliore l'efficacité Ultralytics .

Le cache KV (cache clé-valeur) est une technique d'optimisation essentielle principalement utilisée dans les les grands modèles linguistiques (LLM) et d'autres architectures basées sur Transformer afin d'accélérer la latence d'inférence et réduire les coûts de calcul. À la base, le cache KV stocke les matrices de clés et de valeurs générées par le mécanisme d'attention pour les token précédents dans une séquence. En enregistrant ces calculs intermédiaires, le modèle évite de recalculer les états d'attention pour l'historique complet de la conversation chaque fois qu'il génère un nouveau token. Ce processus transforme le flux de travail de génération de texte d'une opération de complexité quadratique en une opération linéaire, ce qui rend les interactions en temps réel avec les chatbots et les agents IA .

Mécanisme et avantages

Dans un transformateur standard Transformer , la génération du mot suivant nécessite de prêter attention à tous les mots précédents afin de comprendre le contexte. Sans mise en cache, le modèle devrait recalculer les relations mathématiques pour l'ensemble de la séquence à chaque étape. Le cache KV résout ce problème en agissant comme une banque de mémoire.

  • Amélioration de la vitesse : en récupérant les clés et les valeurs précalculées dans la mémoire, le système accélère considérablement le moteur d'inférence. Ceci est essentiel pour les applications nécessitant une faible latence, telles que l' l'inférence en temps réel dans les robots de service à la clientèle.
  • Efficacité des ressources : bien que cela augmente l'utilisation de la mémoire (VRAM), cela réduit considérablement la puissance de calcul (FLOP) requise par jeton. Ce compromis est souvent géré à l'aide de techniques telles que la quantification de modèle ou la pagination, similaires à la manière dont les systèmes d'exploitation gèrent la RAM.
  • Contexte étendu : une gestion efficace du cache KV permet aux modèles de traiter un contexte plus large. fenêtre contextuelle, ce qui leur permet de traiter de longs documents ou de maintenir des conversations cohérentes sur de longues périodes.

Applications concrètes

Le cache KV est un composant fondamental dans le déploiement de l'IA générative moderne, mais ses principes s'étendent également à la vision par ordinateur (CV).

  1. Chatbots génératifs : des services tels que ChatGPT ou Claude s'appuient fortement sur la mise en cache KV. Lorsqu'un utilisateur pose une question complémentaire, le modèle ne relit pas l'historique complet de la conversation depuis le début. Au lieu de cela, il ajoute la nouvelle entrée aux états mis en cache du tour précédent, ce qui permet des réponses quasi instantanées.
  2. Compréhension vidéo : Dans compréhension vidéo , les modèles traitent les images de manière séquentielle. À l'instar des jetons de texte, les caractéristiques visuelles des images précédentes peuvent être mises en cache afin d'aider le modèle track ou à reconnaître les actions sans retraiter l'historique vidéo dans son intégralité. Cela est particulièrement pertinent pour la reconnaissance d'actions où le contexte temporel est crucial.

Gestion efficace de la mémoire

À mesure que les modèles deviennent plus volumineux, la taille du cache KV peut devenir un goulot d'étranglement, consommant des gigaoctets de GPU . Les progrès récents se concentrent sur l'optimisation de ce stockage.

  • PagedAttention : inspiré de la mémoire virtuelle des systèmes d'exploitation, PagedAttention (introduit par vLLM) permet au cache KV d'être stocké dans des blocs de mémoire non contigus. Cela réduit la fragmentation et permet d'utiliser des tailles de lots plus importantes lors du service du modèle.
  • Quantification du cache KV : pour gagner de l'espace, les développeurs appliquent souvent quantification à précision mixte ou int8 spécifiquement aux valeurs mises en cache. Cela réduit l'empreinte mémoire, permettant à l' aux appareils d'IA de pointe disposant d'une RAM limitée d'exécuter des modèles performants.
  • Mise en cache des invites : technique connexe dans laquelle les états KV d'une invite de système statique (par exemple, « Vous êtes un assistant de codage utile ») sont calculés une seule fois et réutilisés dans de nombreuses sessions utilisateur différentes. Il s'agit d'une fonctionnalité essentielle pour optimiser l' l'ingénierie des invites à grande échelle .

Distinguer les concepts apparentés

Il est utile de différencier KV Cache des autres termes liés à la mise en cache et à l'optimisation :

  • Cache KV vs mise en cache instantanée: le cache KV fait généralement référence à la mémoire dynamique, token par token, utilisée pendant un flux de génération unique. La mise en cache instantanée fait spécifiquement référence au stockage de l'état traité d'une instruction d'entrée fixe afin de le réutiliser dans plusieurs appels d'inférence indépendants.
  • Cache KV vs. Embeddings: Les embeddings sont des représentations vectorielles des données d'entrée (texte ou images) qui capturent la signification sémantique. Le cache KV stocke les activations (clés et valeurs) dérivées de ces embeddings dans les couches d'attention, spécifiquement dans le but de générer des séquences.
  • Cache KV vs. Poids du modèle: Les poids du modèle sont les paramètres statiques appris du réseau neuronal. Le cache KV est constitué de données dynamiques et temporaires générées lors du passage en avant d'une séquence d'entrée spécifique.

Exemple : contexte dans les modèles de vision

Si la mise en cache KV est surtout connue dans le domaine du TALN, le concept de maintien d'état s'applique également aux modèles de vision avancés. Dans l' exemple ci-dessous, nous simulons l'idée de transmission d'état (contexte) dans un scénario de suivi vidéo à l'aide d' Ultralytics . Ici, le tracker maintient l'identité des objets d'une image à l'autre, de manière conceptuellement similaire à la façon dont un cache maintient le contexte d'un token à l'autre.

from ultralytics import YOLO

# Load the Ultralytics YOLO26 model
model = YOLO("yolo26n.pt")

# Track objects in a video, maintaining identity state across frames
# The 'track' mode effectively caches object features to link detections
results = model.track(source="https://ultralytics.com/images/bus.jpg", show=False)

# Print the ID of the tracked objects
if results[0].boxes.id is not None:
    print(f"Tracked IDs: {results[0].boxes.id.numpy()}")

Les développeurs qui souhaitent gérer des ensembles de données et déployer des modèles optimisés peuvent utiliser la Ultralytics , qui simplifie le pipeline depuis l'annotation des données jusqu'au déploiement efficace des déploiement des modèles. Pour ceux qui s'intéressent aux mécanismes plus approfondis de l'attention, des bibliothèques telles que PyTorch fournissent les blocs fondamentaux sur lesquels ces mécanismes de mise en cache sont implémentés.

Rejoindre la communauté Ultralytics

Rejoignez le futur de l'IA. Connectez-vous, collaborez et évoluez avec des innovateurs mondiaux.

Rejoindre maintenant