← 返回首页
about.html

关于本项目

LLM from Scratch 是一个从零手写大语言模型的教学项目。每一章由两部分组成:真正实现的 Python 代码,和一页可以亲手拨动的交互式可视化。

为什么要手写

只会用 LLaMA-Factory、TRL 这类框架时,改的是配置项;模型出了问题,很难判断是哪一环。本项目回答的问题是:这些组件各自是怎么实现的。

从 bigram 到 GPT-2 124M,从 SFT、LoRA、DPO 到 MoE 与 LLaMA 四件套,再到线性 / 稀疏注意力、投机解码、量化,以及分词器、注意力 kernel、scaling law 和 RLVR,全部手写,不调框架。弄清原理之后再用生产工具,每个配置项改动的是什么就有据可查。

页面怎么用

章节安排

阶段章节内容
第一阶段 · nanoGPT1–4bigram 基线、自注意力、完整 Transformer、整机俯瞰
第一阶段 · 124M5–6采样与 KV-cache、GPT-2 124M 预训练(FineWeb-Edu 10B token)
第二阶段 · 后训练7–10后训练地图、SFT、LoRA、DPO
第三阶段 · 现代架构11–12MoE、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,也方便之后查看更新。