Armから機械学習向けプロセッサの提供が開始された。このプロセッサの登場が意味するところは? なぜ、Armが機械学習向けプロセッサなのか、筆者が解き明かす。
前回の「第213回 Intel元社長が仕掛けるARMコアのサーバ向けプロセッサの成否」に続いて、Armネタになってしまった。ここで賢明な読者はお気付きかもしれない。筆者はこの間まで「ARM」と全て大文字でつづってきたのに、今回から「Arm」と書いている。
うかつにも、筆者も指摘を受けるまで気付かなかったのだか、公式のプレスリリースを見る限り、2017年11月30日から12月8日の間に何らかの変更があり、リリース上で社名を「Arm」とつづるようになったようだ(公式サイト上のロゴは、「arm」と全て小文字だ)。
特に大文字、小文字の使い分けについてのプレスリリースというものは見当たらなかった。ただ観察するに、今回取り上げる「Arm's Project Trillium」の「Trillium」は、Armの親会社となったソフトバンクの孫氏の文脈でまず現れてくるように見受けられる。Armという表記もその辺りから登場してくる。どうも「ARM」が「Arm」に表記変更されたのも、孫氏のアイデアが何かあって、という気がしてならない。
さて今回取り上げるのは、Armの「Trillium」というプロジェクトの一環(?)として、「業界で最もスケーラブルで多用性の高い機械学習のプラットフォームを提供するよ」という内容のプレスリリースである(Armのプレスリリース「Arm’s Project Trillium Offers the Industry's Most Scalable, Versatile ML Compute Platform」)。
そのプレスリリースの中心は、「Arm ML processor」と「Arm OD processor」という名の2つのIP(Intellectual Property:設計情報)である。プロセッサIPといっても、以前からあるArmのプロセッサを置き換えるものではなく、Armの従来プロセッサ、従来GPU(Mali)に加えて、それらの設計を追加すると、より高性能な機械学習の処理を、より低消費電力でできるようになるという製品ラインの拡張のお知らせである。
前回はサーバ機向けの話題を取り上げたが、今回はArm本来の市場というべき、末端側の市場が狙いだ。データをサーバ側に持っていて人工知能を処理するのではなく、末端のデバイス側で(ある程度)処理してしまいましょう的なものだ。
このあたり、流行といってよい。すでにモバイル分野でその手の機械学習、人工知能分野向けの専用プロセッサを汎用プロセッサやGPUの横に積む、というアプローチは幾つもなされている。その例の1つが、モバイルの巨人、Qualcommの「HVX(Hexagon Vector eXtensions)」というものだ。
最近の人工知能や機械学習の中核には、ほとんどのケースでNN(ニューラルネットワーク)が使われている。その負荷の中心はコンボリューション計算、端的に言えば行列の掛け算に帰着させることができるのだ。そのうえ計算そのものは、ここにきて8bit以下のような幅のごく狭い「数」を扱えればよいような流れになってきている。
HVXは、そういった幅の狭い数の処理を並列、高速に処理する目的でできた一種固定小数点DSP的な「コプロセッサ」のようなものである。GPUであると浮動小数点演算を避けては通れない、ましてやCPUは何でもできないとならない、そんなオーバーヘッドを取り除いてNNの中核処理に特化したともいえるだろう。
では、Arm ML processorも同じようなものなのだろうかというと、一味違う。確かにコンボリューション計算(と全結合レイヤーの計算)は避けては通れないので、そのサポートはある。両方を合わせると負荷の9割以上を占めるのが普通だからだ。
この性能も先行他社に比べても強力ではある。しかし、NNといっても非常に多種多様なタイプの計算が必要になっている。大ざっぱな言い方をするならば、それらの計算の各ステップをレイヤーと称している。コンボリューションレイヤーといえば、あるデータの集合に対する1回分の処理の集まりである。通常処理対象の入力データは、そんなレイヤーを何層も何十層も通過し、あたかもフィルターに不純物がこしとられるようにして、最後の結果になって出力されるのだ。
Arm ML processorは、そういうコンボリューション処理以外の各種レイヤーの処理についても、専用の処理機能を備え、レイヤーごとのデータの流れをある程度制御できるような機構まで組み込んできた。これによってML処理におけるメインのCPU介在の負荷は相当に軽減されるのではないかと予想する。
このメインCPUの負荷を軽減する方針は、明確な意図に基づいていると思われる。Arm ML processorを組み込む相手のコアは、スマートフォンなどに使われる「Cortex-Aシリーズ」といった強力なコアだけでなく、組み込み用途のコントローラーとして使われる小規模な「Cortex-Mシリーズ」のコアでもよいからだ(Armの資料では、高度な実時間処理を狙っていると思われるCortex-Rシリーズは組む相手には挙げられていない)。
Armの意図は明らかだろう。スマートフォンレベルだけでなく、人々がその存在をあまり意識しないような末端のセンサー的、コントローラー的、昔的に言えば「単機能」に見える小さなデバイスにまで、機械学習、人工知能を組み込んでやろう、という意図である。
Cortex-Mシリーズをコアとするような場合のアプリケーションとしては、KWS(Keyword spotting)が挙げられている。最近市場にあふれているxxスピーカー的な、ヒトの音声で制御するデバイスなどを念頭に置いているのだろう。音声信号は、時間軸で見れば、1本の線でしかないが、時間に対して周波数軸で見てやれば「2次元の画像」のように見える。2次元の画像であれば、NNで処理することはお手の物というべきであろう。
もう1つ、Arm ML processorの相棒というか、セットとして提供されるのが、「Arm OD processor」である。「OD=Object Detection」である。こちらは動画像の処理を狙っているので、「カメラ(イメージセンサー)」が存在することが前提である。
意図するところは、Arm OD processorで動画像の中から「オブジェクト」として抽出すべき人や、モノの領域や付加情報を取り出し(ROI:Region of Interest)、その検出部分に対してArm ML processorでさらに処理を行って対象物の識別に至ろう、という考え方だ。Qualcommのデバイスにもカメラ側の処理を担う専用プロセッサが含まれるが、Qualcommの方は従来のイメージセンサー向けの信号処理部的色合いが濃い。それに比べてArm OD processorは、オブジェクトの検出のみに特化していて方向性は明確だ。
Armは、先駆けて新しいコンセプトを打ち出してきたというわけもない、どちらかといえば、まさに市場が立ち上がるちょうどよい時期に、高すぎず、低すぎず、ちょうどいいところに新製品を投入してくることに、たけている会社だと思う。
今回もよいタイミングで使いやすいレンジにターゲットを持ってきているように見える。そのうえ、Armは、立てるところは立ててやる感覚も優れているように思われる。
この「専用プロセッサ」もそれを使うためのソフトウェアキットは自社で出してくる。だが、実際にそれを呼び出すのは、TensorFlowとか、Caffeとかすでに人工知能の分野でメジャーになっているプラットフォームソフトウェアであり、何となればユーザーのアプリケーションからは、2階層以上も下に位置し、ユーザーからは直接見えない部分に置かれることになる。
既存のプラットフォームのソフトウェア資産が使える、ということだけではない、気が付いたらArmのソフトウェアの上でArm ML processorを使っていた、となり得るわけだ。いつの間にかARMがArmになっていたように……。
日本では数少ないx86プロセッサのアーキテクト。某米国半導体メーカーで8bitと16bitの、日本のベンチャー企業でx86互換プロセッサの設計に従事する。その後、出版社の半導体事業部などを経て、現在は某半導体メーカーでヘテロジニアス マルチコアプロセッサを中心とした開発を行っている。
「頭脳放談」
Copyright© Digital Advantage Corp. All Rights Reserved.