Hiroki Naganuma

DP, DDP, FSDP, and more

  1. DataParallel(DP)は、1 つのマシンのマルチ GPU トレーニングによく使われるシンプルな戦略です。しかし、依存する単一のプロセスがパフォーマンスのボトルネックになる可能性があります。この方法は、メインスレッドでミニバッチ全体を読み込み、サブミニバッチを GPU に分散させるものです。モデル パラメータはメイン GPU でのみ更新され、次の反復処理の開始時に他の GPU にブロードキャストされます
  2. DistributedDataParallel(DDP)は、マルチノード / マルチ GPU のシナリオに適合し、モデルは個々のプロセスによって制御される各デバイス上に複製されます。各プロセスは独自のミニバッチを読み込み、それを独自の GPU に渡します。また、各プロセスには独自のオプティマイザがあり、パラメータのブロードキャストを行わないため、通信のオーバーヘッドを削減できます。最後に、DP とは異なり、GPU 間で all-reduce を行うことができます。このマルチプロセスにより、トレーニングのパフォーマンスを向上できます。
  3. FullyShardedDataParallel(FSDP)も DDP と同様のデータ並列パラダイムです。しかし、モデル パラメータが各 GPU に複製される DDP とは異なり、オプティマイザの状態、勾配、パラメータを複数の FSDP ユニットにシャーディングすることにより、より多くのデータや大きなモデルへのフィットを可能にします。