Skip to content
Aidenz
Go back

从零训练大模型(序):课程总览

12 分钟阅读 · 3446 字
Edit page

这是一门完全零基础的中文系列教程。它以本仓库 train-llm-from-scratch 为”活教材”, 带你从”什么是张量”一路走到能亲手训练出一个会遵循指令、会推理的小型大语言模型(LLM)。 不需要你预先懂神经网络、不需要你懂 PyTorch —— 这些我们都从头讲起。

这门课是给谁的

  • 你几乎没有机器学习/深度学习基础,但想真正搞懂”大模型是怎么训练出来的”;
  • 你会一点点编程概念(知道”变量""函数”是什么)即可,Python 我们会边用边讲;
  • 你希望既理解原理(含完整数学推导),也能亲手把训练跑起来

如果你已经懂深度学习,可以直接跳到第 5 章或本仓库已有的 英文进阶文档对应中文版 docs/zh/

你最终会做出什么

这个项目用纯 PyTorch 手写(不依赖 trl/peft/transformers)复刻了现代大模型的完整训练链路:

预训练(Base)  ──►  SFT 指令微调  ──►  奖励模型 ──►  PPO ┐
                       │                              ├─►  GRPO / RLVR(数学推理)
                       └──────────►  DPO / ORPO / KTO ─┘

学完这门课,你会理解上面每一个箭头在做什么,并且能用项目自带的”小号”配置在自己电脑上(哪怕没有 GPU)把每一步真正跑通。

后训练全流程

学习地图(19 章,分 5 个阶段)

建议严格按顺序学习,每章都依赖前面的概念。

阶段一 · 绝对零基础前置(打地基)

标题你会学到
01环境搭建与第一次运行装好 Python 环境、把这个项目跑起来、认识它的目录
02数学与机器学习最小基础向量/矩阵/张量、导数与梯度、概率与对数、“训练”到底是什么
03PyTorch 极简入门张量运算、自动求导、nn.Module、亲手写一个最小训练循环

阶段二 · 语言模型核心(含完整推导)

标题你会学到
04文本如何变成数字:分词与数据形状分词(tokenization)、token id、上下文窗口、batch 形状
05解码器 Transformer 骨架嵌入、位置编码、残差、LayerNorm、logits、参数量估算
06注意力机制 · 完整推导缩放点积注意力、因果掩码、多头注意力、复杂度
07训练目标:交叉熵与困惑度 · 完整推导最大似然 → 负对数似然 → 交叉熵、困惑度、标签错位、掩码
08优化与训练系统梯度下降 → Adam → AdamW、学习率调度、梯度累积、混合精度、DDP
09生成与采样自回归生成、贪心/温度/top-k/top-p 采样

阶段三 · 预训练实战(亲手跑)

标题你会学到
10数据流水线:从 The Pile 到 HDF5下载、预处理、扁平 token 的 HDF5、数据加载窗口
11预训练你的基座模型 · 动手跑通 pretrain_base.py,读懂 loss / 困惑度曲线

阶段四 · 后训练 / 对齐(每章含完整推导 + 动手)

标题你会学到
12SFT 指令微调 · 含掩码损失推导对话模板、只对”回答”部分算损失、序列打包
13奖励模型 · Bradley-Terry 推导成对偏好、标量奖励头、Bradley-Terry 损失
14DPO · 完整目标函数推导直接偏好优化、隐式奖励、为什么能绕开 RL
15PPO · 策略梯度→GAE→裁剪→KL 完整推导策略梯度、actor-critic、GAE、裁剪目标、KL 惩罚
16GRPO / RLVR · 组相对优势推导可验证奖励、组内相对优势、去掉 critic、课程学习

阶段五 · 评估、推理与收尾

标题你会学到
17评估(GSM8K)与推理对话 · 动手用 GSM8K 衡量各阶段、和你的 checkpoint 对话
18把整条链路跑起来 + 进阶学习路线一键全链路、常见报错、接下来学什么

怎么用这门课(重要约定)

这门课和项目里已有的中文参考文档配合使用:

  • 本教程(tutorial/) = 给零基础读者的”老师讲解”,负责把概念讲懂、把推导展开、带你动手
  • 参考文档(docs/zh/docs/zh/foundations/) = 更精炼的”工程速查”,每章结尾都会指路到对应参考页,供你深入。

阅读时请注意以下约定:

  1. 数学公式:全部采用标准 LaTeX 美元符号语法——行间公式写成 $$ ... $$,行内公式写成 $ ... $。 这种写法被绝大多数编辑器和预览工具(LunarVim 的 render-markdown.nvim/markdown-preview、VS Code、Typora、Obsidian 等)以及本仓库文档站(MkDocs + MathJax)直接支持。 如果你在某些 GitHub 旧版页面看到的是 LaTeX 源码而非渲染后的公式,可以在本地用 pip install -e ".[docs]" 后运行 mkdocs serve,在浏览器里看到漂亮的排版。 每个公式后面都会用大白话解释每个符号的含义,不会让你对着符号发愁。
  2. 代码:出现的代码片段保持英文原样(变量名、函数名都来自项目真实源码),并标注它在仓库里的真实路径, 例如 src/models/attention.py。你随时可以打开对照。
  3. 动手命令:所有命令都能直接复制运行。为了让没有 GPU 的同学也能体验, 动手环节优先使用项目自带的”小号”配置 configs/smoke/*.json(模型极小、device 设为 cpu), 能在普通笔记本上几秒到几分钟跑完;真正训练出有用的模型则需要 GPU(我们会标注清楚)。
  4. 每章结构:开头给出”本章前置 / 你将学到”,结尾给出”小结 + 自测题 + 下一章”。

硬件与时间预期

目标需要什么大概耗时
理解原理 + 跑通 smoke 小配置一台普通电脑(CPU 即可)跟着学几天,跑命令几秒~几分钟
真正预训练一个 ~400M 基座多张高端 GPU(如 2×H100)数天
完整后训练对齐链路至少一张较大显存 GPU数小时~一天

这门课的价值不在于”刷出多高的分数”,而在于用真实数据、真实代码,把现代大模型从预训练到 RLHF 的每一步亲手走一遍

术语对照表(全课统一)

英文本课译法说明
token词元 / token文本被切成的最小单位;首次出现标注,之后多直接用 token
tokenizer分词器把文本切成 token 并映射成整数 id 的工具
embedding嵌入 / 嵌入向量把离散 id 变成可学习的向量
logitslogits模型输出的未归一化得分
softmaxsoftmax把 logits 变成概率分布
attention注意力Transformer 的核心操作
cross-entropy交叉熵预训练/微调的损失函数
gradient descent梯度下降用梯度一步步调参数的优化方法
loss损失衡量”模型预测有多差”的数值,越小越好
parameter / weight参数 / 权重模型里被训练调整的数值
pretraining预训练在海量文本上学”语言本身”
fine-tuning微调在预训练基础上针对具体任务继续训练
SFT指令微调Supervised Fine-Tuning
policy策略强化学习里”做决策”的模型(就是我们的 LLM)
reward奖励强化学习里对一次输出好坏的打分
advantage优势某个动作比”平均水平”好多少
checkpoint检查点 / checkpoint训练过程中保存下来的模型文件

给你的学习建议

  • 不要跳章。后面每一章都在复用前面的概念(尤其是第 02、05、06、07 章是地基)。
  • 边读边动手。看完一段就去敲一遍命令、改一个数字看看结果变化,理解会牢得多。
  • 看不懂公式先别慌。先读公式后面的大白话解释,理解”它想干嘛”,再回头看符号。
  • 善用参考文档和源码。每章末尾的”深入参考”链接,是你巩固和查漏的好去处。

准备好了吗?从 第 01 章:环境搭建与第一次运行 开始 👉


Edit page