後藤弘茂のWeekly海外ニュース

本格的に深層学習へ舵を切った真のジャイアントコア「Tesla V100」

 NVIDIAは、次世代GPUアーキテクチャ「Volta(ボルタ)」と次世代SoC(System on a Chip)「Xavier(エグゼビア: 英語発音はザビア)」の概要とスケジュールを発表した。

VoltaとXavierを第3四半期に投入

 Voltaは内部マイクロアーキテクチャを一新したNVIDIAの次世代GPUで、ハイエンドの「GV100」から投入される。Xavierは車載など組み込み向けをターゲットとしたSoCだ。

 どちらも、機械学習向けの機能を搭載し、機械学習の性能を飛躍的に向上させた。いずれも、2017年第3四半期に登場する。またNVIDIAは、車載向けシステムで、トヨタと提携したことも発表した。

ベールを脱いだVolta

 NVIDIAの次のフラッグシップGPUとなるGV100。NVIDIAは、GV100のGPUコンピューティング向け版を「Tesla V100」としてリリースする。

 GV100は、5,120個のCUDAコア(FP32積和算ユニット)を搭載し、FP32で15TFLPOSの性能。さらに、ディープラーニング(深層学習)のトレーニングで使われる、FP16にフォーカスしたテンソル演算ユニットを搭載し、FP16時には120TFLOPSの性能を叩き出す。NVIDIAは、GV100ベースのシステムの受注を開始し、2017年第3四半期から出荷する予定だ。

Tesla V100として登場

 Xavierは、次世代の車載コンピュータの中核となるSoC。NVIDIA設計のDenver ARM CPUコアと、512CUDAコアのVolta GPUコアを搭載する。

 Xavierは、ディープラーニングの「推論(inference: インファレンス)」で多用される、低精度の演算を行なうプロセッサ「DLA (Deep Learning Accelerator)」を搭載。30Wの電力で30TOPS(trillion operations per second)のINT8(8-bit整数)オペレーションを実行できる。Xavierは7月に一部顧客への出荷を行ない、9月から本格出荷を開始する。

 NVIDIAは、主催するGPU技術のカンファレンス「GTC (GPU Technology Conference) 2017」で、VoltaとXavierの概要や製品計画、パートナーなど一連の発表を行なった。GTC 2017は、米サンノゼで5月8日から11日にかけて開催されており、NVIDIAのJen-Hsun Huang(ジェンセン・フアン)氏(Founder and CEO, NVIDIA)が、10日の基調講演でこれらの発表を行なった。

Volta GV100を掲げるJen-Hsun Huang氏(Founder and CEO, NVIDIA)
Volta GV100ベースのTesla V100

ディープラーニングへの傾斜が明瞭となったNVIDIAの戦略

 VoltaとXavierで明瞭になったNVIDIAの戦略のポイントは3点。

 まずはNVIDIAの機械学習重視への大転換。NVIDIAは、数年前から機械学習への傾斜を強めていたが、今回は機械学習に最適化した機能をGPUに搭載してきた。

 これまでと比べると、拡張した機械学習向けハードウェアの規模が大きく、NVIDIAの本気度がうかがえる。ここまで機械学習を強化すると、もはや“GPU”とは呼びにくい。

 次に、機械学習への最適化でも、高性能GPUはトレーニングに比重を置き、SoCは推論に特化と、明瞭に方向性をつけてきたこと。高性能でトレーニングに力量を発揮するGPUと、低電力で推論に特化してデバイス側への搭載を目指すSoC。2方向へと同社の製品を進化させようとしている。

Xavierに搭載されたDLA

 3つめは、高性能GPUとSoCそれぞれでの、機械学習機能の実装形態に違いをつけたこと。

 高性能GPUではGPUコアの中で機械学習機能を拡張した。それに対して、SoC側では、GPUコアとは別に、機械学習のアクセラレータを分離した形で実装した。この違いは、今後の製品の発展方向の違いも示唆している。

 また、NVIDIAは驚いたことに、XavierのDLA(Deep Learning Accelerator)をオープンソースにすることも発表している。

機械学習で圧倒的な性能を発揮するVolta
XavierではCPU、GPU、DLAの3つのコアをSoCに統合

ワンショットサイズの限界に来たNVIDIA GPU

 Volta GV100は、“真のジャイアントプロセッサ”だ。ダイサイズ(半導体本体の面積)は815平方mm。GTCの基調講演でフアン氏は、「これ以上大きなGPUを作ることはできない」と語ったが、これは真実だ。

 半導体チップは製造工程の露光プロセスで、四角形の領域を1回の照射(ワンショット)で転写する。逆を言えば、ワンショットの四角形よりも大きなサイズのチップを作ることができない。そして、現在のワンショットサイズは、33×26mmで、面積では約850平方mmとなる。

 GV100は、加工部分も考えるとワンショットぎりぎりのサイズとなる。間違いなく、現在の技術で最大サイズのチップだ。トランジスタ数は21B(210億)に達する。これは、NVIDIAの初代GeForce(NV10)の約900倍だ。

巨大サイズのGV100

 プロセスはTSMCの“12nm” FinFETプロセス。このプロセスは、16nm世代プロセスをマージンの切り詰めや回路設計、セルライブラリの縮小などによって高密度化したものだ。技術の根幹部分は成熟した16nmであるため、巨大チップでも見合うと見られる。

ディープラーニングのためのTensorコアを各SMに搭載

 NVIDIA GPUアーキテクチャでのGPUコアのクラスタである「SM (Streaming Multiprocessor)」は、GV100全体で80個。FP32積和ユニットであるCUDAコアは合計で5,120個。

 CUDAコアの数では、前世代のPascal(パスカル)アーキテクチャのGP100の3,584個に対して約1.43倍だ。そのため、HPC (High Performance Computing)などの従来ワークロードの性能も上がる。

Voltaでは通常の科学技術系の性能も上がっている

 VoltaのSMアーキテクチャは、Pascalとは大きく異なっている。

 もっとも異なっているのは、各SMに8ユニットの機械学習向け演算アレイ「Tensor Core(テンサコア)」が搭載されている点。Tensorコアは、いわゆるテンソルの演算を行なうもので、Voltaの場合は、4×4のマトリックス同士の演算をサポートする。

 ニューラルネットワークでは、16要素のインプットに対して、16要素の重みを掛け合わせて、その結果を加算して出力する。VoltaのTensorコアは、FP16データ同士の乗算を行ない、FP32データの加算を行なう。

Tensorコアの概念図
Tensorコアのマトリックス演算
VoltaでのTensorコアのオペレーション
Tensorコアによってディープラーニング性能がジャンプする

 Voltaでは、1個のSMの中に8個、GV100全体では640個のTensorコアを持つ。各Tensorコアが、64並列の演算を行なうことができるため、1.4GHz程度の動作周波数時におけるGV100でのFP16ベースのディープラーニング演算は、120TFLPOSという途方もない数字になる。

 現世代のGP100と比べると、ディープラーニングのトレーニングでは12倍、推論では6倍の性能となる。言い換えれば、NVIDIAは1年でGPUのディープラーニング性能を12倍に引き上げたことになる。

最大12倍にディープラーニング性能が上がる
ディープラーニング性能が飛躍するVolta
フレームワークでも性能が上がる

SMアーキテクチャを刷新

 Tensorコアを拡張したことで、VoltaのSMは完全にアーキテクチャが一新された。

 Voltaでは、1個のSMは4個のクオータに分割されている。各クオータにFP32ユニットが16個、FP64ユニットが8個、ロード/ストアユニットが8個配置されている。

 命令ユニットは、各NVIDIAのSIMT (Single Instruction, Multiple Thread)のスレッドバッチであるwarpのサイズは32スレッドで、命令ユニットは各サイクルに1warpからの1命令をディスパッチする。そのため、FP32ユニットは2サイクルかけて1つのwarpを実行する。2個のTensorコアも同様の実行スループットになっていると見られる。

 また、整数演算ユニットの命令発行ポートが分離され、浮動小数点系ユニットとオーバーラップして実行することが可能になった。

VoltaのSM構成
Voltaでは命令セットアーキテクチャも刷新された

 Voltaでは、メモリ階層も変わった。過去2世代では、NVIDIA GPUはリードオンリーのL1データキャッシュしか持たず、通常はL2から読み出すアーキテクチャとなっていた。

 しかしVoltaでは、リード&ライトのL1データキャッシュが復活し、128KBと相対的に大きめのサイズとなった。このL1はコンフィギュラブルで、一部をスクラッチパッド式のシェアードメモリに使う。

Voltaのメモリ階層

 Volta GV100のメモリはHBM2だが、Pascal GP100より1.2倍高速化し、メモリ帯域は900GB/sとなった。また、メモリコントローラの改良によってメモリ実効帯域も向上する。

 GV100は、DRAMダイを4層重ねた4Hiで16GB容量で提供されるが、8Hiで32GB容量も視野に入れているという。ただし、8Hiの場合は2ランクアクセスとなる。

メモリの生帯域が上がるだけでなく、実効帯域も上がる

 チップ間インターコネクトの「NVLink」はリンク数が6リンクに増え、28%高速化した結果、1ダイあたり300GB/sの帯域となった。リンク数が増えたことで、ダイレクト接続できるGPU数も増え、より大きな構成の計算ノードの設計が容易になった。

 また、NVLinkが2.0となり、ハードウェアコヒーレンシプロトコルがサポートされた。これによって、CPUとGPUの間で仮想メモリアドレスを共有するユニファイドメモリ時のコヒーレンシが、細粒度かつ低レイテンシで維持されるようになった。

NVLinkの拡張によって8 GPUの接続構成も容易になった
Pascal世代のユニファイドメモリ
Voltaでのユニファイドメモリ

スレッドの制御が大きく変わった

 Volta世代では、スレッド実行アーキテクチャも変わった。従来は、1個のwarpの中の32スレッドはプログラムカウンタ(PC)を共有し、マスクレジスタによるプレディケーションでコントロールフローを制御してきた。

 それに対して、Volta世代では、warp内の各スレッドレーンがそれぞれPCを持つようになり、個々にスケジューリングが可能となった。

 さらにVoltaでは、GPUコア全体のタスクスケジューリングも柔軟に変わった。GPU側にハードウェアベースのワークの割り当てユニットを設置。GPUコアの実行リソースを柔軟に低レイテンシにタスクに割り当てることが可能になった。

GPUの実行形態の根幹であるSIMTアーキテクチャが変わった
スケジューリングでは、プレディケーションで分岐したスレッドで同期が可能になった
Pascalでのマルチプロセスサービス
Voltaでのマルチプロセスサービス

 Voltaは、このようにGPUのコアアーキテクチャを大幅に拡張している。NVIDIA GPUのマイクロアーキテクチャとしては、これまでで最も大きな変革となっている。特にテンソルの演算を行うディープラーニング向けユニットをSMに加えたことは決定的な変化だ。ちなみに、ネイティブ命令セットも、Volta世代で一新されるという。

GTCの会場San Jose McEnery Convention Center

 ディープラーニングへと大きく舵を切ったNVIDIA。現在ディープラーニングでは、トレーニングにおいてGPUが確固とした位置を確立し、従来のHPC(High Performance Computing)市場だけでなく、一般のデータセンターにまでディープラーニング向けとして浸透を始めている。

 NVIDIAは、IntelやAMDといったほかの大手CPU/GPUメーカーが打ち手を間違えた敵失もあって、トレーニングにおいてはかなり優位に立っている。

 しかし、Intelもディープラーニングへの戦略を急速に整えており、AMDもサーバー市場へ再参入にあたってGPUコンピューティングを武器にしようとしている。さらに、TPUのようなディープラーニング専用のプロセッサも今後増えていくことが予想される。

 NVIDIAは自社の地歩を固めるために、ディープラーニングを強化する方向へ向かっているようだ。