Traitement par lots continu
Le traitement par lots continu est une technique de service qui ajoute et supprime des demandes d'un lot en cours d'exécution, jeton par jeton, au lieu d'attendre la fin d'un lot fixe entier.
Aperçu
It keeps the GPU constantly busy and sharply increases how many users an AI model can serve at once.
Plongée profonde
Les GPU sont les plus rapides lorsqu’ils traitent plusieurs requêtes ensemble par lots. L'approche naïve, le traitement par lots statique, regroupe un ensemble fixe de requêtes, les exécute toutes jusqu'à leur achèvement, puis démarre le lot suivant. Le problème : la longueur des sorties du modèle de langage varie énormément, de sorte que les requêtes courtes se terminent plus tôt et leurs emplacements restent inactifs pendant que le lot attend la plus longue, gaspillant les cycles GPU et retardant les nouveaux arrivants. Le traitement par lots continu (également appelé traitement par lots en vol ou au niveau itération, popularisé par l'article Orca et utilisé dans vLLM, TensorRT-LLM et TGI) fonctionne à la granularité d'une seule étape de décodage. Une fois chaque jeton généré, les séquences terminées quittent le lot et les demandes fraîchement arrivées sont immédiatement intégrées. Cela maintient le lot plein et le GPU saturé, augmentant souvent le débit plusieurs fois avec une latence plus faible pour les utilisateurs en attente.
Aperçu technique
Le changement clé consiste à passer du regroupement de requêtes entières au regroupement d’itérations individuelles. À chaque étape de décodage, le planificateur construit l'ensemble actif : il exécute une passe avant sur toutes les séquences en vol, émet un jeton chacune, expulse celles qui atteignent un jeton de fin de séquence ou une limite de longueur, et admet les demandes en file d'attente pour remplir les emplacements libérés. L'association à cela avec la mémoire KV flexible de PagedAttention rend l'insertion et la suppression de séquences en cours de vol peu coûteuses, puisque le cache de chaque séquence réside dans des blocs indépendants.
Impact stratégique
Coût et budget
Les décisions en matière d'architecture déterminent les performances et les coûts d'exploitation pendant des années.
Décisions plus claires
La formation technique aide les équipes à choisir la bonne pile, pas seulement la plus récente.
Contrôle qualité
De meilleurs choix d’ingénierie réduisent les incidents de fiabilité en production.
L'avenir du traitement par lots continu
Le traitement par lots continu est désormais la norme dans le service LLM de production. Les travaux futurs affinent le planificateur : séparation de la phase de pré-remplissage lourde en calcul de la phase de décodage plus légère (désagrégation), pré-remplissage fragmenté pour éviter de bloquer le décodage, politiques de priorité et d'équité pour les charges de travail mixtes et couplage plus étroit avec le décodage spéculatif afin que plusieurs brouillons de jetons soient validés par étape. L’objectif est de réduire le nombre maximum de jetons par seconde par GPU tout en gardant une latence de réponse individuelle faible et prévisible.
Mise en œuvre dans le monde réel
Une API de chat admettant immédiatement les messages utilisateur nouvellement arrivés dans le lot en cours d'exécution au lieu de les mettre en file d'attente pour le lot suivant
Expulser une courte réponse complétée au milieu du lot et remplir son emplacement afin que le GPU ne reste jamais inactif en attendant une longue génération
Combinant le traitement par lots continu avec PagedAttention de vLLM pour insérer et supprimer des séquences à moindre coût à chaque étape de décodage
Un service de complétion de code supportant un nombre élevé de jetons par seconde dans un trafic intense et de longueur variable en gardant le lot plein
Risques et garde-fous
L’optimisation d’un benchmark peut masquer des faiblesses plus larges du système.
Les coûts d’infrastructure et de maintenance sont souvent sous-estimés.
Les lacunes en matière de sécurité et d’observabilité peuvent se creuser à mesure que les systèmes deviennent plus complexes.
Feuille de route de mise en œuvre
Définissez les objectifs de latence, de qualité et de coût avant la mise en œuvre.
Benchmark dans des conditions de charge et de données réalistes.
Surveillance des instruments pour détecter les erreurs, la dérive et l'impact sur l'utilisateur.
Préparez les chemins de restauration et de réponse aux incidents avant la mise à l’échelle.
Continuez à explorer
Free newsletter
Get the daily AI briefing
Three verified AI stories every weekday morning, written in plain English. Free forever, no ads.
One email each weekday. Unsubscribe in one click. We never sell or share your address.
Test yourself
Take the Continuous Batching quiz
Instant feedback on every answer, and a shareable certificate with a verifiable ID once you pass a course.
Support free AI education. AI Understanding is a 501(c)(3) nonprofit — no ads, no paywall, ever. Make a donation
Guide suivant
Kubernetes pour les charges de travail ML
Questions fréquemment posées
What is Continuous Batching?
Le traitement par lots continu est une technique de service qui ajoute et supprime des demandes d'un lot en cours d'exécution, jeton par jeton, au lieu d'attendre la fin d'un lot fixe entier. Cela maintient le GPU constamment occupé et augmente considérablement le nombre d’utilisateurs qu’un modèle d’IA peut servir à la fois.
Quelle est la principale faiblesse du traitement par lots statique (fixe) pour le service LLM ?
Étant donné que les longueurs de sortie varient, les séquences terminées restent inactives jusqu'à ce que la plus lente se termine, ce qui gaspille les cycles GPU et retarde les nouvelles requêtes.
À quelle granularité le traitement par lots continu ajoute-t-il et supprime-t-il des requêtes ?
Le traitement par lots continu (au niveau de l'itération) met à jour l'ensemble actif après chaque étape de décodage, de sorte qu'il fonctionne jeton par jeton plutôt que par requête entière.
Lorsqu'une séquence se termine au milieu d'un lot en traitement par lots continu, qu'arrive-t-il à son emplacement ?
Les séquences terminées sont expulsées et les demandes en attente sont immédiatement insérées, gardant le lot plein et le GPU occupé.
Quelle technique s'associe naturellement au traitement par lots continu pour rendre l'insertion/suppression de séquences bon marché ?
PagedAttention stocke le cache KV de chaque séquence dans des blocs indépendants, de sorte que l'ajout ou la suppression d'une séquence en cours de vol ne perturbe pas la mémoire des autres.
Quel document de recherche est généralement reconnu pour avoir popularisé le traitement par lots au niveau itératif (continu) ?
L'article d'Orca a introduit la planification au niveau des itérations, et l'idée a été adoptée par des systèmes tels que vLLM, TGI et TensorRT-LLM.