ケータイ用語の基礎知識
第884回:NPUとは
2018年12月4日 12:31
人工知能専用チップ「NPU」
今回紹介する「NPU」とは、人工知能、特にニューラルネットワークのプロセシングユニットです。その名は「Neural network Processing Unit」を略した物です。
スマートフォンの内部には、さまざまな回路が搭載されています。
たとえば、CPU(Central Processing Unit、中央演算回路)は、メモリ上のプログラムを読み取って、処理し、スマートフォンそのものを動かしたり、アプリを動かしたりします。
ゲームや映像などのグラフィックを表現する場合、精細な画像を作成する「レンダリング」と呼ばれる処理が実行されることがあります。こうした処理のため、多くのスマートフォンでは、GPU(Graphic Processing Unit、画像演算回路)が搭載されています。
単純な図形や文字を表示する程度であればCPUでも問題なく処理できるでしょう。しかし高精細なディスプレイが当たり前になった現在、美しいグラフィック処理も必要になります。他の処理をしながら、そうした映像処理を片手間にCPUが担うには、荷が重すぎて、ユーザーの求めるレスポンスになりません。そこでGPUが必要になります。そうした回路は、音楽再生やカメラでの撮影に向けたものも用意されています。
そして今、全く同じことが、いわゆるAIでも求められようとしています。それが「NPU」です。スマートフォン向けでは、ファーウェイやサムスンが回路を開発しています。アップルのiPhoneにも、同様の機能が搭載されています。最近では、スマートフォン向けCPUのコアに多く採用される英ArmからもNPUと呼べる新たなプロセッサ「Arm ML」が発表されています。
AI専用回路の開発が進められている背景には、AIが実際の機能として使われようとしているのに、CPUパワーでは追いつかないという現象が起きているからです。
たとえば、ハイエンドスマートフォンのカメラ機能で、ナイトアイ、シーンモード調整、ボケ効果、HDRなどが機能の特徴として打ち出されてきています。
これらはAIの中でも画像処理などによく使われるものです。たとえば畳み込みニューラルネットワークなどを使えば、原理自体はそれほど難しくありません。しかしスマートフォンでリアルタイムに処理するには、CPUが片手間にできる計算量ではありません。
NPUは、GPUがグラフィックアクセラレータと呼ばれることがあるのと同様、AIのアクセラレーターと呼んでもいいでしょう。ハードウェア上に各種アルゴリズムやライブラリが搭載されていることを最大限に発揮し、消費電力あたりの作業効率を劇的に改善します。
AndroidのAPIとNPU
なお、Android Oreo 8.1以降では、Android Neural Networks APIという関数群が追加されています。
これは、端末側にNPUが搭載されている場合は、NPUでニューラルネットワーク演算を処理し、ない場合はCPUで実行するというものです。
スマートフォン上でハードウェアアクセラレーションによるニューラルネットワークの推論を行い、訓練済みの機械学習モデルを高速に実行できます。この種の計算を端末が行うことによって、ネットワークの負荷が減り、またプライバシーに関わる情報など、ユーザーにとって秘密の情報が、端末の外へ出るのを防ぐことができます。
Android Neural Networks API自体は非常に簡潔な構造です。他のフレームワークと組み合わせて活用されることになるでしょう。