PagedAttention
Découvre comment PagedAttention optimise la gestion de la mémoire des LLM et l’efficacité du cache KV. Explore son impact sur le débit et compare-le aux performances de Ultralytics YOLO26.
PagedAttention est un algorithme de gestion de la mémoire hautement efficace, conçu pour optimiser la vitesse d'inférence et le débit des grands modèles de langage (LLMs). Inspirée des concepts de mémoire virtuelle et de pagination des systèmes d'exploitation traditionnels, cette technique répond à la consommation massive de mémoire associée au cache clé-valeur (souvent appelé cache KV) lors de la génération de texte. En divisant les blocs de mémoire contigus requis par le cache en « pages » plus petites et non contiguës, PagedAttention élimine efficacement la fragmentation interne et externe de la mémoire. Les serveurs d'IA peuvent ainsi traiter simultanément beaucoup plus de requêtes par lots, ce qui maximise l'utilisation du GPU.
PagedAttention ou Flash Attention#
Bien que les deux techniques optimisent les performances des réseaux neuronaux, elles ciblent des goulots d'étranglement différents. Flash Attention est une optimisation au niveau du calcul qui accélère le mécanisme d'attention lui-même en minimisant les lectures et écritures lentes en mémoire dans la hiérarchie du GPU. En revanche, PagedAttention est une stratégie d'allocation de mémoire. Elle se concentre uniquement sur la manière dont la mémoire de la fenêtre de contexte est structurée et stockée, ce qui permet une mise à l'échelle dynamique sans préallouer de grands blocs de mémoire inutilisés.
Applications concrètes#
L'efficacité mémoire permise par PagedAttention a transformé le déploiement en production des modèles génératifs de grande taille.
-
Diffusion d'API à haut débit : les systèmes de production qui servent des modèles similaires à GPT-4 utilisent PagedAttention via des frameworks tels que vLLM. En partageant les blocs de mémoire entre différentes requêtes utilisateur, les fournisseurs peuvent servir jusqu'à quatre fois plus d'utilisateurs avec le même matériel, ce qui réduit considérablement le coût d'exploitation des services d'IA dans le cloud.
-
Stratégies de décodage complexes : lorsqu'un modèle d'IA génère simultanément plusieurs réponses potentielles (par exemple avec la recherche en faisceau ou l'échantillonnage parallèle), PagedAttention permet à ces séquences parallèles de partager en toute sécurité les mêmes pages de mémoire fondamentales. Cela évite au système de dupliquer la mémoire redondante et accélère considérablement les tâches de raisonnement complexes.
Efficacité mémoire en vision par ordinateur#
Bien que PagedAttention soit principalement utilisé en traitement automatique du langage naturel, le principe sous-jacent d'une optimisation stricte de la mémoire est tout aussi essentiel en vision par ordinateur (CV). Lors du déploiement de modèles sur des appareils edge aux ressources matérielles limitées, il est essentiel d'éviter l'encombrement mémoire. Ultralytics YOLO26 atteint nativement une efficacité d'inférence en temps réel, sans nécessiter de gestion lourde du cache grâce à une architecture de bout en bout sans NMS.
Pour les développeurs qui souhaitent gérer facilement les exigences de mémoire et d'exportation des pipelines de détection d'objets, l'Ultralytics Platform propose des outils de déploiement automatisés qui conditionnent les modèles pour une exécution optimale sur le matériel cible.
Exemple de code#
PagedAttention fonctionne en arrière-plan dans les frameworks de service, en remplaçant les fonctions d'attention standard par des noyaux CUDA optimisés. Voici un exemple conceptuel montrant comment définir l'attention standard dans PyTorch ; des systèmes comme vLLM l'interceptent et l'optimisent automatiquement à l'aide de la pagination lors du déploiement du modèle.
import torch
import torch.nn.functional as F
# Simulated Key, Query, and Value tensors for a standard attention block
batch_size, num_heads, sequence_length, head_dim = 1, 8, 1024, 64
query = torch.randn(batch_size, num_heads, sequence_length, head_dim)
key = torch.randn(batch_size, num_heads, sequence_length, head_dim)
value = torch.randn(batch_size, num_heads, sequence_length, head_dim)
# Standard attention computation (often replaced by PagedAttention kernels in production LLM servers)
attention_output = F.scaled_dot_product_attention(query, key, value)
print(f"Computed attention shape: {attention_output.shape}")En exploitant des stratégies avancées d'allocation de mémoire, le secteur de l'IA continue de repousser les limites du possible, en veillant à ce que les modèles fondamentaux massifs puissent être mis à l'échelle et accessibles efficacement dans le monde entier.









