Akira Naruse
Developer Technology Engineer, NVIDIA
ディープラーニング
最新技術情報
何故GPUはディープラーニングに向いているのか?
AGENDA
ディープラーニングの現状
何故GPUがディープラーニングに向いているのか
エヌビディアDIGITSのご紹介
DLが注目されたきっかけ -ILSVRC2012-
誤認識率:
4.94%, Feb. 6, 2015, Microsoft
4.82%, Feb. 11, 2015, Google
人間レベルの認識率
Accuracy %
2010 201420122011 2013
74%
84%
Deep Learning
CV
72%
GTC 2015
Deep Learning
Deep Learning
Deep Learning
GTC: DL SESSIONS
40
85
0
20
40
60
80
100
0
5
10
15
20
25
2014 2015
画像分類、物体認識 顔認識 音声処理、自然言語処理
医療画像解析 地層解析(Oil&Gas) レコメンド
DL適用分野
DLを用いた車種認識 –NVIDIA CES2015 DEMO-
DLを用いた音声認識 –BAIDU DEEP SPEECH-
http://www.ustream.tv/recorded/60113824
http://www.ustream.tv/recorded/60113824/highlight/631666
From: GTC2015 Keynote session
Deep Learning: What’s Next, Andrew Ng (Baidu)
画像の説明文の生成 –CNN&RNN-
Recognizing the objects in the picture, and assembling word sequences in the text
representing the scenery ( Automated Image Captioning) Stanford Univ.
http://cs.stanford.edu/people/karpathy/deepimagesent/generationdemo/
ディープラーニングはスケーラブル
Data & Compute
Performance
&
Accuracy
Deep Learning
従来手法
Slide courtesy of Adam Coates
Yesterday Today Tomorrow
KEYS
DLモデル
大量データ
計算パワー
なぜGPUはディープラーニングに
向いているのか?
データ・サイエンティストのワークフロー
クリティカルパス:
Ideaが沸いてから
Testが完了するまで
サイクルを速く回すことが重要
Idea
Code
Train
Test
R&D cycle
データ・サイエンティストのワークフロー
Idea
Code
Train
Test
膨大な計算量
+ CUDA
DLトレーニングシステム
Caffe Theano Torch
GPUs
Chainer
DLフレームワーク
DLアプリケーション
DLトレーニングシステム
Caffe Theano Torch
GPUs
Chainer
DLフレームワーク
DLアプリケーション
cuBLAS, cuDNN
CNN: Convolution Neural Network
フルコネクション (全結合層) cuBLAS
コンボリューション (畳み込み層) cuDNN
LeNet5 [LeCun et al.,1998]
全結合層
Forward (前進)
Layer 1 Layer 2 Layer 3 Layer 4
全結合層
Backward (誤差逆伝播)
Layer 1 Layer 2 Layer 3 Layer 4
全結合層
x[N] y[M]
w[N][M]
𝑦 𝑖 = 𝐹
𝑗
(𝑤 𝑖 𝑗 × 𝑥 𝑗 )
全結合層
x[N] y[M]
w[N][M]
x =
w[N][M] x[N] y[M]
行列 ベクトル
𝑦 𝑖 = 𝐹
𝑗
(𝑤 𝑖 𝑗 × 𝑥 𝑗 )
行列とベクトルの乗算
全結合層
x[N] y[M]
w[N][M]
x =
w[N][M] x[N] y[M]
メモリバンド幅で性能が決まる
Xeon E5-2690v3 Tesla K40
68 GB/s 288 GB/s
ピークメモリバンド幅
行列 ベクトル
全結合層
x[N] y[M]
w[N][M]
x =
w[N][M] x[N] y[M]
ミニバッチ: 複数データで同時学習
行列 ベクトル
行列と行列の乗算
全結合層
x[K][N] y[K][M]
w[N][M]
x =
w[N][M] x[K][N] y[K][M]
高い演算能力を発揮できる
Xeon E5-2690v3 Tesla K40
0.88 TFLOPS 4.29 TFLOPS
ピーク演算性能(単精度)
行列 行列
行列演算ライブラリ: cuBLAS
cuBLAS 6.5 on K40m, ECC ON, input and output data on device.
MKL 11.0.4 on Intel IvyBridge single socket 12 -core E5-2697 v2 @ 2.70GHz
cuBLAS 6.5 on K40m, ECC on, input and output data on device.
m=n=k=4096, transpose=no, side=right, fill=lower
GPU向け行列演算ライブラリ(BLAS完全準拠)
DLで使われるのは単精度の行列積(SGEMM)
CNN: Convolution Neural Network
フルコネクション (全結合層) cuBLAS
コンボリューション (畳み込み層) cuDNN
LeNet5 [LeCun et al.,1998]
畳み込み層
出力特徴量マップ
入力特徴量マップ(画像)
処理内容: 画像処理のフィ
ルタと類似
ガウシアンフィルタ (ぼかし)
ソーベルフィルタ (エッジ抽出)
他多数
画像処理フィルタの特徴
フィルタサイズ:小
メモリバンド幅が重要
フィルタサイズ:大
演算性能が重要
畳み込み層
出力特徴量マップ
入力特徴量マップ
多数のフィルタ
フィルタの係数が学習対象
畳み込み層
出力特徴量マップ
入力特徴量マップ
畳み込み層
畳み込み演算
画像処理では、用途に合
わせて個別チューニング
DLの用途、組み合わせが
膨大…
出力特徴量マップ
入力特徴量マップ
畳み込み層
多数パラメータ
o フィルターのサイズ
o 入力特徴量マップの数
o 入力特徴量マップのサイズ
o 出力特徴量マップの数
o 出力特徴量マップのサイズ
o ミニバッチのサイズ
o ストライディング量
o パディング量
o …
個別チューニングは大変
出力特徴量マップ
入力特徴量マップ
畳み込み層
cuDNN
行列演算アプローチ
出力特徴量マップ
入力特徴量マップ
畳み込み層
I0 I1 I2
I3 I4 I5
I6 I7 I8
F0 F1
F2 F3
入力
フィルタ(2x2)
O0 O1
O2 O3
出力
畳み込み層
I0 I1 I2
I3 I4 I5
I6 I7 I8
F0 F1
F2 F3
F0 F1 F2 F3
I0
I1
I3
I4
I1
I2
I4
I5
I3
I4
I6
I7
I4
I5
I7
I8
入力
フィルタ
出力
入力(並び替え)
畳み込み層
F0 F1 F2 F3
G0 G1 G2 G3
I0
I1
I3
I4
I1
I2
I4
I5
I3
I4
I6
I7
I4
I5
I7
I8
多数フィルタ
出力
入力(並び替え)
フィルタ
入力(並び替え)
畳み込み層
F0 F1 F2 F3
J0
J1
J3
J4
J1
J2
J4
J5
J3
J4
J6
J7
J4
J5
J7
J8
I0
I1
I3
I4
I1
I2
I4
I5
I3
I4
I6
I7
I4
I5
I7
I8
G0 G1 G2 G3
ミニ・バッチ
(複数データで同時学習)
出力フィルタ
F0 F1 F2 F3
G0 G1 G2 G3
畳み込み層
F0 F1 F2 F3
J0
J1
J3
J4
J1
J2
J4
J5
J3
J4
J6
J7
J4
J5
J7
J8
I0
I1
I3
I4
I1
I2
I4
I5
I3
I4
I6
I7
I4
I5
I7
I8
G0 G1 G2 G3
出力
行列と行列の乗算
高い演算能力を発揮できる
フィルタ(並び替え)
cuDNN: 行列演算への変換も含め、全てを処理
入力(並び替え)
G0 G1 G2 G3
F0 F1 F2 F3
LENET5
LeNet5 [LeCun et al.,1998]
OutputsFilter
(Expanded)
Inputs
16
100 * batch size
150
150
GOOGLENET
GoogLeNet [Szegedy et al.,2014]
OutputsFilter
(Expanded)
Inputs
192
3136 * batch size
576
576
LENET5 GOOGLENET
0.24 x Bs 346 x Bs
1回の演算量(MFLOP)
cuDNN API
畳み込み演算
cudnnConvolutionForward()
cudnnConvolutionBackward[Bias|Filter|Data]()
活性化
cudnnActivationForward()
cudnnActivationBackward()
プーリング
cudnnPoolingForward()
cudnnPoolingBackward()
ソフトマックス
cudnnSoftmaxForward()
cudnnSoftmaxBackward()
…
GPUはディープラーニングの全フェーズを加速
cuBLAS
LeNet5 [LeCun et al.,1998]
性能測定結果
AlexNet [A. Krizhevsky et al.,2012]
2.5M
18M
23M
43M
0
10
20
30
40
50
16 Core CPU GTX Titan Titan Black
cuDNN v1
Titan X
cuDNN v2
画像数(M)
1日あたりの学習画像数 (Caffe)
E5-2698 v3 @ 2.3GHz / 3.6GHz Turbo
cuDNN v3
学習の高速化(主にMaxwell向け)
2D畳み込み演算の高速化
FFTコンボリューション対応
より大きなモデル
16ビット浮動小数点ストレージ
9月リリース予定
RC版がダウンロード可能 (登録必要)
https://developer.nvidia.com/cuDNN
0.0x
0.5x
1.0x
1.5x
2.0x
2.5x
Alexnet OverFeat VGG
cuDNN v2  cuDNN v3
学習性能: 最大2倍
cuDNN 3 performance vs. previous version on Ubuntu 14.04 LTS with
NVIDIA® GeForce® TITAN X and Intel® Core™ i7-4930K @ 3.40GHz
Idea
Code
Train
Test
データ・サイエンティストのワークフロー
Idea
Code
Train
Test
R&D cycle
DIGITS
GPUディープラーニングトレーニングシステム (Web UI)
USER
INTERFACE
Visualize
Layers
Configure
DNN
Process
Data
GPUGPU HW CloudGPU ClusterMulti-GPU
Theano
Torch
Monitor
Progress
Caffe
cuDNN, cuBLAS
CUDA
データサイエンティスト向け
DNNモデルの設計
学習状況・結果の可視化
多数の学習の管理
DIGITS
1. データ準備
Idea
Code
Train
Test
DIGITS
2. モデル設定
Idea
Code
Train
Test
DIGITS
3. 実行と監視
Idea
Code
Train
Test
DIGITS
4. 可視化
Idea
Code
Train
Test
DIGITS: DEMO
DIGITS
developer.nvidia.com/digits github.com/NVIDIA/DIGITS
Idea
Code
Train
Test
データ・サイエンティストのワークフロー
DIGITS
cuBLAS
cuDNN
THANK YOU

なぜGPUはディープラーニングに向いているか