Intel DevCloud for the Edge を使い倒す(その4)から続く記事の5回目です
今回は実際に実行ファイルをキューに入れて実行してみます
( Intel DevCloudの記事はこちら)
Edge Serverでの処理をQueueに入れるところまでは、前回で行いました
次に実際の実行ファイルを実行するまでを行ってみましょう
前回使用したコマンドは下記のとおりです
Queueを扱うコマンド群
pbsnodes: 使用可能なサーバーの列挙
qsub: queueの登録
qstat: 自分が実行したqueueの状態
qdel: queueの削除
他にもありますが、これだけ覚えておくとなんとかなります
詳しくはここにあります
Development ServerとEdge ServerのストレージはNFSで接続されているので、実行時にファイルを転送したりする必要はありませんが、出力ファイルなどがある場合には、同一名は避けないといけませんので、その場合は処理が必要です
では、いつも通り、security barrier camera demo を使用してベンチマークを取ってみましょう
まずは、適当なEdge Serverを選択し、そのサーバーに対してQueueを投げてみます
#!/bin/bash
~/omz_demos_build/intel64/Release/security_barrier_camera_demo -m ~/models/intel/vehicle-license-plate-detection-barrier-0106/FP16/vehicle-license-plate-detection-barrier-0106.xml -m_va ~/models/intel/vehicle-attributes-recognition-barrier-0039/FP16/vehicle-attributes-recognition-barrier-0039.xml -m_lpr ~/models/intel/license-plate-recognition-barrier-0001/FP16/license-plate-recognition-barrier-0001.xml -i ~/car_1.bmp -no_show
こちらのスクリプトファイルを、sbcd.bashとして保存します
保存したものをDevelopment Serverで実行すると、
u41585@s099-n003:~/security_log$ bash sbcd.bash [ INFO ] InferenceEngine: 0x7fbc94231030 [ INFO ] Files were added: 1 [ INFO ] /home/u41585/car_1.bmp [ INFO ] Loading device CPU CPU MKLDNNPlugin version ……… 2.1 Build ……….. 42025 [ INFO ] Loading detection model to the CPU plugin [ INFO ] Loading Vehicle Attribs model to the CPU plugin [ INFO ] Loading Licence Plate Recognition (LPR) model to the CPU plugin [ INFO ] Number of InferRequests: 1 (detection), 3 (classification), 3 (recognition) [ INFO ] 10 streams for CPU [ INFO ] Display resolution: 1920x1080 [ INFO ] Number of allocated frames: 3 [ INFO ] Resizable input with support of ROI crop and auto resize is disabled 43.6FPS for (1 / 1) frames Detection InferRequests usage: 100.0% [ INFO ] Execution successful
うまく実行できていますので、これをQueueに投げてみます
まずはi5-6500te というCPUで実行してみましょう
u41585@s099-n003:~/security_log$ qsub -l nodes=1:i5-6500te sbcd.bash 3418.v-qsvr-2.devcloud-edge
3418というJob名で登録されました
しばらくして、実行したフォルダを見てみると、
u41585@s099-n003:~/security_log$ ls sbcd.bash sbcd.bash.e3418 sbcd.bash.o3418
と言うファイルが出来上がっています
sbcd.bash.o3418の中身を見てみると、下記のようになります
# Date: Sat May 2 03:31:21 PDT 2020 Job ID: 3418.v-qsvr-2.devcloud-edge User: u41585 Resources: neednodes=1:i5-6500te,nodes=1:i5-6500te,walltime=01:00:00 # [setupvars.sh] OpenVINO environment initialized [ INFO ] InferenceEngine: 0x7f5092704030 [ INFO ] Files were added: 1 [ INFO ] /home/u41585/car_1.bmp [ INFO ] Loading device CPU CPU MKLDNNPlugin version ……… 2.1 Build ……….. 42025 [ INFO ] Loading detection model to the CPU plugin [ INFO ] Loading Vehicle Attribs model to the CPU plugin [ INFO ] Loading Licence Plate Recognition (LPR) model to the CPU plugin [ INFO ] Number of InferRequests: 1 (detection), 3 (classification), 3 (recognition) [ INFO ] 4 streams for CPU [ INFO ] Display resolution: 1920x1080 [ INFO ] Number of allocated frames: 3 [ INFO ] Resizable input with support of ROI crop and auto resize is disabled 2.7FPS for (1 / 1) frames Detection InferRequests usage: 0.0% [ INFO ] Execution successful # End of output for job 3418.v-qsvr-2.devcloud-edge Date: Sat May 2 03:31:28 PDT 2020 #
全ての処理をCPUで実行して、2.7FPSと言う結果が出ています
どうも遅いですが、この問題は後ほど解決するとして、これで色々なEdge Serverで実行できることが分かりました
FPSが2.7になった理由を考えてみましょう
こちらのCPUはCore i5 6500teなので、スペックを見てみると、2.3GHzからバースト時には3.3GHzまでクロックが上がります
lscpuでこちらのマシンのCPUをみてみましょう
Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Byte Order: Little Endian CPU(s): 4 On-line CPU(s) list: 0-3 Thread(s) per core: 1 Core(s) per socket: 4 Socket(s): 1 NUMA node(s): 1 Vendor ID: GenuineIntel CPU family: 6 Model: 94 Model name: Intel(R) Core(TM) i5-6500TE CPU @ 2.30GHz Stepping: 3 CPU MHz: 833.403 CPU max MHz: 3300.0000 CPU min MHz: 800.0000 BogoMIPS: 4608.00
3.3GHzはあっていますが、CPU min MHzの800と言うのは、Intelが発表しているものと違います
恐らくマザー側の省電力モード?が走っているのではないでしょうか
#!/bin/bash
lscpu
for nm in `seq 1 10`
do
echo "@@@"$nm
~/omz_demos_build/intel64/Release/security_barrier_camera_demo -m ~/models/intel/vehicle-license-plate-detection-barrier-0106/FP16/vehicle-license-plate-detection-barrier-0106.xml -m_va ~/models/intel/vehicle-attributes-recognition-barrier-0039/FP16/vehicle-attributes-recognition-barrier-0039.xml -m_lpr ~/models/intel/license-plate-recognition-barrier-0001/FP16/license-plate-recognition-barrier-0001.xml -i ~/car_1.bmp -no_show
lscpu
done
次に、lscpuを実行時に行うようにし、10回security barrierを走らせるようにしました
結果は下記のようになります
u41585@s099-n003:~/security_log$ grep -E "@@@|FPS|CPU MHz" sbcd.bash.o3426 CPU MHz: 800.081 @@@1 13.3FPS for (1 / 1) frames CPU MHz: 2033.078 @@@2 27.7FPS for (1 / 1) frames CPU MHz: 2998.178 @@@3 28.1FPS for (1 / 1) frames CPU MHz: 3034.077 @@@4 26.5FPS for (1 / 1) frames CPU MHz: 3017.880 @@@5 29.5FPS for (1 / 1) frames CPU MHz: 3007.795 @@@6 28.8FPS for (1 / 1) frames CPU MHz: 3029.440 @@@7 29.0FPS for (1 / 1) frames CPU MHz: 3006.187 @@@8 29.4FPS for (1 / 1) frames CPU MHz: 3013.184 @@@9 28.1FPS for (1 / 1) frames CPU MHz: 3000.330 @@@10 28.9FPS for (1 / 1) frames CPU MHz: 3002.821
やはり、と言うか一度目の実行はクロックが上がりきっていないのであまりあてになりません
ベンチマークを取るうえで、気を付けないといけないことだと思います
産業用画像処理装置開発、
ゲームコンソール開発、半導体エンジニアなどを経て、
Webエンジニア&マーケティングをやっています
好きな分野はハードウェアとソフトウェアの境界くらい