2018/10/25
どうも、ディープなクラゲです。
「ゼロから学ぶディープラーニング推論」シリーズの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を実際の製品に組込みたい場合、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
以上、アクセラレータボードで複数並列推論でした!