Les grands modèles de langage (LLM) rencontrent des contraintes significatives en raison des limitations de mémoire GPU, principalement parce que chaque requête nécessite un cache clé-valeur (KV) pour les données de token. L'allocation de mémoire traditionnelle réserve un grand bloc basé sur la longueur de séquence maximale, entraînant une mémoire inutilisée substantielle et limitant le nombre de requêtes simultanées. L'attention paginée aborde ce problème en segmentant le cache KV en pages plus petites et flexibles qui sont allouées au besoin, semblable aux systèmes de mémoire virtuelle. Cette méthode permet à plusieurs requêtes avec des invites de départ identiques de partager la mémoire jusqu'à ce que leurs sorties divergent, améliorant ainsi l'efficacité de la mémoire et le débit avec un minimum de surcharge.
Dans notre exploration, nous simulons un allocateur de cache KV basique et mettons en œuvre l'attention paginée en utilisant une table de blocs et un partage de préfixes par copie (CoW). Nous analysons l'utilisation de la mémoire à travers différentes tailles de lots, révélant que les méthodes traditionnelles peuvent gaspiller des ressources GPU significatives. Par exemple, une approche naïve pourrait réserver 1024 Mo par requête mais n'utiliser que 250 Mo, entraînant des inefficacités considérables. En revanche, la conception de l'attention paginée permet une allocation dynamique de la mémoire, améliorant considérablement les performances et l'utilisation des ressources.
