Link to this sectionYOLO向けOpenVINO推論最適化#
Link to this sectionはじめに#
ディープラーニングモデル、特にUltralytics YOLOモデルのような物体検出モデルをデプロイする際、最適なパフォーマンスを達成することは不可欠です。本ガイドでは、IntelのOpenVINOツールキットを活用して推論を最適化する方法、特にレイテンシとスループットに焦点を当てて詳しく解説します。消費者向けアプリケーションから大規模なデプロイメントまで、これらの最適化戦略を理解し適用することで、モデルをさまざまなデバイス上で効率的に実行できるようになります。
Link to this sectionレイテンシの最適化#
レイテンシの最適化は、消費者向けシナリオに典型的な、単一の入力に対して単一のモデルから即時の応答を必要とするアプリケーションにとって極めて重要です。目標は、入力から推論結果までの遅延を最小限に抑えることです。しかし、低レイテンシを実現するには、特に並行推論を実行する場合や複数のモデルを管理する場合に、慎重な検討が必要です。
Link to this sectionレイテンシ最適化の主要戦略:#
- デバイスごとの単一推論: 低レイテンシを実現する最も単純な方法は、デバイスごとに一度に実行する推論を1つに制限することです。同時実行数を増やすと、多くの場合レイテンシが増加します。
- サブデバイスの活用: マルチソケットCPUやマルチタイルGPUなどのデバイスでは、内部のサブデバイスを活用することで、レイテンシの増加を最小限に抑えながら複数のリクエストを処理できます。
- OpenVINO Performance Hints: Utilizing OpenVINO's
ov::LATENCYfor theov::performance_modeproperty during model compilation simplifies performance tuning, offering a device-agnostic and future-proof approach.
Link to this section初回推論レイテンシの管理:#
- モデルキャッシュ: モデルのロード時間やコンパイル時間がレイテンシに与える影響を軽減するため、可能な場合はモデルキャッシュを使用してください。キャッシュが利用できないシナリオでは、通常CPUが最も速いモデルロード時間を提供します。
- モデルマッピングと読み込み: ロード時間を短縮するため、OpenVINOではモデルの読み込みがマッピングに置き換えられました。ただし、モデルがリムーバブルドライブやネットワークドライブ上にある場合は、
ov::enable_mmap(false)を使用して読み込みに戻すことを検討してください。 - AUTOデバイス選択: このモードではCPUで推論を開始し、準備ができ次第アクセラレータに切り替えることで、初回推論レイテンシをシームレスに短縮します。
Link to this sectionスループットの最適化#
スループットの最適化は、多数の推論リクエストを同時に処理するシナリオにおいて極めて重要であり、個々のリクエストのパフォーマンスを大幅に犠牲にすることなくリソース使用率を最大化します。
Link to this sectionスループット最適化へのアプローチ:#
-
OpenVINOパフォーマンスヒント: パフォーマンスヒントを使用して、デバイス全体でスループットを向上させるための高レベルかつ将来性のある手法です。
import openvino.properties.hint as hints config = {hints.performance_mode: hints.PerformanceMode.THROUGHPUT} compiled_model = core.compile_model(model, "GPU", config) -
明示的なバッチ処理とストリーム: 明示的なバッチ処理やストリームの使用を含む、より詳細なパフォーマンス調整のための手法です。
Link to this sectionスループット指向のアプリケーション設計:#
スループットを最大化するために、アプリケーションは以下を行うべきです:
- デバイスの機能をフル活用して、入力を並列処理すること。
- データフローを並列実行用にスケジュールされた同時推論リクエストに分解すること。
- Async APIとコールバックを利用して効率を維持し、デバイスの飢餓状態を回避すること。
Link to this sectionマルチデバイス実行:#
OpenVINOのマルチデバイスモードは、アプリケーションレベルでデバイス管理を行う必要なしに、デバイス間で推論リクエストを自動的にバランスさせることで、スループットの拡張を簡素化します。
Link to this section実用上のパフォーマンス向上#
Ultralytics YOLOモデルでOpenVINO最適化を実装することで、大幅なパフォーマンス向上が見込めます。ベンチマークで示されている通り、Intel CPU上で推論速度が最大3倍向上する可能性があり、統合GPU、専用GPU、VPUを含むIntelのハードウェア環境全体でさらなる加速が期待できます。
例えば、Intel Xeon CPUでYOLO26モデルを実行する場合、OpenVINO最適化版は精度を犠牲にすることなく、画像あたりの推論時間においてPyTorch版を一貫して上回ります。
Link to this section実践的な実装#
Ultralytics YOLOモデルをOpenVINO用にエクスポートおよび最適化するには、export機能を使用できます:
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エクスポート後、最適化されたモデルで推論を実行できます:
# 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 section結論#
OpenVINOを使用してUltralytics YOLOモデルをレイテンシやスループット向けに最適化することで、アプリケーションのパフォーマンスを大幅に向上させることができます。本ガイドで概説した戦略を慎重に適用することで、開発者はモデルを効率的に実行し、さまざまなデプロイメントシナリオの要件を満たすことができます。レイテンシ向けかスループット向けかの最適化の選択は、アプリケーションの具体的なニーズとデプロイ環境の特性に依存することを忘れないでください。
詳細な技術情報や最新のアップデートについては、OpenVINOドキュメントおよびUltralytics YOLOリポジトリを参照してください。これらのリソースでは、ディープラーニングモデルを最大限に活用するための詳細なガイド、チュートリアル、コミュニティサポートを提供しています。
モデルが最適なパフォーマンスを達成することは、単に設定を微調整することだけではありません。アプリケーションのニーズを理解し、情報に基づいた意思決定を行うことです。リアルタイム応答の最適化であれ、大規模処理のためのスループット最大化であれ、Ultralytics YOLOモデルとOpenVINOの組み合わせは、開発者が高性能なAIソリューションをデプロイするための強力なツールキットとなります。
Link to this sectionよくある質問 (FAQ)#
Link to this sectionOpenVINOを使用してUltralytics YOLOモデルの低レイテンシ化を実現するにはどうすればよいですか?#
Ultralytics YOLOモデルを低レイテンシ化するための主な戦略は以下の通りです:
- デバイスごとの単一推論: 遅延を最小限にするため、デバイスごとに一度に実行する推論を1つに制限します。
- サブデバイスの活用: マルチソケットCPUやマルチタイルGPUなどのデバイスを利用して、レイテンシの増加を抑えつつ複数のリクエストを処理します。
- OpenVINOパフォーマンスヒント: モデルコンパイル時にOpenVINOの
ov::LATENCYを使用して、デバイスに依存しない調整を簡素化します。
レイテンシ最適化に関するより実践的なヒントについては、当ガイドのレイテンシの最適化セクションをご覧ください。
Link to this sectionなぜ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)スループット最適化の詳細については、当ガイドのスループットの最適化セクションをご覧ください。
Link to this sectionOpenVINOで初回推論レイテンシを短縮するためのベストプラクティスは何ですか?#
初回推論レイテンシを短縮するには、以下のプラクティスを検討してください:
- モデルキャッシュ: モデルキャッシュを使用して、ロード時間とコンパイル時間を短縮します。
- モデルマッピングと読み込み: デフォルトではマッピング (
ov::enable_mmap(true)) を使用し、モデルがリムーバブルドライブやネットワークドライブ上にある場合のみ読み込み (ov::enable_mmap(false)) に切り替えます。 - AUTOデバイス選択: AUTOモードを活用して、CPU推論から開始し、シームレスにアクセラレータへ移行します。
初回推論レイテンシを管理するための詳細な戦略については、初回推論レイテンシの管理セクションを参照してください。
Link to this sectionUltralytics YOLOとOpenVINOを使用して、レイテンシとスループットの最適化を両立させるにはどうすればよいですか?#
レイテンシとスループットの最適化のバランスを取るには、アプリケーションのニーズを理解することが必要です:
- レイテンシ最適化: 即時の応答を必要とするリアルタイムアプリケーション(消費者向けアプリなど)に最適です。
- スループット最適化: 多くの同時推論が発生するシナリオで、リソース使用率を最大化する(大規模なデプロイメントなど)のに最適です。
OpenVINOの高レベルなパフォーマンスヒントとマルチデバイスモードを使用することで、適切なバランスを取ることができます。特定の要件に基づいて、適切なOpenVINOパフォーマンスヒントを選択してください。
Link to this sectionUltralytics YOLOモデルをOpenVINO以外のAIフレームワークで使用することはできますか?#
はい、Ultralytics YOLOモデルは非常に汎用性が高く、さまざまなAIフレームワークと統合できます。選択肢は以下の通りです:
- TensorRT: NVIDIA GPUの最適化については、TensorRT統合ガイドに従ってください。
- CoreML: Appleデバイスについては、CoreMLエクスポートの手順を参照してください。
- TensorFlow.js: WebおよびNode.jsアプリについては、TF.js変換ガイドを参照してください。
その他の統合については、Ultralytics統合ページをご覧ください。