後藤弘茂のWeekly海外ニュース

iPhone Xの深層学習コア「Neural Engine」の方向性

iPhone Xに代表されるモバイルニューラルプロセッシングの動き

 Appleは、A11 SoCを、9月12日に発表したiPhoneファミリ「iPhone X」、「iPhone 8」、「iPhone 8 Plus」に採用する。ニューラルネットワークプロセッシングコア「Neural Engine」については、iPhone Xの顔認識ベースの認証機能「Face ID」についてしか説明が行なわれていない。しかし、アーキテクチャの方向性は推測が可能だ。

 現在、コンピューティングはニューラルネットワークのアクセラレーションへと急速に進んでいる。スマートフォンなどモバイルデバイスは先陣を切っており、Appleだけでなく、GoogleやQualcomm、HiSilicon、Samsung、富士通などほとんど業界全体がニューラルネットワークのハードウェア開発へと進んでいる。

iPhone Xの深層学習コア「Neural Engine」の方向性 モバイルSoCにニューラルネットワークプロセッサが取りこまれるPDF版はこちら
モバイルSoCにニューラルネットワークプロセッサが取りこまれる
PDF版はこちら

 ニューラルネットワークのハードウェアアクセラレーションでは、方向性としてCPUやGPUなど既存のプロセッサアーキテクチャを拡張する方法、専用のニューラルネットワーク用プロセッサコアを搭載する方法、そのハイブリッドの3つのアプローチがある。また、適用するニューラルネットワークのフェイズとしては、「トレーニング(Training:学習)」に最適化する方向、「インファレンス(inference:推論)」に最適化する方向、両対応的な方向の3つがある。適用市場範囲も、サーバールーム、据え置きコンピュータ、モバイル、組み込みIoT(The Internet of Things)と幅広い。

iPhone Xの深層学習コア「Neural Engine」の方向性 ニューラルネットワーク用のテンサコアを統合したNVIDIAのVoltaPDF版はこちら
ニューラルネットワーク用のテンサコアを統合したNVIDIAのVolta
PDF版はこちら
iPhone Xの深層学習コア「Neural Engine」の方向性 VoltaのテンサコアPDF版はこちら
Voltaのテンサコア
PDF版はこちら

 深層学習で使われるニューラルネットワーク専用のプロセッシングユニットについては、現状では定まった呼称がない。つまり、CPUやGPUのような明瞭な呼称が定まっていない。Appleの呼称はNeural Engineだが、ほかの呼称を列記すると、下のようなリストができる。

・DLU (Deep Learning Unit)
・DLPU (Deep Learning Processing Unit)
・DLP (Deep Learning Processor)
・NPU (Neural Processing Unit)
・DNPU (Deep Neural Network Processing Unit)
・DNNE (Deep Neural Network Engine)
・TPU (Tensor Processing Unit)
・DLA (Deep Learning Accelerator)

 まだまだ見落としがあるはずで、今のところ、呼称が収束する見込みがない。それだけ、多数のニューラルネットワークプロセッサのアイデアがわき出ているのが現状だ。そして、Appleバージョンの呼称Neural Engine(NE?)が、上のリストに加わる。この記事では、面倒なので、こうしたニューラルネットワークのプロセッシングユニットは、暫定的にNPU (Neural Processing Unit)としておく。

 AppleのNeural Engineについては、詳細はまだわかっていない。しかし、スマートフォン向けのモバイルSoCに内蔵するNPUという制約から、アーキテクチャの方向性は予測がつきやすい。そもそも、モバイル向けSoC全体が、何らかの形でのニューラルネットワーク用のプロセッシングユニットを搭載する方向へと進んでおり、Appleの動きはその先端の1つに過ぎない。そして、モバイルSoC内蔵のNPUは、同じ電力とダイエリアの制約を受ける。

モバイル向けNPUは推論に最適化した設計へ向かっている

 モバイル向けのNPUの要求仕様は非常に明確だ。超低電力であること、ダイエリアが小さいこと(内蔵メモリも含む)、リアルタイム処理に応えられる高速性を持つことだ。低電力化のためには、外部メモリアクセスを減らし内部メモリを多用することも重要であるため内蔵メモリを含めたダイエリアが重要となる。また、個々のユニットを低電力にすると演算ユニット数を増やして応答性を高めることができる。3つの要素は密接に絡んでいる。

iPhone Xの深層学習コア「Neural Engine」の方向性 モバイルや組み込み向けのディープニューラルネットワークの要件。出典:プルーニングの基本「Deep Learning-Deep Neural Networks, Architectures and SoC Implementations」(Hoi-Jun Yoo, KAIST, VLSI Symposium, 2017)
モバイルや組み込み向けのディープニューラルネットワークの要件。出典:プルーニングの基本「Deep Learning-Deep Neural Networks, Architectures and SoC Implementations」(Hoi-Jun Yoo, KAIST, VLSI Symposium, 2017)

 では、AppleのNeural Engineは、どういった目的の、どういった機能を持ったコアが想定できるのか。整理して行くと、まず最初のポイントは、ニューラルネットワークのフェイズだ。

 深層学習には、ニューラルネットワークモデルを構築する学習フェイズと、学習の結果を使った認識を行なう推論フェイズがある。モバイルデバイスではNPUは、推論に特化した方向へと向かっている。これは、電力消費とダイエリア、メモリ帯域の制約のためだ。

iPhone Xの深層学習コア「Neural Engine」の方向性 学習と推論の2つのフェイズPDF版はこちら
学習と推論の2つのフェイズ
PDF版はこちら

 学習か推論かには、電力とダイエリアのトレードオフがある。モバイルデバイスの電力とコストの枠内で、高精度の認識処理を実現するためには、推論にある程度最適化したNPU設計を取らざるを得ない。モバイルでは、深い学習と推論の両対応の汎用コアではなく、推論に寄った設計がほとんどになる。概要は後述するとして、AppleのNeural Engineも、推論プロセッサであるはずだ。

CNN以外のニューラルネットワークへの対応

 もう1つ重要な要素は、多様なニューラルネットワーク構造への対応だ。具体的には、画像認識に多用されている畳み込みの「Convolutional Neural Network(CNN)」だけでなく、音声や動作のような時系列データに適した「Recurrent Neural Network(RNN)」、自然言語処理などに使われるRNNの特殊形の「Long/Short-Term Memory Network(LSTM)」などにも対応できる柔軟性を持つのかどうか。このネットワークモデルのリストには、今後もさらに種類が加わる可能性がある。特定のネットワークモデルに特化した構造か、多様なモデルに対応できる柔軟性を持つのか、そこがポイントとなる。

 ここにも悩ましいトレードオフがある。特定モデルに特化させると、電力効率とエリア効率が高いNPU設計にすることができる。柔軟性を持たせると、どうしても効率は低下するし、ダイエリアも必要となる。対応するニューラルネットワークは、演算アレイアーキテクチャなどに影響してくる。

 ちなみに、推論向けNPU全体を見ると、用途によって対応ネットワークモデルの方向性が異なりつつある。深層学習が台頭した当初は、画像認識でCNNが成功したため、ハードウェアもCNNに特化させる方向だった。監視カメラやドローン搭載AIのような画像系をターゲットにしたNPUでは、現在もCNN特化の方向にある。しかし、スマートフォンに搭載するNPUの場合、若干方向が異なる。音声や動作、自然言語もターゲットとして行きたいはずだ。

 こうした背景を考えると、モバイル向けNPUについては、モデル柔軟性のあるアーキテクチャが主流になって行くと思われる。実際のハードウェアではまだこの方向は明確にはなっていないが、そうした予想は立てられる。もっとも、Appleの初代のNeural Engineがそうした柔軟性を備えるかどうかはわからない。従来の流れはCNNのためのプロセッサという発想だったため、NPUのアーキテクチャ開発のリードタイムを考えると、まだ、キャッチアップできていない可能性がある。

ニューラルネットワークの数値精度

 Appleが発表したNeural Engineの性能は「600 billion operations per second」。推論用NPUでは、FLOPS(Floating Operations Per Second:浮動小数点オペレーション/秒)ではなくOPS(Operations Per Second:オペレーション/秒)が、性能単位として使われる。これは、演算するデータタイプが浮動小数点(Floating Point)ではなく、整数(integer)の場合が主流だからだ。

 浮動小数点演算主体であるGPUなら演算性能の単位はTFLOPS(Tera Floating Operations Per Second)だ。しかし、整数演算のNPUならTOPS(Tera Operations Per Second)やGOPSが単位となる。AppleがNeural Engineの性能として、“operations per second”という単位を使ったことは、整数演算コアであることを暗示している。AppleのNeural Engineの推論性能をプロセッサ風の単位に変えると「600 GOPS(Giga Operations Per Second)」となる。数100 GOPSのニューラルネットワーク性能は、現在のモバイル向けNPUとしては標準的なレンジだが、すでに流れは数TOPSへと向かっている。

 深層学習については、データの数値精度についての考え方が急速に変化して来ている。ある程度データ精度を落としても、実際の推論の精度はそれほど落ちないためだ。学習については、データ精度は32-bit浮動小数点から、16-bit浮動小数点、あるいは16-bit整数やそれ以下へとトレンドが移行して来ている。推論は、学習よりさらにデータの数値精度を落とすことが可能で、16-bit浮動小数点/整数から8-bit整数、4-bit整数、あるいはもっとイレギュラーな精度や、さらに極端にはバイナリ、そして混合精度までさまざまなアプローチが出てきている。

iPhone Xの深層学習コア「Neural Engine」の方向性 ニューラルネットワークの数値精度PDF版はこちら
ニューラルネットワークの数値精度
PDF版はこちら

 推論フェイズでは、データの数値精度をかなり落としても推論精度がそれほどは落ちない。そして、データの数値精度は、演算コアの電力消費やダイエリア、そしてデータ転送帯域及び外部メモリ帯域と密接に絡む。データ精度を落とせば落とすほど、電力やエリアの効率が高くなる。その分、演算ユニット数を増やして推論の性能を上げることができる。そのため、推論の精度と性能電力コスト(PPA:Performance, Power, Area)のトレードオフでバランスを取ることになる。とはいえ、どこまで数値精度を落としていいのか、見極めが難しいので、様子を見ながら徐々に落としている。

 モバイルや組み込みをターゲットとした推論NPUでは、整数演算の採用が多くなりつつある。これは、浮動小数点演算ユニットが整数ユニットの数倍の電力とエリアを食うためだ。モバイルのNPUで、数100 GOPSや数TOPSの性能を達成して、リアルタイムの応答性を高めようとすると、データを整数系にするアプローチが有効となる。しかし、数値精度については、まだ試行錯誤の段階だ。

ニューラルネットワークのデータを圧縮するプルーニング

 ニューラルネットワークのデータタイプと数値精度は、演算ユニットやデータ移動の電力消費を抑えるポイントとなる。モバイル向けのNPUでの省電力や省スペース化の技法は他にも多数あり、実装が進みつつある。これらのテクニックについては、今年(2017年)6月に開催された半導体学会「2017 Symposia on VLSI Technology and Circuits」のショートコースで、KAIST(Korea Advanced Institute of Science and Technology)のH.-J. Yoo氏が詳しく説明していた。

iPhone Xの深層学習コア「Neural Engine」の方向性 NPUをモバイルや組み込み向けに低電力/省スペース化するためのさまざまなアプローチ出典:「Deep Learning-Deep Neural Networks, Architectures and SoC Implementations」(Hoi-Jun Yoo, KAIST, VLSI Symposium, 2017)
NPUをモバイルや組み込み向けに低電力/省スペース化するためのさまざまなアプローチ出典:「Deep Learning-Deep Neural Networks, Architectures and SoC Implementations」(Hoi-Jun Yoo, KAIST, VLSI Symposium, 2017)

 そうしたアプローチのなかでもデータの圧縮度が高く重要なのは推論での「プルーニング(Pruning:剪定)」だ。推論のための学習済みのニューラルネットワークの中で、重要度が低いコネクションを削る。これによってニューラルネットワークのウエイトデータの量を劇的に縮小する。

 じつは、プルーニングは人間の脳で実際に行なわれている現象で、幼児期にフル結合されたニューロンは、成長するに従って使われないシナプス結合が消えて行き、シンプルなネットワークになって行くという。下は、VLSI SymposiaのショートコースでQualcommが説明した図だ。人間の脳内で行なわれているこうした現象を、ニューラルネットワークに応用したのがプルーニングだ。

iPhone Xの深層学習コア「Neural Engine」の方向性 人間の脳におけるプルーニング。出典:「Deep Learning for Mobile and Embedded Devices」(Mickey Aleksic, Qualcomm, VLSI Symposium, 2017)
人間の脳におけるプルーニング。出典:「Deep Learning for Mobile and Embedded Devices」(Mickey Aleksic, Qualcomm, VLSI Symposium, 2017)
iPhone Xの深層学習コア「Neural Engine」の方向性 プルーニングの基本。出典:「Deep Learning-Deep Neural Networks, Architectures and SoC Implementations」(Hoi-Jun Yoo, KAIST, VLSI Symposium, 2017)
プルーニングの基本。出典:「Deep Learning-Deep Neural Networks, Architectures and SoC Implementations」(Hoi-Jun Yoo, KAIST, VLSI Symposium, 2017)
iPhone Xの深層学習コア「Neural Engine」の方向性 ニューラルネットワークを圧縮するプルーニングPDF版はこちら
ニューラルネットワークを圧縮するプルーニング
PDF版はこちら

 データ精度の低減とプルーニングやそのほかの技法を組み合わせると、学習済みのニューラルネットワークデータを劇的に圧縮可能になる。これがモバイルNPUでは非常に重要となる。それは、ニューラルネットワークのデータをオンチップのメモリに収めることが可能になるからだ。

 とくに、通常は膨大な量となるウエイトデータを、数10分の1に圧縮してオンチップの組み込みメモリに収めてしまえると、効果が大きい。動作時の外部メモリへのアクセスを大幅に減らすことが可能となるからだ。消費電力は大幅に下がり、モバイルの電力枠のなかで、高レスポンスの推論が可能になる。また、内蔵メモリアーキテクチャ自体を、ニューラルネットワークに最適化することが容易になる。

 ちなみに、プルーニングへのハードウェア対応にも、圧縮したウエイトデータをメモリ上でそのまま扱うレベルと、演算時の対応(0値をスキップする方法とより進んだ方法の2つがある)など、いくつかの段階がある。

iPhone Xの深層学習コア「Neural Engine」の方向性 富士通が発表したプルーニングによってコンピュテーションの密度も高める技法の例。出典:「Advanced Techniques for High-Speed Deep Learning on Large-scale Neural Networks in the Cloud」(Yasumoto Tomita, Fujitsu Laboratories LTD., VLSI Symposium, 2017)
富士通が発表したプルーニングによってコンピュテーションの密度も高める技法の例。出典:「Advanced Techniques for High-Speed Deep Learning on Large-scale Neural Networks in the Cloud」(Yasumoto Tomita, Fujitsu Laboratories LTD., VLSI Symposium, 2017)
iPhone Xの深層学習コア「Neural Engine」の方向性 プルーニングにハードウェア対応しているNVIDIAのDLA。車載向けのXavierに内蔵されているPDF版はこちら
プルーニングにハードウェア対応しているNVIDIAのDLA。車載向けのXavierに内蔵されている
PDF版はこちら

 現状では、iPhone Xで有効にされる、Appleのニューラルネットワークプロセッシングコア「Neural Engine」の概要は見えていない。しかし、モバイルNPUの潮流を見ていると、方向性は見えてくる。

iPhone Xの深層学習コア「Neural Engine」の方向性 今年(2017年)前半までの論文のNPUのフィーチャ。右端は、NVIDIAのDLAのベースになったと見られるStanford大学のEIE。「Deep Learning for Mobile and Embedded Devices」(Mickey Aleksic, Qualcomm, VLSI Symposium, 2017)
今年(2017年)前半までの論文のNPUのフィーチャ。右端は、NVIDIAのDLAのベースになったと見られるStanford大学のEIE。「Deep Learning for Mobile and Embedded Devices」(Mickey Aleksic, Qualcomm, VLSI Symposium, 2017)