Continuous Batching
Apprends comment le continuous batching optimise le débit des GPU et réduit la latence. Découvre comment utiliser Ultralytics YOLO26 pour maximiser l'efficacité dans tes tâches de ML en production.
Le continuous batching est une technique avancée d'ordonnancement et d'optimisation de l'inférence utilisée en machine learning (ML) pour maximiser l'utilisation du matériel et le débit. Dans le traitement par lots statique traditionnel, un inference engine attend qu'un nombre prédéterminé de requêtes s'accumule avant de les traiter simultanément. Cela conduit souvent à des inefficacités car le système doit attendre que la requête la plus longue du lot se termine avant de libérer les ressources. Le continuous batching, également connu sous le nom de batching dynamique ou au niveau de l'itération, résout ce problème en injectant de nouvelles requêtes dans le lot de calcul dès qu'une requête active est terminée, réduisant ainsi considérablement le temps d'inactivité sur les GPUs et améliorant l'efficacité globale.
Link to this sectionDistinguer les concepts apparentés#
Pour mieux comprendre comment les données sont traitées lors du déploiement de modèles, il est utile de distinguer le continuous batching d'autres termes associés dans le glossaire :
- Batch Size : Cela fait référence au nombre fixe d'échantillons traités simultanément pendant l'entraînement ou l'inférence. Les flux de travail de traitement par lots traditionnels reposent sur des tailles statiques, alors que le continuous batching permet à la taille effective du lot de fluctuer dynamiquement en fonction du trafic entrant.
- Real-Time Inference : Ce concept se concentre sur la minimisation de la inference latency pour des prédictions immédiates, en traitant les entrées uniques au fur et à mesure de leur arrivée. Le continuous batching comble le fossé entre le traitement par lots statique à haut débit et l'inférence en temps réel à faible latence en maintenant un débit élevé sans forcer les requêtes rapides à attendre les plus lentes.
Link to this sectionApplications concrètes#
Le continuous batching est critique pour les systèmes de production qui gèrent des volumes élevés de requêtes imprévisibles. Voici deux exemples concrets de son application :
-
Génération de texte à haut débit : Lors du déploiement de Large Language Models (LLMs), la génération de réponses pour différents utilisateurs prend des quantités de temps variables en fonction de la longueur de la sortie. Les frameworks tirant parti du continuous batching — tels que vLLM sur Ray Serve — peuvent diffuser en continu les jetons nouvellement générés et remplacer immédiatement les conversations terminées par de nouvelles invites. Cette méthode, initialement popularisée par des recherches sur l'ordonnancement au niveau de l'itération, améliore considérablement le débit de génération de texte.
-
Analyse vidéo asynchrone : Dans les tâches de video understanding, telles que le suivi de véhicules à travers le réseau de caméras de circulation d'une ville, les images arrivent à des intervalles différents. Le continuous batching permet aux modèles d'object tracking de traiter dynamiquement les images vidéo entrantes à la milliseconde près dès que les ressources se libèrent, optimisant ainsi les pipelines d'hardware acceleration pour les tableaux de bord de ville intelligente.
Link to this sectionTraitement continu dans les tâches de vision#
Lors de la gestion de pratiques de déploiement de modèles à fort trafic, l'inférence en streaming de manière itérative peut simuler les avantages du batching dynamique en garantissant que la mémoire est libérée progressivement plutôt que bloquée. L'exemple Python suivant démontre comment utiliser le modèle de générateur avec l'API de prédiction de modèle pour gérer efficacement un flux continu d'images.
from ultralytics import YOLO
# Load the latest Ultralytics YOLO26 model
model = YOLO("yolo26n.pt")
# Using stream=True acts as a generator, iteratively processing inputs
# to keep memory usage low and throughput high
results = model.predict(source=["img1.jpg", "img2.jpg", "img3.jpg"], stream=True)
# Process each result as soon as it completes
for result in results:
print(f"Detected {len(result.boxes)} objects in this frame.")La gestion de l'resource scheduling au niveau du système nécessite un équilibre entre la vitesse brute et le coût opérationnel. Les équipes déployant des modèles massifs de computer vision (CV) et de langage s'appuient de plus en plus sur des frameworks de service avancés pour gérer ces lots dynamiques. Pour les équipes en entreprise cherchant à rationaliser leur infrastructure, la Ultralytics Platform offre des outils robustes pour entraîner, surveiller et exporter des modèles dans des environnements de production hautement optimisés.






