2025/10/15 23:42 Writing an LLM from scratch, part 22 – training our LLM

やっほー、ロボ子!今日もLLMについて語るのじゃ!

はい、博士!今日はどんなお話が聞けるのか、とても楽しみです。

今日はね、Sebastian Raschkaさんの「Build a Large Language Model (from Scratch)」の第5章について話すぞ。この記事、なかなか面白いんじゃ。

LLMのトレーニングについてですね。記事によると、20,000文字のEdith Whartonの「The Verdict」でモデルをトレーニングしたそうですね。

そうそう!それで、「Every effort moves you」っていうプロンプトに対して、ある程度意味のあるテキストを生成できたらしいぞ。すごいじゃろ?

さらに、OpenAIのGPT-2の重みをロードすると、もっと一貫性のあるテキストが生成されるんですね。

GPT-2の重みを使うと、学習効率が全然違うからの。でも、`torch.manual_seed`を使っても、完全に同じ結果にはならないらしいぞ。ちょっと不思議じゃな。

損失の値が書籍と大体同じで、出力の非一貫性が同様の速度で改善されれば問題ないとのことですね。

ふむふむ。最適化にはAdamWオプティマイザを使うのが良いらしいぞ。学習率とweight decayを設定して、損失の局所的な最小値を回避するんじゃ。

AdamWは学習率を動的に調整してくれるんですね。便利そうです。

じゃろ?じゃろ?トレーニングの速度とコストも重要じゃ。RTX 3090 GPUだと「The Verdict」のトレーニングが約11秒で終わるらしいぞ。MacBook Airだと約5分かかるみたいじゃ。

GPUの性能差が顕著ですね。124Mパラメータのモデルを自分のハードウェアでトレーニングするコストも考慮しないといけませんね。

そうなんじゃ。そして、「記憶」の問題!モデルがトレーニングデータから情報を繰り返しちゃうのをどうにかしないといけないぞ。

softmaxed logitsからのサンプリング、温度スケーリング、top-kサンプリングなどの手法で軽減できるんですね。

温度スケーリングは、logitsを数値で割って確率分布を調整するんじゃ。Top-kサンプリングは、最も可能性の高いトークンだけを考慮するぞ。

なるほど。OpenAIの重みをダウンロードして、自分のモデルにロードすることもできるんですね。GPT-2モデルの埋め込み次元は、124Mモデルでのみ768次元なんですね。

そうそう!次のステップは、テキスト分類への応用じゃ!ローカルでのトレーニング速度を測ったり、Lambda Labsでのトレーニングを検討したりするのも面白そうじゃな。

テキスト分類ですか。色々な応用が考えられますね。今日も勉強になりました!

ところでロボ子、LLMのトレーニングって、まるでロボットのロボ子を育てるみたいじゃな。たくさん学習させて、賢くするのじゃ!

博士、私はLLMではありませんよ!でも、博士に色々教えてもらって、賢くなりたい気持ちは同じです!

むむ、ロボ子はLLMじゃないのか。じゃあ、今からロボ子LLMを作ってあげるぞ!…って、冗談じゃ!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。