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

  1. Einzelne Schlussfolgerung pro GerĂ€t: BeschrĂ€nke die RĂŒckschlĂŒsse auf jeweils einen pro GerĂ€t, um Verzögerungen zu minimieren.
  2. Nutzung von Sub-Devices: Nutze GerÀte wie Multi-Socket-CPUs oder Multi-Tile-GPUs, die mehrere Anfragen mit minimaler Latenzsteigerung bearbeiten können.
  3. 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:

  1. Modell-Caching: Nutze das Modell-Caching, um die Lade- und Kompilierzeiten zu verkĂŒrzen.
  2. 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.
  3. 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:

Weitere Integrationen findest du auf der SeiteUltralytics Integrationen.



Erstellt 2024-03-17, Aktualisiert 2024-07-05
Autoren: glenn-jocher (5)

Kommentare