Skip to content

第10章 Transformerを訓練する

第9章までで、Transformerという機械の「設計図」は完成しました。入力の文がトークンになり、埋め込みになり、attentionとFFNのブロックを何層も通り抜けて、最後に「次の単語の確率分布」が出てくる。その全経路を、私たちはもう知っています。

しかし、設計図だけでは機械は賢くなりません。第9章で見たとおり、Transformerの中身は WQWK といった大量のパラメータ(数値の表) であり、作りたての状態ではそれらはデタラメな乱数です。乱数のままのTransformerに「猫は魚が」と入れても、出てくる確率分布はデタラメで、「好き」の確率はほとんどゼロでしょう。

この章では、そのデタラメな数値の山が、訓練によってどのように「言葉を扱える」状態に変わっていくのかを説明します。使うのは、実はすべて第4章と第5章で学んだ仕組みです。新しい仕組みはほとんど出てきません。新しいのは「教材をどう用意するか」という考え方だけです。そしてその考え方が、LLMの時代を開く大きな転換点になりました。

この章で学ぶこと

  • Transformerの訓練で「何を」学習するのか(答え: 第9章で一覧にしたパラメータ全部)
  • 自己教師あり学習 — 「文章そのものが問題と答えになる」というアイデア
  • 訓練データの実際: Web・書籍・コード、そして「兆トークン」という規模感
  • 次単語予測の訓練の具体像 — 因果マスクのおかげで全位置を同時に予測・採点できること
  • 損失関数 = 各位置の交差エントロピーの平均(第5章の回収)。手計算例つき
  • パープレキシティ — 「モデルが平均何択で迷っているか」を表す、モデルの性能の指標
  • ミニバッチ・エポック・学習曲線という、訓練にまつわる基本用語
  • Adam(勾配降下法の改良版)と学習率ウォームアップ
  • 訓練の物理的な実際: GPU数千枚・数ヶ月・分散学習

この章の前提


10.1 何を学習するのか — パラメータ一覧の再確認

第4章で学んだ機械学習の基本を思い出してください。

IMPORTANT

学習とは、良いパラメータ探しである。

モデルはパラメータ付きの関数 fθ(x) で、 θ(シータ: パラメータ全部をまとめた記号)を動かして、損失 L が小さくなる場所を探す。それが学習でした。Transformerもまったく同じです。違うのは θ の個数だけです。

第9章の最後で作った「パラメータはどこにあるか」の一覧を、簡単に再掲します。

パラメータ役割ある場所
埋め込み行列 EトークンIDをベクトルにする(第6章)入口に1つ
WQ,WK,WV,WOattentionの「探す顔・探される顔・渡す中身」を作る(第8章)各層 × 各ヘッド
FFNの W1,W2(とバイアス)各トークンを個別に「考える」2層NN(第9章)各層に1組
LayerNormの係数値のスケールを整える(第9章)各層に複数
出力層の行列最後のベクトルを語彙全体のスコアに変換(第9章)出口に1つ(E と共有することも)

訓練とは、この表にあるすべての数値を、いっせいに勾配降下法で調整することです。更新式は第4章で手計算したものと一字一句同じです。

θθηL

読み下し: すべてのパラメータ θ を、損失 L の勾配 L(最も急な上り方向)と逆向きに、学習率 η(イータ)の歩幅だけ動かす。つまり「損失の谷を一歩下る」。

第4章では θwb のたった2個でした。GPT-3クラスのTransformerでは θ約1,750億個あります。しかし勾配 L は、第5章で学んだ逆伝播が「各パラメータが損失にどれだけ責任があるか」を全パラメータぶん機械的に計算してくれるのでした。2個でも1,750億個でも、やることは同じ「谷下り」です。

では、谷下りの出発点は? 何か気の利いた初期値があるのでしょうか。答えは拍子抜けするほど単純で、小さな乱数です。訓練開始時のTransformerは、文字どおりデタラメな機械です。そこから兆単位の問題を解かせて、少しずつ谷を下らせます。

残る問いは一つです。その「兆単位の問題」は、いったい誰が作るのでしょうか?

10.2 自己教師あり学習 — 文章そのものが問題と答えになる

10.2.1 ラベル付けという壁

第4章で学んだ機械学習の基本形を思い出しましょう。住宅価格の予測なら「広さ→価格」、画像分類なら「画像→猫/犬」というように、入力と正解(ラベル)のペアを大量に集めて、モデルの予測と正解のズレ(損失)を減らしていくのでした。このように正解ラベル付きのデータで学ぶやり方を 教師あり学習(supervised learning) と呼びます。

教師あり学習には宿命的な弱点があります。正解ラベルは人間が手作業で付けるしかないのです。写真100万枚に「猫」「犬」とラベルを付けるだけでも大変な費用と時間がかかります。ましてTransformerの言語能力を鍛えるのに必要なデータは、後で見るように兆単位のトークンです。1兆個の問題に人間が正解を付けるとなると、1人が1秒に1問ラベル付けしても3万年以上かかります。教師あり学習の延長線上には、LLMは存在できません。

10.2.2 発想の転換: 問題と答えは、文章の中に最初から入っている

ここで、本書後半で最も重要なアイデアが登場します。

IMPORTANT

文章は、それ自体が「問題」と「答え」のペアの山である。

通し例「猫は魚が好き」で見てみましょう。この5トークンの文をどこかで区切れば、「区切りより前」が問題文、「区切りの直後の1トークン」が正解になります。

問題(入力)答え(正解ラベル)
猫 は
猫 は 魚
猫 は 魚 が好き

見てください。誰もラベル付けをしていないのに、5トークンの文から4個の「問題と正解のペア」が生まれました。1,000トークンの文書なら999問。1兆トークンのテキストなら、ほぼ1兆問です。しかも問題の内容は「次に来る言葉を当てよ」。第3章の最後で予告し、第7章で 言語モデル として正式に導入した、 P(wtw1,,wt1) を当てるあの問題と同じです。

このように、人間のラベル付けなしで、データ自身から問題と正解を自動生成して学ぶやり方を 自己教師あり学習(self-supervised learning) と呼びます。「教師(正解)」はいるけれど、その教師はデータ自身が務める、という意味です。

なぜこれが大きな転換点なのか。インターネット上の全テキスト、人類が書いてきた全書籍が、そのまま教材になるからです。ラベル付けのコストがゼロになったことで、訓練データの量の上限が「人間の作業量」から「人類がこれまでに書いた文章の総量」に跳ね上がりました。この量の増大が、第13章で学ぶスケーリング則(大きくすればするほど賢くなる)と組み合わさって、LLMを生み出したのです。

10.2.3 「次の単語を当てる」だけで、なぜ賢くなるのか

「穴埋めクイズを兆回解くだけで、言葉が分かるようになるの?」と思うのは当然の疑問です。鍵は、次の単語を正確に当てるには、結局あらゆる知識が必要になることにあります。

  • 「猫は魚が___」を当てるには、文法(「が」の後には述語が来やすい)と常識(猫は魚を好む)が要ります
  • 「水は100度で___」を当てるには、科学の知識が要ります
  • 「彼女は鍵を忘れたことに気づいた。だから家に___」を当てるには、推論(鍵がない→入れない→戻る?)が要ります

つまり「次単語予測」は一見単純な問題に見えて、実は言葉にまつわる全能力を試す総合問題なのです。損失を下げようとする圧力が、文法も知識も推論の芽も、パラメータの中に押し込んでいきます。

10.3 訓練データの実際 — 兆トークンの世界

では実際のLLMは何を「読んで」いるのでしょうか。代表的な材料は次のとおりです。

データ源中身特徴
Common CrawlWeb全体を巡回して集めた公開Webページの巨大アーカイブ量は桁違いに多い。ただし玉石混交で、清掃(クリーニング)が必須
書籍小説・専門書など長く一貫した文章。長距離の文脈を学べる
Wikipedia百科事典事実知識が高密度
コードGitHubなどのプログラム論理的な構造。推論能力への好影響が知られる
論文・ニュースなど学術・時事テキスト専門知識

規模感をつかみましょう。単位は第6章で学んだトークンです。

  • GPT-3(2020年)の訓練データ: 約3,000億トークン
  • 近年の主要LLM: 10兆トークン超も珍しくない

1兆トークンがどれくらいか。日本語の文庫本1冊がおよそ10万字、トークンにして数万〜十数万トークンです。ざっくり1冊5万トークンとすると、1兆トークン ≈ 文庫本2,000万冊分。人間が1日1冊読んでも5万年以上かかる量を、モデルは訓練期間中に「読み」ます。

ただし、集めたデータをそのまま使うわけではありません。訓練の前に、大規模な前処理を行います。

  • 清掃: 機械生成のスパム、文字化け、意味のないページの除去
  • 重複除去: 同じ文章が何度も出てくると、モデルがそれを丸暗記してしまう(第4章の過学習と同じ問題)ため、重複を削る
  • 混合比の設計: コードを何%、書籍を何%入れるか、といった「献立」の調整。データの質と配合が最終的な賢さを大きく左右することが知られています

10.4 次単語予測の訓練の具体像 — 全位置を同時に採点する

10.4.1 1つの文が「4問同時のテスト」になる

「猫は魚が好き」でTransformer(ここではデコーダ型、つまり因果マスク付きのもの)を訓練する様子を具体的に見ます。

まず、入力として文全体 [猫, は, 魚, が, 好き] をそのまま与えます。第9章で見たとおり、Transformerは各位置ごとに「次の単語の確率分布」を出力します。つまり出力は1個ではなく、位置の数だけあります。

位置その位置までの入力その位置の出力(確率分布)が答えるべき問題正解
1「猫」の次は?
2猫 は「猫 は」の次は?
3猫 は 魚「猫 は 魚」の次は?
4猫 は 魚 が「猫 は 魚 が」の次は?好き

1回の計算(順伝播)で、4つの問題すべての答案が同時に出てくるのです。5トークンの文なら4問、1,000トークンの文書なら999問を、たった1回のモデル実行で解かせて採点できます。

10.4.2 なぜ同時にできるのか — 因果マスクの回収

ここで「あれ?」と思った方は鋭いです。位置2の出力は「猫 は」だけから「魚」を予測しなければいけないのに、入力には文全体(「魚 が 好き」も含む)を与えています。位置2が正解の「魚」をこっそり見てしまったら、カンニングでは?

そのとおり、何も対策しなければカンニングになります。そしてその対策こそ、第8章で学んだ 因果マスク(causal mask) でした。attentionのスコア行列で「未来の位置」に を足し、softmaxの後の重みを0にする、あの仕組みです。因果マスクがあるおかげで、

  • 位置1の出力は「猫」だけを見て計算され、
  • 位置2の出力は「猫 は」だけを見て計算され、
  • 位置4の出力は「猫 は 魚 が」だけを見て計算される

ことが構造的に保証されます。だから文全体を一度に入れても、各位置の予測は「その位置までしか読んでいない状態」の正直な答案になるのです。第8章で「なぜわざわざ未来を隠すのか」と学んだ仕組みは、この訓練の並列化のためにあったのです。

なお、このように「入力に正解の並びをそのまま与えて、全位置で次を予測させる」訓練方式を 教師強制(teacher forcing) と呼びます。位置3の予測が外れても、位置4の入力には(モデルの予測ではなく)正解の「が」を使う、という意味です。つまり訓練中は、途中の予測が当たっても外れても、入力にはすべて正解の並びを使う、ということです。

10.4.3 RNNとの決定的な違い

第7章で見たRNNは、単語を1個読むごとに隠れ状態を更新する逐次処理でした。1,000トークンの文書で999問を解かせるには、999ステップを順番に踏むしかなく、GPUの並列計算能力を活かせません。

Transformerは、因果マスクのおかげで999問を1回の行列計算でまとめて処理できます。第8章で見た「attentionの行列形式 = 全トークン同時処理」が、訓練の速さに直結しているわけです。同じ計算資源なら桁違いに多くのデータを学べる。これがRNNを歴史の主役から降ろした実務上の決定打でした。

10.5 損失関数 — 交差エントロピーの平均(第5章の回収)

10.5.1 1問ぶんの採点: 交差エントロピー

各位置の答案(確率分布)をどう採点するか。ここで第5章で学んだ 交差エントロピー(cross-entropy) がそのまま使えます。復習すると、

L1問=lnPθ(正解)

読み下し: モデルが「正解の選択肢」に割り当てた確率を取り出し、その自然対数にマイナスを付けたものが損失。正解に高い確率を与えるほど損失は小さく、正解の確率が0に近いほど損失は爆発的に大きくなる。

数値で感覚を確認しましょう(第1章の対数の感覚の復習でもあります)。

モデルが正解に割り当てた確率 P損失 lnP感想
0.90.105ほぼ確信して正解。ごほうび
0.50.6932択まで絞れている
0.251.3864択で迷っている
0.014.605ほぼ外している。大減点
0.00019.210論外。猛烈な減点

10.5.2 文全体の損失: 全位置の平均

文(トークン列 w1,w2,,wn)全体の損失は、各位置の交差エントロピーを平均したものです。

L(θ)=1n1t=1n1lnPθ(wt+1w1,,wt)

読み下し: 位置 t を1から n1 まで動かし、それぞれの位置で「ここまでの単語列 w1,,wt を見たモデルが、次の正解 wt+1 に割り当てた確率」の対数を取り、マイナスを付けて足し合わせ、問題数 n1 で割って平均する。つまり「1問あたりの平均減点」。

通し例で手計算してみましょう。訓練途中のモデルが、各位置の正解に次の確率を割り当てたとします。

位置 t入力(ここまで)正解 wt+1正解に割り当てた確率損失 lnP
10.400.916
2猫 は0.201.609
3猫 は 魚0.500.693
4猫 は 魚 が好き0.251.386
L=0.916+1.609+0.693+1.3864=4.6044=1.151

読み下し: 4問ぶんの減点を合計して4で割ると、この文に対する平均損失は約1.151。

この1.151という数を小さくする方向へ、逆伝播が全パラメータの勾配を計算し、Adamが(後述)一歩更新する。それが訓練の1ステップです。位置2の「魚」の確率0.20が低めなので、「『猫は』の後に『魚』が来やすくなる」方向の圧力が、 E にも WQ,WK,WV にもFFNにも、責任の大きさに応じてかかります。

一つ注目してほしいのは、正解以外の単語をどう間違えたかは損失に直接出てこないことです。損失に入るのは「正解に割り当てた確率」だけ。ただしsoftmax(第5章)の性質上、確率の合計は1なので、正解の確率を上げることは自動的に不正解たちの確率を下げることを意味します。

10.5.3 訓練が進むと損失はどうなるか

同じ文に対する損失は、訓練の進行とともにこう変わっていきます。

訓練の段階正解に割り当てる確率(イメージ)平均損失
開始直後(乱数)語彙5万なら各単語 1/50000=0.00002ln(1/50000)10.8
序盤よく出る単語(「は」「が」)を覚え始める6〜7
中盤文法をほぼ習得、常識も部分的に3〜4
大規模訓練の終盤「猫は魚が→好き」レベルは余裕2前後

開始直後の損失が ln5000010.8 になる理由は明快です。乱数のモデルは語彙5万の全単語に均等な確率しか割り当てられないので、正解の確率は常に 1/50000 、損失は ln(1/50000)=ln50000 です。訓練とはこの10.8を、勾配降下で少しずつ削っていく作業です。

10.5.4 よくある疑問 — 損失はゼロまで下がるのか?

学習曲線が下がり続けるなら、いつかは損失0(全問、確率1.0で正解)に届くのでしょうか。答えは届きません。理由はモデルの性能ではなく、言語そのものの性質にあります。

「猫は魚が」の次に来る単語は、本当に「好き」だけでしょうか。「嫌い」かもしれないし、「大好き」「食べたい」「入った水槽を眺めている」かもしれません。次の単語は本質的に一つには決まらないのです。理想のモデルとは「次の単語の真の確率分布」をそのまま言い当てるモデルであって、常に確率1.0を正解に置けるモデルではありません。したがってどれほど訓練しても、平均損失には言語自体の不確実性ぶんの下限が残ります(この下限は「言語のエントロピー」と呼ばれます。名前だけ知っていれば十分です)。

学習曲線が漸近していく先は0ではなくこの下限であり、次節のパープレキシティで言えば「1」には決してならない、ということです。もし「猫は魚が」の続きが本当に平均1択になったら、それは言葉がすべて定型文になってしまった世界でしょう。

10.6 パープレキシティ — 「平均何択で迷っているか」

損失1.151と言われても、正直ピンときませんよね。そこで、損失を人間の感覚に翻訳した物差しが パープレキシティ(perplexity、困惑度) です。定義はとても簡単です。

PPL=eL

読み下し: 平均交差エントロピー損失 L を、指数関数 ex(第1章)で「対数を取る前の世界」に戻したものがパープレキシティ。対数の逆演算が指数でしたから、これは「対数の世界の値である損失を、確率の世界の値に戻す」計算です。

10.6.1 なぜ「何択か」と読めるのか

モデルが毎回、正解を含む k 個の候補まで絞り込み、その k 個に均等に確率 1/k を配っているとしましょう。このとき損失は毎問 ln(1/k)=lnk 、パープレキシティは

PPL=elnk=k

読み下し: 「常に k 択まで絞れているモデル」のパープレキシティはちょうど k

つまり パープレキシティ = モデルが平均して何択のクイズを解いている状態か、と読めるのです。

  • PPL=50000: 語彙5万から全くの当てずっぽう(訓練開始直後)
  • PPL=100: 平均100択まで絞れている
  • PPL=4: 平均4択。かなり賢い
  • PPL=1: 全問、確率1.0で正解し続ける(理論上の下限。実際には到達不能)

10.6.2 手計算で確かめる

10.5節の数値例では平均損失 L=1.151 でした。

PPL=e1.1513.16

読み下し: このモデルは「猫は魚が好き」を読むとき、平均するとおよそ3.16択のクイズを解いているのと同じ迷い方をしている。

実はこの3.16、別の道からも出せます。4問の正解確率は 0.40,0.20,0.50,0.25 でした。これらを全部掛けると 0.40×0.20×0.50×0.25=0.01 。その4乗根(4問ぶんの「平均的な1問の確率」= 幾何平均)は 0.011/4=100.50.316 。その逆数は

10.3163.16

読み下し: パープレキシティは「正解確率の幾何平均の逆数」でもある。平均的な1問で正解に約31.6%を割り当てている = 約3.16択で迷っているのと同じ。

2つの計算がぴったり一致しました。これは偶然ではなく、対数の「掛け算を足し算にする」性質(第1章)そのものです。

パープレキシティは言語モデルの標準的な成績表で、テストデータ(第4章: 訓練に使っていないデータ)で測ります。訓練データでのパープレキシティだけが下がってテストデータで下がらなければ、それは丸暗記、つまり第4章で学んだ過学習のサインです。

参考までに、言語モデルの歴史をパープレキシティで振り返ると、進歩が一目で分かります(値は測り方の条件によって大きく変わるため、あくまで桁の目安です)。

モデル(時代)パープレキシティの目安読み方
当てずっぽう(訓練前)語彙サイズと同じ(例: 50,000)5万択で迷走
n-gramモデル(第7章)数百数百択
RNN・LSTM(第7章)60〜100程度100択弱
GPT-2級のTransformer20〜35程度30択前後
現代の大規模LLM10未満10択未満

第7章で辿った「n-gram → RNN → Transformer」の歴史は、「何万択もの迷いを、どこまで数択に近づけられるか」の歴史でもあったのです。

10.7 ミニバッチ・エポック・学習曲線

10.7.1 ミニバッチ — 全データは一度に食べられない

第4章の勾配降下法は「損失を計算して一歩下る」でしたが、兆トークンのデータ全体で損失を計算してから一歩、では永遠に終わりません。そこで実際は、データから少量ずつ取り出して更新します。

  • ミニバッチ(mini-batch): 1回の更新に使うデータの小さな束。LLMの事前学習では「合計数百万トークンぶんの文章の束」といった規模が典型的です
  • ミニバッチごとに損失→勾配→更新を繰り返すやり方を 確率的勾配降下法(SGD: Stochastic Gradient Descent) と呼びます。「確率的」は「毎回ランダムに選んだ一部だけで勾配を見積もる」の意味です

ミニバッチの勾配は全データの勾配の「見積もり」なのでノイズを含みますが、更新の回数を桁違いに稼げるため、トータルでははるかに速く谷を下れます。地図全体を精密測量してから一歩進むより、足元の傾きをさっと見て歩き続けるほうが早く麓に着く、というわけです。

規模感も計算しておきましょう。訓練データが10兆トークン、1ミニバッチが400万トークンだとすると、必要な更新回数は

10134×106=2.5×106

読み下し: 10兆(10の13乗)トークンを400万トークンずつの束に分けると、束はおよそ250万個できる。つまりデータを1周するだけで約250万回のパラメータ更新を行う。

10.9節の表で「更新回数は数十万〜数百万ステップ」という規模感が出てくるのは、この計算から来ています。

10.7.2 エポック — データを何周するか

  • エポック(epoch): 訓練データ全体をちょうど1周ぶん使い切ること

従来の機械学習では同じデータを何十エポックも周回するのが普通でした。しかしLLMの事前学習では、データが桁外れに多いためほぼ1エポック(1周)しかしないのが標準です。同じ文章を何度も見せると丸暗記(過学習)のリスクが上がることも知られており、「新しい文章を次々読ませる」方が効くのです。

10.7.3 学習曲線 — 訓練の健康診断書

訓練中は、更新ステップ数を横軸、損失を縦軸にした 学習曲線(learning curve) を常に監視します。

開始直後の損失(約10.8)は当てずっぽうの値です(語彙5万語なら ln5000010.8)。序盤の急降下では「は」「が」などの頻出パターンをまず覚え、その後のゆるやかな長い下りで文法→知識→推論と深い能力が育っていきます。

典型的な形は「最初に急降下、その後は長い長いゆるやかな下り」です。テストデータでの損失が下がり続けている限り、モデルはまだ賢くなり続けています。訓練損失だけ下がってテスト損失が上がり始めたら過学習の警報です(第4章)。この学習曲線が意外なほど正確に予測できてしまう、という話が第13章のスケーリング則につながります。

10.8 Adam と学習率ウォームアップ — 谷の下り方の工夫

10.8.1 素朴な勾配降下法の弱点

第4章の勾配降下法をそのまま兆トークン規模で使うと、いくつか困りごとが出ます。

  1. 谷がでこぼこ: ミニバッチごとの勾配はノイズだらけで、進む方向がジグザグにぶれる
  2. 方向によって傾きの強さが全然違う: あるパラメータの方向には急峻、別の方向にはほぼ平坦。1つの学習率 η を全パラメータ共通で使うと、急な方向では暴れ、平坦な方向では止まってしまう

10.8.2 Adam — 勢いと歩幅を自動調整する

そこでLLMの訓練では、勾配降下法の改良版である Adam(アダム: Adaptive Moment Estimation) がほぼ標準で使われます。アイデアは2つだけです(概要のみで十分です)。

  1. 勢い(モーメンタム)を持たせる: 今回の勾配だけでなく、過去の勾配の平均的な方向を覚えておき、そちらへ進み続ける。谷を転がるボールが多少のでこぼこを勢いで均すイメージ。ミニバッチのノイズによるジグザグが打ち消される
  2. パラメータごとに歩幅を自動調整する: 各パラメータについて「最近の勾配の大きさ」も覚えておき、いつも勾配が大きいパラメータは歩幅を小さく(慎重に)、勾配が小さいパラメータは歩幅を大きく(大胆に)する

つまりAdamは「 θθηLL を勢い付きの平均に置き換え、 η をパラメータごとに自動で伸縮させる」改良版です。谷下りという本質は何も変わっていません。

10.8.3 学習率ウォームアップ — 最初はそろそろと

学習率 η 自体も、訓練の間ずっと一定にするのではなく、訓練の進み具合に合わせて変えていくのが普通です。この「いつ、どれくらいの学習率にするか」という計画を学習率スケジュール(learning rate schedule) と呼びます。代表的なのが、ウォームアップ(warmup) 付きのスケジュールです。

最初の数千ステップ(ウォームアップ)で学習率をほぼ0から最大値まで直線的に引き上げ、その後は長い時間をかけてゆっくり減衰させていきます。

  • 序盤(ウォームアップ): 学習率をほぼ0から数千ステップかけて徐々に上げる。訓練開始直後のパラメータは乱数で、勾配の指す方向もあてになりません。そこで大股に歩くと一気に変な場所へ飛ばされて壊れてしまう(損失が発散する)ため、最初はそろそろ歩きます
  • 中盤以降(減衰): 最大値に達したら、今度は長い時間をかけてゆっくり下げる。谷底が近づいたら歩幅を狭めないと、谷底の周りを行ったり来たりして落ち着けない。第4章で見た「学習率が大きすぎる問題」への対策です

10.9 訓練の物理的実際 — GPU数千枚、数ヶ月の大工事

ここまでの話は数式の世界でしたが、最後に「物理的に何が起きているか」を見ておきましょう。LLMの事前学習は、現代最大級の計算プロジェクトです。

10.9.1 規模感

項目規模の目安(大規模LLMの場合)
GPU数千〜数万枚(1枚数百万円クラスの計算専用チップ)
期間数週間〜数ヶ月、24時間ノンストップ
電力数千MWh級(一般家庭の数百〜数千年分の電力量)
費用数十億円規模、最先端モデルでは100億円を超えるとも推定される
更新回数数十万〜数百万ステップ

第5章で「行列計算だからGPUで速い」と学びました。それでも、1,000億個規模のパラメータに兆トークンを読ませる計算量は1枚のGPUには到底収まりません。そこで分散学習が必須になります。

10.9.2 分散学習 — 手分けの二大方式

  • データ並列(data parallelism): モデルの完全なコピーを多数のGPUに置き、別々のミニバッチを同時に処理させる。各GPUが計算した勾配を全員で平均してから、全コピーを同じように更新する(全コピーは常に同一に保たれる)。「同じ教科書を持った生徒がそれぞれ別の問題集を解き、答え合わせの学びを全員で共有する」イメージ
  • モデル並列(model parallelism): モデル自体が1枚のGPUに入りきらない場合、モデルを分割して複数GPUに分担させる。層ごとに分ける(1〜10層はGPU1、11〜20層はGPU2、…)方式や、1つの巨大な行列計算そのものを複数GPUで分担する方式がある

実際の大規模訓練では、この2つ(と、さらに細かい工夫)を組み合わせて数千枚のGPUを協調させます。

また、数ヶ月動かし続ければGPUの故障は日常茶飯事です。そのため定期的にパラメータ全体をディスクに保存し(チェックポイント)、故障時はそこから再開します。ハードウェアの世話・電力・冷却まで含め、LLMの訓練は「数式」であると同時に「巨大な土木工事」でもあるのです。

10.10 訓練ループの全体図

この章の内容を1枚にまとめます。

このループを回し終えたモデルが、いわゆる事前学習済みモデルです。「事前」という言葉の意味(この後にまだ何かあるのか?)は、第12章で明らかになります。


この章のまとめ

  • Transformerの訓練とは、第9章で一覧にした全パラメータ(EWQ,WK,WV,WO 、FFN、LayerNorm、出力層)を勾配降下法 θθηL でいっせいに調整することである
  • 自己教師あり学習がもたらした転換: 文章を区切るだけで「問題(ここまでの文)と答え(次の単語)」のペアが自動生成される。ラベル付け不要だからWeb全体が教材になり、兆トークン規模の訓練が可能になった
  • 因果マスク(第8章)のおかげで、文全体を一度に入力しても各位置は未来をカンニングできない。だから全位置の予測と採点を1回の計算で同時に行える(教師強制)。これがRNNにない並列性であり、Transformerが訓練で圧勝した理由
  • 損失は各位置の交差エントロピーの平均(第5章の回収)。「猫は魚が好き」の4問で確率 0.40,0.20,0.50,0.25 なら平均損失は約1.151
  • パープレキシティ PPL=eL は「モデルが平均何択で迷っているか」。上の例では e1.1513.16 、つまり約3択
  • 訓練はミニバッチ単位で行い、LLMの事前学習はデータをほぼ1エポックしか周回しない。進行は学習曲線で監視する
  • Adamは勾配降下法の改良版(勢い + パラメータごとの歩幅自動調整)。学習率はウォームアップで最初は小さく、その後ゆっくり減衰させる
  • 物理的にはGPU数千枚 × 数ヶ月の大工事であり、データ並列(モデルをコピーして別データ)とモデル並列(モデル自体を分割)で手分けする

次の章へ

訓練の仕組みが分かると、次の疑問が湧きます。「では、エンコーダとデコーダ、どちらをどう訓練するのが正解なの?」。実は歴史は3通りの答えを出しました。エンコーダだけを穴埋め問題で鍛えたBERT、デコーダだけを次単語予測で鍛えたGPT、両方をそのまま使ったT5。三つの系譜の設計思想と、なぜ最終的に「デコーダのみ」が現代LLMの主流になったのかを見ていきます。

第11章 三つの系譜 — BERT・GPT・T5