畳み込みニューラル・ネットワークの台頭とともに、専用の推論アクセラレーター (英語) が登場し始めています。多くのエッジやクラウドの推論ワークロードでは、すでに複数のアクセラレーターが採用されています。従来からあるコンシューマー・アプリケーションでも、CPU と GPU の組み合わせは当たり前となっており (グラフィックス・プロセッサーを内蔵したインテル・ベースのプラットフォームなど)、両方のデバイスを自動的に利用することはますます魅力的になっています。
しかし、適切な実装なしには、より多くのアクセラレーターを統合することは容易でなく、コード変更やアプリケーション・ロジックの見直しが必要になります。幸いなことに、インテル® ディストリビューションの OpenVINO™ ツールキットは、さまざまなインテル® アーキテクチャーにわたって統一されたソリューションを提供し、新たにサポートされた自動マルチデバイス推論により、スケーラブルなアクセラレーター統合を可能にします。
以下は、自動マルチデバイス推論サポートによる主なパフォーマンスの利点です。
- シングルデバイスでの実行と比較して、マルチデバイスでのスループットが向上。
- 推論の負荷を複数のデバイスに分散できるため、パフォーマンスの一貫性が向上。1 つのデバイスが推論以外のタスク (例えば、デコードなど) でビジーになった場合、ほかのデバイスは自動的に負荷を増やします。
- デバイスごとの使用法をハードコードしなくても、さまざまなエンドユーザー・システムをサポート。新しい InferenceEngine API では、すべてのデバイスを列挙して、それを基にマルチデバイスを作成 (英語) することができます。
マルチデバイスの設定
マルチデバイス・サポートは、インテル® ディストリビューションの OpenVINO™ ツールキットの InferenceEngine (英語) 機能の一部です。セットアップには、大きく分けて 2 つのステップがあります。
- 通常どおり、個々のデバイスを設定します (例えば、CPU 用の推論スレッドの数など)。新しい InferenceEngine の「Core」 API (英語) では、デバイスのエイリアスを作成できます。
- 設定済みデバイスの (優先順位付けされた) リストを基にマルチデバイスを定義します。アプリケーションで必要な変更はこれだけです。デバイスの優先順位は、実行時に推論を停止することなく変更できます。
最後に、アプリケーションは、ほかのデバイスと同様に、マルチデバイスと通信します。例えば、自動的にネットワークをロードして、特定のマルチデバイス・インスタンスを飽和させるために必要な要求を作成します。詳細とサンプルコードは、ドキュメント (英語) を参照してください。
マルチデバイス実行
内部のマルチデバイス・ロジックは、自動的に個々の推論要求を利用可能な計算デバイスに割り当てて、要求を並列に実行します。
アプリケーションの実行ロジックは変更されません。各デバイスに明示的にネットワークをロードしたり、デバイスごとに個別のキューを維持したり、キュー間の推論要求のバランスを調整する必要はありません。アプリケーションは、マルチデバイスを実際のマシンを扱うデバイスの 1 つと認識します。
マルチデバイスでパフォーマンスを最大限に引き出すためには、次の 2 つが重要です。
- マルチデバイス (ひいてはその下のデバイス) に十分なデータを供給する。推論要求 (ビデオフレームや画像など) は独立したデータであるため、マルチデバイスは、スケジュール・オーバーヘッドを最小限に抑えるため、(最も外側である) 「要求」レベルでロードバランスを行います。
- 以前のブロッキング待機呼び出しとは対照的に、完了コールバックに推論要求を使用する。マルチデバイス実行では、(デバイスにより処理速度が大きく異なる可能性があり) 要求の完了順が必ずしも送信順と一致しないため、これはパフォーマンスにとって重要です。
例えば、1 つの CPU または GPU で 4 つのカメラ (と 4 つの推論要求) を処理する場合について考えてみます。CPU と GPU の両方を使用すれば、処理するカメラ (と要求) を増やすことでマルチデバイスをビジーに保つことができ、減らすことでレイテンシーを向上できます。
マルチデバイスのパフォーマンス
以下は、各種推論デバイスでのマルチデバイスのパフォーマンスです。
図 1. Multi-device execution on the CPU and integrated GPU of the Intel Core i7-8700K processor. ‘1’ represents the “ideal” performance (if the numbers from individual “CPU-only” and “GPU-only” devices were combined perfectly). Configuration: Intel® Core™ i7-8700k processor @ 3.20GHz with Gen9 Graphics, 16 GB RAM, OS: Ubuntu 16.04.3 LTS 64 bit, Kernel: 4.15.0-29-generic. Intel® Distribution of OpenVINO™ toolkit 2019 R2. See notices and disclaimers for details.
実際のマルチデバイス・パフォーマンスは、「理想的な」パフォーマンスよりも低く、トポロジーにより異なります。このケースでは、CPU と GPU は同じダイ上にあり、実際にはメモリー帯域幅を奪い合います。
また、どちらのデバイスのパフォーマンスも、動的な周波数スケーリングの影響を受けます。その結果、消費電力と発熱量を管理するため、一方または両方のデバイスがターボ周波数を利用できなくなる可能性があります。どちらの要因も全体的なパフォーマンスを低下させますが、マルチデバイスの効率は 79% ~ 93% です。
最後に、特定のモデルで CPU と GPU のどちらが速いかにかかわらず、マルチデバイスはシングルデバイスよりも常に高速です。
図 2. Multi-device execution on the integrated GPU and High-Density Deep Learning (HDDL, see Intel® Vision Accelerator Design with Intel® Vision Accelerator Intel® Movidius™ VPUs product details). ‘1’ represents the “ideal” performance (if the numbers from individual devices were combined perfectly). Configurations: Intel® Core™ i7-8700k processor @ 3.20GHz with Gen9 Graphics, 16 GB RAM, Intel® Vision Accelerator with 8 Intel® Movidius™ VPUs. OS: Ubuntu 16.04.3 LTS 64 bit, Kernel: 4.15.0-29-generic. Intel® Distribution of OpenVINO™ toolkit 2019 R2. See notices and disclaimers for details.
iGPU とインテル® ビジョン・アクセラレーター・デザイン (インテル® Movidius™ VPU 搭載) (英語) は、マルチデバイス実行で、すべてのモデル例において少なくとも 99% のマルチデバイスのパフォーマンス効率を達成しました。次に、この結果を再現する方法を説明します。
インテル® ディストリビューションの OpenVINO™ ツールキットのサンプルでマルチデバイスを使用してパフォーマンスのベンチマークを測定する
"-d
" ("device" の略) コマンドライン・オプションをサポートするインテル® ディストリビューションの OpenVINO™ ツールキットのすべてのサンプルで、マルチデバイスを利用できます。Benchmark Application (英語) は、マルチデバイスの最適な使用法に関する最も優れたリファレンスです。以下に、HDDL+GPU パフォーマンスを評価するコマンドラインの例を示します。
$ ./benchmark_app –d MULTI:HDDL,GPU –m -i
前のセクションのパフォーマンス・データはこの方法で収集されました。最新バージョンのインテル® ディストリビューションの OpenVINO™ ツールキットでは、すべてのデバイスが FP16 IR をサポートしているため、FP16 IR の入力モデルをマルチデバイスで利用できます。
まとめ
複数のアクセラレーターの使用は、推論スループットの向上やその他のパフォーマンスの利点をもたらしますが、アプリケーションの実行に必要な多くの変数を調整しなければならず、多様で複雑な設計になります。
インテル® ディストリビューションの OpenVINO™ ツールキットは、広範なモデルセットとアプリケーション分野で強力な推論パフォーマンスを実現します。インテル® ディストリビューションの OpenVINO™ ツールキットのマルチデバイス推論機能は、アプリケーションで複数のアクセラレーターを活用する透過的な方法を提供します。これにより、既存のアプリケーションを明示的なマルチデバイス・ロジック向けに変更せずに、パフォーマンスを大幅に向上できます。
関連情報
Notices and Disclaimers
Software and workloads used in performance tests may have been optimized for performance only on Intel microprocessors.
Performance tests, such as SYSmark and MobileMark, are measured using specific computer systems, components, software, operations and functions. Any change to any of those factors may cause the results to vary. You should consult other information and performance tests to assist you in fully evaluating your contemplated purchases, including the performance of that product when combined with other products. For more complete information visit www.intel.com/benchmarks.
Test Configuration
Intel® Core™ i7-8700 Processor @ 3.20GHz with 16 GB RAM, Intel® Vision Accelerator with 8 Intel Movidius VPUs, Gen9 Graphics (Intel® UHD Graphics 630), OS: Ubuntu 16.04.3 LTS 64 bit, Kernel: 4.15.0-29-generic. Intel Distribution of OpenVINO toolkit 2019 R2.
Performance results are based on testing as of July 16, 2019 by Intel Corporation and may not reflect all publicly available security updates. See configuration disclosure for details. No product or component can be absolutely secure. For more complete information about performance and benchmark results, visit www.intel.com/benchmarks.
Optimization Notice: Intel’s compilers may or may not optimize to the same degree for non-Intel microprocessors for optimizations that are not unique to Intel microprocessors. These optimizations include SSE2, SSE3, and SSSE3 instruction sets and other optimizations. Intel does not guarantee the availability, functionality, or effectiveness of any optimization on microprocessors not manufactured by Intel. Microprocessor-dependent optimizations in this product are intended for use with Intel microprocessors. Certain optimizations not specific to Intel microarchitecture are reserved for Intel microprocessors. Please refer to the applicable product User and Reference Guides for more information regarding the specific instruction sets covered by this notice.
Notice Revision #20110804