全5154文字
PR

FPGAでもCPUでも動作

 こうした背景から、最近はCNNの推論時の消費電力を低減する技術に焦点が当たっている。当面の目標は、電力性能として100TOPS/W以上の達成だ。実現技術の候補は例えば、(1)演算ビット数を減らす、(2)演算部とメモリー部が離れたノイマン型ではなく、メモリーの読み出しと同時に積和演算も実行してしまうCIM(Computing-In-Memory)型というアーキテクチャーを採用する、(3)ノーマリーオフにできる不揮発性メモリーを採用する、といった工夫である(図3)。これらの一部、または全部を組み合わせることで10T~数十TOPS/W前後の実現にはメドが付きつつある。ただし、最近まで100TOPS/Wの壁越えはすぐに量産可能な技術ではできていなかった。

図3 1ビットのニューラルネットで解決?
図3 1ビットのニューラルネットで解決?
CNNの電力性能を高める実装技術の選択肢を示した。現時点で製品化されているCNNチップなどの電力性能は1TOPS前後であることがほとんど。ただし、ビット演算の精度を16ビットから2~8ビットに落とすと、電力性能は10TOPS/W前後にまで向上する。メモリーと演算回路の配置を、ノイマン型ではないCIM型のアーキテクチャーにすると電力性能はさらに向上する。ビット演算の性能を1ビットにまで下げると、電力性能は100T~数百TOPSとなり、普及のための条件をほぼ満たす。
[画像のクリックで拡大表示]

 それを実現したのがBNNだ。最近の学会では700T~800TOPS/Wという非常に高い電力性能の報告が複数出てきた。これらは専用ICによる値だが、特殊なメモリー技術などは用いていない。数十TOPS/Wの水準であれば、ハードウエアはFPGA、もしくは汎用のマイクロプロセッサーでもよく、実用化までの距離が短い。2020年6月の半導体の国際学会「2020 Symposia on VLSI Technology and Circuits(VLSIシンポジウム)」では、Intelが617TOPS/WのBNNチップを発表した(図1)。

演算量とメモリー量が大幅減

 一般にCNNでは積和演算が演算量やメモリー容量の9割以上を占め、メモリーとのデータの出し入れも激しいため、消費電力が大きい。一方、BNNではニューラルネットワークの重みと活性化関数の出力を共に1ビットのデータ(+1と-1の2値)にすることで、積和演算の規模が数十分の1に減る(図4)。しかも、積和演算のうち、積演算はXNOR(排他的論理和の否定)という論理演算回路で代替できる。Appleが買収したベンチャー企業の社名がXnor.aiであるのも、これが由来だと推測できる。

図4 大幅な低ビット化にはさまざまな落とし穴がある
図4 大幅な低ビット化にはさまざまな落とし穴がある
一般的なニューラルネットワーク(NN)の基本的なデータ処理(a)と、BNNにおけるデータ処理(b)。BNNではデータ同士の「積」がXNOR演算、次の「和」はデータ中の「1」の数を数えるpopcountという高効率な演算処理となり、いずれも実数の積和演算に比べて大幅に演算規模が減る。ところが、工夫なしにビット数を減らすと、さまざまな課題が噴出する。例えば、整数8ビットより低ビットでは推論精度が大幅に低下する(c)。加えて、学習時の微分値の精度が下がる「桁落ち」が頻発する(d)。1ビット演算の場合は、微分値のほとんどが「0」になってしまう。一方で、NNの畳み込みの第1層と最後の層は生データを取り扱うため、1ビット化することが困難で、演算量削減の大きなボトルネックになっていた。(図:(a)と(b)はIntel/IEEE、(c)はトヨタ自動車の論文から引用1)
[画像のクリックで拡大表示]

 もう一方の和演算も、「Population Count(popcount)」と呼ぶ、データ中の「1」の数を数えるだけの演算に帰着できる。XNORとpopcountはいずれもFPGAや汎用マイクロプロセッサーですぐに使えるライブラリーが用意されている。BNNは単純に演算量やメモリー容量を減らすだけでなく、実装面のメリットも非常に大きいのである。

 これらの技術の登場で、エッジや端末での物体認識技術の実装がこれまでにない広がりで一気に進む可能性が出てきたわけだ。