はじめに
今回は深層学習用のエッジコンピューティングデバイスの市場調査を行ったので、まとめました。
- Deep Learning推論用デバイスその1 Intel NCS2
- Deep Learning推論用デバイスその2 Nvidia Jetson Nano
- Deep Learning推論用デバイスその3 Google Edge TPU
調査したデバイス
調査したデバイスは以下の3つです。
- Intel Neural Compute Stick2
- NVIDIA Jetson Nano
- Google EdgeTPU
デバイス間の比較をする前にまず、それぞれのデバイスの特徴などをまとめていこうと思います。
今回の記事ではIntel Neural Compute Stick2について紹介したいと思います。
Intel Neural Compute Stick2
Neural Compute Stick2(NCS2)はIntelが発売したDeepLearning推論用のUSB型外部演算装置です。既存のマシンに対してUSBからNCS2を接続することで、演算をさせることができます。NCS2は以前に発売した「Movidius Neural Compute Stick」の新型となります。公式サイトより、旧型と比べ8倍ほど推論時間が速くなっていると記述されています。
こちらがNCS2のスペック表です。
要素 | Spec |
---|---|
プロセッサ | The Intel Movidius Myriad X VPU |
開発環境 | The Intel Distribution of OpenVINO toolkit |
対応OS | Ubuntu 16.04.3 LTS (64 bit),Windows 10 (64 bit), or CentOS 7.4 (64 bit) |
対応フレームワーク | TensorFlow, Caffe, Apache MXNet, ONNX(PyTorch, PaddlePaddle) |
接続方法 | USB 3.0 Type-A |
サイズ | 72.5mm X 27mm X 14mm |
運用温度 | 0° - 40° C |
Myriad X VPU
Intel NCS2にはMyriad X Vision Processing Unit(VPU)というプロセッサが搭載されています。VPUは内部にはSHAVE processorと呼ばれるVLIWベクトルプロセッサがあり、旧世代のNCSにさらに4個追加した計16個のSHAVE processorが搭載されています。このSHAVEプロセッサによってニューラネットワークの推論計算を一部分並列化することができます。
Open VINO
IntelはNCSと同時にDeepLearning用のSDKであるOpenVINOを発表し、NCS2にも対応させています。
OpenVINOはIntelが提供しているハードウェアに対して最適化されたC++の推論APIです。
OpenVINOのドキュメント
また、IntelからONNX RuntimeのプロバイダとしてOpenVINOをサポートするようなコードがforkされて実装されています。
https://github.com/intel/onnxruntime/tree/master/onnxruntime/core/providers/openvino
今後、正式にサポートされることになれば、対応しているFramework(Tensorflow・Caffe)のみならず、様々なFrameworkからOpenVINO経由で推論できることになりそうです。
対応OS
旧世代ではUbuntuのみの対応でしたが、Windows・CentoOSなど対応OSが増えました。
他にもRaspbianなども対応されており、OpenVINOのツールキットをインストールできる環境であればそのOSが載っているマシンにNCS2を接続させることで推論させることができます。
対応フレームワーク
旧世代のNCSではCaffe, Tensorflowのみ対応ということですが、NCS2ではそれに加えMXNetやONNXなどに対応しています。特にONNXに対応したことによってPyTorchなどで実装されたモデルをONNXに変換してNCS2で推論するなどといったことが可能になっております。
運用温度
運用温度は0度〜40度と公式では記述されていますが、フォーラムなどを見ると推論時の温度が高くなってしまう問題が一つのトピックになっています。
今後について
ONNX対応による様々なフレームワークへの対応環境、OpenVINOによる推論最適化などがNCS2を通してやられています。またIntelは2019年の4月にVNNI命令セットを発表しており、CascadeLakeというCPUには畳み込み層の計算を高速化するような命令セットが用意されています。このあたりの命令セットもVPUなどに搭載されるとより高速な処理が可能になるのではと予想されます。また、熱問題に関してはフォーラムで議論されていますが、NCS2をプロダクトとして利用する場合には重要な要素となるので、一番最初にUSBスティック型推論デバイスを出したIntelが今後どのように対応していくかは注目です。