Ultralytics YOLO モデルのための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)
をクリックして読書に戻る。 - AUTO デバイス選択:このモードでは、CPUで推論を開始し、準備ができ次第アクセラレータに移行するため、最初の推論の待ち時間をシームレスに短縮できる。
スループットの最適化
スループットの最適化は、多数の推論リクエストに同時に対応するシナリオにおいて、個々のリクエストのパフォーマンスを大幅に犠牲にすることなく、リソースの利用率を最大化するために極めて重要である。
スループット最適化へのアプローチ:
- OpenVINO パフォーマンス・ヒント:パフォーマンス・ヒントを使用してデバイス間のスループットを向上させる、ハイレベルで将来性のある方法。
import openvino.properties as props
import openvino.properties.hint as hints
config = {hints.performance_mode: hints.PerformanceMode.THROUGHPUT}
compiled_model = core.compile_model(model, "GPU", config)
- 明示的バッチ処理とストリーム:高度なパフォーマンス・チューニングのための明示的なバッチ処理とストリームの使用を含む、よりきめ細かいアプローチ。
スループット指向アプリケーションの設計
スループットを最大化するために、アプリケーションは
- 入力を並行して処理し、装置の能力をフルに活用する。
- データフローを並列実行される推論要求に分解する。
- コールバックを使った非同期APIを活用することで、効率を維持し、デバイスの飢餓状態を回避する。
マルチデバイス実行:
OpenVINOのマルチ・デバイス・モードは、アプリケーション・レベルのデバイス管理を必要とすることなく、デバイス間の推論要求を自動的にバランスさせることにより、スループットのスケーリングを簡素化する。
結論
Ultralytics YOLO モデルのレイテンシとスループットをOpenVINO で最適化することで、アプリケーションのパフォーマンスを大幅に向上させることができます。このガイドに概説されている戦略を注意深く適用することで、開発者はモデルが効率的に実行され、さまざまな展開シナリオの要求を満たすようにすることができます。レイテンシとスループットのどちらを最適化するかは、特定のアプリケーションのニーズと配備環境の特性によって決まることを忘れないでください。
より詳細な技術情報と最新のアップデートについては、OpenVINO ドキュメントと Ultralytics YOLO リポジトリを参照してください。これらのリソースでは、ディープラーニングモデルを最大限に活用するための詳細なガイド、チュートリアル、コミュニティサポートを提供しています。
モデルが最適なパフォーマンスを達成できるようにすることは、単に設定を微調整することではなく、アプリケーションのニーズを理解し、情報に基づいた意思決定を行うことです。リアルタイム応答の最適化であれ、大規模処理のスループットの最大化であれ、Ultralytics YOLO モデルとOpenVINO の組み合わせは、開発者が高性能AIソリューションを展開するための強力なツールキットを提供します。