2018/10/25

【APPENDIX】アクセラレータボードで複数並列推論

どうも、ディープなクラゲです。
ゼロから学ぶディープラーニング推論」シリーズのAppendixです。
このシリーズでは、Neural Compute StickとRaspberryPiの使い方をゼロから徹底的に学び、成果としてディープラーニングの推論アプリケーションが作れるようになることを目指しています。

今回のAppendixでは、ディープラーニング推論を複数並列動作させた実行例と、軽量・省スペースなアクセラレータボードを紹介します。

【 目次 】


スティック単体とスティック複数で推論比較

比較サンプルコードの実行

以下の動画で確認してください

左側がNeural Compute Stick1本で、右側がNeural Compute Stick2本でのGoogLeNet推論動作です。
明らかに右側の動作の方が早いことが分かると思います。

サンプルソースコード

この動画で動かしているサンプルソースはGitHubで公開されています。ただし現状ではNCSDK v2では動作できず、NCSDK v1でのみ動作可能です。
https://github.com/movidius/ncappzoo/tree/master/apps/MultiStick_GoogLeNet

並列推論処理の仕組み

複数Stickの推論は、複数Stickで1つの画像について推論を行うのではなく、各Stickそれぞれが別で画像の推論を同時に行っています。つまりスティック2本の場合は、交互に推論結果を出力しているということです。

上記のサンプルソースコードとは別ですが、他のケースの並列推論処理例を紹介します。

2つのNeural Compute Stickにそれぞれ異なる「モデル」と「重み」を読み込み、連続して推論を行う例です。
初段のStickで物体識別(犬の認識)を行い、次段のStickでは初段で識別された物体を分類(犬の種類を分類)するという流れにすることで、より高度なAIが出来上がります。

動作環境

先程の動画の動作環境について補足しますが、実際にはNeural Compute Stick3本ではなく、Neural Compute Stick1本と後述するアクセラレータボード2枚を使っています。アクセラレータボードとラズパイ(RaspberryPi)を繋いだUSBケーブルの形状による影響で、Neural Compute StickがラズパイのUSBポートにそのままでは挿さらなくなったため、USBハブを使って延長しています。
Neural Compute Stickの中身はアクセラレータボードと全く同じものですので、この環境は Neural Compute Stick3本を使用している状態と全く同等です。

アクセラレータボード

Neural Compute Stickのスペースについて

Neural Compute Stickを実際の製品に組込みたい場合、Stickが挿さっている分、全体的にどうしても縦長になって大きなスペースを必要とします。

さらに、Stickを2本使用したい場合は、ラズパイ(RaspberryPi)のUSBポートに2本そのままでは挿さらないため、USBハブ等を経由して接続させる必要があり、ますます大きなスペースが必要となります。

アクセラレータボードで省スペース化

そこで、軽量で省スペースなアクセラレータボードを活用します!

上の写真はラズパイの上に変換ボードを載せて、その上にアクセラレータボード2枚を載せている様子です。上に載っている2つの小さなボードがアクセラレータボードです。
この省スペースな状態で、Neural Compute Sitickを2本挿した状態と機能的には全く同等です。

アクセラレータボードの接続


図の「ボードPC、PC、etc」はラズパイのみでOKです。
ラズパイと変換ボード間をUSB 3.0 Micro USB-Bケーブルで繋ぎ、データ通信用として使用しています。変換ボードの電源はUSB Type-C(先程の写真では右上の白いケーブル)から供給しています。
変換ボードは「M.2 USB Hubボード」というボードで、ラズベリーパイと同位置に隅4箇所に穴が開いているため、スペーサーを使って簡単に接続することが可能です。

(参考) 周辺部品

先程の写真ではスペーサーやケーブルなどの周辺部品も接続しています。実際の動作時に使用した周辺部品について、参考に部品表を載せておきます。

品名 購入先 必要数 備考
プラスチックスペーサー M2×15mm 秋月電子通商 4個 ラズパイと変換ボード間のスペーサー
プラスチックスペーサー M2×5mm 秋月電子通商 8個 上記スペーサー延長で4個とラズパイの底面で4個
なべ小ねじ プラスチック M2×5mm 秋月電子通商 4個 変換ボードにてスペーサー固定に使用
USB3.0 ケーブル USB3.0 A-microBタイプ 10cm Amazon 1個 データ通信用。短いので曲げ過ぎに注意。対角の位置になるように接続した
USB Type-Cオス - USB Type-Aオス ケーブル 流用 1個 電源供給用。Androidタブレットに付属していたケーブルを流用
ACアダプター電源(5V/3A推奨) 流用 1個 電源供給用。Androidタブレットに付属していたアダプタを流用

ソフトウェアについて

アクセラレータボードと変換ボードを使う際のプログラミングですが、Neural Compute Stickを使う場合と全く同じコードで動作できます。完全に互換性があり、どちらを使っているかを一切意識しなくてOKです!
これまでのサンプルソースやGitHubに載っているソースがそのまま使えます。

アクセラレータボードの購入先

アクセラレータボード及び変換ボードの購入やお問い合わせにつきましては、こちらのURL先へお進みください。
https://www.taxan.co.jp/jp/products/topics/aibrd.html


以上、アクセラレータボードで複数並列推論でした!