Optimierung der OpenVINO Inferenz fĂŒr Ultralytics YOLO Modelle: Ein umfassender Leitfaden
EinfĂŒhrung
Beim Einsatz von Deep-Learning-Modellen, insbesondere von Modellen zur Objekterkennung wie Ultralytics YOLO , ist eine optimale Leistung entscheidend. In diesem Leitfaden wird die Nutzung des Intel OpenVINO Toolkits zur Optimierung der Inferenz mit Schwerpunkt auf Latenz und Durchsatz erlÀutert. Ganz gleich, ob du an verbraucherfreundlichen Anwendungen oder an groà angelegten EinsÀtzen arbeitest: Wenn du diese Optimierungsstrategien verstehst und anwendest, kannst du sicherstellen, dass deine Modelle auf verschiedenen GerÀten effizient laufen.
Optimierung fĂŒr Latenzzeiten
Die Optimierung der Latenzzeit ist entscheidend fĂŒr Anwendungen, die eine sofortige Reaktion eines einzelnen Modells auf eine einzige Eingabe erfordern, wie es in Verbraucherszenarien ĂŒblich ist. Das Ziel ist es, die Verzögerung zwischen Eingabe und Schlussfolgerungsergebnis zu minimieren. Um eine niedrige Latenz zu erreichen, muss man jedoch sorgfĂ€ltig abwĂ€gen, vor allem, wenn man gleichzeitig Schlussfolgerungen zieht oder mehrere Modelle verwaltet.
Wichtige Strategien zur Optimierung der Latenzzeit:
- Eine einzige Schlussfolgerung pro GerĂ€t: Der einfachste Weg, um eine niedrige Latenz zu erreichen, ist die BeschrĂ€nkung auf jeweils eine Schlussfolgerung pro GerĂ€t. ZusĂ€tzliche Gleichzeitigkeit fĂŒhrt oft zu einer höheren Latenz.
- Nutzung von Sub-Devices: GerĂ€te wie Multi-Socket-CPUs oder Multi-Tile-GPUs können mehrere Anfragen mit minimaler Latenzzeit ausfĂŒhren, indem sie ihre internen Sub-Devices nutzen.
- OpenVINO Leistungstipps: Mithilfe von OpenVINO's
ov::hint::PerformanceMode::LATENCY
fĂŒr dieov::hint::performance_mode
Eigenschaft wÀhrend der Modellkompilierung vereinfacht die Leistungsoptimierung und bietet einen gerÀteunabhÀngigen und zukunftssicheren Ansatz.
Verwaltung der Latenzzeit bei der Erstinferenz:
- Modell-Caching: Um die Auswirkungen von Modelllade- und Kompilierzeiten auf die Latenzzeit zu verringern, solltest du, wenn möglich, das Modell-Caching nutzen. In Szenarien, in denen eine Zwischenspeicherung nicht möglich ist, bieten CPUs im Allgemeinen die schnellsten Modellladezeiten.
- Model Mapping vs. Lesen: Um die Ladezeiten zu verkĂŒrzen, hat OpenVINO das Einlesen des Modells durch ein Mapping ersetzt. Wenn sich das Modell jedoch auf einem WechseldatentrĂ€ger oder einem Netzlaufwerk befindet, sollten Sie die
ov::enable_mmap(false)
um wieder zum Lesen zu wechseln. - AUTO GerĂ€teauswahl: Dieser Modus beginnt mit der Inferenz auf CPU und wechselt zu einem Beschleuniger, sobald er bereit ist, wodurch die Latenzzeit fĂŒr die erste Inferenz nahtlos reduziert wird.
Optimieren fĂŒr Durchsatz
Die Optimierung des Durchsatzes ist entscheidend fĂŒr Szenarien, in denen zahlreiche Inferenzanfragen gleichzeitig bearbeitet werden, um die Ressourcenauslastung zu maximieren, ohne die Leistung der einzelnen Anfragen wesentlich zu beeintrĂ€chtigen.
AnsÀtze zur Optimierung des Durchsatzes:
-
OpenVINO Leistungshinweise: Eine zukunftssichere Methode zur Verbesserung des Durchsatzes auf verschiedenen GerÀten mithilfe von Leistungshinweisen.
-
Explizites Batching und Streams: Ein detaillierterer Ansatz, der explizites Batching und die Verwendung von Streams fĂŒr eine erweiterte Leistungsoptimierung beinhaltet.
Entwurf durchsatzorientierter Anwendungen:
Um den Durchsatz zu maximieren, sollten Anwendungen:
- Verarbeite die Eingaben parallel, um die Möglichkeiten des GerÀts voll auszuschöpfen.
- Zerlege den Datenfluss in gleichzeitige Inferenzanfragen, die fĂŒr die parallele AusfĂŒhrung geplant sind.
- Nutze die Async-API mit Callbacks, um die Effizienz zu erhalten und ein Aushungern der GerÀte zu vermeiden.
Multi-Device-AusfĂŒhrung:
OpenVINODer Multi-Device-Modus vereinfacht die Skalierung des Durchsatzes, indem er Inferenzanfragen automatisch auf alle GerÀte verteilt, ohne dass eine GerÀteverwaltung auf Anwendungsebene erforderlich ist.
Fazit
Die Optimierung von Ultralytics YOLO Modellen fĂŒr Latenz und Durchsatz mit OpenVINO kann die Leistung deiner Anwendung erheblich verbessern. Wenn du die in diesem Leitfaden beschriebenen Strategien sorgfĂ€ltig anwendest, kannst du sicherstellen, dass deine Modelle effizient laufen und den Anforderungen verschiedener Einsatzszenarien gerecht werden. Vergiss nicht, dass die Entscheidung zwischen Latenz- und Durchsatzoptimierung von deinen spezifischen Anwendungsanforderungen und den Eigenschaften der Einsatzumgebung abhĂ€ngt.
AusfĂŒhrlichere technische Informationen und die neuesten Updates findest du in der DokumentationOpenVINO und im RepositoryUltralytics YOLO . Diese Ressourcen bieten ausfĂŒhrliche Anleitungen, Tutorials und Community-Support, damit du das Beste aus deinen Deep Learning-Modellen herausholen kannst.
Um sicherzustellen, dass deine Modelle eine optimale Leistung erzielen, geht es nicht nur darum, Konfigurationen zu optimieren, sondern auch darum, die Anforderungen deiner Anwendung zu verstehen und fundierte Entscheidungen zu treffen. Ganz gleich, ob du fĂŒr Echtzeit-Reaktionen optimierst oder den Durchsatz bei der Verarbeitung groĂer Datenmengen maximierst, die Kombination aus Ultralytics YOLO Modellen und OpenVINO bietet Entwicklern ein leistungsfĂ€higes Toolkit fĂŒr den Einsatz leistungsstarker KI-Lösungen.
FAQ
Wie optimiere ich Ultralytics YOLO Modelle fĂŒr niedrige Latenzzeiten mit OpenVINO?
Die Optimierung von Ultralytics YOLO Modellen fĂŒr niedrige Latenzzeiten beinhaltet mehrere SchlĂŒsselstrategien:
- Einzelne Schlussfolgerung pro GerĂ€t: BeschrĂ€nke die RĂŒckschlĂŒsse auf jeweils einen pro GerĂ€t, um Verzögerungen zu minimieren.
- Nutzung von Sub-Devices: Nutze GerÀte wie Multi-Socket-CPUs oder Multi-Tile-GPUs, die mehrere Anfragen mit minimaler Latenzsteigerung bearbeiten können.
- OpenVINO Leistungstipps: Verwende OpenVINO's
ov::hint::PerformanceMode::LATENCY
wĂ€hrend der Modellkompilierung fĂŒr eine vereinfachte, gerĂ€teunabhĂ€ngige Abstimmung.
Weitere praktische Tipps zur Optimierung der Latenzzeit findest du im Abschnitt Latenzoptimierung in unserem Leitfaden.
Warum sollte ich OpenVINO verwenden, um den Ultralytics YOLO Durchsatz zu optimieren?
OpenVINO verbessert den Ultralytics YOLO Modelldurchsatz, indem es die Ressourcenauslastung des GerĂ€ts ohne LeistungseinbuĂen maximiert. Die wichtigsten Vorteile sind:
- Performance-Hinweise: Einfaches, gerĂ€teĂŒbergreifendes Leistungstuning auf hohem Niveau.
- Explizites Batching und Streams: Feinabstimmung fĂŒr mehr Leistung.
- Multi-Device-AusfĂŒhrung: Automatischer Lastausgleich fĂŒr Inferenzen, der die Verwaltung auf Anwendungsebene erleichtert.
Beispielkonfiguration:
import openvino.properties.hint as hints
config = {hints.performance_mode: hints.PerformanceMode.THROUGHPUT}
compiled_model = core.compile_model(model, "GPU", config)
Erfahre mehr ĂŒber die Durchsatzoptimierung im Abschnitt Durchsatzoptimierung in unserem ausfĂŒhrlichen Leitfaden.
Was ist die beste Methode, um die Latenzzeit fĂŒr die erste Inferenz in OpenVINO zu reduzieren?
Um die Latenzzeit bei der Erstinferenz zu verringern, solltest du diese Praktiken beachten:
- Modell-Caching: Nutze das Modell-Caching, um die Lade- und Kompilierzeiten zu verkĂŒrzen.
- Model Mapping vs. Lesen: Mapping verwenden (
ov::enable_mmap(true)
), sondern schalten auf Lesen um (ov::enable_mmap(false)
), wenn sich das Modell auf einem Wechsel- oder Netzlaufwerk befindet. - AUTO-GerÀteauswahl: Nutze den AUTO-Modus, um mit der CPU Inferenz zu beginnen und nahtlos zu einem Beschleuniger zu wechseln.
Detaillierte Strategien zum Umgang mit der First-Inference-Latenz findest du im Abschnitt Management der First-Inference-Latenz.
Wie bringe ich die Optimierung von Latenz und Durchsatz mit Ultralytics YOLO und OpenVINO in Einklang?
Um Latenz- und Durchsatzoptimierung in Einklang zu bringen, musst du die Anforderungen deiner Anwendung verstehen:
- Optimierung der Latenzzeit: Ideal fĂŒr Echtzeitanwendungen, die sofortige Antworten erfordern (z. B. Consumer-Apps).
- Optimierung des Durchsatzes: Am besten geeignet fĂŒr Szenarien mit vielen gleichzeitigen Schlussfolgerungen, um die Ressourcennutzung zu maximieren (z. B. bei groĂ angelegten EinsĂ€tzen).
Die Leistungshinweise auf OpenVINO und die Multi-Device-Modi können dir helfen, das richtige Gleichgewicht zu finden. WĂ€hle die passenden OpenVINO Leistungshinweise fĂŒr deine spezifischen Anforderungen.
Kann ich Ultralytics YOLO Modelle auch mit anderen KI-Frameworks als OpenVINO verwenden?
Ja, Ultralytics YOLO Modelle sind sehr vielseitig und können in verschiedene KI-Frameworks integriert werden. Zu den Optionen gehören:
- TensorRT: FĂŒr die Optimierung von NVIDIA GPU befolgst du den TensorRT Integrationsleitfaden.
- CoreML: FĂŒr Apple-GerĂ€te, siehe unsere CoreML Exportanweisungen.
- TensorFlow.js: FĂŒr Web- und Node.js-Apps, siehe TF.js-Konvertierungsanleitung.
Weitere Integrationen findest du auf der SeiteUltralytics Integrationen.