Optimierung der OpenVINO Inferenz für Ultralytics YOLO Modelle: Ein umfassender Leitfaden
Einführung
Beim Einsatz von Deep-Learning-Modellen, insbesondere von Modellen für die Objekterkennung wie Ultralytics YOLO , ist eine optimale Leistung entscheidend. Dieser Leitfaden befasst sich mit der Nutzung des Toolkits von Intel OpenVINO zur Optimierung der Inferenz und konzentriert sich dabei auf Latenz und Durchsatz. Unabhängig davon, ob Sie an verbraucherfreundlichen Anwendungen oder groß angelegten Implementierungen arbeiten, können Sie durch das Verständnis und die Anwendung dieser Optimierungsstrategien sicherstellen, dass Ihre Modelle auf verschiedenen Geräten effizient laufen.
Optimierung für Latenzzeiten
Die Optimierung der Latenzzeit ist von entscheidender Bedeutung für Anwendungen, die eine sofortige Reaktion eines einzigen Modells auf eine einzige Eingabe erfordern, wie es in Verbraucherszenarien üblich ist. Ziel ist es, die Verzögerung zwischen Eingabe und Schlussfolgerungsergebnis zu minimieren. Um eine niedrige Latenz zu erreichen, ist jedoch eine sorgfältige Abwägung erforderlich, insbesondere bei gleichzeitigen Inferenzen oder der Verwaltung mehrerer Modelle.
Schlüsselstrategien für die Optimierung der Latenzzeit:
- Einzelne Schlussfolgerung pro Gerät: Die einfachste Möglichkeit, eine niedrige Latenzzeit zu erreichen, ist die Beschränkung auf jeweils eine Schlussfolgerung pro Gerät. Zusätzliche Gleichzeitigkeit führt oft zu einer erhöhten Latenz.
- Nutzung von Sub-Devices: Geräte wie Multi-Sockel-CPUs oder Multi-Tile-GPUs können mehrere Anfragen mit minimaler Latenzzeitsteigerung ausführen, indem sie ihre internen Subgeräte nutzen.
- OpenVINO Hinweise zur Leistung: Unter Verwendung von OpenVINO
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, sollten Sie nach Möglichkeit Modell-Caching verwenden. In Szenarien, in denen eine Zwischenspeicherung nicht praktikabel ist, bieten CPUs im Allgemeinen die schnellsten Modellladezeiten.
- Model Mapping vs. Lesen: Um die Ladezeiten zu verkürzen, hat OpenVINO das Lesen von Modellen durch Mapping ersetzt. Wenn sich das Modell jedoch auf einem Wechsellaufwerk oder einem Netzlaufwerk befindet, sollten Sie die Verwendung von
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 dieser bereit ist, wodurch die Latenzzeit für die erste Inferenz nahtlos reduziert wird.
Optimieren für Durchsatz
Die Optimierung des Durchsatzes ist von entscheidender Bedeutung für Szenarien, in denen zahlreiche Inferenzanfragen gleichzeitig bearbeitet werden, um die Ressourcennutzung 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 geräteübergreifenden Durchsatzes mithilfe von Leistungshinweisen auf hohem Niveau.
-
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 die Anwendungen:
- Verarbeiten Sie Eingaben parallel, um die Möglichkeiten des Geräts voll auszuschöpfen.
- Zerlegung des Datenflusses in gleichzeitige Inferenzanfragen, die für die parallele Ausführung geplant sind.
- Verwenden Sie 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.
Schlussfolgerung
Die Optimierung von Ultralytics YOLO Modellen für Latenz und Durchsatz mit OpenVINO kann die Leistung Ihrer Anwendung erheblich verbessern. Durch sorgfältige Anwendung der in diesem Leitfaden beschriebenen Strategien können Entwickler sicherstellen, dass ihre Modelle effizient laufen und den Anforderungen verschiedener Einsatzszenarien gerecht werden. Denken Sie daran, dass die Entscheidung zwischen Latenz- und Durchsatzoptimierung von Ihren spezifischen Anwendungsanforderungen und den Merkmalen der Bereitstellungsumgebung abhängt.
Ausführlichere technische Informationen und die neuesten Updates finden Sie in der DokumentationOpenVINO und im RepositoryUltralytics YOLO . Diese Ressourcen bieten ausführliche Anleitungen, Tutorials und Community-Support, damit Sie das Beste aus Ihren Deep Learning-Modellen herausholen können.
Um sicherzustellen, dass Ihre Modelle eine optimale Leistung erzielen, müssen Sie nicht nur die Konfigurationen optimieren, sondern auch die Anforderungen Ihrer Anwendung verstehen und fundierte Entscheidungen treffen. Ganz gleich, ob Sie für Echtzeit-Reaktionen optimieren oder den Durchsatz für die Verarbeitung in großem Maßstab maximieren möchten, die Kombination aus Ultralytics YOLO Modellen und OpenVINO bietet Entwicklern ein leistungsstarkes Toolkit für den Einsatz von 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 umfasst mehrere Schlüsselstrategien:
- Einzelne Schlussfolgerung pro Gerät: Begrenzen Sie die Ableitungen auf jeweils eine pro Gerät, um Verzögerungen zu minimieren.
- Nutzung von Sub-Devices: Nutzung von Geräten wie Multi-Socket-CPUs oder Multi-Tile-GPUs, die mehrere Anfragen mit minimaler Latenzzeitsteigerung verarbeiten können.
- OpenVINO Hinweise zur Leistung: Verwenden Sie 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 finden Sie im Abschnitt Latenzoptimierung in unserem Leitfaden.
Warum sollte ich OpenVINO verwenden, um den Durchsatz von Ultralytics YOLO zu optimieren?
OpenVINO verbessert den Ultralytics YOLO Modelldurchsatz, indem es die Nutzung der Geräteressourcen ohne Leistungseinbußen maximiert. Die wichtigsten Vorteile sind:
- Hinweise zur Leistung: Einfache, geräteübergreifende Leistungsoptimierung auf hohem Niveau.
- Explizites Batching und Streams: Feinabstimmung für höhere 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)
Weitere Informationen zur Durchsatzoptimierung finden Sie im Abschnitt Durchsatzoptimierung in unserem ausführlichen Leitfaden.
Wie lässt sich die Latenzzeit bei der Erstinferenz in OpenVINO am besten reduzieren?
Um die Latenzzeit bei der Erstinferenz zu verringern, sollten Sie die folgenden Methoden anwenden:
- Modell-Caching: Verwenden Sie das Modell-Caching, um die Lade- und Kompilierzeiten zu verringern.
- Model Mapping vs. Lesen: Verwenden Sie das Mapping (
ov::enable_mmap(true)
), sondern schaltet auf Lesen um (ov::enable_mmap(false)
), wenn sich das Modell auf einem Wechsel- oder Netzlaufwerk befindet. - AUTO-Geräteauswahl: Nutzen Sie den AUTO-Modus, um mit der CPU Inferenz zu beginnen und nahtlos zu einem Beschleuniger überzugehen.
Ausführliche Strategien zur Verwaltung der Erstinferenzlatenz finden Sie im Abschnitt Verwaltung der Erstinferenzlatenz.
Wie bringe ich die Optimierung von Latenz und Durchsatz mit Ultralytics YOLO und OpenVINO in Einklang?
Um ein Gleichgewicht zwischen Latenz- und Durchsatzoptimierung herzustellen, müssen Sie die Anforderungen Ihrer Anwendung kennen:
- Optimierung der Latenzzeit: Ideal für Echtzeitanwendungen, die sofortige Antworten erfordern (z. B. Anwendungen für Verbraucher).
- 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).
Mit den Leistungshinweisen von OpenVINO und den Modi für mehrere Geräte können Sie die richtige Balance finden. Wählen Sie die entsprechenden OpenVINO Leistungshinweise auf der Grundlage Ihrer spezifischen Anforderungen.
Kann ich Ultralytics YOLO Modelle mit anderen KI-Frameworks als OpenVINO verwenden?
Ja, Ultralytics YOLO Modelle sind sehr vielseitig und können in verschiedene KI-Frameworks integriert werden. Die Optionen umfassen:
- TensorRT: Für die Optimierung von NVIDIA GPU folgen Sie dem IntegrationsleitfadenTensorRT .
- CoreML: Für Apple-Geräte lesen Sie bitte unsere CoreML Exportanweisungen.
- TensorFlow.js: Für Web- und Node.js-Anwendungen siehe TF.js-Konvertierungsanleitung.
Weitere Integrationen finden Sie auf der SeiteUltralytics Integrationen.