狠狠撸
Submit Search
分散学习のあれこれ~データパラレルからモデルパラレルまで~
?
4 likes
?
5,165 views
H
Hideki Tsunashima
Follow
分散学习についてから始まり、データパラレルとモデルパラレルの説明、颁丑补颈苍别谤での両者の実装についてのスライドとなっております。
Read less
Read more
1 of 48
Download now
Downloaded 39 times
More Related Content
分散学习のあれこれ~データパラレルからモデルパラレルまで~
1.
@maguroIsland 分散学習のあれこれ ~データパラレルから モデルパラレルまで~
2.
2 このスライドは2019年8/5、6に開催された 「第一回ディープラーニング分散学習ハッカソン」 にてご教授いただいた内容を元に作成しております この場を借りて主催である “東京工業大学学術国際情報センター様” “GPUコンピューティング研究会様” “エヌビディア合同会社様” 共催である “Chainer User Group様” “TensorFlow
User Group様” に感謝の意を表します http://gpu-computing.gsic.titech.ac.jp/node/100
3.
Contents ? 分散学習とは? ? Chainerにおける分散学習 ?
PyTorchにおける分散学習 ? おまけ 3
4.
Contents ? 分散学習とは? ? データパラレル ?
モデルパラレル 4
5.
分散学習とは? 5 Cat 10 Days...
6.
6 ぶいひゃく ばたけ NVIDIA
7.
分散学習とは? 7 ? 複数のGPUを使ってニューラルネットワークを殴り倒して 計算時間を削減しようというもの Cat 1minut(WWO)
8.
分散学習とは? 8 推論 ? データパラレル 同じモデルを載せた複数のGPUそれぞれに並列してデータを 流す分散処理方法
9.
分散学習とは? 9 ? モデルパラレル 1つのGPUでは載りきらないようなデカいモデルをノード ごとや層ごとに分割することで計算可能にする分散学習方法 Cat
10.
? データパラレル Pros ? 速度向上! ?
モデルパラレル Pros ? 1GPUでは載りきらず訓練出来なかったモデルの訓練が 可能になる! 分散学習とは? 10
11.
? データパラレル Pros ? 速度向上! Cons ?
mini-batchsize増加による精度の悪化 ? モデルパラレル Pros ? 1GPUでは載りきらず訓練出来なかったモデルの訓練が 可能になる! Cons ? 場合によっては訓練速度が低下する[1] ? かなり実装がややこしく、超簡単なラッパーがほぼない 分散学習とは? 11
12.
分散学習とは? 12 ? データパラレル ? mini-batchsize増加による精度の悪化 →学習率を上げるなどの工夫をすることで精度の悪化を防ぐ 様々な工夫が必要[2,
3] →PFNが32kバッチ※までは精度低下を防いでいる[4] →ImageNet学習速度世界一争いは実は計算資源投入だけで は成り立たない![5] ※1024GPUで1GPUあたり32ミニバッチ in ImageNet
13.
分散学習とは? 13 ? モデルパラレル ? 場合によっては訓練速度が低下する →分割方法によってはGPU間通信※が多く発生し、それが ボトルネックとなる ?
かなり実装がややこしい上、超簡単なラッパーがない →モデル分割方法は複数ある上、どこで分割するかの選択肢 はネットワーク構造よって多岐にわたり、設計が難しい →Chainerではlayer-wiseとchannel-wiseな分割が公式で サポートされているが、発展途上の分散学習方法[1, 6] ※GPU内通信は900Gbpsに対し、GPU間は100Gbpsほど
14.
分散学習とは? 14 より詳しくわかりやすい基礎講座資料はこちら! [7] 分散学習基礎講座,“https://www.cc.u-tokyo.ac.jp/events/lectures/111/20190124-1.pdf“
15.
Contents ? 分散学習とは? ? Chainerにおける分散学習 ?
PyTorchにおける分散学習 ? おまけ 15
16.
Contents ? Chainerにおける分散学習 ? データパラレル編 ?
モデルパラレル編 ? Optuna編 16
17.
? データパラレル編 用意するもの ? ChainerMN(Chainer5.0以降はChainerMNは同梱) ?
NCCL(マルチGPUの集合通信ライブラリ) ? OpenMPI(並列コンピューティング用ライブラリ) ? Multiple GPU(2~)※ ちなみにGPU数増加に伴う通信 などでの計算速度低下はChainer が最も少ない(らしい)[8] ※ただし、GPU同士の接続が通信が遅いケーブルで繋がれて いると計算速度の向上度合は低い Chainerにおける分散学習 17
18.
18 GPU情報を格納する オブジェクトを作成 最初のGPU0番にのみデータセット を載せた後に各GPUに分配する 既存のオプティマイザをマルチノード 用のモジュールでラップする
19.
19 各GPUにモデルを載せる ログの保存などはGPU0番のみ 行うように変更
20.
? データパラレル編 既存のコードにたった5ステップ手を加えるだけ! (慣れたら作業時間は2分くらい) (実行例) モデル:DCGAN データセット:CIFAR-10 epoch:200 batchsize:256 x
32GPU=8192 GPU:Tesla V100 ノード間接続:InfiniBand Chainerにおける分散学習 20
21.
? データパラレル編 既存のコードにたった5ステップ手を加えるだけ! (慣れたら作業時間は2分くらい) (実行例) モデル:DCGAN データセット:CIFAR-10 epoch:200 batchsize:256 x
32GPU=8192 GPU:Tesla V100 ノード間接続:InfiniBand ※データパラレルをすると早くなるという例であってこのよう なラージバッチでは訓練はうまくいきません 様々な工夫やバッチサイズの調整が必要です Chainerにおける分散学習 21 訓練時間 1分30秒!!※
22.
? モデルパラレル編 モデルパラレルは分割方法が多岐にわたる ? ノードごとの分割 ?
層ごとの分割 ? チャネル方向の分割 ? 空間方向の分割 etc... Chainerにおける分散学習 22
23.
? モデルパラレル編 モデルパラレルは分割方法が多岐にわたる ? ノードごとの分割[7] ?
層ごとの分割 ? チャネル方向の分割 ? 空間方向の分割 etc... Chainerにおける分散学習 23 Cat
24.
? モデルパラレル編 モデルパラレルは分割方法が多岐にわたる ? ノードごとの分割 ?
層ごとの分割[1] ? チャネル方向の分割 ? 空間方向の分割 etc... Chainerにおける分散学習 24 Cat
25.
? モデルパラレル編 モデルパラレルは分割方法が多岐にわたる ? ノードごとの分割 ?
層ごとの分割 ? チャネル方向の分割[6] ? 空間方向の分割 etc... Chainerにおける分散学習 25 Cat ch w h
26.
? モデルパラレル編 モデルパラレルは分割方法が多岐にわたる ? ノードごとの分割 ?
層ごとの分割 ? チャネル方向の分割 ? 空間方向の分割[9] etc... Chainerにおける分散学習 26 Cat ch w h
27.
? モデルパラレル編 今日コードで紹介するのはConvのチャネル方向の分割 Chainerでは最も簡単に実装が可能 Chainerにおける分散学習 27 Cat ch w h
28.
? モデルパラレル編 今日コードで紹介するのはConvのチャネル方向の分割 Chainerでは最も簡単に実装が可能 Chainerにおける分散学習 28
29.
29 GPU情報を格納する オブジェクトを作成 0番以外のGPUのデータを空にする 既存のオプティマイザをマルチノード 用のモジュールでラップする (ただし、これはchannel-wiseのモデ ルパラレルではあってもなくても動く)
30.
30 ログの保存などはGPU0番のみ 行うように変更 繰り返し用データセットをマルチノード 用のモジュールでラップ
31.
31 普通のConvをラップする クラスを定義
32.
32 Convをマルチノード用Convに置き換えて communicator(GPU情報を格納する オブジェクト)を読み込ますだけ!
33.
? モデルパラレル編 既存のコードに6ステップ手を加えるだけ! (多そうに見えるがコピペと置換なので作業時間は5分くらい) やった!これでモデルパラレル分散学習が出来る!! Chainerにおける分散学習 33
34.
? モデルパラレル編 既存のコードに6ステップ手を加えるだけ! (多そうに見えるがコピペと置換なので作業時間は5分くらい) やった!これでモデルパラレル分散学習が出来る!! But... チャンネル方向のモデルパラレルは一度処理したもの全てを 集約する必要があるため、GPU間通信がボトルネックに。。。 4GPUを使って分割するとDCGAN(CIFAR-10)では2倍弱 VGG-16(CIFAR-10)では3倍弱1GPUに比べて時間がかかる Chainerにおける分散学習 34
35.
? Optuna編 Optunaを分散学習に用いる際は、データパラレルの場合は シンプルに複数GPUで計算した値をバックワードするために 集約する際のロスを集計して最適化を行う が、しかし。。。 Chainerにおける分散学習 35
36.
? Optuna編 実行する予定だったのですが、うまく動かせていないです 以下にOptunaを分散学習環境下で実行するためのページを 貼っておきますので、興味ある人はそこを見てください。。。 (Advent Calenderでコード解説を行おうと思っているので、 そこでやる予定です) [10]東工大
第1回 ディープラーニング分散学習ハッカソン Optuna資料リンク集” https:// gist.github.com/toshihikoyanase/e7a2b2635fddfda91064e2e21a106987” Chainerにおける分散学習 36
37.
Contents ? 分散学習とは? ? Chainerにおける分散学習 ?
PyTorchにおける分散学習 ? おまけ 37
38.
Contents ? おまけ ? マルチGPUでのBatch
Normalization ? モデルパラレルで速度は速くなるか!? 38
39.
? マルチGPUにおけるBatch Normalization Batch
Normalizationはバッチ数ごとの平均や分散を計算し て正規化を行う処理である しかしデータパラレルではどうだろうか? →各GPUにデータがばらばらに割り振られているため、各 GPUが計算する平均や分散が変わってしまう おまけ 39
40.
? マルチGPUにおけるBatch Normalization Batch
Normalizationはバッチ数ごとの平均や分散を計算し て正規化を行う処理である しかしデータパラレルではどうだろうか? →各GPUにデータがばらばらに割り振られているため、各 GPUが計算する平均や分散が変わってしまう 各GPUのデータを引っ張ってきて総ミニバッチを用いた Batch Normalizationを行う これは非常に簡単!(公式実装に感謝!) おまけ 40
41.
41 実装は複雑で長いので省略するが、この公式 実装のクラスを読み込むだけ!
42.
42 Batch Normをマルチノード用Batch Norm に置き換えてcommunicator(GPU情報を格 納するオブジェクト)を読み込ますだけ!
43.
? マルチGPUにおけるBatch Normalization たった2ステップでデータパラレルのBatch
Normaliationが 実装できてしまった!(改めて公式実装に感謝!) 気になる計算時間はDCGAN(CIFAR-10)程度では10%程 計算時間が増大する程度であまり気になるほどではないが、 ImageNetや1024x1024画像になるとGPU間通信がボトル ネックとなりさらに遅くなる可能性はあり おまけ 43
44.
? モデルパラレルで速度は速くなるか!? 先に結論を述べてしまうと”今は”No しかし、分割方法によっては計算速度の低下を緩和させるこ とは可能である 例えば、先ほどのchannel-wiseの分割は全ての値を一度全 GPUで共有する作業が必要だったので、GPU間通信がボトル ネックとなってしまっていた おまけ 44
45.
? モデルパラレルで速度は速くなるか!? ? ノードごとの分割 ?
層ごとの分割 ? チャネル方向の分割 ? 空間方向の分割[9] etc... おまけ 45 Cat ch w h
46.
? モデルパラレルで速度は速くなるか!? 今は基本的に3x3Convが主流となっているので、3x3Conv を考えてみましょう おまけ 46 右図のように他のGPUに 載っている画素にまたがる ようにConvを掛けたい場合 は境界部±2個分の値だけを 通信すればよい →1024x1024の画像など では顕著に高速化が 見込める可能性がある!
47.
1.Parallel Convolution,” https://github.com/chainer/chainer/tree/master/example s/chainermn/parallel_convolution” 2.Don’t
Decay the Learning Rate, Increase the Batch Size,” https://openrevi ew.net/pdf?id=B1Yy1BxCZ” 3.Scaling SGD Batch Size to 32K for ImageNet Training,” https://www2.eecs.b erkeley.edu/Pubs/TechRpts/2017/EECS-2017-156.pdf” 4.Preferred Networks、深層学習の学習速度において世界最速を実現,” https://ww w.preferred-networks.jp/ja/news/pr20171110” 5.世界最高速を達成!ディープラーニングの高速化技術を開発,” https://pr.fujitsu.co m/jp/news/2019/04/1.html” 6.Model Parallel on ChainerMN,” https://docs.chainer.org/en/stable/chainermn/ model_parallel/model_parallel_on_chainermn.html” 7.分散学習基礎講座,https://www.cc.u-tokyo.ac.jp/events/lectures/111/20190124-1.p df 8.分散深層学習パッケージ ChainerMN 公開,” https://research.preferred.jp/2017/0 5/chainermn-beta-release/” 9.BEYOND DATA AND MODEL PARALLELISM FOR DEEP NEURAL NETWORK S, “https://www.sysml.cc/doc/2019/16.pdf” 10.東工大 第1回 ディープラーニング分散学習ハッカソン Optuna資料リンク集” https://gist.github.com/toshihikoyanase/e7a2b2635fddfda91064e2e21a106987” 参考文献 47
48.
48 Thank you for
attention
Download