SlideShare a Scribd company logo
1 of 16
Download to read offline
GPU Deep Learning Community #11
大規模GPUクラスタで深層学習の高速化
~ResNet-50/ImageNet の学習が75秒~
2019年5月16日
富士通研究所
山崎 雅文
Copyright 2019 FUJITSU LABORATORIES LIMITED0
深層学習処理の大規模化と分散並列の必要性
Copyright 2019 FUJITSU LABORATORIES LIMITED
引用元: Dario Amodei and Danny Hernandez, https://openai.com/blog/ai-and-compute/
単一プロセッサの
計算パワー不足が深刻化
多数のプロセッサによる
分散並列処理で高速化
各ニューラルネットワークの
学習に必要な計算量
gap
1
大規模DL処理高速化の取組み
Copyright 2019 FUJITSU LABORATORIES LIMITED
2016
2017
2018
2019
4月 東工大TSUBAME2.5 256 GPUで学習
2月 九州大学 GPUクラスタで実験
7月 ABCI 第一回グランドチャレンジ(失敗)
4月 2048 GPUで世界最高速を達成
8月 SWoPP2016 HPC研究会発表「MPIを用いたDL処理高速化の提案」
6月 Facebook ResNet50 1時間で学習
11月 PFN ResNet50 15分で学習
3月 Sony ResNet50 2分で学習
12月 Google ResNet50 1.8分で学習
7月 Tencent ResNet50 6.6分で学習
2
分散学習における二つの課題
1. 学習精度
2. オーバヘッド
Copyright 2019 FUJITSU LABORATORIES LIMITED3
課題 1. 学習精度
Copyright 2019 FUJITSU LABORATORIES LIMITED
プロセッサ数と共に同時処理データ量が増加し、予測精度が悪化
2 GPUs 8 GPUs
64 GPUs
Facebook Google
Brain
引用元: Accurate, Large Minibatch SGD: Training
ImageNet in 1 Hour, P. Goyal (Facebook) et al.
1,024 GPUs
これまでの多くの研究により、より大きなバッチサイズで学習可能に
課題
必要なエラー率
PFN
研究が進み
予測精度が
改善された
Sony
Tencent
4
大規模深層学習で知られたテクニック + 独自改善
ラージミニバッチの精度問題への対策
Copyright 2019 FUJITSU LABORATORIES LIMITED
data 差分
重みパラメタ
data
ニューロン層1 勾配情報
重みパラメタ 勾配情報
data 差分
勾配情報
label (正解)
ニューロン層2
ニューロン層3
認識結果 差分
入力層
data
認識結果
差分
勾配情報
勾配情報
差分
勾配情報
(∇E)
差分
重みパラメタ
(w)
data
ストレージ
data
Warm-up
初期学習率の制御
LARS
ニューラルネットワーク層毎
の学習率制御
正解データの値調整 (label smoothing)
データ拡張 (data augmentation)
ランダム領域の切り出し
既存技術で
32,768枚/ミニバッチ
までは到達
5
課題 2. オーバヘッド
Copyright 2019 FUJITSU LABORATORIES LIMITED
高並列化時の微細なオーバーヘッドの顕在化
分散並列化不能 分散並列化可能
並列化前
1000台で
並列化後
1秒 1秒
今まで無視できた分散並列化で高速化
できない部分の影響が顕在化する
分散並列化による処理時間の変化
1秒 1000秒
処理A 処理B 処理C 処理D
プロセス内処理の並列化
処理C
処理D
最適化前
最適化後
処理A 処理B
ボトルネック
の分析
0.5秒
1秒並列化可能な
タスクを並列化
分散並列化
課題
演算、通信、I/O等の処理をプロセス内
でも並列化し、高速化を実現
イメージ図 イメージ図
6
LARSの高速化
 各レイヤのノルム計算とupdateをまとめて計算
 MXNetのnorm計算ルーチンを使うとレイヤーごとにカーネルが起動し、GPU利用効
率が悪く、オーバーヘッドも大きい
 複数レイヤの処理をまとめることで効率よく計算
Copyright 2019 FUJITSU LABORATORIES LIMITED
norm calc.
+ update
(FP16)
1msupdate (FP16)
23ms
Norm calculations
(FP16)
20ms
Norm
calculations
(FP32)
Norm
calculations
(FP32)
norm calc.
+ update
(FP32)
0.1ms
update (FP32) update (FP32)
7
通信オーバヘッドの隠蔽化
Copyright 2019 FUJITSU LABORATORIES LIMITED
forward処理 backward処理
overhead
update
AllReduceAllReduceAllReduceAllReduce
Backward
Forward
AllReduce
Update
通信処理と学習処理の並列化により、学習イタレーションを高速化
8
プロファイル分析と高速化 (すでにかなりチューニングした後)
さらに、高速化 (あと20秒!)
Copyright 2019 FUJITSU LABORATORIES LIMITED
起動処理 Training
時間
①共通の乱数の種で初期重みパラメタを生成、分配する通信(Bcast)を削除
②最初のイタレーションで行われていたNCCL初期化を起動処理と並列化
Validation
③1 epoch 完了後の不要な処理を削除 (0.1 ~ 0.2秒/epoch)
② ③ ③ ③①
1 epoch
9
測定環境と利用ソフトウェア
Copyright 2019 FUJITSU LABORATORIES LIMITED
ハードウェア
• ABCI の計算サーバー 512台
(2,048 GPU)
• InfiniBand EDR
(サーバーあたり 2本)
• ABCI の通常利用環境
(最大 512ノード)
ABCI の計算サーバー構成
産業技術総合研究所様ウェブページより
ソフトウェア (主なもの)
MXNet (改変) Horovod (改変)
CUDA cuDNN v7.5 NCCL v2.4
GCC OpenMPI Python 3.6
10
精度面での改善結果
Copyright 2019 FUJITSU LABORATORIES LIMITED
学習曲線
• ミニバッチサイズ 81,920でも、
75%以上の学習精度を実現
Top-1 テスト accuracy
• ミニバッチサイズ 81,920 まで 75%
• 更に大きい領域では精度悪化
11
速度面での改善結果
Copyright 2019 FUJITSU LABORATORIES LIMITED
学習処理速度
• 高速なまま、小さなミニバッチサイズで
多数の GPU を利用できるよう最適化
スケーラビリティ
• 1 GPU での処理速度に対し、2,048
GPU まで 77% の効率
Google社とNVIDIA社の値は、2018年12月のMLperfのログファイルより算出
Fujitsu Lab.
Google
NVIDIA
better for many GPUs
faster
12
まとめ
 画像認識ニューラルネットワーク ResNet-50 の学習時間75秒(世界最速†
)と、
ミニバッチサイズ 81,920(世界最大††
)を達成
 ABCIのサーバー512台 (GPU 2,048機) を使用
Copyright 2019 FUJITSU LABORATORIES LIMITED
†
2019年3月現在 当社調べ ††
2019年3月現在、確率的勾配降下法、固定ミニバッチサイズで 当社調べ
13
14
学習処理
サイクル
(イタレーション)
複数のアクセラレータを利用した深層学習
Copyright 2019 FUJITSU LABORATORIES LIMITED
通信処理
勾配算出
識別処理
学習用全データ:ILSVRC2012 学習用1,281,167枚、検証用50,000枚
更新処理
アクセラレータ 1 アクセラレータ 2 アクセラレータ 3 アクセラレータ 4
1度のパラメータの更新で処理する「ミニバッチ」は、
(アクセラレータ毎のミニバッチ数)×(アクセラレータ数)ミニバッチ
15

More Related Content

More from Hirokuni Uchida

More from Hirokuni Uchida (9)

Igai san gpu-dl_community_12
Igai san gpu-dl_community_12Igai san gpu-dl_community_12
Igai san gpu-dl_community_12
 
GDLC11 oracle-ai
GDLC11 oracle-aiGDLC11 oracle-ai
GDLC11 oracle-ai
 
Gdlc10 grid
Gdlc10 gridGdlc10 grid
Gdlc10 grid
 
Math works gdlc2019
Math works gdlc2019Math works gdlc2019
Math works gdlc2019
 
190117 gdlc tanaka
190117 gdlc tanaka190117 gdlc tanaka
190117 gdlc tanaka
 
Dlc ri
Dlc riDlc ri
Dlc ri
 
20181027 deep learningcommunity_aws
20181027 deep learningcommunity_aws20181027 deep learningcommunity_aws
20181027 deep learningcommunity_aws
 
Gdlc9 baba san
Gdlc9 baba sanGdlc9 baba san
Gdlc9 baba san
 
20180221 chainer on_colaboratory_at_gdcjp
20180221 chainer on_colaboratory_at_gdcjp20180221 chainer on_colaboratory_at_gdcjp
20180221 chainer on_colaboratory_at_gdcjp
 

Gdlc11 fujitsu labs

  • 1. GPU Deep Learning Community #11 大規模GPUクラスタで深層学習の高速化 ~ResNet-50/ImageNet の学習が75秒~ 2019年5月16日 富士通研究所 山崎 雅文 Copyright 2019 FUJITSU LABORATORIES LIMITED0
  • 2. 深層学習処理の大規模化と分散並列の必要性 Copyright 2019 FUJITSU LABORATORIES LIMITED 引用元: Dario Amodei and Danny Hernandez, https://openai.com/blog/ai-and-compute/ 単一プロセッサの 計算パワー不足が深刻化 多数のプロセッサによる 分散並列処理で高速化 各ニューラルネットワークの 学習に必要な計算量 gap 1
  • 3. 大規模DL処理高速化の取組み Copyright 2019 FUJITSU LABORATORIES LIMITED 2016 2017 2018 2019 4月 東工大TSUBAME2.5 256 GPUで学習 2月 九州大学 GPUクラスタで実験 7月 ABCI 第一回グランドチャレンジ(失敗) 4月 2048 GPUで世界最高速を達成 8月 SWoPP2016 HPC研究会発表「MPIを用いたDL処理高速化の提案」 6月 Facebook ResNet50 1時間で学習 11月 PFN ResNet50 15分で学習 3月 Sony ResNet50 2分で学習 12月 Google ResNet50 1.8分で学習 7月 Tencent ResNet50 6.6分で学習 2
  • 5. 課題 1. 学習精度 Copyright 2019 FUJITSU LABORATORIES LIMITED プロセッサ数と共に同時処理データ量が増加し、予測精度が悪化 2 GPUs 8 GPUs 64 GPUs Facebook Google Brain 引用元: Accurate, Large Minibatch SGD: Training ImageNet in 1 Hour, P. Goyal (Facebook) et al. 1,024 GPUs これまでの多くの研究により、より大きなバッチサイズで学習可能に 課題 必要なエラー率 PFN 研究が進み 予測精度が 改善された Sony Tencent 4
  • 6. 大規模深層学習で知られたテクニック + 独自改善 ラージミニバッチの精度問題への対策 Copyright 2019 FUJITSU LABORATORIES LIMITED data 差分 重みパラメタ data ニューロン層1 勾配情報 重みパラメタ 勾配情報 data 差分 勾配情報 label (正解) ニューロン層2 ニューロン層3 認識結果 差分 入力層 data 認識結果 差分 勾配情報 勾配情報 差分 勾配情報 (∇E) 差分 重みパラメタ (w) data ストレージ data Warm-up 初期学習率の制御 LARS ニューラルネットワーク層毎 の学習率制御 正解データの値調整 (label smoothing) データ拡張 (data augmentation) ランダム領域の切り出し 既存技術で 32,768枚/ミニバッチ までは到達 5
  • 7. 課題 2. オーバヘッド Copyright 2019 FUJITSU LABORATORIES LIMITED 高並列化時の微細なオーバーヘッドの顕在化 分散並列化不能 分散並列化可能 並列化前 1000台で 並列化後 1秒 1秒 今まで無視できた分散並列化で高速化 できない部分の影響が顕在化する 分散並列化による処理時間の変化 1秒 1000秒 処理A 処理B 処理C 処理D プロセス内処理の並列化 処理C 処理D 最適化前 最適化後 処理A 処理B ボトルネック の分析 0.5秒 1秒並列化可能な タスクを並列化 分散並列化 課題 演算、通信、I/O等の処理をプロセス内 でも並列化し、高速化を実現 イメージ図 イメージ図 6
  • 8. LARSの高速化  各レイヤのノルム計算とupdateをまとめて計算  MXNetのnorm計算ルーチンを使うとレイヤーごとにカーネルが起動し、GPU利用効 率が悪く、オーバーヘッドも大きい  複数レイヤの処理をまとめることで効率よく計算 Copyright 2019 FUJITSU LABORATORIES LIMITED norm calc. + update (FP16) 1msupdate (FP16) 23ms Norm calculations (FP16) 20ms Norm calculations (FP32) Norm calculations (FP32) norm calc. + update (FP32) 0.1ms update (FP32) update (FP32) 7
  • 9. 通信オーバヘッドの隠蔽化 Copyright 2019 FUJITSU LABORATORIES LIMITED forward処理 backward処理 overhead update AllReduceAllReduceAllReduceAllReduce Backward Forward AllReduce Update 通信処理と学習処理の並列化により、学習イタレーションを高速化 8
  • 10. プロファイル分析と高速化 (すでにかなりチューニングした後) さらに、高速化 (あと20秒!) Copyright 2019 FUJITSU LABORATORIES LIMITED 起動処理 Training 時間 ①共通の乱数の種で初期重みパラメタを生成、分配する通信(Bcast)を削除 ②最初のイタレーションで行われていたNCCL初期化を起動処理と並列化 Validation ③1 epoch 完了後の不要な処理を削除 (0.1 ~ 0.2秒/epoch) ② ③ ③ ③① 1 epoch 9
  • 11. 測定環境と利用ソフトウェア Copyright 2019 FUJITSU LABORATORIES LIMITED ハードウェア • ABCI の計算サーバー 512台 (2,048 GPU) • InfiniBand EDR (サーバーあたり 2本) • ABCI の通常利用環境 (最大 512ノード) ABCI の計算サーバー構成 産業技術総合研究所様ウェブページより ソフトウェア (主なもの) MXNet (改変) Horovod (改変) CUDA cuDNN v7.5 NCCL v2.4 GCC OpenMPI Python 3.6 10
  • 12. 精度面での改善結果 Copyright 2019 FUJITSU LABORATORIES LIMITED 学習曲線 • ミニバッチサイズ 81,920でも、 75%以上の学習精度を実現 Top-1 テスト accuracy • ミニバッチサイズ 81,920 まで 75% • 更に大きい領域では精度悪化 11
  • 13. 速度面での改善結果 Copyright 2019 FUJITSU LABORATORIES LIMITED 学習処理速度 • 高速なまま、小さなミニバッチサイズで 多数の GPU を利用できるよう最適化 スケーラビリティ • 1 GPU での処理速度に対し、2,048 GPU まで 77% の効率 Google社とNVIDIA社の値は、2018年12月のMLperfのログファイルより算出 Fujitsu Lab. Google NVIDIA better for many GPUs faster 12
  • 14. まとめ  画像認識ニューラルネットワーク ResNet-50 の学習時間75秒(世界最速† )と、 ミニバッチサイズ 81,920(世界最大†† )を達成  ABCIのサーバー512台 (GPU 2,048機) を使用 Copyright 2019 FUJITSU LABORATORIES LIMITED † 2019年3月現在 当社調べ †† 2019年3月現在、確率的勾配降下法、固定ミニバッチサイズで 当社調べ 13
  • 15. 14
  • 16. 学習処理 サイクル (イタレーション) 複数のアクセラレータを利用した深層学習 Copyright 2019 FUJITSU LABORATORIES LIMITED 通信処理 勾配算出 識別処理 学習用全データ:ILSVRC2012 学習用1,281,167枚、検証用50,000枚 更新処理 アクセラレータ 1 アクセラレータ 2 アクセラレータ 3 アクセラレータ 4 1度のパラメータの更新で処理する「ミニバッチ」は、 (アクセラレータ毎のミニバッチ数)×(アクセラレータ数)ミニバッチ 15