Hugging Face accélère de 22 % l'inférence des LLM grâce au batching asynchrone

Hugging Face a introduit l'asynchronisme dans l'inférence des LLM. Au lieu de travailler à tour de rôle, le CPU et le GPU fonctionnent désormais en parallèle : pendant que le GPU calcule un lot, le CPU prépare le suivant. Résultat : une accélération de 22 %. Aucun nouveau noyau n'a été écrit. Le changement consiste à réorganiser les flux (streams) CUDA et la mémoire.

Traité par IA depuis Hugging Face Blog ; édité par Hamidun News
Hugging Face accélère de 22 % l'inférence des LLM grâce au batching asynchrone
Source : Hugging Face Blog. Collage: Hamidun News.
Écouter l'article
Fiche synthèse et chiffres clés
ParamètreDonnées
Source primaireHugging Face Blog ↗
Rédacteur en chef
Chiffre clé #1Le flux H2D signale que les données sont chargées dans le GPU
Chiffre clé #2Le flux Compute attend cette balise, calcule, puis pose la sienne
Chiffre clé #3Le flux D2H attend la fin des calculs et récupère les résultats

Hugging Face a trouvé un moyen simple d'accélérer de 22 % la génération de tokens dans les LLM : faire travailler le CPU et le GPU en même temps plutôt que de les laisser s'attendre l'un l'autre. Cela ne nécessite ni réentraînement des modèles ni nouveaux algorithmes.

Quel était le problème

Dans le batching synchrone classique, le CPU prépare les données, puis le GPU les calcule, puis le CPU attend les résultats et prépare le lot suivant. Le GPU reste donc inactif environ 24 % du temps, pendant que le CPU s'occupe du prétraitement. C'est comme une chaîne de montage où, à chaque étape, quelqu'un regarde sa montre. Même à pleine charge, le CPU est plus lent que le calcul GPU le plus simple : la carte graphique reste donc à attendre de nouvelles données.

En batching synchrone, un modèle de 8 milliards de paramètres avec un lot de 32 générait 8K tokens en 300 secondes, avec une activité du GPU de seulement 76 %.

Comment l'asynchronisme résout le problème

L'idée est très simple : exécuter CPU et GPU en parallèle via des flux CUDA (streams). Trois flux indépendants sont utilisés : un pour transférer les données vers le GPU (H2D), un pour les calculs eux-mêmes (Compute) et un pour le transfert retour (D2H). Chaque flux rend aussitôt la main au CPU, sans le bloquer.

Des événements CUDA (events) sont placés entre les flux. Ces balises garantissent le bon ordre :

  • Le flux H2D signale que les données sont chargées dans le GPU
  • Le flux Compute attend cette balise, calcule, puis pose la sienne
  • Le flux D2H attend la fin des calculs et récupère les résultats

Pendant que le GPU traite le lot N, le CPU prépare déjà le lot N+1 dans un autre tampon mémoire. Aucune attente : les deux tournent en parallèle.

L'astuce principale : le carry-over

La difficulté vient du fait que, lorsqu'une requête s'étend sur plusieurs lots, ses tokens de sortie du lot N deviennent l'entrée du lot N+1. Hugging Face a résolu ce problème avec des placeholders : lors de la préparation du lot N+1, des zéros sont placés à la place des entrées des tokens futurs, puis remplacés par les vraies valeurs quand le lot N se termine.

«

Cela permet au CPU de préparer le lot suivant sans attendre les résultats du lot en cours », expliquent les équipes de Hugging Face.

L'ensemble repose sur des graphes CUDA avec un pool de mémoire partagé, ce qui économise même de la mémoire vidéo.

Les chiffres parlent d'eux-mêmes

Avant l'optimisation : GPU actif à 76 %, génération de 8K tokens en 300.6 secondes. Après : GPU actif à 99.4 %, les mêmes tokens en 234.5 secondes. L'accélération de 22 % est proche de la limite pour cette architecture (le maximum théorique était de 24 %).

Ce que cela signifie

Il n'est pas nécessaire d'acheter des GPU plus coûteux ni de réentraîner les modèles pour obtenir un gain de vitesse significatif. Le code est déjà dans la bibliothèque Transformers, dans la classe `ContinuousBatchingAsyncIOs`. Pour les entreprises qui génèrent beaucoup de tokens, cela peut représenter des millions d'économies en matériel.

Dossier

Questions clés sur cet article

Que sait-on sur Quel était le problème ?

Dans le batching synchrone classique, le CPU prépare les données, puis le GPU les calcule, puis le CPU attend les résultats et prépare le lot suivant. Le GPU reste donc inactif environ 24 % du temps, pendant que le CPU s'occupe du prétraitement. C'est comme une chaîne de montage où, à chaque étape, quelqu'un regarde sa montre. Même à pleine charge, le CPU est plus lent que le calcul GPU le plus simple : la carte graphique reste donc à attendre de nouvelles données. En batching synchrone, un modèle de 8 milliards de paramètres avec un lot de 32 générait 8K tokens en 300 seco

Comment l'asynchronisme résout le problème?

L'idée est très simple : exécuter CPU et GPU en parallèle via des flux CUDA (streams). Trois flux indépendants sont utilisés : un pour transférer les données vers le GPU (H2D), un pour les calculs eux-mêmes (Compute) et un pour le transfert retour (D2H). Chaque flux rend aussitôt la main au CPU, sans le bloquer. Des événements CUDA (events) sont placés entre les flux. Ces balises garantissent le bon ordre : Le flux H2D signale que les données sont chargées dans le GPU Le flux Compute attend cette balise, calcule, puis pose la sienne Le flux D2H attend la fin des calculs et

Que sait-on sur L'astuce principale : le carry-over ?

La difficulté vient du fait que, lorsqu'une requête s'étend sur plusieurs lots, ses tokens de sortie du lot N deviennent l'entrée du lot N+1. Hugging Face a résolu ce problème avec des placeholders : lors de la préparation du lot N+1, des zéros sont placés à la place des entrées des tokens futurs, puis remplacés par les vraies valeurs quand le lot N se termine. « Cela permet au CPU de préparer le lot suivant sans attendre les résultats du lot en cours », expliquent les équipes de Hugging Face. L'ensemble repose sur des graphes CUDA avec un pool de mémoire partagé, ce qui éc

ZK
Zhemal Khamidun — CPO d'Alpina Digital, product manager d'AlpinaGPT. Conçoit des produits IA depuis 2019. Hamidun News est un projet personnel devenu un agrégateur en production avec plus de 6 000 lecteurs.
✦ Unified AI Workspace · Nomad

Test Frontier LLMs & Autonomous Agents in One Workspace

Run Claude Opus 5.5, GPT-6, Gemini 3.1, and DeepSeek side-by-side in Nomad AI (nomadnet.ai) — unified model routing, deep research, and multimodal workflows under one subscription.

Try Nomad AI →Launch Nomad Agent
Qu'en pensez-vous ?
Chargement des commentaires…