NanoTransformer Courses

🏠 Back to Lab 📚 All Courses

🎓 Transformer 乘法大师课:从九九乘法表到 DeepSeek-V3

目标: 从最简单的 9×9 乘法表开始,逐步升级到 4 位数 CoT 乘法,100% 正确率,最终实现 DeepSeek-V3 的核心架构创新 基础: 基于 transformer_cot 项目迭代升级


课程总览

章节 主题 核心技术 目录 状态
Ch0 九九乘法表 Nano Transformer 白盒实验 ../index.html ✅ 完成
Ch1 CoT 基础 分步乘法+加法, 泛化验证 ch1_cot_basics.html ✅ 完成
Ch2 RoPE 位置编码 旋转位置编码, 长度外推 ch2_rope.html ✅ 完成
Ch3 RL 自我进化 GRPO, 从2位数进化到3-5位数 ch3_rl_scaling.html ✅ 完成
Ch4 KV Cache 优化 缓存机制, 推理加速 ch4_kv_cache.html ✅ 完成
Ch5 Attention 优化 FlashAttention, AttnRes, 4d 极限 ch5_attention_opt.html ✅ 完成
Ch6 DeepSeek-V3/V4 前沿 MLA, MoE, CSA, HCA, mHC ch6_deepseek_v4.html ✅ 完成
Ch7 3D 矩阵流可视化 Three.js, Forward Pass 拆解 ch7_3d_visualization.html ✅ 完成
Ch8 MLP 从零手搓 纯 numpy, 反向传播, 激活函数 ch8_mlp_from_scratch.html ✅ 完成

每章独立可运行,共享基础工具库 courses/shared/


Ch0: 九九乘法表 — Nano Transformer 白盒实验 ✅

教学目标:用最小的 Transformer(d_model=16, 2 层)学会全部 100 个 1 位数乘法

核心成果: - 13 个 token 的极简词表(0-9 + * = <pad>) - 全部 10×10 = 100 个组合 100% 准确率 - 完整前向传播手算报告(每一个浮点运算可追踪) - Web UI 白盒实验室:实时查看 Embedding → Attention → FFN → Output 全流程 - 已部署到 HuggingFace Spaces

模型: d=16, h=2, L=2, 极致轻量


Ch1: CoT 基础 — 1000条数据学会2位数乘法 ✅

教学目标:用仅 3000 条数据训练 2 位数乘法,泛化到全部 9801 个组合

核心成果: - 分步 CoT 格式:45*67=S1:45*60=2700;S2:45*7=315;A1:2700+315=5013;Z3015 - 反转加法结果解决进位传播问题 - 全量 9801 = 100% 准确率

模型: d=256, h=8, L=6, ff=1024, 4.78M 参数


Ch2: RoPE — 旋转位置编码 ✅

教学目标:用 RoPE 替换 Learned PE,验证收敛加速和长度外推能力

核心成果: - 收敛速度比 Ch1 快 3 倍(99% @ epoch 42 vs 131) - 零位置编码参数(省 39,936) - 全量 9801 = 100% 准确率 - 发现 RoPE 与 FFT 相位旋转的数学统一性(傅里叶时移定理)

模型: d=256, h=8, L=6, ff=1024, 4.74M 参数 (RoPE 零参数)


Ch3: RL 自我进化 — SFT 课程学习 ✅

教学目标:通过 SFT 课程学习策略,从 2 位数扩展到 3-4 位数乘法

实际成果: - 渐进式数据课程:1d 全量 → 2d 3000 → 3d 58000 → 4d 46000 - 含零专项训练(x0x 类型)+ 加法进位专项 - 3 位数乘法 100% 准确率 - 4 位数乘法 99.9%+ 准确率(5000 题随机测试)

关键发现:SFT 课程学习在这个规模下已经足够强大,RL 的价值在更大规模/更难任务上才体现

模型: d=256, h=8, L=6, ff=1024, 4.74M 参数


Ch4: KV Cache — 长序列推理加速 ✅

教学目标: 1. 理解 KV Cache 原理:避免重复计算 2. 实现 KV Cache,对比推理速度 3. 为 4d 长序列推理提供基础设施

核心成果: - 完整的 KV Cache 实现(Prefill + Decode 两阶段) - 4d 乘法序列(~750 tokens)推理速度显著提升 - CoT 数据生成器统一化(generate_data.py 被所有后续章节复用)

核心原理

无 KV Cache: 每生成 1 个 token,重算全部 K,V → O(n²)
有 KV Cache: 只算新 token 的 Q, 复用已缓存的 K,V → O(n)

Ch5: Attention 优化 — FlashAttention + AttnRes + 4d 极限 ✅

教学目标: 1. 手写 FlashAttention(block-wise online softmax),理解 IO 优化原理 2. 实现 Kimi AttnRes(动态层间聚合),对比训练稳定性 3. 将 4d×4d 乘法推到 100% 准确率极限

核心成果: - 手写 FlashAttention 验证数学等价性(注意力矩阵存储减 62%) - 实际训练使用 F.scaled_dot_product_attention 获得 CUDA 级加速 - Standard 模型 4d×4d = 100%(5000 题随机测试) - AttnRes 模型 4d×4d = 99.9%(5000 题随机测试)

关键发现: - AttnRes 发现 U 形聚合模式:最终层给 Layer 0 分配 ~31.6% 权重("回头看"现象) - AttnRes 过度训练会导致 Feature Collapse(回声效应)→ Vanilla Transformer 更鲁棒 - FlashAttention 的核心不是算法创新,是对 GPU 内存层级的工程洞察

模型: d=256, h=8, L=6, ff=1024, 4.74M 参数


Ch6: DeepSeek-V3/V4 前沿 — MLA + MoE + CSA/HCA + mHC ✅

教学目标: 1. Part 1 (V3): MLA + MoE + 错题本微调 2. Part 2 (V4): CSA + HCA + mHC — 百万 token 上下文压缩

Part 1 核心成果 (V3)

A/B 对比(5000 题 4d×4d 随机测试)

配置 参数量 KV Cache 准确率
baseline (标准 MHA + FFN) 4.74M 12,288 B/tok 96.86%
mla_only (MLA + FFN) 4.64M 4,608 B/tok 99.76%
moe_only (MHA + MoE) 7.91M 12,288 B/tok 96.88%
full_ds (MLA + MoE) 7.81M 4,608 B/tok 99.78%

错题本微调

配置 微调前 微调后 微调数据 耗时
baseline 96.86% 99.96% 2308 条 (1.7%) 27s
mla_only 99.76% 100.00% 713 条 (0.5%) 18s
moe_only 96.88% 99.96% 2297 条 (1.7%) 33s
full_ds 99.78% 99.76% ⚠️ 702 条 (0.5%) 21s

Part 2 核心发现 (V4): - V4 的 CSA (4:1) + HCA (128:1) 是为百万 token 设计的序列维度压缩 - 在 750 token 的算术任务上,CSA/HCA 回退到标准 attention,压缩路径未被激活 - mHC 超连接改变收敛动力学,训练速度慢 4x (33 min/ep vs 8 min/ep) - 架构创新必须匹配问题规模 — 最重要的教学发现

关键发现: - MLA 是最大赢家:更少参数 + 更少内存 + 更高准确率。低秩压缩 = 天然正则化 - 错题本微调极其高效:用 1.7% 的数据 + 1% 的时间修补 157 个错误到仅剩 2 个 - V3 压 head 维度,V4 压序列维度:两个正交的压缩方向

模型: baseline 4.74M / V4 hybrid 7.99M 参数


全课程验收指标

章节 指标 目标 实际
Ch0 1 位数全量准确率 100% 100%
Ch1 2 位数全量准确率 100% 100% (9801/9801)
Ch2 收敛加速 + 全量准确率 3x + 100% 3x + 100%
Ch3 3-4 位数准确率 3d 100%, 4d >98% 3d 100%, 4d 99.9%
Ch4 KV Cache 推理加速 长序列加速 O(n²)→O(n)
Ch5 4d×4d 5000 题 >99% Standard 100%
Ch6 V3 KV Cache 压缩 + MoE 均衡 >2x 压缩 2.7x 压缩, 25%×4
Ch6 V3 错题本微调 MLA 100% MLA 5000/5000 = 100%
Ch6 V4 CSA/HCA/mHC 实现 代码可运行 模型创建+训练验证
Ch8 MLP 纯 numpy 100% 100% (100/100) ReLU 294 epochs

核心技术演进路线

Ch0 (16维, 100题)
 │  理解 Transformer 内部机制
 ▼
Ch1 (256维, 9801题)
 │  CoT 分步推理 + 反转加法
 ▼
Ch2 (RoPE)
 │  旋转位置编码 → 3x 收敛加速
 ▼
Ch3 (SFT 课程学习)
 │  1d→2d→3d→4d 渐进式扩展
 │  含零专项 + 加法进位专项
 ▼
Ch4 (KV Cache)
 │  Prefill + Decode → 长序列推理加速
 ▼
Ch5 (FlashAttention + AttnRes)
 │  IO 优化 + 动态残差 → 4d 100%
 │  发现 Feature Collapse → Vanilla 更鲁棒
 ▼
Ch6 (DeepSeek-V3: MLA + MoE)
 │  KV 压缩 2.7x + 专家均衡 + 错题微调
 │  MLA 微调后 5000/5000 = 100%
 ▼
Ch8 (MLP 从零手搓)
 │  纯 numpy 实现反向传播
 │  10,834 参数 100% 背诵 99 乘法表
 │  理解:MLP=查表,Transformer=查表+路由
 ▼
 🎓 完结

关键认知收获

  1. CoT 是让小模型学会复杂推理的关键:4.7M 参数的模型能算对 4 位数乘法(8 位数结果),靠的不是记忆,是分步推理
  2. 数据工程比模型架构更重要:含零专项、加法进位专项、渐进式课程——这些数据策略的贡献远大于换一个新架构
  3. 压缩即正则化:MLA 用更少的维度表示 KV,反而比完整 MHA 学得更好(99.76% vs 96.86%)
  4. 工程细节决定成败:inplace tensor 修改导致 autograd 失败、RoPE 与 FlashAttention 的交互、MoE 路由漂移——每一个都是真实的工程坑
  5. Vanilla Transformer 极其鲁棒:各种花哨的架构改进(AttnRes、MoE)在小规模下未必优于标准架构。简单就是美
  6. 错题本微调是后训练最高效的修补方式:用 1.7% 的数据修复 96.86% → 99.96%,这就是工业界对齐大模型的核心手法