テキトーにAI名乗ってるだけじゃない、ちゃんとした意味。
今みんなのスマートフォンに、チップの形でAI(人工知能)がやってきつつあります。iPhone XにはA11 Bionicチップの一部として「ニューラルエンジン」なるAIチップが入っていますし、Huawei(ファーウェイ)の最新プロセッサ「Kirin 970」には「ニューラル・プロセシング・ユニット(NPU)」というパーツが搭載されてます。Pixel 2にもAIを使った画像処理チップが仕込んであって、それが最近アクティベートされたばかりです。でも、このすごそうなチップたちは実際何をするためにスマホに入ってきたんでしょうか?
モバイル用チップセットは、時代とともにより小さく、より洗練されてきて、引き受ける仕事の量や種類をどんどん増やしてきました。ハイエンドスマートフォンの心臓部ではCPUの隣にGPUがいて、画像関係の重い処理を一手に引き受け、メインのプロセッサが休んだり、別のことをしたりするのを助けています。
最近出てきたAIチップの役割も、そういう意味ではGPUとよく似ています。ただAIチップが担当するタスクは、単にゲームの背景を超リアルにするとかだけじゃなく、画像を見てそこに写ったペットを認識してくれるとか、そういうことになります。
そもそも「AI」とは
「人工知能」という言葉はかなり広い範囲で使われていて、時代とか文脈によっても違うことがあります。でも一般には、機械が人間みたいな思考とか推論らしいことをするとき、それは「人工知能」と呼ばれます。
ものすごく広い意味では、画面の後ろで人間がロボットのレバーを操作している場合も人工知能と言われるのかもしれません。でも、もちろん今どきのAIはそんなものじゃなく、プログラマーがコードを介してコンピュータに動き方を教えることで「ロボットが人間のように動く」という状態を作り出しています。
コンピュータサイエンスとかスマートフォンに関する場面では、「AI」という言葉はもっと狭い意味で使われています。それは特に、システムが元のプログラムの外の世界から必要なことを学び取る「機械学習」の概念を含みます。よく言われる「ディープラーニング」も機械学習の手法のひとつですが、人間の脳の構造を真似て、たくさんのレイヤーを使って処理をするという特徴があります。レイヤーがたくさんあるから「ディープ」なんですね。そしてこのレイヤーは人間の頭の中の神経のネットワークになぞらえて「ニューラルネットワーク」と呼ばれています。
機械学習を使うと、たとえばシステムがスパムメールの事例を学習し、受信箱に届くスパムメールを検出できるようになります。そしてそのとき、スパムメールの特徴は元々のプログラムに書かれている必要がなく、AIが事例からそれを学ぶのです。
ディープラーニングは従来の機械学習から進化したもので、細かなニュアンスを理解するとされていて、ある種のタスクにより適しています。特にコンピュータビジョンに関わるタスクを得意としていて、より多くのデータやレイヤーの処理、よりスマートな重み付けが可能になります。一番よく知られているタスクの例は、何百万もの画像の中からネコを認識できたことです。
すごくざっくり言うと、従来の機械学習システムがネコを認識するには、「これがネコの画像だよ」とたくさんの画像で教えられる必要がありました。でもディープラーニングシステムは、どの画像がネコなのかを教えられることなく、勝手にネコを認識し始めたんです。
ただ、今書いたほんの数段落のことだけでも、専門家が何冊も本を書けるくらい奥深い話です。なのでここではものすごく単純化していますが、基本的な考え方はこんな感じです。
スマートフォンのAIチップの役割
最初に書いたように、AIチップとは今までのGPUに似た仕事をやっているんですが、ただそれはグラフィックス処理というよりは、AIを使ったタスクの処理を目的としています。つまり、機械学習やディープラーニングが得意とする処理を、CPUとは別立てでこなすということです。GPUが3Dグラフィックスを処理するように、AIチップはCPUに他のタスクに集中する時間を与え、バッテリーの浪費を防ぎます。引いてはクラウドに送らずに端末で処理できるデータが増え、それによってよりセキュリティリスクも下がります。
でも我々の日常にとって、これはどういうことでしょうか? それは短く言うと、画像の認識や処理がもっと早くなるということです。たとえばHuaweiいわく 、彼らのNPUは毎分2000枚の画像を認識できて、それは一般的なCPUの20倍速いそうです。
数値で言うとその処理能力は「FP16で1.92TFLOPS(テラフロップス)」、つまり16ビットで表現された浮動小数点数を1秒間に1.92兆回処理できるということです。16ビットの浮動小数点数は「半精度浮動小数点数」と言われて、名前的に精度が低いの?と思ってしまうんですが、グラフィックス関係やディープラーニングでよく使われているフォーマットです。
AppleはそのA11 Bionicチップの一部であるAIチップを「ニューラルエンジン」と呼んでいます。それはマシンラーニングやディープラーニングを使ったタスク、具体的にはユーザーの顔や声の認識、アニ文字の記録、写真の被写体の認識といったこと専用に使われます。Appleいわく、それは毎秒6000億件の処理 をこなせます。
アプリのデベロッパーは、AppleのCore MLを通じてこのニューラルエンジンを使えます。Core MLとは、画像認識などのAIアルゴリズムを活用するための簡単なプラグアンドプレイの手法です。
Core MLの機能はiPhone Xでなくても使えますが、ニューラルエンジンならこの種のタスクをより高速に処理できます。Huaweiのチップと同じく、これによって画像処理などのためにクラウド側に送るデータが大幅に少なくなり、パフォーマンス改善やバッテリー浪費の防止になるはずです。
これこそがAIチップの目的です。つまり、機械学習やディープラーニング、ニューラルネットワークを使ったタスクを、CPUやGPUより高速にこなすということです。たとえばFace IDがやけに早いなと思ったら、それはきっとニューラルエンジンのおかげなんです。
これは未来なんでしょうか? つまり、すべてのスマートフォンにAIチップが搭載されるようになるんでしょうか? その答えは多分イエスで、我々のデバイス上のAIの役割はますます大きくなっていくことでしょう。
Qualcommのチップではもう、ある種のAI的タスクにCPUの一部を使えるようになっていますが、次のステップではAIチップを別立てするようになります。AIチップは、今はまだタスク全体のごく一部でしか使われていませんが、その重要性はきっと大きくなるばかりでしょう。
Source: Huawei 、Apple 、Engadget 、Google、Anandtech 、Nvidia、Qualcomm
Reference: Wikipedia
David Nield - Gizmodo US[原文]
(福田ミホ)