写真提供:マイナビニュース

写真拡大

●エッジデバイスの機械学習用ソリューション「reVISION」
米Xilinxは3月13日(米国時間)、機械学習用アプリケーションを構築するために、新たに「reVISION」というソフトウェアスタックを提供することを発表した。これに先行して2月に記者説明会が開催されたので、これを元に御紹介したいと思う(Photo01)。

Xilinxは2016年11月に、クラウドコンピューティング向けの機械学習向けスイートとして「リコンフィギュレーション可能アクセラレーションスタック」を発表しているのは既報のとおり。これはクラウドコンピューティング向けということでも分かるとおり、クラウド側の処理に向けたソリューションである。縦軸に業種、横軸にロケーションをとってこれを示すと、Photo02で水色に塗られた部分が。このリコンフィギュレーション可能アクセラレーションスタック向けのターゲットである。逆に、エッジの部分に関してはこれまで"これ"といったソリューションをXilinxは提供してこなかった。

ただ、そもそもエッジデバイスに関して言えばXilinxはすでに顧客にがっちり食い込んでいる(Photo03)。したがって、適切なソリューションさえ提供できれば、こうした顧客は既存のハードウェアを生かして機械学習の機能を簡単に組み込める余地があることになる。ということで、3月13日に発表されたのがこうしたエッジデバイス向けの機械学習用ソリューションとなるreVISIONである(Photo04)。

reVISIONは名前の通り、まずは画像をベースにした機械学習向けのフレームワークである。ではその画像向け機械学習でどんな用途に現在使われ、次世代にどんな用途が想定される/求められているか、というのがこちら(Photo05)。

例えば防犯カメラを例に取れば、今はカメラ映像をそのままホストに送り出すだけなのが、これからは特徴とか動きから問題がありそうなシーンを検出して送り出す、というニーズになりつつあるのはご存知の通り。こうした次世代のアプリケーションでは、機械学習による自律システムを構築することが求められている(Photo06)。ここでのXilinxのメリットはPhoto07の様になる。このうち、8bit以下の推論、についてちょっとだけ補足しておきたい。

機械学習の主流が「CNN(Convolutional Neural Network)」というのは知られているとおり。Convolutionは畳み込みの処理で、実際にはCNNでは畳み込み層と全結合層を幾重にも重ね合わせる形で構築されている。問題はこの際の精度である。この先、さらに研究が進んでゆくとひょっとすれば精度を上げたほうが有利、という話も出てくるかもしれないが、現時点ではデータの精度は8bitもあれば十分、という結論が出ている。そもそも入力が映像だったりするとRGBの24bitという話になるが、CNNではこれをまずJPEGなどと同じくYUV(輝度と色差)に分解し、このY(輝度)に対して演算することが多い。この場合入力値は8bitであり、また内部的に演算精度を上げるよりは、むしろ畳み込みや全結合の層数を増やしたほうが、最終的な精度が上がるという研究結果がほとんどである。こうなるとGPUなどでサポートするFP64やFP32、FP16ですらオーバーキルであって、8bit Integer(INT 8)で精度的には十分賄える。モノによっては8bitでもまだ多く、8bit未満でも推論には十分、なんて話もあったりする。こうなってくると8bitの倍数での演算ユニットしか持っていない汎用CPUや、もっと粒度の高いGPUよりも、極端な話1bitの演算回路ですら構成できるFPGAの方が効率的にずっと有利、という話がある(もちろん実際はFPGA内部のDSPユニットの精度である程度粒度は大きくなるのだが)。というわけで、演算の精度を汎用CPUやGPUよりずっと下げて、その分演算器を多量に構成出来る点がFPGAのメリットと言っている訳だ。

●まずはCaffeへの対応からスタートするreVISION
さて、従来これをFPGAでやろうとする場合、アプリケーションはOpenVXやOpenCVで記述、推論部はCaffeあたりを利用して、その下でさまざまなCNNを走らせるという形になっていた(Photo08)。この状態でも、SDSoCを活用することで、サブシステムの設計を大幅に短縮することは可能であった(Photo09)が、reVISIONを活用することで、これが劇的に低下することが期待できるとする(Photo10)。しかも性能面でも大きなメリットがある、としており、NVIDIAのJetson TX1とZynqベースの比較を行って、その性能の優位性をアピールした(Photo11)。

この性能の差を、自働ブレーキに適用した場合、ということで示されたのがこちら(Photo12)。ただここで注記を見ていただくと判るが、Xilinxはbatch=1の環境なのに、NVIDIAではbatch=8となっている。これに関してNi氏曰く、確かにNVIDIAはbatch=8で、これだとレイテンシが大きくなるが、その一方で性能が上がらないためで、実際にNVIDIAの発表資料を見るとbatch=8の結果が多いからとの事。こちらだとレイテンシは増えるが、性能も163image/secまで改善している。一方Xilinxの場合、batch=1でもbatch=8でもレイテンシ/処理速度ともに変わらないので、batch=1の数字を使った、としている(Photo13)。

またCNNを構築する上で、FPGAを利用すると性能面でのメリットが大きいもう1つの理由がこちら(Photo14)である。CPUにしてもGPUにしても、Convolutionの結果をそのまま次の処理に渡す、ということは原理的に難しいため、どうしてもメモリアクセスが多発し、これが全体の処理速度を決めることになりかねないし、レイテンシも当然増える。対してFPGAではこの必要を最小限に抑えられるので、スループットも高く、レイテンシも下げられるわけだ。

今後の展開として、まだまだ今後どんなネットワークが登場するか判らないという状況であり、こうした場合でもFPGAであれば構成を柔軟に変えられる点がメリットであるとしている(Photo15)。また、センサそのものも、今後は機械学習を生かしたセンサフュージョンがさらに進化し、より多くの種類のセンサが利用されてゆくと同社は見込んでおり、こうしたさまざまな進化に対応しやすいのもFPGAベースのメリットだ、とする(Photo16)。

すでに同社はさまざまなEmbedded Vision向け開発キットを発表しているが(Photo17)、これらのキットの上にreVISIONを載せることでそのまま機械学習が利用可能、としている。これによって、これまで欠けていたエッジデバイス向けのソリューションが揃った(Photo18)、というのが同社のメッセージである。

ちなみに最後にちょっと補足説明を。reVISIONの場合、あらかじめbitstreamとして用意されたCNNそのものがFPGAファブリックにロードされ、さらにこれに対応したCaffeがXilinxから提供される。なので、プログラマはこのCaffe経由で呼び出しをかけるだけでよく、あとはCNNのパラメータを設定して、データを入れれば推論結果が出てくるという仕組みだ。当然どんなCNNが用意されるかが重要になってくるが、同社によればまずAlexNet、GoogLeNet、SqueezeNet、SSD、FCNなどが提供され、さらに今後もラインアップを拡充してゆく、という話であった。またCaffe以外のAPIに関しても検討中だが、「今のところCaffeが一番広く使われているので」(Ni氏)というのが、とりあえずCaffeを提供する理由だそうだ。

(大原雄介)