コンテンツにスキップ

YOLOのためのOpenVINO推論最適化

OpenVINOエコシステム

はじめに

深層学習モデル、特にUltralytics YOLOモデルなどの物体検出モデルをデプロイする場合、最適なパフォーマンスを達成することが重要です。このガイドでは、推論を最適化するためにIntelのOpenVINOツールキットを活用し、レイテンシとスループットに焦点を当てます。コンシューマーグレードのアプリケーションでも、大規模なデプロイメントでも、これらの最適化戦略を理解し適用することで、モデルがさまざまなデバイスで効率的に実行されるようになります。

レイテンシーの最適化

レイテンシの最適化は、単一の入力に対して単一のモデルからの即時応答を必要とするアプリケーション、特にコンシューマーシナリオにおいて不可欠です。目標は、入力と推論結果の間の遅延を最小限に抑えることです。ただし、特に同時推論を実行したり、複数のモデルを管理したりする場合は、低レイテンシの実現には慎重な検討が必要です。

レイテンシ最適化のための主要な戦略:

  • デバイスごとのシングル推論: 低レイテンシを実現する最も簡単な方法は、デバイスごとに一度に 1 つの推論に制限することです。同時実行性を高めると、レイテンシが増加することがよくあります。
  • サブデバイスの活用: マルチソケットCPUやマルチタイルGPUのようなデバイスは、内部のサブデバイスを利用することで、レイテンシの増加を最小限に抑えながら複数のリクエストを実行できます。
  • OpenVINOのパフォーマンスヒント: OpenVINOの活用 ov::hint::PerformanceMode::LATENCY ~の場合 ov::hint::performance_mode モデルコンパイル中のプロパティにより、パフォーマンスチューニングが簡素化され、デバイスに依存しない将来性のあるアプローチが提供されます。

初回推論レイテンシの管理:

  • モデルのキャッシュ: モデルのロード時間とコンパイル時間がレイテンシーに影響を与えるのを軽減するため、可能な場合はモデルのキャッシュを使用してください。キャッシュが利用できないシナリオでは、一般的にCPUが最速のモデルロード時間を提供します。
  • モデルのマッピングと読み込みの比較: ロード時間を短縮するために、OpenVINOはモデルの読み込みをマッピングに置き換えました。ただし、モデルがリムーバブルドライブまたはネットワークドライブ上にある場合は、以下を使用することを検討してください。 ov::enable_mmap(false) 読み取りに戻るには。
  • AUTOデバイス選択: このモードはCPUでの推論から開始し、準備が整い次第アクセラレータに移行することで、最初の推論レイテンシをシームレスに削減します。

スループットの最適化

スループットの最適化は、多数の推論リクエストを同時に処理するシナリオにおいて重要であり、個々のリクエストのパフォーマンスを大幅に犠牲にすることなく、リソース利用率を最大化します。

スループット最適化へのアプローチ:

  1. OpenVINOのパフォーマンスヒント: パフォーマンスヒントを使用して、デバイス全体の処理能力を向上させるための、将来を見据えた高度な手法です。

    import openvino.properties.hint as hints
    
    config = {hints.performance_mode: hints.PerformanceMode.THROUGHPUT}
    compiled_model = core.compile_model(model, "GPU", config)
    
  2. 明示的なバッチ処理とストリーム: 高度なパフォーマンスチューニングのために、明示的なバッチ処理とストリームの使用を含む、より詳細なアプローチ。

スループット指向アプリケーションの設計:

スループットを最大化するために、アプリケーションは次のことを行う必要があります。

  • デバイスの機能を最大限に活用して、入力を並行して処理します。
  • データフローを並行推論リクエストに分解し、並列実行のためにスケジュールします。
  • Async APIをコールバックとともに利用して、効率を維持し、デバイスの枯渇を防ぎます。

マルチデバイス実行:

OpenVINOのマルチデバイスモードは、アプリケーションレベルのデバイス管理を必要とせずに、デバイス間で推論要求を自動的に分散することで、スループットのスケーリングを簡素化します。

実際のパフォーマンス向上

Ultralytics YOLOモデルでOpenVINOの最適化を実装すると、パフォーマンスが大幅に向上します。ベンチマークで示されているように、Intel CPUで最大3倍高速な推論速度を体験でき、統合GPU、専用GPU、VPUを含むIntelのハードウェアスペクトル全体でさらに大きな高速化が可能です。

たとえば、Intel Xeon CPU で YOLOv8 モデルを実行する場合、OpenVINO で最適化されたバージョンは、精度を損なうことなく、画像あたりの推論時間に関して PyTorch の対応するものよりも一貫して優れたパフォーマンスを発揮します。

実際的な実装

OpenVINO用にUltralytics YOLOモデルをエクスポートおよび最適化するには、export機能を使用できます。

from ultralytics import YOLO

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

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

エクスポート後、最適化されたモデルで推論を実行できます。

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

# Run inference with performance hints for latency
results = ov_model("path/to/image.jpg", verbose=True)

結論

OpenVINO を使用して Ultralytics YOLO モデルをレイテンシーとスループット向けに最適化すると、アプリケーションのパフォーマンスを大幅に向上させることができます。このガイドで概説されている戦略を注意深く適用することで、開発者はモデルが効率的に実行されるようにし、さまざまなデプロイメントシナリオの要求を満たすことができます。レイテンシーまたはスループットのどちらを最適化するかは、特定のアプリケーションのニーズとデプロイメント環境の特性によって異なることに注意してください。

より詳細な技術情報と最新のアップデートについては、OpenVINOドキュメントUltralytics YOLOリポジトリを参照してください。これらのリソースは、深層学習モデルを最大限に活用するための詳細なガイド、チュートリアル、およびコミュニティサポートを提供します。


モデルが最適なパフォーマンスを発揮するようにすることは、構成を調整するだけではありません。アプリケーションのニーズを理解し、情報に基づいた意思決定を行うことが重要です。 Ultralytics YOLOモデルとOpenVINOの組み合わせは、リアルタイム応答の最適化、または大規模処理のスループットの最大化のいずれの場合でも、開発者が高性能AIソリューションをデプロイするための強力なツールキットを提供します。

よくある質問

OpenVINO を使用して、低遅延のために Ultralytics YOLO モデルを最適化するにはどうすればよいですか?

Ultralytics YOLO モデルを低レイテンシー向けに最適化するには、いくつかの重要な戦略があります。

  1. デバイスごとのシングル推論: 遅延を最小限に抑えるために、デバイスごとに一度に 1 つの推論に制限します。
  2. サブデバイスの活用: マルチソケットCPUやマルチタイルGPUのようなデバイスを利用すると、レイテンシの増加を最小限に抑えながら複数のリクエストを処理できます。
  3. OpenVINOのパフォーマンスヒント: OpenVINO の使用 ov::hint::PerformanceMode::LATENCY 簡素化されたデバイスに依存しないチューニングのために、モデルコンパイル中に。

レイテンシ最適化に関するより実践的なヒントについては、ガイドのレイテンシ最適化セクションをご覧ください。

Ultralytics YOLOのスループットを最適化するためにOpenVINOを使用すべきなのはなぜですか?

OpenVINOは、パフォーマンスを犠牲にすることなくデバイスリソースの利用を最大化することで、Ultralytics YOLOモデルのスループットを向上させます。主な利点は次のとおりです。

  • パフォーマンスのヒント: デバイス全体でのシンプルで高度なパフォーマンチューニング。
  • 明示的なバッチ処理とストリーム: 高度なパフォーマンスのための微調整。
  • マルチデバイス実行: 自動化された推論負荷分散により、アプリケーションレベルの管理が容易になります。

設定例:

import openvino.properties.hint as hints

config = {hints.performance_mode: hints.PerformanceMode.THROUGHPUT}
compiled_model = core.compile_model(model, "GPU", config)

スループット最適化に関する詳細は、詳細ガイドのスループット最適化セクションをご覧ください。

OpenVINOで初回推論のレイテンシを削減するためのベストプラクティスは何ですか?

初回推論のレイテンシを短縮するために、以下の方法を検討してください。

  1. モデルのキャッシュ: モデルのキャッシュを使用して、ロード時間とコンパイル時間を短縮します。
  2. モデルのマッピングと読み込みの比較: マッピングを使用 (ov::enable_mmap(true))がデフォルトですが、モデルがリムーバブルドライブまたはネットワークドライブ上にある場合は、(ov::enable_mmap(false))の読み取りに切り替えます。
  3. AUTOデバイス選択: AUTOモードを利用して、CPU推論から開始し、アクセラレータにシームレスに移行します。

初回推論の遅延を管理するための詳細な戦略については、初回推論の遅延の管理セクションを参照してください。

Ultralytics YOLOとOpenVINOで、レイテンシーとスループットの最適化のバランスを取るにはどうすればよいですか?

レイテンシとスループットの最適化のバランスを取るには、アプリケーションのニーズを理解する必要があります。

  • レイテンシ最適化: 即応性を必要とするリアルタイムアプリケーション(例:コンシューマーグレードのアプリ)に最適です。
  • スループットの最適化: リソースの使用率を最大化する(大規模なデプロイメントなど)、多数の同時推論があるシナリオに最適です。

OpenVINOの高度なパフォーマンスヒントとマルチデバイスモードを使用すると、適切なバランスを取るのに役立ちます。特定の要件に基づいて、適切なOpenVINOパフォーマンスヒントを選択してください。

OpenVINO以外の他のAIフレームワークでUltralytics YOLOモデルを使用できますか?

はい、Ultralytics YOLOモデルは非常に汎用性が高く、さまざまなAIフレームワークと統合できます。オプションは次のとおりです。

Ultralytics Integrations pageで、より多くの統合を見ていきましょう。



📅 1年前に作成 ✏️ 4か月前に更新

コメント