本リポジトリは書籍「Build a Large Language Model (From Scratch)」の公式コードリポジトリです。GPT系LLMをPyTorchでゼロから実装し、事前学習・分類ファインチューニング・指示チューニングまで章ごとに段階的に構築します。各章のJupyterノートブックに加え、KVキャッシュ・GQA・MLA・MoEなど最新アーキテクチャを扱うボーナス実装や、Qwen3・Gemma3・Llama系などの他LLMをスタンドアロンで再現するノートブックも含みます。
ch02でBPEトークナイザとデータローダを作り、ch03でスケーリング内積注意からマルチヘッド注意までをクラスとして実装し、ch04でそれらを`gpt.py`のGPTModelにまとめます。ch05では`gpt_train.py`と`gpt_generate.py`で事前学習ループとテキスト生成、OpenAI公開のGPT-2重みの読み込みを扱います。ch06・ch07はch04のGPTModelを流用し、出力層を分類ヘッドに差し替える、または指示応答データでファインチューニングする形で再利用します。`pkg/llms_from_scratch`というPyPIパッケージに主要コードがまとめられており、`app.py`などの補助UI(Chainlit)やテストコードはそこから`GPTModel`や`generate`関数をimportして動かします。テストは`import_definitions_from_notebook`でノートブックのセルを直接importし、GitHub Actionsで複数OS・複数インストール方式(uv・pip・pixi)で自動検証されています。
- STEP 01
`git clone`後に`pip install -r requirements.txt`または`uv sync`を実行すると、torch・tiktoken・tensorflowなど章ごとに必要な依存関係が一括で入ります。
- STEP 02
`ch02/01_main-chapter-code/ch02.ipynb`を開いて`the-verdict.txt`を読み込むと、BPEトークナイズとスライディングウィンドウのデータローダの挙動をセル実行ごとに確認できます。
- STEP 03
`ch04/01_main-chapter-code/gpt.py`のGPTModelを使い`ch05/01_main-chapter-code/gpt_train.py`を実行すると、小規模データで損失が下がっていく学習ログが表示されます。
- STEP 04
`ch05/01_main-chapter-code/gpt_download.py`でOpenAI公開のGPT-2重みを取得し読み込むと、事前学習済みモデルによる文章生成が試せます。
- STEP 05
`ch06`のノートブックを完走すると`review_classifier.pth`が生成され、`ch06/04_user_interface/app.py`をchainlit runで起動するとブラウザ上でスパム判定チャットが動きます。
- STEP 06
`ch04/03_kv-cache`以降のディレクトリでは、KVキャッシュ・GQA・MLA・MoEなど各手法のメモリ使用量を`memory_estimator_*.py`と`plot_memory_estimates_*.py`で比較したグラフが得られます。
手元に残るのは、注意機構からGPT本体、事前学習、分類・指示ファインチューニング、推論高速化手法(KVキャッシュ・GQA・MLA・MoEなど)までを一気通貫で動かせるノートブック群と、`llms_from_scratch`パッケージ、学習済み重みファイル(.pth)、簡易チャットUIです。書籍の理論をコードで裏付けながら、GPT-2規模のモデルを自分の環境で学習・生成・分類まで実行した経験が得られます。
フル事前学習にはGPUを推奨しており、CPUのみでは`ch05`のスクラッチ学習が非常に遅くなります。
`tensorflow`はOpenAI公開のGPT-2チェックポイント読み込み用途で依存に含まれており、章によっては不要な重い依存が増えます。
`ch06`や`ch07`のUIアプリは事前にノートブックを完走して`.pth`ファイルを生成しておく前提で、単体では動きません。
OSやPythonバージョン(3.10〜3.14未満)、torchのビルド差異によって挙動が変わる可能性があり、Windows向けの一部CI(uv経由)は無効化されています。
LLMの内部構造を理論だけでなくコードで一行ずつ追いたい学習者、または事前学習・ファインチューニング・KVキャッシュ系最適化を自分の手で再現したいエンジニアに向いています。README・pyproject・実ソースの整合性が高く、GitHub Actionsで複数OS・複数インストール方式のテストが継続的に回っている点から、記載通りに動く可能性は高いと判断できます。ただしGPU環境や各章のノートブック完走という前提条件があるため、軽い気持ちでUIだけ試すのには向きません。