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.
Kontinuierliche Stapelverarbeitung (Continuous Batching) ist eine fortschrittliche Technik zur Planung und Optimierung von Inferenzen, die im Machine Learning (ML) eingesetzt wird, um die Hardwareauslastung und den Durchsatz zu maximieren. Bei der herkömmlichen statischen Stapelverarbeitung wartet eine Inference Engine darauf, dass sich eine festgelegte Anzahl von Anforderungen ansammelt, bevor sie diese gleichzeitig verarbeitet. Dies führt oft zu Ineffizienzen, da das System auf den Abschluss der am längsten laufenden Anforderung im Stapel warten muss, bevor Ressourcen freigegeben werden. Die kontinuierliche Stapelverarbeitung, auch bekannt als dynamische oder Iterations-Ebene-Stapelverarbeitung, löst dieses Problem, indem sie neue Anforderungen in den Rechenstapel einspeist, sobald eine aktive Anforderung abgeschlossen ist. Dies reduziert die Leerlaufzeiten auf GPUs erheblich und verbessert die Gesamteffizienz.
Link to this sectionUnterscheidung 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. Herkömmliche Batch-Verarbeitungs-Workflows basieren auf statischen Größen, während die kontinuierliche Stapelverarbeitung es ermöglicht, dass die effektive Stapelgröße dynamisch basierend auf dem eingehenden Datenverkehr schwankt.
- Real-Time Inference: Dieses Konzept konzentriert sich darauf, die Inference Latency für sofortige Vorhersagen zu minimieren, indem einzelne Eingaben bei ihrem Eintreffen verarbeitet werden. Die kontinuierliche Stapelverarbeitung schlägt die Brücke zwischen statischer Hochdurchsatz-Stapelverarbeitung und latenzarmer Echtzeit-Inferenz, indem sie einen hohen Durchsatz aufrechterhält, ohne dass schnelle Anforderungen auf langsamere warten müssen.
Link to this sectionPraxisanwendungen#
Die kontinuierliche Stapelverarbeitung ist entscheidend für Produktionssysteme, die hohe Volumina unvorhersehbarer Anforderungen verarbeiten. Hier sind zwei konkrete Anwendungsbeispiele:
-
High-Throughput-Textgenerierung: Bei der Bereitstellung von Large Language Models (LLMs) benötigt die Generierung von Antworten für verschiedene Benutzer unterschiedlich viel Zeit, abhängig von der Ausgabelänge. Frameworks, die kontinuierliche Stapelverarbeitung nutzen – wie vLLM auf Ray Serve –, können neu generierte Token kontinuierlich streamen und abgeschlossene Konversationen sofort gegen neue Prompts austauschen. Diese Methode, die ursprünglich durch Forschung zur Iterations-Ebenen-Planung populär wurde, verbessert den Durchsatz bei der Textgenerierung drastisch.
-
Asynchrone Videoanalytik: Bei Aufgaben der Videoanalyse, wie z. B. der Verfolgung von Fahrzeugen in einem städtischen Verkehrsüberwachungsnetzwerk, treffen Frames in unterschiedlichen Intervallen ein. Die kontinuierliche Stapelverarbeitung ermöglicht es Modellen zur Objektverfolgung, eingehende Video-Frames dynamisch 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#
Beim Management von Modellbereitstellungspraktiken mit hohem Datenverkehr kann das iterative Streamen von Inferenzen die Vorteile der dynamischen Stapelverarbeitung simulieren, indem sichergestellt wird, dass Speicher progressiv freigegeben und nicht blockiert wird. Das folgende Python-Beispiel zeigt, wie man das Generator-Muster mit der Modell-Vorhersage-API verwendet, um einen kontinuierlichen Bilderstrom 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.")Das Management der Ressourcenplanung auf Systemebene 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 Stapel zu verwalten. Für Unternehmen, die ihre Infrastruktur rationalisieren möchten, bietet die Ultralytics Platform robuste Tools zum Trainieren, Überwachen und Exportieren von Modellen in hochoptimierte Produktionsumgebungen.






