Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Gdlc11 fujitsu labs

230 views

Published on

Yamazaki-san

Published in: Data & Analytics
  • Be the first to comment

  • Be the first to like this

Gdlc11 fujitsu labs

  1. 1. GPU Deep Learning Community #11 大規模GPUクラスタで深層学習の高速化 ~ResNet-50/ImageNet の学習が75秒~ 2019年5月16日 富士通研究所 山崎 雅文 Copyright 2019 FUJITSU LABORATORIES LIMITED0
  2. 2. 深層学習処理の大規模化と分散並列の必要性 Copyright 2019 FUJITSU LABORATORIES LIMITED 引用元: Dario Amodei and Danny Hernandez, https://openai.com/blog/ai-and-compute/ 単一プロセッサの 計算パワー不足が深刻化 多数のプロセッサによる 分散並列処理で高速化 各ニューラルネットワークの 学習に必要な計算量 gap 1
  3. 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
  4. 4. 分散学習における二つの課題 1. 学習精度 2. オーバヘッド Copyright 2019 FUJITSU LABORATORIES LIMITED3
  5. 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. 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. 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. 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. 9. 通信オーバヘッドの隠蔽化 Copyright 2019 FUJITSU LABORATORIES LIMITED forward処理 backward処理 overhead update AllReduceAllReduceAllReduceAllReduce Backward Forward AllReduce Update 通信処理と学習処理の並列化により、学習イタレーションを高速化 8
  10. 10. プロファイル分析と高速化 (すでにかなりチューニングした後) さらに、高速化 (あと20秒!) Copyright 2019 FUJITSU LABORATORIES LIMITED 起動処理 Training 時間 ①共通の乱数の種で初期重みパラメタを生成、分配する通信(Bcast)を削除 ②最初のイタレーションで行われていたNCCL初期化を起動処理と並列化 Validation ③1 epoch 完了後の不要な処理を削除 (0.1 ~ 0.2秒/epoch) ② ③ ③ ③① 1 epoch 9
  11. 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. 12. 精度面での改善結果 Copyright 2019 FUJITSU LABORATORIES LIMITED 学習曲線 • ミニバッチサイズ 81,920でも、 75%以上の学習精度を実現 Top-1 テスト accuracy • ミニバッチサイズ 81,920 まで 75% • 更に大きい領域では精度悪化 11
  13. 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. 14. まとめ  画像認識ニューラルネットワーク ResNet-50 の学習時間75秒(世界最速† )と、 ミニバッチサイズ 81,920(世界最大†† )を達成  ABCIのサーバー512台 (GPU 2,048機) を使用 Copyright 2019 FUJITSU LABORATORIES LIMITED † 2019年3月現在 当社調べ †† 2019年3月現在、確率的勾配降下法、固定ミニバッチサイズで 当社調べ 13
  15. 15. 14
  16. 16. 学習処理 サイクル (イタレーション) 複数のアクセラレータを利用した深層学習 Copyright 2019 FUJITSU LABORATORIES LIMITED 通信処理 勾配算出 識別処理 学習用全データ:ILSVRC2012 学習用1,281,167枚、検証用50,000枚 更新処理 アクセラレータ 1 アクセラレータ 2 アクセラレータ 3 アクセラレータ 4 1度のパラメータの更新で処理する「ミニバッチ」は、 (アクセラレータ毎のミニバッチ数)×(アクセラレータ数)ミニバッチ 15

×