分散訓練って何?
1枚のGPUの計算力とメモリには限りがあります。モデルが大きすぎて載らない、あるいは遅すぎて待てない——そんなとき、仕事を分ける必要が出てきます。分散訓練は、訓練タスクをいくつもの部分に分け、複数のマシン・複数のGPUが同時に処理し、結果をまとめます。なぜ1台では足りなくなったのか
モデルが大きくなりすぎた数億から数千億のパラメータまで、モデルはとうに1枚のカードのメモリを超えています。
時間が待てない
仮に載っても、1枚のGPUで超大規模モデルを訓練すれば数ヶ月から数年。商用では話になりません。
データも膨大
膨大な学習テキストは、1台では読むことすら大変です。
どうやって速くするのか
データを分ける(データ並列)各デバイスが完全なモデルのコピーを持ち、別々のバッチを処理して勾配を同期します。
モデルを分ける(モデル並列)
1枚に載らないなら、層ごとに別のカードへ分けます。
両方を組み合わせる
実際の大規模訓練では、データ並列・モデル並列・パイプライン並列などを重ねて使います。
難しいのはどこか
通信コストデバイス間で勾配やパラメータを頻繁に同期するため、ネットワークが遅いと足を引っ張ります。
整合性の維持
複数マシンの結果を揃え、エラーや障害に対処する必要があり、デバッグは複雑です。
何をもたらしたか
分散訓練は「超大規模モデルの訓練」を不可能から工学的な課題へ変えました。名の知れた大規模モデルの裏には、必ず数千枚規模のGPUの協調があります。まとめ:分散訓練とは「一人では終わらない仕事」をチームで分担し、しかも答えを揃えること。大規模AIを支える土台の技術です。
コメント