Yolo Vision Shenzhen
Shenzhen
Jetzt beitreten
Glossar

Kontinuierliche Dosierung

Erfahren Sie, wie kontinuierliches Batching GPU optimiert und die Latenz reduziert. Entdecken Sie, wie Sie mit Ultralytics die Effizienz bei ML-Aufgaben in der Produktion maximieren können.

Kontinuierliches Batching ist eine fortschrittliche Technik zur Optimierung der Planung und Inferenz, die im maschinellen Lernen (ML) eingesetzt wird, um die Hardwareauslastung und den Durchsatz zu maximieren. Beim herkömmlichen statischen Batching wartet eine Inferenz-Engine, bis eine vorgegebene Anzahl von Anfragen gesammelt wurde, bevor sie diese gleichzeitig verarbeitet. Dies führt häufig zu Ineffizienzen, da das System auf die Beendigung der am längsten laufenden Anfrage im Batch warten muss, bevor es Ressourcen freigibt. Kontinuierliches Batching, auch bekannt als dynamisches oder Iterations-Level-Batching, löst dieses Problem, indem neue Anfragen in den Rechenbatch eingefügt werden, sobald eine aktive Anfrage abgeschlossen ist, wodurch die Leerlaufzeit auf GPUs erheblich reduziert und die Gesamteffizienz verbessert wird.

Unterscheidung von verwandten Konzepten

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:

  • Batchgröße: Dies bezieht sich auf die feste Anzahl von Proben, die während des Trainings oder der Inferenz gleichzeitig verarbeitet werden. Herkömmliche Batch-Verarbeitungs-Workflows basieren auf statischen Größen, während bei der kontinuierlichen Batch-Verarbeitung die effektive Batchgröße dynamisch je nach eingehendem Datenverkehr
  • Echtzeit-Inferenz: Dieses Konzept konzentriert sich auf die Minimierung der Inferenzlatenz für sofortige Vorhersagen, wobei einzelne Eingaben bei ihrem Eintreffen verarbeitet werden. Kontinuierliches Batching schließt die Lücke zwischen statischem Batching mit hohem Durchsatz und Echtzeit-Inferenz mit geringer Latenz, indem ein hoher Durchsatz aufrechterhalten wird, ohne dass schnelle Anfragen auf langsamere warten müssen .

Anwendungsfälle in der Praxis

Kontinuierliches Batching ist entscheidend für Produktionssysteme, die große Mengen unvorhersehbarer Anfragen verarbeiten. Hier sind zwei konkrete Beispiele für seine Anwendung:

  1. Hochdurchsatz-Textgenerierung: Bei der Bereitstellung großen Sprachmodellen (LLMs) dauert die Generierung von Antworten für verschiedene Benutzer je nach Ausgabelänge unterschiedlich lange. Frameworks, die kontinuierliches Batching nutzen – wie vLLM auf Ray Serve– können neu generierte Token kontinuierlich streamen und abgeschlossene Konversationen sofort gegen neue Eingabeaufforderungen austauschen. Diese Methode, die ursprünglich durch die Forschung zur Planung auf Iterationsebene populär wurde, verbessert den Durchsatz der Textgenerierung drastisch.
  2. Asynchrone Videoanalyse: Bei Videoverständnisaufgaben, wie der Verfolgung von Fahrzeugen über das Verkehrskameranetzwerk einer Stadt, kommen die Bilder in unterschiedlichen Intervallen an. Durch kontinuierliche Stapelverarbeitung können Objektverfolgungsmodelle eingehende Videobilder dynamisch verarbeiten, sobald Ressourcen in Millisekunden frei werden, wodurch die Hardwarebeschleunigungspipelines für Smart-City-Dashboards optimiert werden.

Kontinuierliche Verarbeitung bei Bildverarbeitungsaufgaben

Bei der Verwaltung von Modellbereitstellungspraktiken mit hohem Datenverkehr kann das iterative Streamen von Inferenzen die Vorteile des dynamischen Batchings simulieren, indem sichergestellt wird, dass Speicher schrittweise freigegeben und nicht blockiert wird. Das folgende Python zeigt, wie das Generator-Muster mit der Modellvorhersage-API verwendet werden kann, 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 Ressourcenplanung auf Systemebene erfordert ein Gleichgewicht zwischen reiner Geschwindigkeit und Betriebskosten. Teams, die umfangreiche Computer Vision (CV) - und Sprachmodelle einsetzen, verlassen sich zunehmend auf fortschrittliche Serving-Frameworks, um diese dynamischen Batches zu verwalten. Für Unternehmensteams, die ihre Infrastruktur optimieren möchten, bietet die Ultralytics robuste Tools für das Training, die Überwachung und den Export von Modellen in hochoptimierte Produktionsumgebungen.

Leistungssteigerung mit Ultralytics YOLO

Erhalten Sie fortschrittliche KI-Vision für Ihre Projekte. Finden Sie noch heute die richtige Lizenz für Ihre Ziele.

Lizenzoptionen entdecken