コンテンツへスキップ

Ultralytics YOLO モデルのためのOpenVINO 推論の最適化:包括的ガイド

OpenVINO エコシステム

はじめに

ディープラーニングモデル、特にUltralytics YOLO モデルのような物体検出のためのモデルを展開する場合、最適なパフォーマンスを達成することは非常に重要です。このガイドでは、Intel のOpenVINO ツールキットを活用し、レイテンシとスループットに焦点を当てて推論を最適化する方法について掘り下げます。コンシューマーグレードのアプリケーションであれ、大規模なデプロイメントであれ、これらの最適化戦略を理解し、適用することで、さまざまなデバイスでモデルが効率的に動作するようになります。

レイテンシーの最適化

待ち時間の最適化は、消費者向けのシナリオで典型的な、1つの入力に対して1つのモデルから即座に応答することを必要とするアプリケーションにとって不可欠である。目標は、入力と推論結果の間の遅延を最小化することです。しかし、低遅延を達成するためには、特に同時推論を実行する場合や複数のモデルを管理する場合には、慎重な検討が必要です。

遅延最適化のための主要戦略:

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

最初の推論待ち時間の管理:

  • モデルキャッシング:レイテンシに影響するモデルのロード時間とコンパイル時間を短縮するために、可能な限りモデルキャッシングを使用します。キャッシングが実行できないシナリオでは、一般的にCPUが最も速いモデルロード時間を提供します。
  • モデルマッピングとリーディングの比較: ロード時間を短縮するため、OpenVINO 、モデルの読み込みをマッピングに置き換えました。ただし、モデルがリムーバブルドライブやネットワークドライブ上にある場合は ov::enable_mmap(false) をクリックして読書に戻る。
  • 自動デバイス選択:このモードでは、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. 明示的バッチ処理とストリーム:高度なパフォーマンス・チューニングのための明示的なバッチ処理とストリームの使用を含む、よりきめ細かいアプローチ。

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

スループットを最大化するために、アプリケーションは

  • 入力を並行して処理し、装置の能力をフルに活用する。
  • データフローを並列実行される推論要求に分解する。
  • コールバックを使った非同期APIを活用することで、効率を維持し、デバイスの飢餓状態を回避する。

マルチデバイス実行:

OpenVINOのマルチ・デバイス・モードは、アプリケーション・レベルのデバイス管理を必要とすることなく、デバイス間の推論要求を自動的にバランスさせることにより、スループットのスケーリングを簡素化する。

結論

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

より詳細な技術情報と最新のアップデートについては、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 インテグレーションのページで、より多くのインテグレーションをご覧ください。



作成日:2024-03-17 更新日:2024-07-05
作成者:glenn-jocher(5)

コメント