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.

分散深層学習 @ NIPS'17

8,325 views

Published on

NIPS2017読み会での発表資料です。DL at Supercomputer Scale Workshop を題材に、2017 年の分散深層学習の進展についてまとめました。

NIPS2017読み会@PFN - connpass https://connpass.com/event/76552/

Published in: Technology

分散深層学習 @ NIPS'17

  1. 1. 秋葉 拓哉 2018/01/21 @ NIPS 読み会 分散深層学習 @ NIPS 2017
  2. 2. 自己紹介: 秋葉 拓哉 (@iwiwi) • PFN で大規模分散深層学習の研究開発 • 趣味で Kaggle Master • NIPS’17 では 3 件のワークショップ発表をしました – Takuya Akiba, Keisuke Fukuda, Shuji Suzuki. ChainerMN: Scalable Distributed Deep Learning Framework. Workshop on ML Systems (NIPS’17 Workshop) – Takuya Akiba, Seiya Tokui, Motoki Abe. NIPSʼ17 Adversarial Competition Non-Targeted Attack Track 4th Place Solution. Competition Track Workshop (NIPS’17 Workshop) – Takuya Akiba, Shuji Suzuki, Keisuke Fukuda. Extremely Large Minibatch SGD: Training ResNet-50 on ImageNet in 15 Minutes. Deep Learning At Supercomputer Scale (NIPS’17 Workshop)
  3. 3. 2017 年は分散深層学習大躍進の年だった ResNet50 の学習が (1 GPU で 1 週間程度) • 4 時間になり (1月発表, 128 × TITAN X, PFN) • 1 時間になり (6月発表, 256 × P100, Facebook) • 15 分になった (11月発表, 1024 × P100, PFN) 精度や収束に関する研究も一気に進展NVIDIA CEO Jensen Huang 氏による 学会 SC’17 での講演 https://twitter.com/NVIDIAAIJP/status/930209150084063232
  4. 4. そもそも大規模分散深層学習って何が難しいの?
  5. 5. そもそも大規模分散深層学習って何が難しいの?
  6. 6. そもそも大規模分散深層学習って何が難しいの?
  7. 7. そもそも大規模分散深層学習って何が難しいの? 汎化性能 収束 システム アルゴリズム インターコネクト 集団通信 専用チップ GPU 障害 同期 vs 非同期 ベンチマーク 学習率 バッチサイズ ワークロード
  8. 8. そもそも大規模分散深層学習って何が難しいの? 汎化性能 収束 システム アルゴリズム インターコネクト 集団通信 専用チップ GPU 障害 同期 vs 非同期 ベンチマーク 学習率 バッチサイズ ワークロード しかも重要! 試行錯誤が効率化され より大規模なデータ・モデルが 利用可能となるため技術が競争力に直結
  9. 9. NIPS’17 Workshop: DL at Supercomputer Scale • 1:30 - 1:50 - Azalia Mirhoseini - “Learning Device Placement” • 1:50 - 2:10 - Gregory Diamos - “Scaling and Sparsity” • 2:10 - 2:30 - Scott Gray - “Small World Network Architectures” • 2:30 - 2:50 - Timothy Lillicrap - “Scalable RL & AlphaGo” • 3:20 - 3:40 - Thorsten Kurth - “Scaling Deep Learning to 15 PetaFlops” • 3:40 - 4:00 - Simon Knowles - “Scalable Silicon Compute” • 4:00 - 4:20 - Ujval Kapasi - “Practical Scaling Techniques” • 4:20 - 4:40 - Michael James - “Designing for Supercompute-Scale Deep Learning” • 4:45 - 5:30 - Posters and Mingling • 8:00 - 8:10 - Welcome • 8:10 - 8:30 - Nitish Keskar - “Generalization Gap” • 8:30 - 8:50 - Itay Hubara, Elad Hoffer - “Closing the Generalization Gap” • 8:50 - 9:10 - Sam Smith - “Don’t Decay the Learning Rate, Increase the Batchsize” • 9:10 - 9:30 - Priya Goyal - “ImageNet in 1 Hour” • 9:30 - 9:50 - Chris Ying - “ImageNet is the New MNIST” • 10:10 - 10:30 - Matthew Johnson & Daniel Duckworth - “KFAC and Natural Gradients” • 10:30 - 10:50 - Shankar Krishnan - “Neumann Optimizer” • 10:50 - 11:10 - Tim Salimans - “Evolutionary Strategies” • 11:15 - 12:00 - Panel on Future Hardware Directions 午前 午後
  10. 10. NIPS’17 Workshop: DL at Supercomputer Scale • 1:30 - 1:50 - Azalia Mirhoseini - “Learning Device Placement” • 1:50 - 2:10 - Gregory Diamos - “Scaling and Sparsity” • 2:10 - 2:30 - Scott Gray - “Small World Network Architectures” • 2:30 - 2:50 - Timothy Lillicrap - “Scalable RL & AlphaGo” • 3:20 - 3:40 - Thorsten Kurth - “Scaling Deep Learning to 15 PetaFlops” • 3:40 - 4:00 - Simon Knowles - “Scalable Silicon Compute” • 4:00 - 4:20 - Ujval Kapasi - “Practical Scaling Techniques” • 4:20 - 4:40 - Michael James - “Designing for Supercompute-Scale Deep Learning” • 4:45 - 5:30 - Posters and Mingling • 8:00 - 8:10 - Welcome • 8:10 - 8:30 - Nitish Keskar - “Generalization Gap” • 8:30 - 8:50 - Itay Hubara, Elad Hoffer - “Closing the Generalization Gap” • 8:50 - 9:10 - Sam Smith - “Don’t Decay the Learning Rate, Increase the Batchsize” • 9:10 - 9:30 - Priya Goyal - “ImageNet in 1 Hour” • 9:30 - 9:50 - Chris Ying - “ImageNet is the New MNIST” • 10:10 - 10:30 - Matthew Johnson & Daniel Duckworth - “KFAC and Natural Gradients” • 10:30 - 10:50 - Shankar Krishnan - “Neumann Optimizer” • 10:50 - 11:10 - Tim Salimans - “Evolutionary Strategies” • 11:15 - 12:00 - Panel on Future Hardware Directions 午前 午後 最適化アルゴリズム バッチサイズと 学習率と 汎化性能 その他 (強化学習、疎化、将来の予測) ハードウェア、 HPC、高速化
  11. 11. NIPS’17 Workshop: DL at Supercomputer Scale • 代表的な分散深層学習の研究が勢揃いでした • おすすめを選んでざくざく紹介してみたいと思います ちなみに発表者の資料も全部公開されてます https://supercomputersfordl2017.github.io/
  12. 12. 背景 分散深層学習の基礎と研究課題
  13. 13. 同期型データ並列での学習イテレーション 通常の 1 GPU での学習 分散学習 (3 GPU) Forward Backward Optimize
  14. 14. 同期型データ並列での学習イテレーション 通常の 1 GPU での学習 分散学習 (3 GPU) Forward Forward Forward Forward Backward Optimize
  15. 15. 同期型データ並列での学習イテレーション 通常の 1 GPU での学習 分散学習 (3 GPU) Forward Forward Forward Backward Backward Backward Forward Backward Optimize
  16. 16. 同期型データ並列での学習イテレーション 通常の 1 GPU での学習 分散学習 (3 GPU) All- Reduce Forward Forward Forward Backward Backward Backward Forward Backward Optimize
  17. 17. 同期型データ並列での学習イテレーション 通常の 1 GPU での学習 分散学習 (3 GPU) All- Reduce Forward Forward Forward Backward Backward Backward Optimize Optimize Optimize Forward Backward Optimize
  18. 18. All-Reduce • 各ワーカーが持つ値を集計し、集計した結果を全ワーカー に配る処理 • 全ワーカーが持つ勾配𝑔𝑖から平均 𝑔を計算して配る All-Reduce 𝑔0 = 1 𝑔1 = 2 𝑔 = 1.5 𝑔 = 1.5
  19. 19. 大規模分散深層学習 ≒ 巨大ミニバッチ 現状この形の同期型・データ並列型の並列化が ほぼ完全にスタンダード • 各 GPU のバッチサイズ 32 あまり小さくするとGPUの並列性を活用できず計算効率が落ちる • GPU 数 256 → バッチサイズ 32 × 256 = 8192 に相当 All- Reduce Forward Forward Forward Backward Backward Backward Optimize Optimize Optimize
  20. 20. 巨大ミニバッチで同エポック数 → 精度が出ない • 橙:バッチサイズ 256 • 青:バッチサイズ 8K 精度が劇的に劣化 (ImageNet, ResNet-50) [Goyal+, ‘17]
  21. 21. データ並列のアプローチの限界 GPU を増やせば増やすほど高速化するわけではない GPU 増 → バッチサイズ増 → 1. [悪い] イテレーション数が減ってしまう 2. [良い] 勾配が正確になり分散が小さくなる 台数を変化させると、同じ計算をしていることにはならない
  22. 22. 問題1: イテレーション数が減ってしまう 22 1 GPU 1 epoch (Same amount of work) Multi GPUs 1 iteration
  23. 23. 発表紹介1 バッチサイズと汎化性能
  24. 24. NIPS’17 Workshop: DL at Supercomputer Scale • 1:30 - 1:50 - Azalia Mirhoseini - “Learning Device Placement” • 1:50 - 2:10 - Gregory Diamos - “Scaling and Sparsity” • 2:10 - 2:30 - Scott Gray - “Small World Network Architectures” • 2:30 - 2:50 - Timothy Lillicrap - “Scalable RL & AlphaGo” • 3:20 - 3:40 - Thorsten Kurth - “Scaling Deep Learning to 15 PetaFlops” • 3:40 - 4:00 - Simon Knowles - “Scalable Silicon Compute” • 4:00 - 4:20 - Ujval Kapasi - “Practical Scaling Techniques” • 4:20 - 4:40 - Michael James - “Designing for Supercompute-Scale Deep Learning” • 4:45 - 5:30 - Posters and Mingling • 8:00 - 8:10 - Welcome • 8:10 - 8:30 - Nitish Keskar - “Generalization Gap” • 8:30 - 8:50 - Itay Hubara, Elad Hoffer - “Closing the Generalization Gap” • 8:50 - 9:10 - Sam Smith - “Don’t Decay the Learning Rate, Increase the Batchsize” • 9:10 - 9:30 - Priya Goyal - “ImageNet in 1 Hour” • 9:30 - 9:50 - Chris Ying - “ImageNet is the New MNIST” • 10:10 - 10:30 - Matthew Johnson & Daniel Duckworth - “KFAC and Natural Gradients” • 10:30 - 10:50 - Shankar Krishnan - “Neumann Optimizer” • 10:50 - 11:10 - Tim Salimans - “Evolutionary Strategies” • 11:15 - 12:00 - Panel on Future Hardware Directions 午前 午後 最適化アルゴリズム バッチサイズと 学習率と 汎化性能 その他 (強化学習、疎化、将来の予測) ハードウェア、 HPC、高速化
  25. 25. On Large-Batch Training for Deep Learning: Generalization Gap and Sharp Minima (1706.02677, ICLR’17) • 一言で:大きなバッチサイズだと汎化性能が悪化 • ICLR’17 でオーラルにも選ばれ、分散深層学習の精度・ 収束に関する研究を一気に盛り上げた • 主張自体は後続研究により間接的に否定された
  26. 26. データ並列のアプローチの限界 GPU を増やせば増やすほど高速化するわけではない GPU 増 → バッチサイズ増 → 1. [悪い] イテレーション数が減ってしまう 2. [良い] 勾配が正確になり分散が小さくなる 台数を変化させると、同じ計算をしていることにはならない
  27. 27. データ並列のアプローチの限界 GPU を増やせば増やすほど高速化するわけではない GPU 増 → バッチサイズ増 → 1. [悪い] イテレーション数が減ってしまう 2. [良い] [悪い] 勾配が正確になり分散が小さくなる 台数を変化させると、同じ計算をしていることにはならない質の悪い局所解 (sharp minima) に収束してしまう
  28. 28. 問題 2: Sharp minima[Keskar+,ICLR’17] 28
  29. 29. Train longer, generalize better: closing the generalization gap in large batch training of neural networks (1705.08741, NIPS’17) • 一言で:大きなバッチサイズでの精度劣化をある程度抑 える方法を考えた • 残念ながら今となってはそんなに高い価値なし 次の論文で提案された手法の方がシンプルかつほぼ完璧に精度の劣化を抑えられている
  30. 30. Accurate, Large Minibatch SGD: Training ImageNet in 1 Hour (1706.02677, Facebook) • 一言で:精度を保って、ResNet-50 を 256 GPU (バッチ サイズ 8k) で 1 時間で学習できた • 橙:256 • 青:8K 精度の劣化を排除
  31. 31. Accurate, Large Minibatch SGD: Training ImageNet in 1 Hour (1706.02677, Facebook) テクニック • バッチサイズに比例させて学習率を大きくする (Linear Scaling) ← 本質 • 学習開始時は5エポックかけて学習率を徐々に大きく (Warmup) 色々 • Sharp Minima は大きいバッチサイズ特有の問題ではなかった バッチサイズを大きくしなくても代わりに学習率を下げるだけで同様の現象は起こせる • 提案アプローチの限界も示されている、バッチサイズ 8k より大き くなると精度劣化
  32. 32. Don't Decay the Learning Rate, Increase the Batch Size (1711.00489, Google Brain) • 一言で:途中で学習率を下げる代わりに途中でバッチサ イズを大きくすれば更に並列性を引き出せる。 • 学習率の Linear Scaling の応用 ImageNetの学習では決まった場所で学習率を 0.1 倍するといったスケジューリングが使わ れる。そういったタイミングで、学習率を 0.1 倍する代わりに、バッチサイズを 10 倍し ても、最終的な精度を保つこができる。最初はバッチサイズ 8k からスタート。
  33. 33. ImageNet is the new MNIST (論文なし、Google Brain) • 一言で:TPU クラスタで ResNet 50 の学習が 30 分 • 精度を保つ工夫は前スライドのやつそのまま
  34. 34. Extremely Large Minibatch SGD: Training ResNet-50 on ImageNet in 15 Minutes (1711.04325, PFN) • 一言で:1024 GPU で ResNet-50 の学習が15分 • バッチサイズ 32k で精度を保つためのテクニック提案 • 1024 GPU までスケールさせるエンジニアリング (僕ら PFN 分散深層学習チームの成果です!)
  35. 35. 発表紹介2 その他
  36. 36. NIPS’17 Workshop: DL at Supercomputer Scale • 1:30 - 1:50 - Azalia Mirhoseini - “Learning Device Placement” • 1:50 - 2:10 - Gregory Diamos - “Scaling and Sparsity” • 2:10 - 2:30 - Scott Gray - “Small World Network Architectures” • 2:30 - 2:50 - Timothy Lillicrap - “Scalable RL & AlphaGo” • 3:20 - 3:40 - Thorsten Kurth - “Scaling Deep Learning to 15 PetaFlops” • 3:40 - 4:00 - Simon Knowles - “Scalable Silicon Compute” • 4:00 - 4:20 - Ujval Kapasi - “Practical Scaling Techniques” • 4:20 - 4:40 - Michael James - “Designing for Supercompute-Scale Deep Learning” • 4:45 - 5:30 - Posters and Mingling • 8:00 - 8:10 - Welcome • 8:10 - 8:30 - Nitish Keskar - “Generalization Gap” • 8:30 - 8:50 - Itay Hubara, Elad Hoffer - “Closing the Generalization Gap” • 8:50 - 9:10 - Sam Smith - “Don’t Decay the Learning Rate, Increase the Batchsize” • 9:10 - 9:30 - Priya Goyal - “ImageNet in 1 Hour” • 9:30 - 9:50 - Chris Ying - “ImageNet is the New MNIST” • 10:10 - 10:30 - Matthew Johnson & Daniel Duckworth - “KFAC and Natural Gradients” • 10:30 - 10:50 - Shankar Krishnan - “Neumann Optimizer” • 10:50 - 11:10 - Tim Salimans - “Evolutionary Strategies” • 11:15 - 12:00 - Panel on Future Hardware Directions 午前 午後 最適化アルゴリズム その他 (強化学習、疎化、将来の予測) ハードウェア、 HPC、高速化 バッチサイズと 学習率と 汎化性能
  37. 37. Neumann Optimizer: A Practical Optimization Algorithm for Deep Neural Networks (1712.03298, submitted to ICLR’18, Google Research) • 一言で:大きなバッチサイズが得意な SGD 変種の提案 • Adam と同じだけのステート・計算量 • バッチサイズ 32k でも精度劣化わずか ただし標準的な 90 エポック設定ではなく 200 エポック以上学習してたりするので ちょっとよくわからない。あと学習初期が不安定。
  38. 38. Deep Learning Scaling is Predictable, Empirically (1712.00409, Baidu SVAIL) • 一言で:データ量やモデルサイズが変化した時に精度が どう変化するかという実験を通じてトレンドを予測する • 右図のように変化するので、 Power-law region に入っている間は 達成可能な精度が予測可能 • 知見・示唆多数、個人的おすすめ
  39. 39. まとめ • 2017 年は分散深層学習大躍進の年だった • 大バッチサイズでの精度の問題が明確になった • そしてかなり解決された • ImageNet is the new MNIST
  40. 40. おまけ • 次回は同ワークショップを SC’18 に提案予定 • 僕もプログラム委員します • 論文投稿待ってます

×