现代Transformer精读-00:导读与系列地图

相关:01-模型骨架与前向回路 | 02-RoPE位置编码与YaRN外推 | 03-自注意力机制精读 | 04-稀疏MoE路由与负载均衡 | 05-数据管线与自回归目标设计 | 06-训练工程学 | 07-微调:LoRA与蒸馏 | 08-偏好对齐:DPO与强化学习
本系列用一个轻量级 LLMMiniMind逐行精读现代 Transformer。本篇是目录页特别致谢 MiniMind 开源项目(作者 jingyaogong):它以极简代码承载了现代大模型近乎全部的关键设计,是极佳的阅读对象。
0. 关于本系列
MiniMind 是一个非常优秀的语言模型,在64M的参数体量下,实现了基本的对话和工具使用能力,是初学者接触LLM的一个优秀媒介。在现代GPU下仅需2小时就可以完成基本的训练,同时作者将所有的数据集在modelscope和huggingface开源,非常容易进行复现实验
本系列共 1 篇导读 + 8 篇正文。每篇聚焦一个模块,从基础的Transformer模型出发,把 MiniMind 的代码逐行详解,配以自绘示意图。目标是让大家能够对现代的Transformer模型有更加深刻的认识和理解
1. 为什么选 MiniMind 精读
① 代码短 model_minimind.py 只有 288 行,适合逐行精读。
② 现代化全覆盖 麻雀虽小、五脏俱全。它几乎具备 2024 年代小型 LLM 的全部现代设计
| 现代设计 | MiniMind 的位置 | 精读篇 |
|---|---|---|
| Pre-Norm + 残差流 | MiniMindBlock | 01 |
| RMSNorm | RMSNorm | 01 |
| SwiGLU FFN | FeedForward | 01 |
| tie_word_embeddings | MiniMindForCausalLM | 01 |
| RoPE + YaRN | precompute_freqs_cis | 02 |
| GQA | Attention | 03 |
| QK-Norm | Attention | 03 |
| KV Cache / Flash Attention | Attention | 03 |
| 稀疏 MoE + aux loss | MOEFeedForward | 04 |
③ 能真训真推 train_*.py 覆盖了预训练、SFT、LoRA 微调、DPO、GRPO/PPO、蒸馏全流程(05–08)。作者号称两个小时内可以训练完成,项目提供了开源的数据来源在modelscope和huggingface
2. 关于本系列的结构
| 篇 | 标题 | 主题 | 核心代码位置 | 关键概念 |
|---|---|---|---|---|
| 00 | 导读与系列地图 | 本页 | – | – |
| 01 | 01-模型骨架与前向回路 | 总体骨架 | MiniMindConfig .RMSNorm .Block .ForCausalLM | 残差流 / Pre-Norm / SwiGLU / tie_weight |
| 02 | 02-RoPE位置编码与YaRN外推 | 位置编码 | precompute_freqs_cis .apply_rotary_pos_emb | 旋转数学 / 相对位置 / YaRN |
| 03 | 03-自注意力机制精读 | 注意力 | Attention .repeat_kv | GQA / QK-Norm / Flash / KV Cache |
| 04 | 04-稀疏MoE路由与负载均衡 | 稀疏MoE | MOEFeedForward | 路由 / top-k / aux_loss |
| 05 | 05-数据管线与自回归目标设计 | 训练数据 | lm_dataset .SFTDataset | 右padding / -100 / shifted CE |
| 06 | 06-训练工程学 | 训练算法 | train_pretrain .lr调度 | warmup / grad accumulation / 分布 |
| 07 | 07-微调:LoRA与蒸馏 | 微调 | model_lora .train_lora .train_distillation | LoRA / 蒸馏 |
| 08 | 08-偏好对齐:DPO与强化学习 | 对齐 | train_dpo .train_grpo .rollout_engine | DPO / GRPO / PPO |
3. 两条线:架构线 vs 训练算法线
系列在结构上分成两条线,架构线是训练线的输入前提(训的是架构线搭出来的模型):
架构线(模型结构) 训练算法线
───────────────────── ─────────────────────
01 骨架与回路 ─┐ 05 数据管线
02 RoPE ├─ 模型本体 06 训练工程
03 注意力 │ (被训练/微调/对齐) 07 微调
04 稀疏MoE ─┘ 08 偏好对齐
- 架构线(01–04):回答模型长什么样、一个 token 如何一步步变成 logits。这是精读的主干,也是理解一切训练算法的地基。
- 训练算法线(05–08):回答如何把模型从随机权重训成会说话。从数据、优化器、到微调与对齐,逐级而上。
建议阅读顺序:01 → 02 → 03 → 04(架构,顺序依赖)→ 05 → 06(训练)→ 07 → 08(微调与对齐)。
4. 前置知识和部署教程
4.1 前置知识
- 对PyTorch库和Transformers库有基本了解
- 了解原版Transformer、GPT、Bert的实现逻辑
4.2 怎么对照代码自己运行
拉取MiniMind仓库代码后新建python虚拟环境并pip install -r requirement.txt即可
python model/model_minimind.py # 模型本身
python train_pretrain.py # 预训练
python eval_llm.py --inference_rope_scaling # 带 YaRN 推理
5. 系列使用约定
- 代码引用:正文代码块直接来自
model_minimind.py等,标注行号; - 数学记号:向量/矩阵用大写 ;内积 ;缩放因子 ;
- 致谢:所有代码、配置与演示均来自 jingyaogong/minimind 开源项目,特此致谢。
- 本文的代码行数以作者本人拉取时的为准,commit编号为[
d65ef2c]
评论