Zubnet AIApprendreWiki › PagedAttention
Infrastructure

PagedAttention

Une technique de gestion de la mémoire pour le KV cache qui emprunte à la mémoire virtuelle des systèmes d'exploitation. Au lieu d'allouer un bloc contigu de mémoire GPU pour le KV cache de chaque requête (ce qui gaspille de la mémoire par fragmentation), PagedAttention stocke le cache dans des blocs non contigus ("pages") qui sont alloués à la demande et peuvent être partagés entre les requêtes avec des préfixes communs.

Pourquoi c'est important

PagedAttention est l'innovation derrière vLLM et est maintenant adopté par la plupart des frameworks de serving LLM. Il a augmenté le débit de serving de 2–4x par rapport aux implémentations naïves en éliminant le gaspillage de mémoire dû à la fragmentation. Sans lui, servir des modèles à contexte long à de nombreux utilisateurs simultanés serait dramatiquement plus coûteux.

En profondeur

Le problème que PagedAttention résout : quand une requête arrive, tu ne sais pas quelle sera la longueur de la réponse, alors tu dois pré-allouer le KV cache pour la longueur maximale possible. Si la longueur max est de 4096 tokens mais la réponse n'en fait que 200, 95% de la mémoire allouée est gaspillée. Multiplie par des centaines de requêtes simultanées et la mémoire GPU se remplit rapidement, limitant le débit.

L'analogie avec la mémoire virtuelle

PagedAttention divise le KV cache en pages de taille fixe (ex : 16 tokens par page). Les pages ne sont allouées qu'au besoin et peuvent être stockées n'importe où en mémoire GPU (non contigu). Une table de pages fait la correspondance entre les positions logiques et les emplacements mémoire physiques, exactement comme la mémoire virtuelle d'un OS. Cela élimine la fragmentation : la mémoire est allouée page par page au fur et à mesure que la réponse grandit, et les pages libérées sont immédiatement disponibles pour de nouvelles requêtes.

Partage de préfixes

Une extension puissante : quand plusieurs requêtes partagent le même préfixe de prompt (courant avec les prompts système partagés), leurs pages de KV cache pour ce préfixe peuvent être physiquement partagées — stockées une seule fois en mémoire mais référencées par toutes les requêtes. C'est la sémantique copy-on-write du design d'OS appliquée au serving de LLM. Pour les applications où de nombreux utilisateurs partagent le même prompt système, cela peut réduire l'utilisation mémoire de 50%+ pour la portion partagée.

Concepts connexes

← Tous les termes
← Ouvert vs. Fermé Paramètres →