LLM from Scratch 是一个从零手写大语言模型的教学项目。每一章由两部分组成:真正实现的 Python 代码,和一页可以亲手拨动的交互式可视化。
只会用 LLaMA-Factory、TRL 这类框架时,改的是配置项;模型出了问题,很难判断是哪一环。本项目回答的问题是:这些组件各自是怎么实现的。
从 bigram 到 GPT-2 124M,从 SFT、LoRA、DPO 到 MoE 与 LLaMA 四件套,再到线性 / 稀疏注意力、投机解码、量化,以及分词器、注意力 kernel、scaling law 和 RLVR,全部手写,不调框架。弄清原理之后再用生产工具,每个配置项改动的是什么就有据可查。
| 阶段 | 章节 | 内容 |
|---|---|---|
| 第一阶段 · nanoGPT | 1–4 | bigram 基线、自注意力、完整 Transformer、整机俯瞰 |
| 第一阶段 · 124M | 5–6 | 采样与 KV-cache、GPT-2 124M 预训练(FineWeb-Edu 10B token) |
| 第二阶段 · 后训练 | 7–10 | 后训练地图、SFT、LoRA、DPO |
| 第三阶段 · 现代架构 | 11–12 | MoE、LLaMA 四件套(RoPE / RMSNorm / SwiGLU / GQA) |
| 第四阶段 · 长上下文与推理效率 | 13–17 | 线性注意力、稀疏注意力、N-gram 查表、投机解码与 MTP、量化 |
| 第五阶段 · 补齐全链路 | 18–21 | 手写 BPE、FlashAttention Triton kernel、scaling law、RLVR 与 GRPO |
代码在 GitHub 仓库,按阶段分目录(phase1-nanogpt/、phase1-124m/ 等)。页面中的实验数字都来自这些脚本的实际运行。
各脚本的运行方式与硬件要求见仓库 README。
整条路线参考 Andrej Karpathy 的 Neural Networks: Zero to Hero 系列、nanoGPT 与 build-nanogpt,在其基础上做了逐行中文重写与讲解。数据集为 FineWeb-Edu。
本项目以 MIT License 开源,可自由学习、修改、再发布。如果对你有帮助,欢迎在 GitHub 上点个 Star,也方便之后查看更新。