NVIDIAは4月27日、都内でディープラーニングの最新動向などを紹介するイベント「NVIDIA Deep Learning Day 2016 Spring」を開催し、4月4~7日(米国時間)にかけて開催された「GPU Technology Conference 2016(GTC 2016)」の内容などを含め、日々進化を続けるディープラーニングの概要や、なぜディープラーニングにGPUが必要とされているのか、などについて紹介を行った。

エヌビディアのプラットフォームビジネス本部 ディープラーニングソリューションアーキテクト 兼 CUDA エンジニアである村上真奈氏

エヌビディアのプラットフォームビジネス本部 ディープラーニングソリューションアーキテクト 兼 CUDA エンジニアである村上真奈氏は、ディープラーニングを学ぶ上で重要なのは「良い構造をしたディープニューラルネットワーク(DNN)のモデル」、「DNNに与えるビッグデータの量」、「GPU」の3つの組み合わせが重要だと語る。

なぜGPUが用いられるのだろうか。簡単に言ってしまえば、GPUは対CPU比で10倍程度の演算パフォーマンスをディープラーニング分野では発揮することができるためだとNVIDIAでは説明している。ディープラーニングの学習フェーズは行列演算を行う部分が多く、GPUは元々、そうした行列演算を得意としてきた。そのため、「沢山の画像を深い階層で処理させようとすると膨大なパラメータ量になる。そうした分野でGPUが活躍することとなる」(村上氏)とする。具体的には、学習段階としては、1枚1枚の画像に対し、それが何であるかをバックワードプロパゲーションを行い計算の重み付けを更新し、精度を上げていく。1枚あたりの時間は大したことがなくても、この枚数が膨大になれば相応の時間が必要になる。例えば、Titan Xを2枚搭載したワークステーションで300MB程度の画像をAlexNetなどで学習させても1日程度かかる計算だという。もし同じ作業をCPUでやろうと思えば、実に10日程度かかる計算となり、その計算をしている間、開発作業は止まってしまうが、GPUであればその間、より多くの学習を行え、開発効率を向上させることができるようになる。

GPUは行列演算を得意としており、ディープラーニングの学習フェーズの多くがその行列演算となる。学習は主に、右上のスライドのようにフォワードプロパゲーションとバックワードプロパゲーションの繰り返しにより、計算の重み付けを更新していくことで成り立ち、それにより、最終的に未知の画像の識別を行えるようにする、といったものとなる。こうしたトレーニングの時間は膨大なものとなり、GPUを用いることで、その時間の短縮を図ることができるようになる (出典:NVIDIA Deep Learning Day 2016 Springにおける講演資料。以下、すべて同様)

また、NVIDIAは単にハードウェアとしてのGPUを提供するだけではない。GPUコンピューティング向け統合開発環境からスタートした「CUDA」におけるディープラーニング向けのライブラリ拡充などを継続して行っており、それを「ディープラーニングSDK」として提供することで、ディープラーニングにかかる学習時間の短縮や開発の容易化なども実現してきた。

ディープラーニングSDKは、アプリケーション設計、開発におけるフレームワークで用いられるようなライブラリやソフトウェアをまとめた総称で、ディープラーニングのアプリを簡単に実装できて、かつ高速に動くことを目的に開発が進められている。具体的には、ディープラーニング用CUDAライブラリ「cuDNN」、密行列や疎行列、フーリエ変換などの各種の数学ライブラリ、マルチGPU集合通信ライブラリ「NCCL(ニックル)」などが提供されている。

NVIDIAのディープラーニングSDKの概要。ディープラーニングのアプリ設計や開発などで用いられるライブラリやソフトウェアが提供されている