Continuous Batching
Apprends comment le traitement par lots continu optimise le débit du GPU et réduit la latence. Découvre comment utiliser Ultralytics YOLO26 pour maximiser l'efficacité dans les tâches d'apprentissage automatique en production.
Le continuous batching (traitement par lots continu) est une technique avancée de planification 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 motor d'inférence attend qu'un nombre prédéterminé de requêtes s'accumule avant de les traiter simultanément. Cela entraîne 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 des ressources. Le continuous batching, également connu sous le nom de traitement par lots dynamique ou au niveau des itérations, résout ce problème en injectant de nouvelles requêtes dans le lot de calcul dès qu'une requête active se termine, ce GPUs réduisant considérablement le temps d'inactivité sur les et améliorant l'efficacité globale.
Distinguer 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 connexes dans le glossaire :
- Batch Size : Il s'agit du 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, tandis 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 latence d'inférence pour des prédictions immédiates, en traitant des entrées uniques dès leur arrivée. Le continuous batching fait le lien 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.
Applications concrètes#
Le continuous batching est essentiel 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 service de Large Language Models (LLMs), la génération de réponses pour différents utilisateurs prend un temps variable selon 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 la recherche sur la planification au niveau des itérations, améliore considérablement le débit de génération de texte.
-
Analytique vidéo asynchrone : Dans les tâches de compréhension vidéo, telles que le suivi de véhicules sur le réseau de caméras de circulation d'une ville, les images arrivent à différents intervalles. Le continuous batching permet aux modèles de suivi d'objets de traiter dynamiquement les images vidéo entrantes dès la milliseconde où les ressources se libèrent, en optimisant les pipelines d'accélération matérielle pour les tableaux de bord des villes intelligentes.
Traitement continu dans les tâches de vision#
Lors de la gestion de pratiques de déploiement de modèles à fort trafic, la diffusion d'inférences de manière itérative peut simuler les avantages du traitement par lots dynamique en garantissant que la mémoire est libérée progressivement plutôt que bloquée. L'exemple Python suivant 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 la planification des ressources 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 d'entreprise cherchant à rationaliser leur infrastructure, la Ultralytics Platform offre des outils robustes pour l'entraînement, la surveillance et l'exportation de modèles dans des environnements de production hautement optimisés.






