GTCでニューラルネットワークチップがポスター展示 GPUがディープラーニングの主役として脚光を浴びている。米サンノゼで4月4日から7日まで開催される「GPU Technology Conference(GTC)」では、焦点がすっかりニューラルネットワーク(NN: 神経回路網)によるディープラーニングへと移った。NVIDIAが主催するGTCでは、当然、GPUが主役だが、その中でちょっと変わった発表が行なわれた。それは、GPUではなく、専用プロセッサで「コンボリューショナルニューラルネットワーク(CNN: 畳み込みNN)」を処理する、超低電力プロセッサだ。GTCでは「Eyeriss: An Energy-Efficient Reconfigurable Accelerator for Deep Convolutional Neural Networks」と題して、ポスター展示が行なわれた。 「Eyeriss」と名付けられたこのプロセッサは、ニューラルネットワークに最適化された168個のプロセッシングユニットを持つ。GPU的な表現で言えば、168コアのプロセッサだ。NVIDIAのGPU/SoCと比較すると、192コアを搭載するTegra K1に相当するが、消費電力はTegra K1の10.2Wに対して、わずか278mW。これで、「AlexNet」のようなディープコンボリューショナルニューラルネットワーク(DCNN)を処理する。モバイルGPUの10分1以下の消費電力で、モバイルGPUと同レベルのDCNNを可能にするチップだ。 GTCに登場したEyerissは、モバイルGPUでも搭載が難しい組み込み用途などでCNNを実現することを目的としている。車載どころか、ドローンやスマートフォン、そのほかのさまざまな組み込み機器で、低電力にCNNを実現する。そのために、モバイルGPUの10分1以下の数100mW台の消費電力を目指した。また、半導体の実装ダイ面積も極めて小さく抑えている。 Eyerissが目指すのは、GPUとは異なるレイヤーにCNNをもたらすことだ。TegraのようなモバイルGPUが搭載できない低電力機器にも、高度なCNNを実行できるハードウェアを実現する。 電力削減のためにフォーカスしたのは、最も電力消費の多いコンボリューショナル(畳み込み)レイヤーだという。

畳み込み過程のデータの再利用のためにバッファを搭載 DCNNでは膨大な数の入力イメージに対して、膨大な数のフィルタが重みづけ、その結果のイメージデータが出力される。重みフィルタのデータは、時に数百万を超える。問題は、こうした膨大なデータの読み書きが、電力を消費する原因になっていることだ。 しかし、実際にはCNNの過程では多くの要素が再利用可能で、再利用を支援するハードウェアを作ることで、不要なデータ読み込みや不要な計算を削減して、電力を大幅に低減できる。 まず、畳み込みの過程で、フィルタやイメージデータそのものが再利用できる。これらをうまく再利用できる。これらのデータを、いちいちオフチップのメモリから読み込まなくて済むように、オンチップバッファを設けることで、データの移動を抑えることができる。また、プロセッサもCNNに最適なトポロジーとする。 Eyerissのオンチップバッファは108KBで、現状では決して多くはない。しかし、データフローをCNNに最適化することで、このバッファ量でも効果を上げることができる。また、実際の製品なら、用途に応じてバッファ量やプロセッサ数も調整が可能になるだろうという。Eyerissの試作チップは低電力用途だが、実際には同じアーキテクチャで大型のチップを作ることも可能で、その場合はバッファの量も膨大になるだろうという。

CNNのデータフローに最適化したプロセッサアレイ GPUのようなSIMT(Single Instruction, Multiple Thread)型のアーキテクチャは、ストリーム型の処理には向いているが、CNNのような広がりを持つ処理には、必ずしも適しているとは言えないという。そこで、Eyerissは行(Row)と列(Column)でのメッシュ型に、プロセッシングエンジン(Processing Engine: PE)を配置した このPEネットワークに対して、まずフィルタの重みデータを読み込む。行毎にフィルタ重みを読み込み、それを隣のPEに転送する。そうやって、同じ行の列上に並ぶPEにフィルタ重みがコピーされて行く。こうして重みフィルタが読み込まれたPEアレイに、イメージデータが左下のPEからインプットされる。イメージデータは、左下のPEの処理が終わると、右上の対角にあるPEにコピーされる。このように、パイプラインでイメージデータに対するフィルタが行なわれる。最後に、部分和が列を通して転送される。 このほか、Eyerissは「ゼロスキッピング」と呼ぶ、履歴を参照することでゼロ値のデータの読み込みをスキップする機能などを備える。また、外部メモリ帯域を低減するための、ハードウェアによるイメージデータ圧縮機能も備える。演算ユニットは32-bit浮動小数点演算ユニットではなく、16-bitの整数演算となっている。こうした仕組みの結果、Eyerissは消費電力を大幅に削減できるようになった。 GTCのポスタで紹介されたEyerissテストチップは、65nmプロセスで製造され、動作クロックは250MHzまで、コアサイズは3.5×3.5mmと極めて小さい。ピークオペレーションは84GOPSで、電力消費は300mW以下だ。