高負荷環境でのベンチマーク

一般的にOpenVINOやその他のAI toolkitを一般用途で使用する場合は、24時間365日運用が前提だと思います
また、処理は常に高負荷がかかった状態だと思います
このような状況を想像して、CPU,GPU,NCS2を使用した場合の変化を実験してみました

実験環境を用意します
今回はOpenVINOが走るマシンと3つのSSHを接続し、1つ目はOpenVINOのベンチマークソフト、2つ目はCPUのクロック確認、3つ目はCPU負荷用のベンチマークソフト実行を行いました
ウィンドウは下記のようになります

まずは何も負荷をかけずに、CPU,GPU,NCS2(MYRIAD)を指定したベンチマークを実行します
実行時のオプションは下記の通り

inference_engine_cpp_samples_build/intel64/Release/benchmark_app -i test_images -m ~/openvino_models/intel/vehicle-detection-adas-0002/FP16/vehicle-detection-adas-0002.xml
(test_imagesにはcar.pngのみを入れています)

このコマンドにそれぞれ-d CPU, -d GPU, -d MYRIADを指定して、ベンチマークを取得します

今回のHW環境ですが、
CPUスペックは、Intel(R) Atom(TM) Processor E3950 @ 1.60GHz
OSはubuntu18.04を使用し、Xwindowなどの画面出力は行っていません

負荷なし、CPUでの実行(11.02FPS)
負荷なし、GPUでの実行(36.57FPS)
負荷なし、NCS2での実行(25.01FPS)
高負荷時、CPUでの実行(5.45FPS)
高負荷時、GPUでの実行(31.10FPS)
高負荷時、NCS2での実行(25.16FPS)

下記は無負荷、高負荷時のFPSを表にしたものです

無負荷高負荷増減率
CPU11.02FPS5.45FPS49%
GPU36.57FPS31.10FPS85%
NCS225.01FPS25.16FPS101%

CPUに負荷がかかっている場合は、半分以下のFPSとなります
アプリケーションのプライオリティにも関係しますが、高負荷時に推論を実行する場合はこのような問題が発生します
一方、GPUでの実行は85%となっています。これはキャッシュへのアクセスなどがCPU内で行われていますので、このような減少率になっていると思いますが、細かな点は別の機会に書くことにします
最後に、NCS2(MYRIAD)での実行は、増減がありませんでした
NCS2の場合は、外部HWに処理を流しますので、使用メモリが少ない場合は有利に働く可能性が大きいです

組み込み機器にOpenVINOなどを組みこむ場合は、CPUの負荷の見積もりなどを考え、うまくGPU,NCS2に処理を流してあげることにより、低価格でシステムが実現できるのではないでしょうか