Meet YOLO26: next-gen vision AI.

Link to this sectionOpenVINO Inferenzoptimierung für YOLO#

OpenVINO Ecosystem

Link to this sectionEinführung#

Beim Bereitstellen von Deep Learning-Modellen, insbesondere solchen für Objekterkennung wie den Ultralytics YOLO-Modellen, ist eine optimale Leistung entscheidend. Dieser Leitfaden befasst sich mit der Nutzung von Intels OpenVINO-Toolkit zur Optimierung der Inferenz mit Fokus auf Latenz und Durchsatz. Egal, ob du an Anwendungen für Endverbraucher oder an Großprojekten arbeitest, das Verständnis und die Anwendung dieser Optimierungsstrategien stellen sicher, dass deine Modelle effizient auf verschiedenen Geräten laufen.

Link to this sectionOptimierung auf Latenz#

Die Latenzoptimierung ist unerlässlich für Anwendungen, die eine sofortige Reaktion von einem einzelnen Modell auf eine einzelne Eingabe erfordern, was typisch für Szenarien mit Endverbrauchern ist. Das Ziel ist es, die Verzögerung zwischen Eingabe und Inferenzergebnis zu minimieren. Das Erreichen einer niedrigen Latenz erfordert jedoch sorgfältige Überlegungen, insbesondere bei der Ausführung gleichzeitiger Inferenzen oder der Verwaltung mehrerer Modelle.

Link to this sectionWichtige Strategien zur Latenzoptimierung:#

  • Einzelne Inferenz pro Gerät: Der einfachste Weg zu niedriger Latenz ist die Beschränkung auf eine Inferenz nach der anderen pro Gerät. Zusätzliche Parallelität führt oft zu erhöhter Latenz.
  • Nutzung von Sub-Geräten: Geräte wie Multi-Socket-CPUs oder Multi-Tile-GPUs können mehrere Anfragen mit minimalem Latenzanstieg ausführen, indem sie ihre internen Sub-Geräte nutzen.
  • OpenVINO Performance-Hinweise: Die Verwendung von OpenVINOs ov::LATENCY für die Eigenschaft ov::performance_mode während der Modellkompilierung vereinfacht das Performance-Tuning und bietet einen geräteunabhängigen und zukunftssicheren Ansatz.

Link to this sectionVerwaltung der Latenz bei der ersten Inferenz:#

  • Modell-Caching: Um zu verhindern, dass Lade- und Kompilierzeiten die Latenz beeinträchtigen, nutze nach Möglichkeit Modell-Caching. Für Szenarien, in denen Caching nicht praktikabel ist, bieten CPUs im Allgemeinen die schnellsten Modellladezeiten.
  • Modell-Mapping vs. Lesen: Um Ladezeiten zu reduzieren, hat OpenVINO das Lesen des Modells durch Mapping ersetzt. Wenn sich das Modell jedoch auf einem Wechseldatenträger oder einem Netzlaufwerk befindet, solltest du ov::enable_mmap(false) verwenden, um zum Lesen zurückzukehren.
  • AUTO-Geräteauswahl: Dieser Modus beginnt die Inferenz auf der CPU und wechselt zu einem Beschleuniger, sobald dieser bereit ist, was die Latenz bei der ersten Inferenz nahtlos reduziert.

Link to this sectionOptimierung auf Durchsatz#

Die Durchsatzoptimierung ist entscheidend für Szenarien, die zahlreiche Inferenzanfragen gleichzeitig bedienen, um die Ressourcenauslastung zu maximieren, ohne die Leistung einzelner Anfragen wesentlich zu beeinträchtigen.

Link to this sectionAnsätze zur Durchsatzoptimierung:#

  1. OpenVINO Performance-Hinweise: Eine übergeordnete, zukunftssichere Methode zur Verbesserung des Durchsatzes über Geräte hinweg mithilfe von Performance-Hinweisen.

    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 granularerer Ansatz, der explizites Batching und die Verwendung von Streams für fortgeschrittenes Performance-Tuning umfasst.

Link to this sectionGestaltung von durchsatzorientierten Anwendungen:#

Um den Durchsatz zu maximieren, sollten Anwendungen:

  • Eingaben parallel verarbeiten und die Fähigkeiten des Geräts voll ausnutzen.
  • Datenflüsse in gleichzeitige Inferenzanfragen zerlegen, die für eine parallele Ausführung geplant sind.
  • Die Async API mit Callbacks verwenden, um die Effizienz zu wahren und eine Unterauslastung der Geräte zu vermeiden.

Link to this sectionMulti-Device-Ausführung:#

Der Multi-Device-Modus von OpenVINO vereinfacht die Skalierung des Durchsatzes, indem Inferenzanfragen automatisch über Geräte hinweg ausgeglichen werden, ohne dass ein Management auf Anwendungsebene erforderlich ist.

Link to this sectionLeistungsgewinne in der Praxis#

Die Implementierung von OpenVINO-Optimierungen bei Ultralytics YOLO-Modellen kann zu erheblichen Leistungsverbesserungen führen. Wie in den Benchmarks gezeigt, können Benutzer bis zu 3x schnellere Inferenzgeschwindigkeiten auf Intel-CPUs erleben, wobei noch größere Beschleunigungen über das gesamte Intel-Hardware-Spektrum hinweg möglich sind, einschließlich integrierter GPUs, dedizierter GPUs und VPUs.

Wenn du beispielsweise YOLO26-Modelle auf Intel Xeon-CPUs ausführst, übertreffen die OpenVINO-optimierten Versionen ihre PyTorch-Gegenstücke konsistent bei der Inferenzzeit pro Bild, ohne Kompromisse bei der Genauigkeit einzugehen.

Link to this sectionPraktische Implementierung#

Um dein Ultralytics YOLO-Modell für OpenVINO zu exportieren und zu optimieren, kannst du die Export-Funktionalität verwenden:

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")

# Export the model to OpenVINO format
model.export(format="openvino", quantize=16)  # Export with FP16 precision

Nach dem Export kannst du die Inferenz mit dem optimierten Modell ausführen:

# Load the OpenVINO model
ov_model = YOLO("yolo26n_openvino_model/")

# Run inference (Ultralytics auto-selects OpenVINO LATENCY mode for batch=1)
results = ov_model("https://ultralytics.com/images/bus.jpg", verbose=True)

Link to this sectionFazit#

Die Optimierung von Ultralytics YOLO-Modellen auf Latenz und Durchsatz mit OpenVINO kann die Leistung deiner Anwendung erheblich steigern. Durch das sorgfältige Anwenden der in diesem Leitfaden beschriebenen Strategien können Entwickler sicherstellen, dass ihre Modelle effizient laufen und den Anforderungen verschiedener Einsatzszenarien gerecht werden. Denke daran, dass die Wahl zwischen der Optimierung auf Latenz oder Durchsatz von deinen spezifischen Anwendungsanforderungen und den Eigenschaften der Bereitstellungsumgebung abhängt.

Für detailliertere technische Informationen und die neuesten Updates beziehe dich auf die OpenVINO-Dokumentation und das Ultralytics YOLO-Repository. Diese Ressourcen bieten tiefgehende Anleitungen, Tutorials und Community-Unterstützung, um das Beste aus deinen Deep Learning-Modellen herauszuholen.


Sicherzustellen, dass deine Modelle eine optimale Leistung erzielen, bedeutet nicht nur, an Konfigurationen zu schrauben; es geht darum, die Anforderungen deiner Anwendung zu verstehen und fundierte Entscheidungen zu treffen. Egal, ob du auf Echtzeit-Reaktionen optimierst oder den Durchsatz für die Verarbeitung in großem Maßstab maximierst, die Kombination aus Ultralytics YOLO-Modellen und OpenVINO bietet Entwicklern ein leistungsstarkes Toolkit zur Bereitstellung von hochperformanten KI-Lösungen.

Link to this sectionFAQ#

Link to this sectionWie optimiere ich Ultralytics YOLO-Modelle auf niedrige Latenz mit OpenVINO?#

Die Optimierung von Ultralytics YOLO-Modellen auf niedrige Latenz umfasst mehrere Schlüsselstrategien:

  1. Einzelne Inferenz pro Gerät: Begrenze Inferenzen auf eine nach der anderen pro Gerät, um Verzögerungen zu minimieren.
  2. Nutzung von Sub-Geräten: Nutze Geräte wie Multi-Socket-CPUs oder Multi-Tile-GPUs, die mehrere Anfragen mit minimalem Latenzanstieg verarbeiten können.
  3. OpenVINO Performance-Hinweise: Verwende OpenVINOs ov::LATENCY während der Modellkompilierung für ein vereinfachtes, geräteunabhängiges Tuning.

Für weitere praktische Tipps zur Latenzoptimierung schau dir den Abschnitt Latenzoptimierung in unserem Leitfaden an.

Link to this sectionWarum sollte ich OpenVINO zur Optimierung des Ultralytics YOLO-Durchsatzes verwenden?#

OpenVINO verbessert den Durchsatz von Ultralytics YOLO-Modellen durch Maximierung der Ressourcenauslastung des Geräts, ohne die Leistung zu beeinträchtigen. Zu den Hauptvorteilen gehören:

  • Performance-Hinweise: Einfaches, übergeordnetes Performance-Tuning über Geräte hinweg.
  • Explizites Batching und Streams: Feinabstimmung für fortgeschrittene Leistung.
  • Multi-Device-Ausführung: Automatisierter Lastausgleich für Inferenzen, was das Management 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 Durchsatzoptimierung im Abschnitt Durchsatzoptimierung unseres detaillierten Leitfadens.

Link to this sectionWas ist die bewährte Methode zur Reduzierung der Latenz bei der ersten Inferenz in OpenVINO?#

Um die Latenz bei der ersten Inferenz zu reduzieren, beachte diese Praktiken:

  1. Modell-Caching: Nutze Modell-Caching, um Lade- und Kompilierzeiten zu verringern.
  2. Modell-Mapping vs. Lesen: Verwende standardmäßig Mapping (ov::enable_mmap(true)), aber wechsle zum Lesen (ov::enable_mmap(false)), wenn sich das Modell auf einem Wechseldatenträger oder einem Netzlaufwerk befindet.
  3. AUTO-Geräteauswahl: Nutze den AUTO-Modus, um mit der CPU-Inferenz zu starten und nahtlos auf einen Beschleuniger überzugehen.

Detaillierte Strategien zum Management der Latenz bei der ersten Inferenz findest du im Abschnitt Verwaltung der Latenz bei der ersten Inferenz.

Link to this sectionWie balanciere ich die Optimierung auf Latenz und Durchsatz mit Ultralytics YOLO und OpenVINO?#

Das Ausbalancieren von Latenz- und Durchsatzoptimierung erfordert das Verständnis deiner Anwendungsanforderungen:

  • Latenzoptimierung: Ideal für Echtzeitanwendungen, die sofortige Reaktionen erfordern (z. B. Anwendungen für Endverbraucher).
  • Durchsatzoptimierung: Am besten für Szenarien mit vielen gleichzeitigen Inferenzen, um die Ressourcennutzung zu maximieren (z. B. Großprojekte).

Die Verwendung der übergeordneten Performance-Hinweise und Multi-Device-Modi von OpenVINO kann dabei helfen, das richtige Gleichgewicht zu finden. Wähle die passenden OpenVINO Performance-Hinweise basierend auf deinen spezifischen Anforderungen.

Link to this sectionKann ich Ultralytics YOLO-Modelle mit anderen KI-Frameworks außer OpenVINO verwenden?#

Ja, Ultralytics YOLO-Modelle sind äußerst vielseitig und können in verschiedene KI-Frameworks integriert werden. Optionen sind unter anderem:

Entdecke weitere Integrationen auf der Ultralytics-Integrationsseite.

Kommentare