モジュール 09 · ゼロから理解する

Transformer をゼロから実装する

トークナイザーとアテンションを手書きし、完全な小さな GPT を組み立て、3 万首を超える唐詩で詩を書けるように学習させます。さらに生成、KV キャッシュ、そして小さな GPT から本物の LLM まで何が足りないのかを扱います。

レッスン一覧

  1. 01
    BPE トークナイザーを手書きする

    モジュール 01 で、モデルに見えているのはトークンだと言いました。この課ではバイトレベルの BPE トークナイザーを手書きして唐詩で学習させ、バイトから一歩ずつ漢字や常用語を組み立てていく様子と、少ないデータでの弱点をはっきり見ます。

    45 分 · 中級
  2. 02
    アテンション機構

    一つの文字が自分の意味を理解するには、前にどんな文字があるかを見る必要があります。最も単純な「前のすべての文字を平均する」から出発し、クエリ、キー、値、因果マスク、スケーリングを一歩ずつ加えて、完全なアテンションヘッドを一つ書き、PyTorch の実装と照らし合わせます。

    50 分 · 上級
  3. 03
    マルチヘッドアテンションと位置エンコーディング

    一つのアテンションヘッドは、一つの基準でしか前の文字を見られません。ヘッドをいくつか開けば、いくつものことを同時に見られます。アテンションそのものは文字の順序も区別できないので、位置を教える必要があります。この課では実験でこの二つをはっきり見て、予想外の結果にも出会います。

    40 分 · 上級
  4. 04
    完全な GPT を組み立てる

    アテンション、フィードフォワードネットワーク、残差接続、LayerNorm を Transformer ブロックに組み立て、いくつか重ね、埋め込みと出力層を加えれば、完全な GPT になります。gpt.py を一節ずつ読み、160 万個のパラメータがどこにあるかを数え上げます。

    50 分 · 上級
  5. 05
    学習させる:モデルに唐詩を書かせる

    3 万 4 千首の唐詩で前の課の GPT を学習させ、ノートパソコンの CPU で 7 分動かして、でたらめな文字から一歩ずつ五言や七言を身につけていく様子を見ます。さらに 300 首だけを与え、詩の作り方を学ぶのではなく詩を丸暗記してしまう様子を見ます。

    50 分 · 上級
  6. 06
    テキスト生成と KV キャッシュ

    学習済みのモデルは次の文字を採点するだけです。スコアからどうやって一首の詩になるのでしょうか。この課では自分の GPT で温度、top-k、続きの生成、折句を試し、さらに KV キャッシュを実装して、重複した計算がどれだけ省けるかを測ります。

    40 分 · 上級
  7. 07
    小さな GPT から LLM へ

    私たちの小さな GPT は詩を書けても、質問には答えられません。そこから会話のできる LLM までの間には、規模、事前学習、指示チューニング、選好アライメントがあります。この課では論文の実際の数字を使って、各ステップをはっきり説明します。

    30 分 · 中級

モジュール 01 で、LLM がすることは一つだけ、次のトークンを予測することだと言いました。このモジュールでは、それをするモデルを自分の手で作ります。

GPT をゼロから書きます。トークナイザー、アテンション、マルチヘッド、位置エンコーディング、Transformer ブロックをすべて手書きし、既成のモデルライブラリは使いません。そして『全唐詩』から選んだ 3 万 5 千首の近体詩で学習させます。パラメータはわずか 161 万個で、ノートパソコンの CPU で 7 分ほど学習させれば、それらしい五言詩や七言詩を書けるようになります。

ChatGPT や DeepSeek との違いは主に規模と学習方法にあり、原理は同じです。このモジュールを終えれば、本物の LLM のコードの主要な構造を読めるようになります。

なぜこの順番なのか

モデルの入力はトークンなので、まずトークナイズです。次にアテンションで、これが Transformer の核心です。第 3 課でマルチヘッドと位置の情報を補い、第 4 課ですべての部品を完全なモデルに組み立てます。第 5 課でそれを学習させ、第 6 課でそれを使って文章を生成し、推論で最も重要な最適化である KV キャッシュを説明します。最後の課ではコードを書かず、私たちの小さな GPT から本当に会話できる LLM までの間に、あといくつのステップがあるのかを扱います。

このモジュールのコードはすべて code/09-transformer/ にあり、gpt.py がこの後の課で共通して使うモデルです。先にモジュール 08、特に誤差逆伝播法、PyTorch、交差エントロピーを学んでおく必要があります。

修了の目安

  • バイトレベルの BPE トークナイザーを手書きでき、データが少ないとなぜ細かく切られてしまうのかを説明できる。
  • 因果マスクとスケーリングを備えたアテンションを書け、q、k、v のそれぞれの役割を説明できる。
  • マルチヘッドアテンションと位置エンコーディングがなぜ必要なのか、そして因果マスクそのものが順序の情報を漏らしていることを説明できる。
  • gpt.py を一節ずつ読み解き、各部分にパラメータがいくつあるかを計算できる。
  • 自分のパソコンで詩を書く小さな GPT を学習させ、損失の曲線と生成結果から、それが学んでいるのか暗唱しているのかを判断できる。
  • 温度、top-k、KV キャッシュを説明し、KV キャッシュによる高速化の効果を測れる。
  • 事前学習、指示チューニング、選好アライメントがそれぞれ何をしているのかを説明できる。

このモジュールのコード

コードと実行結果は実際に動かしたときのまま載せているため、コメントと出力は中国語です。