サブロウ丸

サブロウ丸

主にプログラミングと数学

分散深層学習(Distributed Deep Learning; Distributed DL)まとめ

自然言語処理などのタスクにおいて深層学習モデルは必須の道具になっています。 近年はTransformerをベースにして同じアーキテクチャパターンを繰り返してモデルを巨大化させることや、学習データを増やすことで精度の向上を目指すのが主流の方向性の一つです。

そこで問題となるのが、一つの計算機上のメモリでは学習に必要なメモリが足りなくなる、計算コストが大きすぎて現実的な時間では学習が終わらない、という点です。 モデルやデータの巨大化の要請のスピードと比べるとハードウェア(GPU、CPU、各種メモリ)の性能向上は緩やかに進んでいます。

そこで深層学習モデルの訓練を複数の計算機で行うことで、これらの課題を解決しよう、という試みが分散深層学習です。

分散深層学習には3つの方向性があり

  1. データ並列(data-parallelism)
    • ミニバッチ(もしくはミニバッチの細分)を複数のデバイスに同時に流す
  2. モデル並列(model-parallelism)
    • モデルを複数のデバイスで分割管理する(水平方向の分割)
  3. テンソル並列(tensor-parallelism)
    • モデルの1つの層の線形変換を分散処理する(垂直方向の分割)

これらを合わせて3D-parallelとか呼ばれたりします。


本項はこれらの研究のサーベイまとめ用ページです。

データ並列(data-parallelism)

  • (2020) [まとめページ] [pdf] Zero: Memory optimizations toward training trillion parameter models.
  • (2021) [まとめページ] [pdf] ZeRO-Offload: Democratizing Billion-Scale Model Training.
  • (2022) [pdf] Zero-infinity: Breaking the gpu memory wall for extreme scale deep learning.

モデル並列(model-parallelism)

パイプライン処理(pipeline)

モデル分割

テンソル並列(tensor-parallelism)

  • (2017)[pdf] FlexFlow: A Flexible Dataflow Accelerator Architecture for Convolutional Neural Networks
  • (2018) [まとめページ] [pdf] Mesh-tensorflow: Deep learning for supercomputers.
  • (2019) [まとめページ] [paper] [video] [blog] [github] Megatron-LM: Training Multi-Billion Parameter Language Models Using Model Parallelism.
  • (2019)[paper] Supporting very large models using automatic dataflow graph partitioning.

それ以外

メモリ削減

  • (2016) [まとめページ] [pdf] [slide] [github] Training Deep Nets with Sublinear Memory Cost.
  • (2018) [まとめページ] [pdf] GPU メモリ管理の実行時最適化による大規模深層学習の高速化.
  • (2022) [pdf] [日本語pdf] Scalable and Practical Natural Gradient for Large-Scale Deep Learning.