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.
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:
Kontinuierliches Batching ist entscheidend für Produktionssysteme, die große Mengen unvorhersehbarer Anfragen verarbeiten. Hier sind zwei konkrete Beispiele für seine Anwendung:
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.