Continuous Batching
Lerne, wie kontinuierliches Batching den GPU-Durchsatz optimiert und die Latenz reduziert. Entdecke, wie du Ultralytics YOLO26 verwendest, um die Effizienz bei produktiven ML-Aufgaben zu maximieren.
Continuous Batching ist eine fortgeschrittene Technik zur Planungs- und Inferenzoptimierung im Bereich machine learning (ML), die darauf abzielt, die Hardwareauslastung und den Durchsatz zu maximieren. Bei der traditionellen statischen Stapelverarbeitung wartet eine Inferenz-Engine darauf, dass sich eine vorbestimmte Anzahl von Anfragen ansammelt, bevor sie gleichzeitig verarbeitet werden. Dies führt oft zu Ineffizienzen, da das System auf den Abschluss der am längsten laufenden Anfrage im Stapel warten muss, bevor Ressourcen freigegeben werden können. Continuous Batching, auch als dynamisches oder iterationsbasiertes Batching bekannt, löst dieses Problem, indem neue Anfragen in den Rechenstapel eingespeist werden, sobald eine aktive Anfrage abgeschlossen ist. Dadurch wird die Leerlaufzeit auf GPUs drastisch reduziert und die Gesamteffizienz verbessert.
Unterscheidung verwandter Konzepte#
Um besser zu verstehen, wie Daten während der Modellbereitstellung verarbeitet werden, ist es hilfreich, die kontinuierliche Stapelverarbeitung von anderen verwandten Begriffen im Glossar zu unterscheiden:
- Batch Size: Dies bezieht sich auf die feste Anzahl von Stichproben, die während des Trainings oder der Inferenz gleichzeitig verarbeitet werden. Traditionelle Batch-Verarbeitungs-Workflows basieren auf statischen Größen, während Continuous Batching es ermöglicht, dass die effektive Batch-Größe basierend auf dem eingehenden Datenverkehr dynamisch schwankt.
- Real-Time Inference: Dieses Konzept konzentriert sich auf die Minimierung der Inferenzlatenz für sofortige Vorhersagen, wobei einzelne Eingaben bei ihrem Eintreffen verarbeitet werden. Continuous Batching schließt die Lücke zwischen hochdurchsatzstarkem statischen Batching und latenzarmem Echtzeit-Inferenzbetrieb, indem ein hoher Durchsatz aufrechterhalten wird, ohne dass schnelle Anfragen auf langsamere warten müssen.
Praxisanwendungen#
Die kontinuierliche Stapelverarbeitung ist entscheidend für Produktionssysteme, die hohe Volumina unvorhersehbarer Anforderungen verarbeiten. Hier sind zwei konkrete Anwendungsbeispiele:
-
High-Throughput Text Generation: Beim Bereitstellen von Large Language Models (LLMs) nimmt die Generierung von Antworten für verschiedene Benutzer je nach Ausgabelänge unterschiedlich viel Zeit in Anspruch. Frameworks, die Continuous Batching nutzen – wie vLLM auf Ray Serve –, können neu generierte Token kontinuierlich streamen und fertige Unterhaltungen sofort gegen neue Prompts austauschen. Diese Methode, die ursprünglich durch Forschungen zur iterationsbasierten Planung populär gemacht wurde, verbessert den Textgenerierungsdurchsatz drastisch.
-
Asynchronous Video Analytics: Bei Videoverständnisaufgaben, wie dem Verfolgen von Fahrzeugen über das Verkehrskameranetzwerk einer Stadt, treffen Frames in unterschiedlichen Intervallen ein. Continuous Batching ermöglicht es Objektverfolgungsmodellen, eingehende Video-Frames in der Millisekunde, in der Ressourcen frei werden, dynamisch zu verarbeiten und so Hardware-Beschleunigungs-Pipelines für Smart-City-Dashboards zu optimieren.
Kontinuierliche Verarbeitung bei Vision-Aufgaben#
Bei der Verwaltung von Modellbereitstellungspraktiken mit hohem Datenverkehr kann das iterative Streaming von Inferenzvorgängen die Vorteile des dynamischen Batching simulieren, indem sichergestellt wird, dass der Speicher schrittweise freigegeben statt blockiert wird. Das folgende Python-Beispiel zeigt, wie man das Generator-Muster mit der Modellvorhersage-API verwendet, um einen kontinuierlichen Bildstrom effizient zu verarbeiten.
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.")Die Verwaltung der systemweiten Ressourcenplanung erfordert ein Gleichgewicht zwischen roher Geschwindigkeit und Betriebskosten. Teams, die massive Computer-Vision- (CV)- und Sprachmodelle bereitstellen, verlassen sich zunehmend auf fortschrittliche Serving-Frameworks, um diese dynamischen Batches zu verwalten. Für Enterprise-Teams, die ihre Infrastruktur optimieren möchten, bietet die Ultralytics Platform robuste Tools zum Trainieren, Überwachen und Exportieren von Modellen in hochoptimierte Produktionsumgebungen.






