nanochatで理解するLLM製造工程 ― tokenizer訓練からチャットCLIまで、Karpathyの8,159行を読み切る

>100 Views

August 01, 26

スライド概要

2019年に$43,000かかったGPT-2級の訓練は、いまは8×H100を2時間借りて$48前後。7年でおよそ900分の1です。その全工程を実装しているのが、Andrej Karpathyが公開したnanochat(約8,159行)です。tokenizer訓練から事前学習、SFT、評価、推論エンジン、チャットCLIまで、LLMというプロダクトの製造工程が週末に読み切れる分量に収まっています。

本スライドは、Zenn Book「nanochatで理解するLLM製造工程」の入門編です。工程の並び、--depthという1つのダイヤル、チャットモデルが生まれるSFTの損失マスク、MacBookで工程を一周する方法までを12枚で俯瞰します。

扱う論点:
- $43,000 → $48、訓練費900分の1の内訳
- 8,159行に収まるLLM製造の全工程
- 複雑さのダイヤルは1つ(--depth、幅もヘッド数も自動導出)
- 言葉を32,768個の部品に刻むTokenizer
- チャットモデルが生まれる瞬間(SFTの損失マスク)
- 合格ラインはGPT-2のCOREスコア(22タスクのアンサンブル)
- MacBookでも工程を一周(tokenizer訓練は約34秒)

▼Zenn Bookで全文(無料公開)
https://zenn.dev/kenimo49/books/nanochat-code-reading

▼Kindle版(¥250)
https://www.amazon.co.jp/dp/B0HCH7VTBX

▼著者
ken imoto / kenimoto.dev / @kenimo49

profile-image

Propel-Lab代表。WebRTC・音声AIのエンジニアをやりながら、LLMを仕事の戦力にするための設計を研究しています。中心テーマは「ハーネス・エンジニアリング」——AIの成果はモデルそのものより、その外側の環境(制約・フィードバック・ツール)で決まる、という考え方です。これとContext Engineering、AIコードレビューの自動化などをZennとKindleで本にしてきました。ここには各本の要点をスライドにまとめて置いていきます。詳しくは kenimoto.dev へ。

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

ダウンロード

関連スライド

各ページのテキスト
1.

コードリーディング nanochatで理解する LLM製造工程 Karpathyの8,159行を、工程の順番に読み切る nanochat LLM製造工程 コードリーディング 全8章+トリビア付録 GPT-2級の訓練費(2019 → 2026) $43,000 → $48 ken imoto エンジニア / Propel-lab nanochatで理解するLLM製造工程 kenimoto.dev 01 / 12

2.

GPT-2級の訓練費は、7年で900分の1になった。 2019年のGPT-2は$43,000。2026年は8×H100を2時間借りて$48前後。 2019 OpenAI GPT-2 $43,000 OpenAIがGPT-2の訓練にかけた費用 2026 nanochat speedrun $48 8×H100を約2時間借りて、CORE指標でGPT-2 を上回る水準を訓練 約1/900 出典:nanochat READMEの実測値。短縮記録はコミュニティ競技として更新中 nanochatで理解するLLM製造工程 kenimoto.dev 02 / 12

3.

LLMの製造工程が、8,159行に全部ある。 Andrej Karpathy公開のnanochat。Python+シェルで、週末に読み切れる分量。 tokenizer訓練 語彙32,768個を データから学習 事前学習 続きを書くGPTを --depth 1つで育てる SFT 会話の形を 損失マスクで教える 強化学習(任意) 検証可能な報酬で 鍛えるGRPO 評価 COREスコアで GPT-2と比較 推論エンジン KVキャッシュ+ ツール実行 チャットCLI 自分のモデルと 会話する $48で手に入るのは重みファイルだけではなく、この工程の全部 nanochatで理解するLLM製造工程 kenimoto.dev 03 / 12

4.

重心は後半。「なぜ素のGPTは会話にならないのか」まで届く。 論文は重すぎる。理論書の多くは事前学習で終わる。本書はチャットモデルが生まれる工程に重心を置く。 第1章 全体地図 - speedrun.shを上から読む 第2章 Tokenizer - 言葉を32,768個の部品に刻む 第3章 事前学習 - ダイヤル1つでTransformerを育てる 第4章 SFT - 文章生成器がチャット相手になる瞬間 第5章 強化学習 - 算数で鍛えるGRPO 第6章 評価 - 幼稚園児の賢さをどう測るか 第7章 推論エンジン - 1トークンずつ、それでも速く 第8章 ここから先へ - MacBookで工程を所有する nanochatで理解するLLM製造工程 kenimoto.dev 04 / 12

5.

複雑さのダイヤルは1つ。 モデル規模のハイパーパラメータは--depthに集約。幅もヘッド数も自動導出。 6 MacBookデモ CPUだけで全工程を一周 合計約40分(M3 Max実測) 複雑さのダイヤル --depth 24 speedrun (8×H100) 約2時間・$48で GPT-2級モデルを訓練 自動で決まるもの:モデル幅(depth×64) / ヘッド数 / 学習トークン数 / バッチサイズ / 学習率の補正 整数を1つ変えるだけで両極をカバーする。コードの読みやすさの源泉 nanochatで理解するLLM製造工程 kenimoto.dev 05 / 12

6.

言葉を32,768個の部品に刻む。 特殊トークン9個を除けば、本当の学習対象は32,759個。 01 訓練データはClimbMix - ま ず20億文字を読む 高品質なWebテキスト+コード+数学のミ ックス。1文書は10,000文字で頭を刈 り、長大な文書への語彙の偏りを避ける 02 学習はRust製rustbpe、推論 はtiktoken ペアの頻度を数える重いBPE訓練だけを Rustに任せ、出来上がったマージ規則は tiktoken.Encodingに詰め替えて使う分 業 03 圧縮率という物差しを tok_eval.pyで測る 英語・韓国語・コード・数式などを実際 にエンコードし、バイト数÷トークン数 の圧縮率をGPT-2/GPT-4の語彙と並べて 比較 nanochatで理解するLLM製造工程 kenimoto.dev 06 / 12

7.

ダイヤル1つで、Transformerが育つ。 --depthから、スケーリング則が学習の長さとバッチサイズを決める。 01 スケーリング則で学習の長さを 自動決定 パラメータ数×12で目標トークン数を算 出。バッチサイズも学習率の補正も、-- depth1つから連鎖的に決まる 02 データローダーはBOSで揃え てbest-fitで詰め込む 各行を必ず<|bos|>から始め、残り枠に 収まる最大の文書を探して詰める。パデ ィングが発生せず学習トークンに無駄が ない 03 fp8とFlash Attentionが速度 の土台 torchaoなら約2000行の機能を tensorwise scaling 1種に絞って約150行 で実装。FA3が使えない環境ではSDPAに フォールバック nanochatで理解するLLM製造工程 kenimoto.dev 07 / 12

8.

チャットモデルは、損失マスクで生まれる。 素のGPTは文章の続きを書くだけ。会話はSFTで教え込む。 userプロンプト mask 0(学習しない) assistant応答 mask 1(ここだけ学習) ツール出力 mask 0(学習しない) 学習するのはassistantの発言だけ。BOS・特殊トークン・ツール出力は損失から外す GSM8Kの電卓なら:呼び出す式はmask=1、返ってくる計算結果はmask=0。 ツールを呼ぶ振る舞いだけを覚えさせ、答えの数値は暗記させない設計 nanochatで理解するLLM製造工程 kenimoto.dev 08 / 12

9.

合格ラインは、GPT-2のCOREスコア。 ARC/MMLUなど22タスクを1つの数字に潰すアンサンブル指標(DCLM論文)。 01 土台モデルは「答えさせない」 で測る baseモデルは指示追従を知らないので生 成させない。選択肢ごとに完成文を作 り、選択肢部分の損失が最小のものを答 えとみなす 02 chatモデルは会話として測る (ChatCORE) GSM8Kの計算やHumanEvalのコード生 成は、自分で最後まで組み立てる勝負。 ベースライン正答率は0%に設定される 03 $43,000で訓練されたGPT-2 (1.6B)のスコアが基準線 CORE 0.2565が合格ライン。リーダーボ ードは「これをwall clock timeでどれだ け早く超えるか」を競っている nanochatで理解するLLM製造工程 kenimoto.dev 09 / 12

10.

生成ループは、1つの状態機械。 KVキャッシュで逐次生成を速く。ツール実行までこの1冊で。 01 KVキャッシュ - 計算済みの Key/Valueを使い回す プレフィルはバッチ1で1回だけ。キャッ シュを複数サンプル分に複製し、各行が 別々のトークンを選びながら並行デコー ドする 02 サンプリング - temperature とtop-k temperature=0ならargmaxの決定的生 成。それ以外はtop-k(既定50)で絞ってサ ンプリング。実装されているのはこの2 つだけ 03 ツール呼び出しは「強制注入の 待ち行列」 <|python_start|>が出たら式を貯め、電 卓で評価した結果を次のトークンとして 注入。既存ループにキュー1本足すだけ の実装 nanochatで理解するLLM製造工程 kenimoto.dev 10 / 12

11.

MacBookでも、工程は一周できる。 --depth=6。tokenizer訓練は約34秒(M3 Max実測)。GPUノードは要らない。 01 本書はコードリーディングの本 - 読むだけで完結できる PythonとPyTorchのコードが読めれば十 分。モデルの訓練経験も、GPUノードを 借りる必要もない 02 動かすのは第8章のCPU版デモ だけ runs/runcpu.sh。tokenizer訓練 約34秒 +事前学習 約30分+SFT 約10分、合計約 40分でチャット可能なモデルまで一周 03 品質は「幼稚園児」- それで も工程は本物 READMEいわく4e19 FLOPSのモデルとの 会話は幼稚園児並み。それでもGPUを借 りる前に、工程全体の形を体にに入れられ る nanochatで理解するLLM製造工程 kenimoto.dev 11 / 12

12.

続きは、本書で。 全8章+トリビア付録、Zenn Bookで全文無料公開中。 nanochatで理解する LLM製造工程 Karpathyの 8,159行 を工程順に読み切る 全 8章 +トリビア付録 Zenn全文 無料 / Kindle ¥250 Zenn Book zenn.dev/kenimo49/books/nanochat-code-reading Kindle amazon.co.jp/dp/B0HCH7VTBX (¥250) Author ken imoto / kenimoto.dev / @kenimo49 nanochatで理解するLLM製造工程 12 / 12