Intelが少し前に発表していたMovidius Neural Compute StickというUSB接続のプロセッサがやっと届いた。7月にニュースになって数日後には正規代理店(?)に注文を出していたのだけど、3ヶ月かかって今日、やっと届いたのね。発注した時はcaffeにしか対応していなかったはずだが、到着した時にはTensorflowにも対応していた。VMに対応するための情報も出ていた。Raspiにつないで動かすことすらできるらしい。そんなことだろうと思ったよ。
モノは割と高級感のある作り。プラッチックではない。アルミかな?? 放熱ちゃんとやってくれそう。重量はずっしりではないがしっかりとあって、スカスカ感は全く感じない。
中のプロセッサはMyriad VPUっていうVLIWのプロセッサのことなのかな? 機械学習専用ってわけではないと思うんだけど、機械学習系の事しか考えていないっぽいSDKになっている。消費電力が少なくて性能が高いからすごい! しかも1万円程度と非常に安い!! ただし届くのが遅い!!! そして、Movidiusを買収したIntelがこいつを機械学習向けデバイスとして細々と売っている、という構図ね。
とりあえずVagrantで作るVMで操作できるようにしてみた→Vagrantfile。SDKについてきたサンプルは動いた。
今回Vagrantだけど、本当はdockerで動かしたいんだよね。ただdocker-machine / boot2dockerのせいか、Virtualboxのusbfilterかけて–privilegedコンテナにしても、デバイスに接続できない! みたいなエラーが出るんだよねー。困ったことに。今日はその辺の試行錯誤をやっていた。手でインストールしたVMと、vagrant、あとはdockerね。dockerだけうまく行かなかった。この問題はいずれ解決するとして、とりあえずvagrant環境で遊んでいくかな。
あーあと、vagrantは現在VirtualBox 5.2に対応していなくて、ホイホイアップデートしてしまう私が例によって目をつぶったままbrew cask reinstall virtualboxしてしまっていたため、若干面倒だった。こいつを当てれば対応できる。vagrantも早く新しいのをリリースして欲しいところ。
で、さっき軽く手元のtensorflowのモデル生成のプログラムとかも動かしてみたけど、全く速くなっている気がしない…使い方が何か違っちゃっているんだろうな、たぶん。topで見ていても、CPUを使いまくっていてこのUSB側のプロセッサを動かしている気がしないんだ。
もしや、学習するところはCPUでやって、生成したモデル(パラメータ)をこのプロセッサ向けにコンパイルして実行する、とかなのかなぁ。…この種の処理で一番時間がかかるのは学習の部分になることが多いと思うが。