一般的に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などの画面出力は行っていません
下記は無負荷、高負荷時のFPSを表にしたものです
無負荷 | 高負荷 | 増減率 | |
CPU | 11.02FPS | 5.45FPS | 49% |
GPU | 36.57FPS | 31.10FPS | 85% |
NCS2 | 25.01FPS | 25.16FPS | 101% |
CPUに負荷がかかっている場合は、半分以下のFPSとなります
アプリケーションのプライオリティにも関係しますが、高負荷時に推論を実行する場合はこのような問題が発生します
一方、GPUでの実行は85%となっています。これはキャッシュへのアクセスなどがCPU内で行われていますので、このような減少率になっていると思いますが、細かな点は別の機会に書くことにします
最後に、NCS2(MYRIAD)での実行は、増減がありませんでした
NCS2の場合は、外部HWに処理を流しますので、使用メモリが少ない場合は有利に働く可能性が大きいです
組み込み機器にOpenVINOなどを組みこむ場合は、CPUの負荷の見積もりなどを考え、うまくGPU,NCS2に処理を流してあげることにより、低価格でシステムが実現できるのではないでしょうか
産業用画像処理装置開発、
ゲームコンソール開発、半導体エンジニアなどを経て、
Webエンジニア&マーケティングをやっています
好きな分野はハードウェアとソフトウェアの境界くらい