Zum Inhalt springen

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

OpenVINO Ökosystem

Einführung

When deploying deep learning models, particularly those for object detection such as Ultralytics YOLO models, achieving optimal performance is crucial. This guide delves into leveraging Intel's OpenVINO toolkit to optimize inference, focusing on latency and throughput. Whether you're working on consumer-grade applications or large-scale deployments, understanding and applying these optimization strategies will ensure your models run efficiently on various devices.

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.

📅 Created 7 months ago ✏️ Updated 29 days ago

Kommentare