Sobes.tech
Senior

Comment réduire la taille du cache KV (GQA, MQA, fenêtre glissante) ?

sobes.tech IA

Réponse de l'IA

Le cache KV (Key-Value) dans le contexte des modèles avec GQA (Grouped Query Attention), MQA (Multi-Query Attention) et la fenêtre glissante est utilisé pour stocker les clés et valeurs d’attention intermédiaires, afin d’accélérer la génération de texte. Pour réduire la taille du cache KV, on peut appliquer les approches suivantes :

  • Fenêtre glissante : ne stocker dans le cache que les N derniers tokens, plutôt que toute l’histoire. Cela limite la taille du cache et réduit la consommation de mémoire.
  • MQA au lieu de GQA : MQA utilise une seule clé et une seule valeur pour toutes les têtes d’attention, ce qui réduit considérablement la taille du cache par rapport à GQA, où chaque tête a sa propre clé et valeur.
  • Quantification du cache KV : stocker les clés et valeurs sous une forme compressée, par exemple avec une précision réduite (float16, int8), pour diminuer la quantité de mémoire.
  • Suppression des éléments non pertinents : nettoyer ou compresser périodiquement le cache, en supprimant les éléments obsolètes ou moins importants.

Exemple d’utilisation de la fenêtre glissante :

window_size = 512  # nombre de tokens dans le cache
kv_cache = kv_cache[-window_size:]

En combinant ces méthodes, il est possible de réduire efficacement la taille du cache KV sans perte significative de la qualité de la génération.