HeadlinesBriefing favicon HeadlinesBriefing.com

Pourquoi les serveurs d'inférence LLM manquent de VRAM

Towards Data Science •
×

Les poids d'un modèle de taille moyenne tiennent confortablement, mais le trafic concurrent a déclenché des erreurs CUDA out-of-memory tandis que l'utilisation du GPU restait faible. Le cache clé-valeur, et non la taille du modèle, a consommé l'espace disponible. Avant d'ajouter un GPU, l'auteur a activé l'allocation paginée et la mise en cache des préfixes, augmentant la limite et révélant un problème de disposition de la mémoire.

Les piles de service naïves réservent un bloc contigu par requête pour la longueur maximale de séquence. Une requête produisant 200 tokens contre une réservation de 4 096 tokens laisse la plupart inutilisée. Une analyse de v LLM a révélé que la gestion naïve du cache KV gaspille de 60 à 80 pour cent de la mémoire réservée. Le cache augmente avec les requêtes concurrentes, donc les pics de trafic — et non des prompts plus longs — poussent les serveurs au-delà de la limite de mémoire.

La mémoire GPU est partagée entre les poids fixes du modèle, les activations transitoires et le cache KV variable. Chaque token coûte environ 320 Ko pour Llama 3.1 70B en BF16, avec 80 couches, 8 têtes clé/valeur et une dimension de tête de 128. L'attention par requête groupée réduit le nombre de têtes clé/valeur et la taille du cache.

Avec 128 requêtes concurrentes maintenant des contextes de 4K tokens, le cache seul nécessite environ 160 Go. Les poids de 70B nécessitent 140 Go en BF16, donc le cache peut dépasser le modèle. v LLM réserve le cache comme le nombre maximal de séquences concurrentes multiplié par la longueur maximale de séquence ; augmenter l'un ou l'autre multiplie la réserve et peut déclencher un OOM au démarrage.

Entités clés : Entreprises : NVIDIA, Towards Data Science

FAQ : Pourquoi un serveur d'inférence peut-il renvoyer des erreurs CUDA de mémoire insuffisante alors que l'utilisation du calcul GPU reste faible ?

Parce que le cache KV augmente avec les requêtes concurrentes et la longueur de séquence. Les poids peuvent tenir, mais le cache pré-alloué peut consommer la VRAM restante avant que le GPU n'atteigne la saturation de calcul.

FAQ Q : Pourquoi un serveur d'inférence peut-il renvoyer des erreurs CUDA de mémoire insuffisante alors que l'utilisation du calcul GPU reste faible ?

FAQ A : Parce que le cache KV augmente avec les requêtes concurrentes et la longueur de séquence. Les poids peuvent tenir, mais le cache pré-alloué peut consommer la VRAM restante avant que le GPU n'atteigne la saturation de calcul。