パイプライン並列とは 層の並びをGPUに割り振る流れ作業、Llama 3は16段に分割
パイプライン並列は、モデルの層を前後の区間に分けてGPUに割り振り、工場の流れ作業のように学習させる方法です。メタはLlama 3 405Bの学習で、モデルを16の区間に分けました。
- パイプライン並列は、モデルの層の並びを区間に分け、それぞれを別のGPUに受け持たせる方法です。
- データを小さな束(マイクロバッチ)に分けて次々に流し、GPUが同時に働けるようにします。
- 流れ始めと終わりにGPUが手持ちぶさたになる時間を「バブル(泡)」と呼び、減らす工夫が続いています。
- グーグルの研究者は2018年のGPipeで、60億個の重みの翻訳モデルを学習しました。
言語モデルは、同じ形の層を何十、何百と積み重ねた構造です。パイプライン並列では、この層の並びを前から順にいくつかの区間(ステージ)に分け、区間ごとに別のGPUを割り当てます。データは1つ目のGPUから2つ目、3つ目へと渡っていきます。
小分けにして流す
データを丸ごと1回で流すと、2つ目のGPUは1つ目の計算が終わるまで待つしかありません。そこで、データを小さな束(マイクロバッチ)に分けます。1つ目のGPUが最初の束を渡したら、すぐ次の束に取りかかります。工場の流れ作業と同じで、しばらくすると全GPUが同時に別々の束を処理する状態になります。
ただ、流し始めは後ろのGPUが待ち、流し終わりは前のGPUが待ちます。この空き時間がバブルです。メタの論文は、バブルの比率を「(区間の数−1)÷(1つのGPUが受け持つ区間の数×束の数)」と示しています。
| 区間の数 | 1つのGPUが受け持つ区間 | 束の数 | バブルの比率(計算) |
|---|---|---|---|
| 4 | 1 | 8 | 37.5% |
| 4 | 2 | 8 | 18.75% |
| 4 | 1 | 32 | 9.4% |
束を増やすか、1つのGPUに飛び飛びの区間を複数受け持たせる(インターリーブ)と、バブルは小さくなります。
GPipeから始まった
グーグルの研究者が2018年に公表した「GPipe」は、層の並びとして書けるモデルなら何でも複数の半導体に分けられる仕組みでした。論文の要旨によると、5億5,700万個の重みの画像認識のモデルを学習し、画像分類の試験で84.4%の正解率を出しました。100を超える言語を扱う128層・60億個の重みの翻訳モデルも学習しています。分ける数を増やしても、速さはほぼ比例して伸びたとしています。
Llama 3での工夫
メタはLlama 3 405Bの学習で、パイプライン並列の数を16にしました。論文は、既存のやり方の3つの問題を挙げています。束の数が区間の数で割り切れる必要があったこと、最初の区間にメモリが偏ること、最後の区間に損失の計算が集中することです。
メタは、1つのGPUが続けて処理する束の数を自由に変えられるよう組み直しました。最初と最後の区間からは層を1つずつ減らし、負荷をならしました。区間の間のデータの受け渡しは、計算と並行して進める形に変えています。これらの工夫で、8,000語の長さの文章を、途中結果を捨てて計算し直す節約の手段(活性化チェックポイント)を使わずに学習できたといいます。
PyTorchの側の改良もあります。2026年10月28日の2.15版では、受け取り用のメモリを必要な直前にだけ確保するなど、パイプライン並列のメモリの使い方を減らしました。
関連する用語
- マイクロバッチ:データを小分けにした束。
- バブル:パイプラインの始めと終わりに出るGPUの空き時間。
- テンソル並列:層の中の行列を割る、別の分け方。
- 活性化チェックポイント:途中の結果を捨て、必要な時に計算し直してメモリを節約する方法。
Llama 3の学習では、パイプライン並列とデータ並列は複数段のネットワークをまたいで通信し、遅れは数十マイクロ秒に達しました。
この記事は公開資料をもとに作成しています。売買をすすめるものではありません。誤りを見つけたら訂正します(編集方針)。
関連する記事
モデル並列とは 重みの行列を割ってGPUで分担、Megatronは83億の重みを512基で
モデル並列は、1つのAIのモデルを複数のGPUに切り分けて置き、協力して計算する方法です。エヌビディアの研究者は2019年、83億個の重みのモデルを512基のGPUで学習し、1基の場合に比べ76%の効率を保ったと報告しました。
データ並列とは GPUごとに別のデータで学習し結果を平均、メタはLlama 3で128組に
データ並列は、学習のデータを多数のGPUに分け、それぞれが同じモデルの写しで計算して結果を平均する方法です。マイクロソフトの研究者は、写しの重複を削るZeROで、1,000億個を超える重みのモデルを400基のGPUで学習できたと報告しました。
分散学習とは 1つのモデルを数万基のGPUに分ける、メタのLlama 3は4種類の分け方を併用
分散学習は、1つのAIのモデルの学習を多数のGPUに分けて同時に進める方法です。メタはLlama 3 405Bを最大1万6千基のH100で学習し、4種類の分け方を組み合わせ、GPUの計算能力の38〜43%を引き出しました。
建設のリードタイムとは TSMC熊本は着工から開所まで約1年10か月、アリゾナは発表から量産まで約4年半
建設のリードタイムとは、工場やデータセンターの着工から稼働までにかかる時間です。TSMCの熊本の第1工場は2022年4月に着工し、2024年2月に開所式を開きました。