Zum Inhalt springen

Optimierung der OpenVINO Inferenz fĂŒr Ultralytics YOLO Modelle: Ein umfassender Leitfaden

OpenVINO Ökosystem

EinfĂŒhrung

Beim Einsatz von Deep-Learning-Modellen, insbesondere von Modellen zur Objekterkennung wie Ultralytics YOLO , ist eine optimale Leistung entscheidend. Dieser Leitfaden befasst sich mit der Nutzung von Intels OpenVINO Toolkit zur Optimierung von Inferenzen und konzentriert sich dabei auf Latenz und Durchsatz. 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 die ov::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 der 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:

  1. OpenVINO Leistungshinweise: Eine zukunftssichere Methode zur Verbesserung des Durchsatzes auf verschiedenen GerÀten mithilfe von Leistungshinweisen.
import openvino.properties as props
import openvino.properties.hint as hints

config = {hints.performance_mode: hints.PerformanceMode.THROUGHPUT}
compiled_model = core.compile_model(model, "GPU", config)
  1. 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.



Erstellt 2024-03-17, Aktualisiert 2024-03-17
Autoren: glenn-jocher (1)

Kommentare