データ並列学習は、モデル全体のパラメータを複数のGPUデバイスに複製し、順伝播および逆伝播の計算を分散させる手法です。このアプローチは、単一のデバイスではメモリや計算能力が不足する、大規模なデータセットを用いた深層学習モデルの学習に不可欠です。各バッチ更新後に勾配を同期させることで、この手法は一貫した収束を保証し、シーケンシャル処理と比較して、全体の学習時間を大幅に短縮します。
システムは、クラスタに参加する各GPUノード上で、同一のモデルのコピーを初期化します。
各イテレーションにおいて、すべてのデバイスは独立して異なるデータバッチを処理し、同時に同期された重みを維持します。
計算された勾配は、all-reduce通信プロトコルを通じて集約され、グローバルなモデルの状態を一貫して更新します。
データセットを、個々のGPUのメモリ容量制限内に収まるように分割する。
クラスター内の指定されたすべてのGPUノードに、同一のモデルパラメータを配布します。
各デバイスに対して、割り当てられたデータサブセットを用いて、順方向伝播と逆方向伝播を実行します。
勾配を同期・集約した後、パラメータの集団更新を実行します。
効率的なデバイス間勾配同期のために、GPUのトポロジーとネットワーク帯域幅の要件を定義します。
初期学習段階におけるパラメータの乖離を防ぐため、分散環境で動作する全てのインスタンスが、同一の初期パラメータをロードするようにしてください。
パラメータ更新前に、ローカル勾配を平均化や合計などの削減手法を用いて統合するように設定します。