データ並列とは GPUごとに別のデータで学習し結果を平均、メタはLlama 3で128組に
データ並列は、学習のデータを多数のGPUに分け、それぞれが同じモデルの写しで計算して結果を平均する方法です。マイクロソフトの研究者は、写しの重複を削るZeROで、1,000億個を超える重みのモデルを400基のGPUで学習できたと報告しました。
- データ並列は、GPUごとに別のデータで計算し、勾配を全員で平均してから重みを更新する方法です。
- 単純な形では、どのGPUもモデル全体の写しを持つため、メモリの使い方に無駄があります。
- マイクロソフトのZeROやPyTorchのFSDPは、重みや学習の状態を分けて持ち、重複を減らします。
- メタはLlama 3 405Bで、1万6,384基のGPUを128組のデータ並列に分けました。
データ並列は、分散学習の中で最も基本の分け方です。料理にたとえると、同じレシピ(モデル)を全員に配り、材料(データ)を分けて同時に作らせ、出来の反省点(勾配)を持ち寄って、レシピを一斉に書き直すやり方です。
計算して、平均して、そろえる
学習は、データを入れて答えを出す「順方向」と、答えのずれから重みの直し方(勾配)を求める「逆方向」をくり返します。データ並列では、各GPUが自分の分のデータで順方向と逆方向を計算します。
次に、全GPUの勾配を足し合わせて平均を取ります。この集団での通信を「オールリデュース」と呼びます。全員が同じ平均の勾配で重みを直すため、モデルの写しは常に同じに保たれます。GPUの数を2倍にすれば、1回に処理できるデータも2倍になります。
写しの重複という無駄
単純なデータ並列では、すべてのGPUがモデル全体を持ちます。学習では、重みのほかに、勾配や、最適化の計算(Adamなど)が使う値も要ります。よく使われる組み合わせ(16ビットの重みと勾配、32ビットの重みの控え、Adamの2種類の値)では、重み1個あたり16バイトになります(計算)。
| モデルの重みの数 | 学習の状態の合計(計算) | H100(80GB)の何基分(計算) |
|---|---|---|
| 80億個 | 128GB | 1.6基分 |
| 700億個 | 1.12TB | 14基分 |
| 4,050億個 | 6.48TB | 81基分 |
途中の計算結果(活性化)の分は含まない。
そこで、学習の状態を全GPUに分けて持たせる方法が生まれました。マイクロソフトの研究者が2019年に発表した「ZeRO」は、データ並列とモデル並列での記憶の重複をなくす方法です。論文は、1,000億個を超える重みのモデルを400基のGPUで学習し、毎秒15ペタFLOPSを出したと報告しています。当時の最先端の10倍の性能としました。PyTorchでは同じ考え方を「FSDP(完全シャーディングのデータ並列)」として組み込んでいます。
Llama 3での使い方
メタはLlama 3 405Bの学習で、データ並列を4種類の分け方の一番外側に置きました。8,192基の段階で64組、1万6,384基の段階で128組です。1回に学習するデータの量は1,600万語分に固定したため、組が増えるほど1組あたりの量は減りました。GPUの計算能力の使用率(MFU)が43%から41%に下がったのは、このためだと論文は説明しています。
メタはFSDPで最適化の値と勾配を分けて持つ一方、重みは順方向の後に分け直さない設定にしました。逆方向で重みを集め直す通信を1回省くためです。勾配の平均は32ビットで行い、学習の安定を保ちました。
2026年10月28日のPyTorch 2.15版では、FSDPの第2版で、ルーターの重みなど精度に敏感な部分だけを32ビットのまま残す設定などが加わりました。
関連する用語
- オールリデュース:全GPUの値を足し合わせ、結果を全員に配る通信。
- FSDP:重み・勾配・最適化の値を分けて持つデータ並列。
- ZeRO:マイクロソフトの研究者が示した、記憶の重複を削る方法。DeepSpeedに入っている。
- バッチサイズ:1回の更新に使うデータの量。
DeepSpeedは今、PyTorch Foundationの事業の一つです。
この記事は公開資料をもとに作成しています。売買をすすめるものではありません。誤りを見つけたら訂正します(編集方針)。
関連する記事
分散学習とは 1つのモデルを数万基のGPUに分ける、メタのLlama 3は4種類の分け方を併用
分散学習は、1つのAIのモデルの学習を多数のGPUに分けて同時に進める方法です。メタはLlama 3 405Bを最大1万6千基のH100で学習し、4種類の分け方を組み合わせ、GPUの計算能力の38〜43%を引き出しました。
モデル並列とは 重みの行列を割ってGPUで分担、Megatronは83億の重みを512基で
モデル並列は、1つのAIのモデルを複数のGPUに切り分けて置き、協力して計算する方法です。エヌビディアの研究者は2019年、83億個の重みのモデルを512基のGPUで学習し、1基の場合に比べ76%の効率を保ったと報告しました。
パイプライン並列とは 層の並びをGPUに割り振る流れ作業、Llama 3は16段に分割
パイプライン並列は、モデルの層を前後の区間に分けてGPUに割り振り、工場の流れ作業のように学習させる方法です。メタはLlama 3 405Bの学習で、モデルを16の区間に分けました。
建設のリードタイムとは TSMC熊本は着工から開所まで約1年10か月、アリゾナは発表から量産まで約4年半
建設のリードタイムとは、工場やデータセンターの着工から稼働までにかかる時間です。TSMCの熊本の第1工場は2022年4月に着工し、2024年2月に開所式を開きました。