オルタナティブ・ブログ > Mostly Harmless >

IT技術についてのトレンドや、ベンダーの戦略についての考察などを書いていきます。

A11 Bionic の Neural engine その後

»

先々週A11 Bionicの記事を書きましたが、結構アクセスがあります。Appleが詳しい情報を公開していないので、皆さんあちこち調べてるんでしょうね。そもそも、Bionicなのかbionicなのかもよくわかりません。前回の記事を書いたときもよくわからず、悩んだ結果「bionic」にしたのですが、今は「Bionic」が優勢になっているようですので、今回はこちらを使います。

Appleからは相変わらず情報は出てきませんが、先週にはこの分野で私が最も信頼する後藤さんの記事が公開されました。

iPhone 8/XのSoC「A11 Bionic」とプロセス技術

製造プロセスについてはさすがの詳しさですが、やはり情報が少ないのか、アーキテクチャにはあまり触れられていませんね。後藤さんにわからないのなら、私にわかるはずはありません ^^;

とはいえ、ちょこちょこと他の記事も出てきましたので、現時点での情報を少しまとめておきます。

smartphone_nidaimochi_woman.png

Bionicとは?

まずは軽い話題から。「Bionic」の名前の由来について書かれた記事を見つけました。

iPhone8に搭載されたA11 Bionicチップの「Bionic」とは?

それによると、「実は深い意味は無い」のだそうです。。なんだそれ ^^;

あと、こちらにiPhone8を分解してA11を取り出した写真が出ていますが、実際のチップの表面には「Bionic」とは書いていないようですね。(発表時のAppleのプレゼンでは、チップに「BIONIC」と大文字で刻印されているイメージが使われていました)

Neural engineは独立しているのか?

A11の内部写真が出てきました。

iPhone 8 Plusの心臓部「A11 Bionic」の中身

まだ解析中ということで、変わる可能性があるのかも知れませんが、写真には「NPU」が写っています。少なくともGPUとは別のようです。未解析の部分にISPがあるのだとすると、ISPとも分かれているようです。専用設計ということですね。

というか、写真には「NPU」としか書かれていませんが、Neural Processing Unitですよね? まさかとは思いますが、NPUという別の部品だったりして。。NPU(Neural Processing Unit)という用語はA11よりも数週間先行して発表されたKirinが使っていますが、後藤さんの記事では「Deep Learning Processing Unit」となっており、Appleは「Neural engine」と言っています。ちなみに後藤さんは、これらをひっくるめて「ニューラルネットワークアクセラレータ」と呼んでいます。この辺、もうちょっと整理されてくるとわかりやすくなるんですけどね。

Kirinは「世界初のニューラルプロセッサを搭載したモバイルCPU」と発表しました。Appleは数週間遅れたために、この謳い文句を使えなくなってしまったのかも知れません。

8ビット整数か16ビット浮動小数点か

以前書いたように、AIには「学習」と「推論」の2つのフェーズがあります。膨大なデータを使ってニューラルネットワークをトレーニングするのが学習、できあがったニューラルネットを使って実際に画像認識や音声認識などを行うのが推論です。学習にはものすごい計算能力が必要で、精度も16ビット浮動小数点が必要なため、これにはGPUが使われることが多いのですが、推論はそこまでの処理能力も精度も必要無いのです。そこで思い切って8ビット整数を採用したのがGoogleの初代TPUです。(ただ、Googleが今年発表した新しいTPUでは、16ビット浮動小数点をサポートしています。この新しいTPUも「Cloud TPU」とか「TPU2」とかいろいろろな呼び名がありますが、ここではとりあえずTPU2としておきます。ということで、初代TPUはTPU1ですね。)

A11のNeural engineがどちらなのか、ですが、ここはやはり、16ビット浮動小数点をサポートしているとみるのが正しいように思います。8ビットと16ビットではチップに占める面積も消費電力も違いますから、その点からは8ビットを選択したいところですが、そうするとデバイス側で推論しかできなくなってしまいます。今は過渡期ではありますが、これからはデバイス側で学習も行うという流れになると思いますので、戦略的には16ビットを載せておきたいところでしょう。ハードウェア的な制限がクリティカルで無ければ、16ビットをサポートしていると思います。

600B Opsって、速いのか遅いのか?

もうひとつ、よくわからないのが処理速度です。AppleはNeural engineの処理能力として600 Billion Operations と言ってますが、Operationが何を指すのかわかりません。TPU1は92 Tera Opsでしたので、Operationsの単位が同じであれば、TPUはNeural engineの150倍速いことになります。(ただ、こちらは8ビット整数です)アーキテクチャも絡むので比較は難しいですが、ASICとモバイル用チップ内蔵エンジンの性能差が150倍というのは、まあ、そんなもんなのかな、という気もします。この辺は、もう少し詳細がわかってきたら、また考えてみたいと思います。

Comment(0)