ニュース

NVIDIA、ディープラーニングとGPUの関係を解説

Prometech Simulation Conference 2015でNVIDIAの村上氏が講演

2015年9月17日開催

NVIDIA プラットフォームビジネス本部 CUDAエンジニア 村上真奈氏

 半導体メーカーのNVIDIAは9月17日、プロメテック・ソフトウェアが主催する「Prometech Simulation Conference 2015」の併設イベント「GPU Computing Workshop for Advanced Manufacturing」において、NVIDIA プラットフォームビジネス本部 CUDAエンジニア 村上真奈氏が、同社GPUを利用したディープラーニング研究の基礎に関する講演を行った。

 この講演は、NVIDIAが9月18日に虎ノ門ヒルズで開催する「GTC Japan」において、同社のGPUを利用したディープラーニングのソリューションなどについて、技術者向けの講演を行うのに先だつもの。この中で村上氏は、同社がGPUを利用した汎用演算の仕組みとして提供しているCUDAを活用したディープラーニング向けの開発ツールなどを紹介し、DIGIT2(ディジットツー)、cuDNN(クーディーエヌエヌ)、cuBLAS(クーブラス)などについて説明した。

ディープラーニングを効率よく行うために必要なのがGPU

 村上氏は、GPUを汎用計算に利用するトレンドから話を始めた。インテルなどが提供するCPUと比較すると、GPUは倍精度の浮動小数点演算性能とメモリ帯域で大きく引き離す成長を続けており、「NVIDIAは新しい世代のGPUアーキテクチャが登場する度に、1Wあたりの性能を上げることにフォーカスしている」と述べ、CPUと比べてGPUが電力辺りの性能が高いことを例に挙げ、GPUを利用することで、性能だけでなく電力効率でもメリットがあると強調した。

 また、米国におけるスーパーコンピュータを構築する取り組みについて紹介。NVIDIAは現在「TOP500」と呼ばれるスーパーコンピュータのランキングで、中国の天河に次いで2位になっているTITAN(タイタン)をIBMと共同で構築しており、1万8000個のNVIDIAのGPUが活用されていると述べた。さらに、TITANは2017年に更新される予定で、そこにはNVIDIAが次次世代のGPUとして開発しているVolta(ヴォルタ)が搭載される予定であることなどを説明した。

 そのGPUのディープラーニングでの活用について「すでに米国ではそうなっているが、日本でもディープラーニングにはGPUが必須デバイスだという認識が広がりつつある。画像認識や音声認識、自然言語処理など様々な用途に応用例が広がっている」と述べ、ディープラーニングの活用例として音声認識、自動運転、メディカルイメージの解析(医師の判断をコンピュータが行う)、バイオ(創薬)などを挙げた。また、今年の3月にサンノゼで行われたGTCでの基調講演について触れ、NVIDIA、Google、Baiduの3つの基調講演すべてでテーマがディープラーニングだったことを紹介。特にBaiduのアンドリュー・ウング氏の「検索の50%は画像と音声になるだろう」というコメントやGoogleのGoogle I/Oでのコメントを紹介し、eコマースサイトのレコメンデーション、自動運転など様々な用途にディープラーニングの成果が活用されるようになるだろうとした。

 また、ディープラーニングが画像認識を変える例として、自動運転への応用を挙げた。「自動運転では標識を見て速度を落としたり、車線を認識して車線変更を行ったりする必要がある。それらはディープラーニングを活用することでさらに効率よく行うことができる」と述べ、同社が米国のラスベガスで行った実証実験の動画を紹介し、ディープラーニングにより自動車の種類などを自動で判別できるようになるデモについての説明を行った。

 その上で、NVIDIAが提唱しているディープラーニングのアーキテクチャについて、「ディープラーニングはビッグデータを解析して学習するという作業に、処理によっては1日から1週間もかかるものがある。そこで、学習はサーバー側で行い、自動車などに結果をダウンロードして利用するという仕組みをNVIDIAでは提案している。さらに自動車側のカメラの映像などをサーバーに上げて……というサイクルで学習を行っていく。そのためにサーバー側にはTeslaを、自動車側にはTegraをとソリューションとして提供している」と述べ、クラウド側でディープラーニングを行い、その成果をクライアントとなる自動車側にダウンロードして、さらに新しいデータを自動車側からサーバーにアップロードするというサイクルでディープラーニングを活用していく仕組みを提案しているとした。

NVIDIAはビジュアルコンピューティングのリーダー
浮動小数点演算性能、メモリバンド幅でもCPUに比べてGPUは大きく向上している
米国のスーパーコンピュータ開発にもNVIDIAのGPUが利用されている
ディープラーニングの応用分野
GoogleやBaiduといった検索企業などもディープラーニングに注目
音声認識や画像認識など、様々なディープラーニングの応用分野
Googleも自社の開発セミナーでディープラーニングに言及
急速にマーケットが拡大している
画像認識に新しい方式を持ち込む
自動車で道路を走って認識しているデモ
実際にラスベガスの公道を走っての実証実験
自動車への活用例。クラウド側にスーパーコンピュータを置き、ディープラーニングを行って結果を自動車に戻す。自動車側では映像の撮影やそのアップロードなどを行う。そうした循環モデルを展開する

GPUを利用したディープラーニングに取り組むならDIGIT2が入門ツールに最適

 次いで村上氏は、ディープラーニングになぜGPUが必要なのかについて説明した。村上氏は「GPUは元々3D CGを処理するために進化してきた。3D CGでは行列演算が多く、それに最適なプロセッサとして進化してきた。ディープラーニングもほとんどが行列演算で、行列演算以外にも並列処理が多くなっており、この点でGPUに向いた処理になっている」と述べ、NVIDIAがCUDAという仕組みを導入してGPUコンピューティングないしはGPGPU(General Purpose GPU)と呼ばれるGPUを利用した汎用演算の仕組みが、ディープラーニングの処理を行うのに最適だからであるとした。

 また、「ディープラーニングにはビッグデータ、よりよいモデル、そして強力なGPUアクセラレータの3つが重要になってきている」と述べ、ディープラーニングを成功させる鍵は、良質でサンプルの多いデータ、優れたディープラーニングのモデル、そして強力な行列演算/並列処理性能を持つGPUが重要だと述べた。特に、ディープラーニングの各ワークフローのうちで学習には膨大な時間がかかるが、GPUを利用することでその時間を圧倒的に短縮できることがメリットだとした。

 村上氏はディープラーニングにGPUを活用するソフトウェアをプログラミングするために、NVIDIAでは複数のライブラリを提供していると説明し、具体的にcuDNN、cuBLASという2つのCUDAライブラリを紹介した。cuBLASはGPU向けの行列演算ライブラリで、ディープラーニングで利用される単精度の行列積を行うためのライブラリ。cuDNNは、最近最新版のバージョン3が登場したディープラーニング用のライブラリで、Caffe、Theanoなどの代表的なディープラーニングのフレームワークで採用されているという。これらのライブラリを利用することで、CaffeやTheanoなどを利用してディープラーニングのプログラムを開発しているプログラマがより容易にGPUを活用することができるようになる。村上氏は「GPUを利用すると、CPUの10数倍の性能で演算できるようになる」と述べ、それらのライブラリとGPUを組み合わせることで、ディープラーニングの学習にかかる時間を短縮できるとアピールした。

 また、村上氏はこれからディープラーニングの研究を始めようという開発者向けのツールとして「DIGIT2」を紹介した。「DIGIT2は無料のツールで、ディープラーニングを始めるための入門ツールになる。ラーニングや結果を可視化することができる」と述べ、これからディープラーニングのプログラムの開発や研究を始めようというプログラマや研究者にはDIGIT2がお薦めだと述べた。村上氏によれば、DIGIT2では新しくマルチGPUに対応しているなど、前のバージョンに比べて昨日の強化がされているほか、学習データセットの作成が容易になるなど、より便利なツールになっていると説明した。

 最後に村上氏はNVIDIAのGPUのロードマップについて触れ、2016年にはPascal(パスカル)、その先にはVoltaという2製品を用意しており、GPUの演算性能を引き上げる計画だとした。特に来年登場する予定のPascalは、ディープラーニングで必要とされる半精度の浮動小数点演算に対応し、メモリを3Dに積層する3Dメモリを採用することによりメモリ帯域幅を向上させる仕組みが導入される。現在のGPUではメモリ帯域が性能のボトルネックになっていることが多く、Pascal世代ではそれが解消される。さらにNVLINKという、IBMのPOWERプロセッサとダイレクトに接続されるバスが導入され、CPU-GPU間のボトルネックの問題も解消されると説明した。

なぜGPUがディープラーニングに向いているのか
ディープラーニングでは行列演算と並列処理が多い
ディープラーニングを加速する3つの要因
ディープラーニングのワークフロー
特に学習のところでGPUの演算性能が生かせる
CUDAのライブラリ
行列演算ライブラリのcuBLAS
ディープラーニング用ライブラリのcuDNN
ディープラーニングのトレーニングシステム
cuDNNを利用した時のCPUとの性能比較、十数倍の処理能力を実現
コンボリューショナルニューラルネットワーク
コンボリューショナルニューラルネットワークでのcuBLASとcuDNNの活用場所
ディープラーニングの性能を倍増させるNVIDIAのソリューション
CUDA7.5
cuDNN v3での強化ポイント
cuDNN v3と前のバージョンの性能比較
DIGITS2の紹介
DIGIT2を利用すると、ディープラーニングの開発が簡単に始められる
DIGITSではマルチGPUに対応している
DIGITSでは学習データセットの強化などに対応
DIGITSはNVIDIAのサイトから無料でダウンロードして利用可能
NVIDIAのGPUロードマップ
Pascalの特徴
緑の部分をNVIDIAから提供している、フレームワークを選べば簡単に開発が始められる

(笠原一輝)