大手半導体メーカーや大手クラウド事業者が、ディープラーニング(深層学習)用のプロセッサ開発に力を注いでいる。ディープラーニングに必要な「低い精度での積和演算」に特化した行列演算ユニットを数百~数万個搭載することで、汎用プロセッサを上回る性能を目指す。各社の戦略を理解するには、ディープラーニングに必要な処理と求められる要件について把握しておく必要がある。
米Intelや米NVIDIA、米AMD(Advanced Micro Devices)といった大手半導体メーカーや、米Googleや米Microsoft、中国Baiduといった大手クラウド事業者、スタートアップが開発を進めるディープラーニング用プロセッサは、「CPU」「GPU」「FPGA」「専用チップ」という方式の違いと、「学習用」「推論用」という用途の違い、「サーバー用」「エッジデバイス用」という稼働場所の違いによって、大きく分類できる(表1)。
プロセッサの種類 | CPU | GPU | FPGA | 専用チップ |
---|---|---|---|---|
学習用 (サーバー) | 米Intel 「Xeon Phi Knight Mill」 | 米Google「Cloud TPU」、 Intel「Nervana」、 米Wave Computing | ||
学習・推論兼用 (サーバー) | 米NVIDIA「Tesla V100」、 米AMD「Vega10」 | 米Graphcore | ||
推論用 (サーバー) | 米Microsoft「Brainwave」、 中国Baidu「SDA」、 中国DeePhi Tech | Google「TPU」 | ||
推論用 (エッジ) | NVIDIA「Xavier」 | 米Teradeep、 DeePhi Tech | 米ThinCi、 英ARM+米ハーバード大学 「DNN ENGINE」、 韓国KAIST「DNPU」 |
ディープラーニングの処理の実態は、行列のかけ算と足し算(積和演算)である。行列の積和演算は、3D(3次元)CGの演算でも多用する。そのためGPU(Graphics Processing Unit)は、積和演算に特化した行列演算ユニットを多数搭載している。GPUが搭載する行列演算ユニットをディープラーニングの処理に活用する試みが、2009年ごろから始まっていた。
行列の積和演算は、科学技術計算でも多用する。そのためGPUにディープラーニングを活用する前から、GPUを科学技術計算に活用する「GPGPU(GPUによる汎用計算)」という取り組みがHPC(High Performance Computing)の領域で進んでいた。ディープラーニング研究者は、NVIDIAがGPGPUのために用意したソフトウエア開発環境などから成る「CUDA」を活用することで、ディープラーニングの高速化を図っていた。
ディープラーニングには精度は不要
もっとも、HPCは倍精度(FP64、64ビット)や単精度(FP32、32ビット)の浮動小数点演算を必要とするのに対して、ディープラーニングはそこまでの精度を必要としない(写真1)。そこで大手半導体メーカーやクラウド事業者は、浮動小数点演算の精度を落とすことでディープラーニングの処理をだけを高速化する「ディープラーニング専用プロセッサ」を開発し始めた。
行列演算に使用する浮動小数点演算の精度を抑えることによって、行列演算ユニットに必要となるトランジスタ数を減らし、チップに実装する行列演算ユニットの数を増やせる。演算ユニットの数が増えれば、1秒間に実行できる行列演算の回数を既存のCPUやGPUに比べて大きく増やせる。これが全てのディープラーニング用プロセッサに共通する基本的な戦略である。
学習と推論で異なる要件
ディープラーニングの処理と言っても、その処理が大量のデータを使ってニューラルネットワークを鍛える「学習(training)」であるのか、それとも鍛えたニューラルネットワークを使って画像認識などを実行する「推論(inference)」であるのかによって、処理内容は大きく異なる(表2)。
学習用 | 推論用 | |
---|---|---|
要件 | 大きなバッチサイズの行列演算、高スループット | 小さなバッチサイズ、低遅延 |
演算の精度 | 「FP32」「FP16」の浮動小数点演算 | 8ビットの整数演算、「FP8」相当の浮動小数点演算 |
ニューラルネットワークの学習とは、モデルの特徴や重みをランダムに決めて推論を実行し、そうした推論の試行を何百万回と繰り返すことで、最適な特徴や重みを探し出す作業だ。そのため学習では、大量の推論を同時に実行する「バッチサイズ」の大きな処理が必要となる。
それに対して、「スマートフォンで撮影した画像の被写体をすぐに認識する」といった推論の処理には、小さいバッチサイズで、低遅延の処理が求められる。このように学習と推論では要件が異なるため、ディープラーニング用のプロセッサでも、学習に特化した製品と推論に特化した製品とでは、特性が大きく異なっている。