Continuous Batching
Lerne, wie kontinuierliches Batching den GPU-Durchsatz optimiert und die Latenz reduziert. Entdecke, wie du Ultralytics YOLO26 nutzt, um die Effizienz bei ML-Produktionsaufgaben zu maximieren.
Continuous Batching ist eine fortschrittliche Technik zur Planung und Optimierung der Inferenz, die im Machine Learning (ML) eingesetzt wird, um die Hardwareauslastung und den Durchsatz zu maximieren. Bei der herkömmlichen statischen Stapelverarbeitung wartet eine Inferenz-Engine auf eine vorher festgelegte Anzahl von Anfragen, bevor sie diese gleichzeitig verarbeitet. Dies führt oft zu Ineffizienzen, da das System auf den Abschluss der am längsten dauernden Anfrage im Stapel warten muss, bevor Ressourcen freigegeben werden. Continuous Batching, auch als dynamische oder Iterations-Batching bekannt, löst dies, indem neue Anfragen in den Berechnungsstapel eingefügt werden, sobald eine aktive Anfrage abgeschlossen ist, was die Leerlaufzeiten auf GPUs erheblich reduziert und die Gesamteffizienz verbessert.
Link to this sectionUnterscheidung verwandter Konzepte#
Um besser zu verstehen, wie Daten während der Modellbereitstellung verarbeitet werden, ist es hilfreich, Continuous Batching von anderen verwandten Begriffen im Glossar zu unterscheiden:
- Batch Size: Dies bezieht sich auf die feste Anzahl von Stichproben, die gleichzeitig während des Trainings oder der Inferenz verarbeitet werden. Herkömmliche Workflows für die Stapelverarbeitung basieren auf statischen Größen, während Continuous Batching es ermöglicht, dass die effektive Batch-Größe dynamisch je nach eingehendem Datenverkehr schwankt.
- Real-Time Inference: Dieses Konzept konzentriert sich auf die Minimierung der Inferenz-Latenz für sofortige Vorhersagen, wobei einzelne Eingaben bei ihrem Eintreffen verarbeitet werden. Continuous Batching schließt die Lücke zwischen statischer Batch-Verarbeitung mit hohem Durchsatz und Echtzeit-Inferenz mit geringer Latenz, indem es einen hohen Durchsatz aufrechterhält, ohne dass schnelle Anfragen auf langsamere warten müssen.
Link to this sectionAnwendungen in der Praxis#
Continuous Batching ist entscheidend für Produktionssysteme, die ein hohes Volumen unvorhersehbarer Anfragen bewältigen. Hier sind zwei konkrete Beispiele für dessen Anwendung:
-
Texterzeugung mit hohem Durchsatz: Bei der Bereitstellung von Large Language Models (LLMs) benötigt die Generierung von Antworten für verschiedene Benutzer je nach Ausgabelänge unterschiedlich viel Zeit. Frameworks, die Continuous Batching nutzen – wie vLLM auf Ray Serve –, können neu generierte Token kontinuierlich streamen und abgeschlossene Unterhaltungen sofort gegen neue Prompts austauschen. Diese Methode, die ursprünglich durch Forschung zur iterativen Planung populär wurde, verbessert den Durchsatz bei der Texterzeugung drastisch.
-
Asynchrone Videoanalyse: Bei Aufgaben des Video-Verständnisses, wie der Verfolgung von Fahrzeugen in einem städtischen Verkehrsüberwachungsnetz, treffen Frames in unterschiedlichen Abständen ein. Continuous Batching ermöglicht es Objektverfolgungsmodellen, eingehende Video-Frames in der Millisekunde zu verarbeiten, in der Ressourcen frei werden, wodurch Hardware-Beschleunigungs-Pipelines für Smart-City-Dashboards optimiert werden.
Link to this sectionKontinuierliche Verarbeitung bei Vision-Aufgaben#
Bei der Verwaltung von Modellbereitstellungspraktiken mit hohem Datenverkehr kann das iterative Streaming von Inferenzen die Vorteile von dynamischem Batching simulieren, indem sichergestellt wird, dass der Speicher progressiv freigegeben wird, anstatt blockiert zu bleiben. Das folgende Python-Beispiel zeigt, wie man das Generator-Muster mit der Modell-Vorhersage-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 reiner Geschwindigkeit und Betriebskosten. Teams, die massiv Computer Vision (CV) und Sprachmodelle einsetzen, verlassen sich zunehmend auf fortschrittliche Serving-Frameworks, um diese dynamischen Batches zu verwalten. Für Unternehmen, die ihre Infrastruktur optimieren möchten, bietet die Ultralytics Platform leistungsstarke Tools für das Training, die Überwachung und den Export von Modellen in hochoptimierte Produktionsumgebungen.






