...

講演資料 - PC Cluster Consortium

by user

on
Category: Documents
7

views

Report

Comments

Transcript

講演資料 - PC Cluster Consortium
大規模ニューラルネットの高速
Deep Learningの実現に向けて
株式会社富士通研究所
白幡 晃一
[email protected]
0
Copyright 2016 FUJITSU LABORATORIES LTD.
開発の背景
 Deep Learningは様々なアプリケーションへ適用拡大
画像認識
音声認識
医療
自然言語処理
金融
自動車 ロボット
 ニューラルネットの大規模化
ニューラルネットの層数は増えるほど認識等の精度向上のため、大規模化が進む
年
ネット名
層数
エラー率
2012
AlexNet
8
16.4%
2014
VGGNet
19
7.3%
-
5.1%
152
3.6%
~152
3.0%
-
人間
2015
ResNet
2016
Ensemble 2
学習時間が増大  複数GPUの並列動作による高速化が必要
メモリ使用量が増大  GPUメモリ使用の効率化が必要
1
Copyright 2016 FUJITSU LABORATORIES LTD.
Deep Learning処理の大規模
並列化による高速化技術
2
Copyright 2016 FUJITSU LABORATORIES LTD.
複数のコンピュータで並列化(データ並列)
6
5
3層目
ノード1
差分
7
1
ノード2
差分
③ ④
③ ④
② ⑤
① ⑥
⑦
② ⑤
⑦
① ⑥
⑦
差分
③ ④
② ⑤
⑦
1層目
8
ノード3
⑦
⑦
2層目
3
差分
4ノードで
並列学習した例
Forward
③ ④
⑦
⑦
Backward
All-reduce
Update
MPIの
All-reduce
処理で集約し、
更新用データ
を計算
① ⑥
① ⑥
⑦
3
4
ノード4
② ⑤
⑦
⑦
9
⑦
⑦を終えたら、
次の①を開始
Copyright 2016 FUJITSU LABORATORIES LTD.
複数ノードで行う学習処理の課題
 All-reduce処理が加わる事でGPUが動作しない時間が発生
「重みパラメタの要素数」
が多い場合、大きくなる
「ノード数」の増加に伴い、
大きくなる
集約処理による
オーバヘッド
GPU
Forward
Backward
Update
CPU
All-reduce
時間
基本的な
アイディア
・集約処理時間を他のGPU処理時間に隠蔽
・集約処理時間を短縮
4
Copyright 2016 FUJITSU LABORATORIES LTD.
Backward処理時間への隠蔽
各層のForward処理
方法
各層のBackward処理が終わるごとに
層単位でAll-reduce処理を開始する
各層のBackward処理
All-reduce処理
Update処理
Backward処理とAll-reduce処理を
並列に実行することで高速化
隠蔽前
隠蔽後
GPU
CPU
CPU
L1 L2 L3
L3
L2
L1
L3
L1
L2
5
Copyright 2016 FUJITSU LABORATORIES LTD.
Forward処理時間への隠蔽
各層のForward処理
方法
・Update処理を分割
・Forward処理の開始を層ごとに判定
CPU
L3
All-reduce処理
Update処理
すべての層のAll-reduce処理の完了前に、
次のForward処理を開始することで高速化
層単位でUpdate処理
GPU
各層のBackward処理
L2
L1
L1
L3
L2
L1
L2
6
Copyright 2016 FUJITSU LABORATORIES LTD.
評価: Distributed Caffe
(当社比)
複数 GPU 使用時の 1 GPU 使用時に対する学習時間の高速化率
1.8倍高速化
27倍高速化
評価環境
・Tesla K20X GPU を 64 GPU (1ノードあたり1GPU) まで使用
7
Copyright 2016 FUJITSU LABORATORIES LTD.
Deep Learningのニューラルネットを
拡大するメモリ効率化技術
8
Copyright 2016 FUJITSU LABORATORIES LTD.
GPUを用いたDeep Learningの現状
 ニューラルネットの規模は年々急速に拡大
 GPUの高速な演算性能を活用するには、一連の演算に使用する
データを可能な限りGPUの内部メモリに格納する必要がある
18
NN Size(Batch=8)
14
GPUメモリ容量は、
ホストメモリ容量より
小さい
12
10
8
サーバ
ホスト
ResNet
6
CPU
AlexNet
2
VGGNet
LeNet
DRAM
(数百GB)
2016
2015
2014
2013
2012
2011
2010
2009
2008
2007
~
0
Year
PCI-E
アクセラレータ
GPU
32GB/s
4
1998
Memory Size [GB]
CPU-GPU間バンド幅は
GPU内バンド幅より
小さい
~16GB程度
GPU Memory Size
16
720GB/s
DRAM(約10GB)
HDD
注) バッチサイズ8の場合
GPUが搭載しているメモリ量が小さいため、高速に学習できる
ニューラルネットの規模が制限されるという課題がある
9
Copyright 2016 FUJITSU LABORATORIES LTD.
Deep Learningのメモリ使用量の問題
 学習時にGPUのメモリ使用量が増加する
Forward
Backward
認識結果
5
6
誤差
正解と
比較
⑥
3層目
重みデータ
重みデータ '
中間データ
2層目
重みデータ '
中間データ
①
②
重みを更新するための重みデータ
の誤差と、誤差を前層に伝える
ための中間誤差データを計算
重みデータの誤差
中間誤差データ
⑥
③
④
重みデータの誤差
重みデータ、中間データに加えて
誤差データを確保
中間誤差データ
⑤
1層目
重みデータ '
⑥
重みデータの誤差
入力
データ
①と②、③と④はそれぞれ独立に演算可能
基本的な
アイディア
・2種類の誤差データ計算の独立性に着目
・メモリ領域の再利用によりメモリ使用量を削減
10
Copyright 2016 FUJITSU LABORATORIES LTD.
Deep Learningのメモリ効率化技術
方法
ニューラルネットの構造を解析し、より大きなメモリ領域を再利用
するように演算順序とメモリ配置をスケジューリング
Forward
Backward
認識結果
5
3層目
大きさを比較
誤差
正解と
比較
重みデータ > 中間データ
の層(Fully-connected層など)
では、重みデータ領域を
上書きしてメモリ使用量を削減
重みデータ
重みデータ '
②
中間データ
2層目
大きさを比較
6
重みデータ '
④
①
中間誤差データ
⑥
③
重みデータの誤差
中間誤差データ
中間データ
⑤
1層目
重みデータ '
中間データ > 重みデータ
の層(Convolution層など)
では、中間データ領域を
上書きしてメモリ使用量を削減
入力
データ
11
Copyright 2016 FUJITSU LABORATORIES LTD.
評価: メモリ効率化Caffe
 同じニューラルネット(VGGNet)を使用し、同条件で比較
40% メモリ使用量削減
12
Copyright 2016 FUJITSU LABORATORIES LTD.
評価: メモリ効率化Caffe
 削減したメモリ領域を活用してミニバッチサイズを2倍に拡大
4% 学習精度向上
13
Copyright 2016 FUJITSU LABORATORIES LTD.
今後
 今回紹介した技術は富士通株式会社のAI技術「Human Centric
AI Zinrai(ジンライ)」の一つとして、2017年4月から順次実用化を
予定
 「Deep Learning処理の高速化技術」と「メモリ効率化技術」を
組み合わせて、技術の改善を行う
並列化技術
組み合わせることで
大規模ニューラルネットの
高速化が可能に
高速化
コンピュータ
CPU GPU
現在
メモリ効率化技術
コンピュータ
CPU GPU
大規模化
14
Copyright 2016 FUJITSU LABORATORIES LTD.
15
Copyright 2016 FUJITSU LABORATORIES LTD.
Fly UP