なぜ GPU は人工知能研究に使われるのか?
以前書いた TPU に関するエントリでも触れていますが、現在ディープラーニングの学習・推論処理には GPU を使うのが一般的になっています。何故 GPU を使うかというと、一言で言うと「安くて速い」からなんですが、その理由はアーキテクチャにあります。
GPU のアーキテクチャ
GPU は Graphics Processing Unit の略で、その名の通り3次元グラフィックスに必要な計算を高速に行うために専用に設計されたプロセッサです。Intel などの汎用プロセッサは、様々な計算を行う必要があり、回路も複雑になっています。しかし、グラフィック計算のみを高速に行えれば良いGPUは、回路がシンプルになります。汎用プロセッサでも最近はメニーコアになっていますが、それでも数十程度が一般的です。回路が複雑と言うことは、チップ上に占める面積も大きくなり、ひとつのチップに載せられるコア数にも限界があるからです。しかし、最新の NVIDIA (謎のAI半導体メーカーですね ^^;) の GPU は 4,000 コアを内蔵しているということで、並列度がまったく違います。
3次元グラフィックスというのは、物体を右図のように多数の点に分解し、点と点を線で結び、線に囲まれた面に色を付け、光源の計算などを行います。物体を回転させたり移動させる場合には、すべての点について座標変換の計算が必要になりますが、これは大量のデータに対して同じ演算を行う SIMD (Single Instruction Multiple Data) 型の並列処理で、演算コアを増やせば増やすほど効果が出ます。さらに座標変換は基本的には行列計算で、積和演算が中心となるため、GPU の演算コアは積和演算に特化した構造になっています。
この3次元グラフィックスに特化したアーキテクチャが、ディープラーニングにぴったりだったのです。TPU のエントリでも書いているように、ディープラーニングの処理は並列性が高く、しかも積和演算が多用されるため、GPU を使いやすいのです。
AI だけでは無い、GPU の利用範囲
実は、GPUは人工知能研究だけで無く、様々な分野で高速計算 (HPC: High-Performance Computing) に使われています。というか、人工知能に使われ始めたのは最近で、元々 HPC 用途の方が早かったのです。一例が、GPUを使ったスーパーコンピュータです。
スーパーコンピュータの元祖として知られているCray-1が発表されたのは1975年。当時 (そして現在も) 主流だったスカラ型の汎用コンピュータでは時間がかかってしまう科学技術演算 (ベクトル・行列計算を多用) のような計算処理を高速に行うための専用のプロセッサとして開発されたのがベクトル型でした。スカラ型というのはプログラムを順番に処理していく方式、ベクトルは、ひとまとまりの数値を一括で (並列に) 取り扱う方式と言えます。これ以降しばらくの間、スーパーコンピュータと言えばベクトル型を指すことになります。
ちなみに、世界で最も高速なコンピュータシステムをランキングする TOP500 というプロジェクト (実質的にスパコンのランキング) で、演算能力の計測に使われているベンチマーク用のソフトウェアは LINPACK といって、これは元は行列計算用の数学ライブラリです。
当初は専用設計しても高速化のメリットがあったのですが、ベクトルプロセッサを専用に設計するのは期間もコストもかかります。しかし近年では、既存の安価な汎用プロセッサを多数並列に動作させるマッシブ・パラレル (大規模並列演算) のほうがコスト対効果において有利になってきました。現在でもベクトルプロセッサの開発を続けているのは、NEC だけではないかと思います。
理研の「京」は、SUN (今は Oracle?) のライセンスの元富士通が開発したSPARKのカスタムプロセッサが9万個近く使われています。京が稼働したのは2012年、10ペタFLOPSで総開発費は1,120億円と言われています。
しかし、同時期に開発されていた長崎大学のDEJIMAはプロセッサに380台のGPUを使い、158テラFLOPSを記録しました。これは京の1/600の性能ですが、コストは3800万円と、京の1/3000です。(厳密には計算精度などが違いますので単純な比較はできないということです) 最高の性能では無いが、コストパフォーマンスは最高と言うことで、2009年のゴードンベル章を受賞しています。
GPU の今後
GPU はグラフィックス用のプロセッサなので、グラフィックス用以外の用途の今後を考えてもしょうが無い気もしますが、NVIDIA はこの分野に積極的です。結局、グラフィックスってほとんどがゲーム用みたいなもので、今後は VR などもあるでしょうが、ニッチには違いないですから、HPC は数少ない成長分野と言うことでしょう。しかし、AI に関して言うと、TPU のような専用プロセッサに移行していくような気がします。ハードウェアは目的を絞った方が効率は良くなりますので、GPU よりも更に専用化が進んだ TPU は速度・電力効率などの面で有利です。ただ、これはあくまでも現在のディープニューラルネットワークを使い続ける場合の話で、NVIDIA も言っているとおり、専用化しすぎるとそれ以外の用途には使えません。ディープニューラルネットワーク以外の選択肢が出てきたときには、汎用性の高い GPU のほうが有利と言うことでしょう。