OpenVINO 2022.1 RuntimeだけをインストールしてもGPUやNCS2のドライバは自動的には入らないので、インストールする必要があります。
インストールディレクトリに移動して下記のコマンドを実行します。
cd install_dependencies sudo -E ./install_NEO_OCL_driver.sh
Add OpenCL user to video group のメッセージが表示されますが、無視して進めてください。
cd install_dependencies sudo -E ./install_NCS_udev_rules.sh
これで完了です。
ドライバがインストールできれば、サンプルアプリケーションで動作を試すことが可能です。
下記のサンプルビルドを実行して、同じようにclassification_sample_asyncを実行してみます。
まずは、classification_sample_asyncに-hを付けて実行します。
$ ./classification_sample_async -m public/alexnet/FP16/alexnet.xml -h [ INFO ] OpenVINO Runtime version ......... 2022.1.0 [ INFO ] Build ........... 2022.1.0-7019-cdb9bec7210-releases/2022/1 [ INFO ] classification_sample_async [OPTION] Options: -h Print a usage message. -m "<path>" Required. Path to an .xml file with a trained model. -i "<path>" Required. Path to a folder with images or path to an image files: a .ubyte file for LeNet and a .bmp file for the other networks. -d "<device>" Optional. Specify the target device to infer on (the list of available devices is shown below). Default value is CPU. Use "-d HETERO:<comma_separated_devices_list>" format to specify HETERO plugin. Sample will look for a suitable plugin for device specified. [E:] [BSL] found 0 ioexpander device Available target devices: CPU GNA GPU MYRIAD
一番下にAvailable target devices: CPU GNA GPU MYRIAD とありますが、これらが実行できるデバイスとなります。MYRIADはNCS2のことです。GNAはIntelのAIアクセラレーターですが、ここでは扱いません。
まずはCPUでの実行を行ってみます。
$ ./classification_sample_async -m public/alexnet/FP16/alexnet.xml -i apple.jpg [ INFO ] OpenVINO Runtime version ......... 2022.1.0 [ INFO ] Build ........... 2022.1.0-7019-cdb9bec7210-releases/2022/1 [ INFO ] [ INFO ] Parsing input parameters [ INFO ] Files were added: 1 [ INFO ] apple.jpg [ INFO ] Loading model files: [ INFO ] public/alexnet/FP16/alexnet.xml [ INFO ] model name: AlexNet [ INFO ] inputs [ INFO ] input name: data [ INFO ] input type: f32 [ INFO ] input shape: {1, 3, 227, 227} [ INFO ] outputs [ INFO ] output name: prob [ INFO ] output type: f32 [ INFO ] output shape: {1, 1000} [ INFO ] Read input images [ WARNING ] Image is resized from (300, 300) to (227, 227) [ INFO ] Set batch size 1 [ INFO ] model name: AlexNet [ INFO ] inputs [ INFO ] input name: data [ INFO ] input type: u8 [ INFO ] input shape: {1, 227, 227, 3} [ INFO ] outputs [ INFO ] output name: prob [ INFO ] output type: f32 [ INFO ] output shape: {1, 1000} [ INFO ] Loading model to the device CPU [ INFO ] Create infer request [ INFO ] Start inference (asynchronous executions) [ INFO ] Completed 1 async request execution [ INFO ] Completed 2 async request execution [ INFO ] Completed 3 async request execution [ INFO ] Completed 4 async request execution [ INFO ] Completed 5 async request execution [ INFO ] Completed 6 async request execution [ INFO ] Completed 7 async request execution [ INFO ] Completed 8 async request execution [ INFO ] Completed 9 async request execution [ INFO ] Completed 10 async request execution [ INFO ] Completed async requests execution Top 10 results: Image apple.jpg classid probability ------- ----------- 957 0.9949166 950 0.0017935 989 0.0013619 948 0.0009567 951 0.0007669 952 0.0001433 949 0.0000239 988 0.0000107 940 0.0000079 990 0.0000050
次にGPUで実行してみます。
$ ./classification_sample_async -m public/alexnet/FP16/alexnet.xml -i apple.jpg -d GPU [ INFO ] OpenVINO Runtime version ......... 2022.1.0 [ INFO ] Build ........... 2022.1.0-7019-cdb9bec7210-releases/2022/1 [ INFO ] [ INFO ] Parsing input parameters [ INFO ] Files were added: 1 [ INFO ] apple.jpg [ INFO ] Loading model files: [ INFO ] public/alexnet/FP16/alexnet.xml [ INFO ] model name: AlexNet [ INFO ] inputs [ INFO ] input name: data [ INFO ] input type: f32 [ INFO ] input shape: {1, 3, 227, 227} [ INFO ] outputs [ INFO ] output name: prob [ INFO ] output type: f32 [ INFO ] output shape: {1, 1000} [ INFO ] Read input images [ WARNING ] Image is resized from (300, 300) to (227, 227) [ INFO ] Set batch size 1 [ INFO ] model name: AlexNet [ INFO ] inputs [ INFO ] input name: data [ INFO ] input type: u8 [ INFO ] input shape: {1, 227, 227, 3} [ INFO ] outputs [ INFO ] output name: prob [ INFO ] output type: f32 [ INFO ] output shape: {1, 1000} [ INFO ] Loading model to the device GPU [ INFO ] Create infer request [ INFO ] Start inference (asynchronous executions) [ INFO ] Completed 1 async request execution [ INFO ] Completed 2 async request execution [ INFO ] Completed 3 async request execution [ INFO ] Completed 4 async request execution [ INFO ] Completed 5 async request execution [ INFO ] Completed 6 async request execution [ INFO ] Completed 7 async request execution [ INFO ] Completed 8 async request execution [ INFO ] Completed 9 async request execution [ INFO ] Completed 10 async request execution [ INFO ] Completed async requests execution Top 10 results: Image apple.jpg classid probability ------- ----------- 957 0.9951172 950 0.0019550 989 0.0013666 948 0.0010319 951 0.0008130 952 0.0001484 949 0.0000246 988 0.0000116 940 0.0000083 990 0.0000054
Loading model to the device GPU と表示されているので、GPUが使用されています。
次にNCS2を使用してみます。
$ ./classification_sample_async -m public/alexnet/FP16/alexnet.xml -i apple.jpg -d MYRIAD [ INFO ] OpenVINO Runtime version ......... 2022.1.0 [ INFO ] Build ........... 2022.1.0-7019-cdb9bec7210-releases/2022/1 [ INFO ] [ INFO ] Parsing input parameters [ INFO ] Files were added: 1 [ INFO ] apple.jpg [ INFO ] Loading model files: [ INFO ] public/alexnet/FP16/alexnet.xml [ INFO ] model name: AlexNet [ INFO ] inputs [ INFO ] input name: data [ INFO ] input type: f32 [ INFO ] input shape: {1, 3, 227, 227} [ INFO ] outputs [ INFO ] output name: prob [ INFO ] output type: f32 [ INFO ] output shape: {1, 1000} [ INFO ] Read input images [ WARNING ] Image is resized from (300, 300) to (227, 227) [ INFO ] Set batch size 1 [ INFO ] model name: AlexNet [ INFO ] inputs [ INFO ] input name: data [ INFO ] input type: u8 [ INFO ] input shape: {1, 227, 227, 3} [ INFO ] outputs [ INFO ] output name: prob [ INFO ] output type: f32 [ INFO ] output shape: {1, 1000} [ INFO ] Loading model to the device MYRIAD [ INFO ] Create infer request [ INFO ] Start inference (asynchronous executions) [ INFO ] Completed 1 async request execution [ INFO ] Completed 2 async request execution [ INFO ] Completed 3 async request execution [ INFO ] Completed 4 async request execution [ INFO ] Completed 5 async request execution [ INFO ] Completed 6 async request execution [ INFO ] Completed 7 async request execution [ INFO ] Completed 8 async request execution [ INFO ] Completed 9 async request execution [ INFO ] Completed 10 async request execution [ INFO ] Completed async requests execution Top 10 results: Image apple.jpg classid probability ------- ----------- 957 0.9951172 950 0.0018311 989 0.0014277 948 0.0009985 951 0.0007782 952 0.0001509 7 0.0000000 3 0.0000000 8 0.0000000 1 0.0000000
Loading model to the device MYRIAD となっており、NCS2がちゃんと使われています。
みなさんもいろいろなサンプルやデモで試してみてください。