後藤弘茂のWeekly海外ニュース
Armが深層学習向けに拡張された新GPU「Mali-G52」などを発表
2018年3月8日 06:00
Maliのアーキテクチャを大幅に拡張
Armがマシンラーニング(機械学習)に本格的に踏み出した。同社のGPU「Mali」シリーズのメインストリーム向けコアIPに、機械学習向け命令を組み込み、具体的には機械学習のインファレンス(Inference:推論)向けに、8-bit整数(Int8)の特殊な演算命令を加えた。
また、GPUのマイクロアーキテクチャも大幅に変更。SIMT(Single Instruction, Multiple Thread)の実行レーンを、従来の4レーンから8レーンに拡張している。
Armは北京で新IPの発表イベントを開催、GPU関連の4種のIPを発表した。メインストリーム向けGPUコア「Mali-G52」、エントリー&デジタルTV向けGPUコア「Mali-G31」、メインストリーム向けディスプレイプロセッサ「Mali-D51」、メインストリーム向けビデオプロセッサ「Mali-V52」だ。
GPUコアはArmの現在の「Bifrost(バイフロスト)」GPUアーキテクチャをベースとしているが、G52では大幅な改良が加えられている。
発表会の冒頭でIan Smythe氏(Senior Director, Client Line of Business, Arm)は、ArmのMali-GPUコアIPが、2017年には12億ユニットも出荷されたと説明。スマートフォンの50%などモバイル市場に浸透していることを強調。デジタルTVでは8割を抑えて占有していることを説明した。
実際、メインストリームやエントリのスマートフォンSoCではMali-GPUコアが圧倒的となっており、同コアは市場での存在感が大きい。
その上で、次のステップとしてArmが目指すのは、包括的な機械学習ソリューション「Arm Project Trillium」であると説明。とくに、モバイル市場は機械学習のアプリケーションでリードしていると認識を示した。そこで、モバイルでの機械学習を促進するために、メインストリーム向けGPUコアの機械学習機能の強化を行なったという。
画像認識や音声認識などをスマートフォンなどの端末側で高性能化できるとし、従来のタッチパネルにナチュラルユーザーインターフェイスを加えたマルチインプットを可能にする。オブジェクト認識によって、高度なAR(拡張現実)も実現する。
また、こうしたナチュラルユーザーインターフェイスを、デジタルTVにももたらす。このようなビジョンのために、低コストな機械学習ソリューションとしてArmが提供するのがMali-G52だ。
SIMTのレーン数を倍増、int8の命令を強化
Armは、Bifrostアーキテクチャでは、高性能GPU「G71」、「G72」と、メインストリームGPU「G51」をすでに投入している。
今回のG52は4つ目のアーキテクチャだが、ここからアーキテクチャが革新される。G52アーキテクチャの詳細は後の記事で説明するが、最大の違いは並列実行できるレーン数とディープラーニング(深層学習)向け命令拡張だ。
従来のBifrostアーキテクチャでは、演算クラスタである「Execution Engine(エグゼキューションエンジン)」に、それぞれ4レーンの32-bit演算レーンを備えていた。NVIDIAやAMDの用語での“コア”が、Armのレーンにあたる。4レーン構成であるため、4個の32-bit演算を並列に行なうことができた。
それに対して、新しいG52アーキテクチャでは、32-bit演算レーンを8つ備えている。8個の32-bit演算を並列に行なうことができる。各レーンはマスクレジスタによるプレディケーションフローコントロールが可能なので、SIMTとなる。
演算レーンを倍増させたことで、G52では、各Execution Engineのサイクルあたりの演算性能は最大で2倍となった。G52では、GPUとしての最小単位であるGPUコアに、2個または3個のExecution Engineを搭載できる。
また、GPUコアは最大4コアまで拡張できる。1個のGPUコアで24レーン、最大の4GPUコアで96レーンとなる。メインストリームGPUコアとしては、十分な拡張性だ。
加えて、Mali-G52には、8-bit整数のドット積(Dot Product)命令が加えられた。もともとBifrostアーキテクチャでは、32-bitの演算レーンを、4個の8-bitサブレーンに分割できる。各レーンごとに、4個の8-bit整数の演算をSIMD(Single Instruction, Multiple Data)として並列実行可能だ。
Bifrostでは、これまでも8-bit SIMDで通常の演算命令をサポートして来たが、G52でより効率的な新命令を加えた。
深層学習に向けた8-bit整数命令
G52の新命令では、4-wayの8-bit整数(Int8)を、4-wayの8-bit整数と掛け合わせ、4-wayの乗算結果の値をすべて加算した値を1サイクルスループットで出力できる。
これは、現在のニューラルネットワークベースの機械学習で多用される演算だ。従来では、複数命令が必要だった処理を1命令で1サイクルスループットで実行できるようになり、G52ではニューラルネットワークの性能が大幅に上がった。NVIDIAが似たような実装をしていた。
ニューラルネットワークでは、トレーニング(学習)には16-bit浮動小数点(FP16)など相対的に高いビット精度が必要だが、推論では8-bit整数程度の精度が今は主流だ。現在のGPUでは、推論向けでは8-bit整数のサポートがカギとなっている。
G52では、Int8は各レーン4-wayのドット積が可能となり、レーン数もExecution Engineあたり8レーンとなった。Execution Engineあたりで32並列のInt8演算が可能だ。GPUコア全体では、384並列のInt8演算となる。
ちなみに、トレーニングで多用されるFP16については、Bifrostは2-way SIMDをサポートしている。
こうしたアーキテクチャ拡張によって、Mali-G52は前世代のG51に対して、3.6倍の機械学習性能を達成するという。
アーキテクチャ面で大幅な拡張となったG52だが、Execution Engine自体のダイエリアの拡張は22%程度に抑えられた。GPUコア全体でのエリアの拡張では11%程度だという。GPUコア設計自体も改良もあって、G52はG51に対して同プロセスであっても性能密度は30%向上。電力効率は15%アップしている。
言い換えれば、Mali-G52は従来G51が搭載されていたようなメインストリームのスマートフォン向けのモバイルSoCにフィットする。コストや電力を大幅に増すことなく、SoCに統合できるコアとなっている。想定するターゲットプロセスは16nmクラスだが、ソフトマクロとしてどのプロセスにも載せることはできる。
コアエリアを抑えることにフォーカスしたMali-G31
Armはメインストリーム向けのMali-G52ではアーキテクチャを拡張した。それに対して、エントリモバイルやデジタルTV向けのMali-G31では、アーキテクチャは従来のBifrostままで、リソースを抑えてコアサイズや電力を抑えることにフォーカスした。
GPUコアはG51世代と同じで、Execution Engineのなかに4個の演算レーン。GPUコアは1個または2個のExecution Engineで構成される。FP32積和算ユニットは4または8個の構成で、シェーダGPUとしてはミニマムだ。G51と比べるとGPUのトータルのエリアは20%少ない。しかし、設計のチューンなどによって性能密度は20%向上している。
Mali-G31の最大のポイントは、ミニマムなGPUでありながら、最新のAPIをサポートする点。OpenGL ES 3.2とVulkanをサポートする。ソフトウェアの互換性をメインストリームGPUと保つことができる。
Mali-G31がターゲットとするのは低電力のCortex-A55系CPUコアだけで構成されるようなバリュースマートフォン向けモバイルSoCだ。
それに対して、Mali-G52は、より性能の高いレンジのCPUクラスタとの組み合わせを想定している。ArmのCPUコアは、新しいクラスタアーキテクチャ「DynamIQ」によって、CPUコアの組み合わせの自由度が増した。シングルスレッド性能の高いCortex-A75を1個に、低電力のCortex-A55を7個といった組み合わせも可能となっている。こうした新しいメインストリーム向けCPUクラスタとMali-G52はフィットする。