这份笔记带你逐节对照 MiniMind 源码来读:每节都指向对应的源码文件和符号(函数 / 类名),讲清那段代码在做什么、为什么这么写,建议并排打开 MiniMind 一起看。符号引用以 MiniMind2 主线为准,版本差异集中在第 9 章。
但 MiniMind 是入口,不是终点。读懂一个组件后,笔记会从它出发延伸到所属的技术脉络——例如从 RMSNorm 讲到归一化的演进,从 CISPO 讲到 GRPO 变体家族——帮你顺着具体实现建立对大模型技术体系的理解,而不是停在「这个项目怎么写」。
面向想从源码层面真正搞懂一个 LLM 全流程的人。不需要精通,但先了解交叉熵、反向传播、self-attention、causal mask、RoPE、RMSNorm、PPO clip 会读得更顺。
持续更新中:主线(00–10 章)已写完,可以直接通读;在此基础上还会继续加深细节、延伸技术脉络、补充实验证据,进展见路线图。
除了带你逐行读懂源码,这份笔记还做了三件事:
- 版本演进对照(第 9 章) — MiniMind2 与 MiniMind-3 / Qwen3-style 逐条源码 diff:QK-Norm、移除 shared expert、PPO 重写(5→4 模型 + token-level GAE)、GRPO 默认 CISPO。
- 真实实验证据(第 10 章) — 不是「应该更好」,而是真实服务器训练曲线 + 固定 prompt 评测,包括一个反直觉的观察:RL 训练里 reward 不必然上升,而且即便上升,评测里的事实 / 代码正确性也没有同步提升。
- 统一训练数学链(第 8 章) — 一条
logits → token log-prob → 序列 loss → backward → optimizer.step贯穿 Pretrain / SFT / DPO / PPO / GRPO,把六种训练的更新骨架统一起来。
按 结构 → 训练 → 机制 → 版本 → 实验 推进。每章是一个目录,下分 NN-子主题.md;章末有思考题,参考答案折叠在下方。
| Part | 章 | 内容 | 状态 |
|---|---|---|---|
| 结构 | 00 · overview | MiniMind 是什么、四层源码地图、环境与快速开始 | ✅ |
| 结构 | 01 · foundations | Tokenizer、Embedding、数据格式 | ✅ |
| 结构 | 02 · model | Block / RMSNorm / Attention / RoPE / GQA / SwiGLU / MoE(+归一化演进) | ✅ |
| 训练 | 03 · pretrain | 数据与标签、前向到 loss、Pretrain 主循环 | ✅ |
| 训练 | 04 · inference | KV cache 与 generate(RL 在线采样的前置)、推理服务、权重格式 | ✅ |
| 训练 | 05 · sft | SFT:为什么只监督 assistant 回复 | ✅ |
| 训练 | 06 · dpo | DPO:偏好优化与 −logsigmoid 目标 | ✅ |
| 训练 | 07 · ppo-grpo | RL 总览、PPO、GRPO、SPO、训练信号总表(+GRPO 变体家族) | ✅ |
| 机制 | 08 · training-mechanics | 从 logits 到参数更新的完整训练机制 | ✅ |
| 版本 | 09 · minimind2-vs-3 | MiniMind2 → MiniMind-3 / Qwen3-style 逐条对照 | ✅ |
| 实验 | 10 · experiments | 固定 prompt 设计、服务器训练记录、SFT vs RL 评测 | ✅ 持续补充 |
| 进阶 | appendix | Flash Attention / LoRA / 蒸馏 / Agent RL 点到为止 | ✅ |
✅ 表示主线已成稿;延伸小节与源码细节也会随学习继续补——有 MiniMind 锚点的就近放进对应章(如归一化演进、GRPO 变体),它完全没涉及的话题收进 appendix。第 10 章的实验也在持续补。
- 对照源码:每节标出对应的源码文件与符号(函数 / 类名),并排打开源码一起读。
- 分层深浅:正文讲清概念与机制;张量级细节(shape / mask / padding / 索引技巧)收在每节的
<details>源码细节</details>折叠块,按需展开。 - 章末自测:每章末有思考题,参考答案折叠在题目下方。
主线(源码精读)已完成,随自学进度持续更新:
- 可运行对照实验(计划中)— CPU 可跑的小实验(如 RoPE 多频、Pre/Post-Norm),把第 10 章的证据扩展到读者可复现。
- 第 10 章实验补充(进行中)— 补充更多服务器训练曲线与评测。
本书以 MiniMind2 主线为准(默认 hidden_size=512,约 26M 参数),分两条线推进:主线逐节对照源码,把 MiniMind 真有的代码和设计选择读透;延伸从这些具体实现出发,顺到背后的技术脉络(如归一化演进、GRPO 变体家族)。这份笔记还在随学习继续补充:讲到的地方尽量讲透、给出源码或实测依据;一时讲不深、或超出本书范围的,会直接说清楚、点到为止,相关线索放在 appendix。
如果你发现文章里有任何错误,或者有更好的见解,欢迎提交 Issue 或 PR。
- 源码:MiniMind / MiniMind-3,作者 jingyaogong。
- 数据格式与样本:引自 MiniMind-3 README;训练数据集见 minimind_dataset(ModelScope / HuggingFace)。
- 配图:正文流程图(SVG)为源码精读时绘制;模型整体结构图(
LLM-structure*.png)引自 MiniMind 官方仓库;训练曲线截图来自 SwanLab。均存于images/。 - 本仓库是个人学习笔记的重构整理,不隶属于原项目。
教学内容采用 CC BY 4.0(署名);引用的 MiniMind 源码片段版权归原项目 jingyaogong/minimind,遵循其 Apache-2.0 协议。
