BotOf TechAI / IoT / Full-Stack / 植物养护知识分享
BotOf TechAI Engineering Curriculum

AI 研发深潜AI DEV DEEP DIVE

从 Transformer 的一行公式,走到可复现的系统实验。这里不把“看过、跑过”当作掌握, 只认可以被推导、实现、测量和解释的证据。

12
周进阶路线
10
核心机制
09
可验收实验
18
一手资料
LEARNING TRACE / 001EVIDENCE LOOP
x → Q,K,V → logits → loss
01推导写出公式、形状与假设
02实现最小代码与单元测试
03测量效果、显存、吞吐、方差
04解释用证据支持或推翻主张
MASTERED := REPRODUCIBLE(PROOF)v1.0 / 12W

不是三门课,
是一条工程证据链。

截图中的“理论、微调、论文”方向是对的,但真正有效的学习顺序不是堆课程,而是让每一层都给下一层提供可验证的基础。

不会推导 QKV,就难以判断 KV Cache 优化改了什么;没有数据与评测基线,LoRA 的分数提升无法归因;没有资源指标,论文复现就只剩“代码跑通”。

  1. 01
    夯实底层理论与架构把 Transformer 从 API 名词还原为张量形状、计算图和概率分布;能解释每一步,也能独立写出最小实现。
  2. 02
    聚焦微调实战演练微调不是“跑通 Trainer”,而是从任务定义、数据质量、参数策略到实验可复现的一条工程链。
  3. 03
    剖析并复现系统论文读论文的目标不是复述摘要,而是把核心主张变成可证伪假设,用基线、消融和资源指标检验。

12 周,把知识变成作品。

0%

0 / 12 周完成进度只保存在当前浏览器

Derive before you call

夯实底层理论与架构

把 Transformer 从 API 名词还原为张量形状、计算图和概率分布;能解释每一步,也能独立写出最小实现。

  • 手推 scaled dot-product attention 与反向传播
  • 独立实现 tokenizer → logits → decoding 全链路
  • 写出带 mask、残差、归一化的最小 Transformer
W017–9h

矩阵、概率与反向传播

梯度究竟如何从 loss 回到每一层参数?

学习
  • 矩阵乘法与广播的形状推导
  • 链式法则、Jacobian 与计算图
  • softmax、交叉熵与数值稳定性
动手
  • 手算两层 MLP 的一次前向和反向
  • 用有限差分检查 autograd 梯度
  • 记录梯度爆炸、消失的触发条件
验收证据一份逐元素梯度核对表,误差 < 1e-5
进入本课正文
W028–10h

QKV 与多头注意力

为什么 QKᵀ 要除以 √dₖ,多头到底分开了什么?

学习
  • Q、K、V 的投影与相似度空间
  • causal/padding mask 的作用时机
  • 多头拼接、输出投影与复杂度
动手
  • NumPy 实现单头注意力
  • PyTorch 实现多头注意力并对齐官方模块
  • 画出每个张量的 batch/head/sequence 维度
验收证据自研实现与 torch 参考输出最大误差 < 1e-5
进入本课正文
W039–12h

Transformer 最小闭环

残差、LayerNorm、FFN 和位置编码各解决什么问题?

学习
  • Pre-Norm 与 Post-Norm
  • 位置编码和相对位置信息
  • 参数初始化、dropout 与训练稳定性
动手
  • 实现一个 decoder-only Tiny Transformer
  • 在字符级语料上过拟合一个小批次
  • 观察移除残差或归一化后的训练曲线
验收证据可训练仓库 + 消融对比图 + 300 字结论
进入本课正文
W047–9h

Tokenizer 到文本生成

一段文本如何变成 token,又如何逐 token 回到文本?

学习
  • BPE/WordPiece/Unigram 的合并逻辑
  • logits、temperature、top-k、top-p
  • prefill、decode、EOS 与停止条件
动手
  • 拆解 Hugging Face pipeline 的每一步
  • 不用 generate() 写贪心与采样循环
  • 记录每步 token、概率、耗时和缓存长度
验收证据一张完整推理 trace:文本 → ids → logits → token
进入本课正文

十个必须讲透的机制。

理论 / 01

QKV 不是三个魔法字母

Query 表达“当前 token 想找什么”,Key 表达“每个 token 可被如何匹配”,Value 承载真正被聚合的信息。

Attention(Q,K,V) = softmax(QKᵀ / √dₖ + M)V
核心推导
  • 若 q、k 的分量方差约为 1,点积方差随 dₖ 增长;除以 √dₖ 让 logits 保持可训练尺度,避免 softmax 过早饱和。
  • mask M 应在 softmax 前加到 logits;padding mask 与 causal mask 解决的是两种不同的不可见性。
  • 多头并不是复制同一注意力,而是让不同投影子空间独立形成匹配与聚合,再经 Wᵒ 混合。
工程判断

调试时先打印 [batch, heads, seq, head_dim],再检查 mask 广播;多数“注意力不收敛”先是形状或 mask 错。

常见假掌握

只会背公式,却解释不了缩放项、mask 时机和输出形状。

掌握标准不看框架,用 NumPy 写出前向,并与 PyTorch 输出逐元素对齐。
理论 / 02

把反向传播看成向量–Jacobian 乘积

深度学习框架通常不显式构造巨大 Jacobian,而是沿计算图反向累计 vector–Jacobian products。

∂L/∂x = (∂y/∂x)ᵀ · ∂L/∂y
核心推导
  • 前向保存必要中间量,反向按拓扑逆序应用局部导数;分支汇合处梯度相加。
  • 梯度检查使用中心差分 [f(x+ε)-f(x-ε)]/(2ε),但 ε 太大有截断误差,太小有浮点误差。
  • 混合精度下要区分参数精度、计算精度和梯度缩放,NaN 不一定来自数据。
工程判断

监控 gradient norm、activation statistics 与 loss scale,比只盯 loss 更早发现训练失稳。

常见假掌握

把 requires_grad=True 当作理解 autograd,却无法解释 detach、in-place 和梯度累积。

掌握标准手算一个两层网络,并用有限差分证明自定义算子的 backward。
理论 / 03

Tokenizer 决定模型看见什么

模型从未直接看见文字;词表、规范化、预分词和特殊 token 共同决定序列长度与语义边界。

text → normalize → pre-tokenize → subword ids → embedding
核心推导
  • 比较 tokenizer 不能只看词表大小,要测目标语料的平均 token/字符、未知片段和边界一致性。
  • 新增 token 后必须同步 resize embedding;chat template 错一个角色标记,也会造成训练–推理分布偏移。
  • 截断位置、padding 方向和 label mask 会直接改变监督信号。
工程判断

为数据流水线保存 token 长度分布、截断率、特殊 token 命中率和 decode round-trip 样例。

常见假掌握

数据清洗只看字符串,不看 token 化后的真实长度和被截断的答案。

掌握标准能逐步复现 pipeline,并解释每个 token id 的来源。
微调 / 04

先判断是否真的需要微调

微调适合改变稳定行为、格式或任务能力;需要频繁更新的事实通常更适合 RAG,少量行为约束先尝试提示词。

核心推导
  • Prompt:零训练成本、迭代快,但上下文成本和稳定性受限。
  • RAG:更新知识而不改权重,但依赖检索质量、切分和引用评测。
  • PEFT:少量可训练参数适合行为和领域适配;全参微调只在数据、预算和收益证据充分时考虑。
工程判断

先建立不微调的 baseline;如果没有基线,就无法证明训练带来的增益值得复杂度。

常见假掌握

看到效果不好就上 LoRA,却没有区分知识缺失、检索失败、提示不清和能力不足。

掌握标准面对一个业务目标,能给出 Prompt/RAG/PEFT/Full FT 的成本–风险–验证矩阵。
微调 / 05

LoRA 的收益来自低秩假设

冻结原权重 W,只学习 ΔW = BA;当任务更新可由低秩子空间表达时,以更少参数逼近全参更新。

ΔW = (α/r)BA; params = r(dᵢₙ + dₒᵤₜ)
核心推导
  • rank r 控制容量,不是越大越好;alpha 决定更新缩放,dropout 是正则化而非必选仪式。
  • target_modules 决定更新落在哪里;只改 q/v 与覆盖所有线性层的能力和成本不同。
  • QLoRA 的基座权重被量化以省显存,但 adapter 的训练精度、反量化计算和优化器状态仍需单独核算。
工程判断

报告 trainable params、峰值显存、tokens/s、加载/合并方式与最终服务延迟,不只报告 eval score。

常见假掌握

只写 r=8 就声称高效,没有给出参数量、显存和效果的对照。

掌握标准能对任意线性层现场算出全参和 LoRA 的参数比。
微调 / 06

数据质量要能被审计

训练数据不是一堆 JSONL,而是一份带来源、许可、版本、清洗规则、切分策略和风险记录的工程制品。

核心推导
  • 先做 exact/near duplicate,再按用户、文档或语义组切分,避免同源内容跨 train/test。
  • 对指令数据统计角色缺失、空答案、拒答比例、长度分布和模板一致性。
  • 黄金评测集必须冻结;调参过程中反复查看测试集会把测试集变成训练信号。
工程判断

为每次运行记录 dataset revision/hash;清洗脚本、原始数据和派生数据要有可追踪血缘。

常见假掌握

随机逐行切分高度相似数据,得到漂亮但虚假的验证分数。

掌握标准别人仅凭数据卡与脚本,能重建同一切分并得到相同样本数量。
微调 / 07

训练可观测性不等于画一条 Loss 曲线

一次可解释的实验必须同时记录输入条件、训练动力学、资源曲线和输出质量。

run = code SHA + data hash + config + seed + hardware + artifacts + metrics
核心推导
  • 优化:train/eval loss、learning rate、gradient norm、样本级错误。
  • 系统:tokens/s、step time、GPU utilization、allocated/reserved memory、data wait。
  • 谱系:代码提交、依赖锁、数据版本、基座模型 revision、checkpoint 和评测配置。
工程判断

异常时先用时间线关联 loss spike、学习率、数据 batch 和显存,而不是凭感觉修改三个超参。

常见假掌握

实验名字叫 test-final-v2,无法回答哪次运行使用了哪个数据和权重。

掌握标准任意选一条历史曲线,都能在 15 分钟内复现其环境与配置。
系统 / 08

KV Cache 是并发容量的隐形账本

自回归 decode 会复用历史 token 的 K/V,避免每一步重复计算;代价是缓存随层数、序列和并发增长。

KV bytes ≈ 2 × L × T × Hₖᵥ × Dₕ × bytes × batch
核心推导
  • 2 代表 K 与 V;GQA/MQA 通过减少 Hₖᵥ 显著压缩缓存,而不只是改注意力名称。
  • prefill 关注 TTFT 和大矩阵吞吐,decode 关注 TPOT、内存带宽和批处理调度。
  • PagedAttention 解决变长请求的内存碎片与共享问题;量化缓存则用精度换容量。
工程判断

容量规划先算单请求理论 KV,再叠加权重、激活、运行时预留和碎片,不能只看模型文件大小。

常见假掌握

把上下文窗口设大后才发现并发骤降,或用平均长度掩盖 P99 长请求。

掌握标准给定模型 config、精度、上下文和并发,能估算缓存并用 profiler 验证。
系统 / 09

MoE 的稀疏计算仍要支付路由与通信

MoE 用 router 为每个 token 选择少数专家,使总参数增长而单 token 激活参数受控;系统瓶颈常转移到负载和网络。

p(expert|x) = softmax(Wᵣx); y = Σᵢ∈top-k pᵢ Eᵢ(x)
核心推导
  • capacity factor 决定每个专家可接收 token 上限;过低会丢 token,过高会浪费显存和计算。
  • 负载均衡辅助损失防止 router 坍塌,但也可能与主任务目标产生张力。
  • 跨卡 expert parallel 需要 All-to-All;专家利用率均衡不等于端到端吞吐就高。
工程判断

至少监控每专家 token 数、丢弃率、router entropy、通信占比和最慢专家时间。

常见假掌握

只比较激活参数量,忽略专家权重常驻显存和跨设备通信。

掌握标准能构造路由坍塌、观察指标,并说明三种缓解方法的代价。
系统 / 10

论文复现是检验主张,不是抄官方仓库

先把论文主张翻译成可证伪假设,再确定最小基线、唯一变量和能推翻结论的指标。

核心推导
  • Claim:作者声称机制 A 在约束 C 下改善指标 M;复现必须保留 C,并明确 M 的测量协议。
  • Baseline first:先重现基线,否则新机制的差异没有可信参照。
  • 记录负结果、环境偏差和缩放限制;有限算力下的轻量复现不应伪装成完整复现。
工程判断

锁定 seed、commit、依赖、数据 hash、硬件、精度、warmup 和评测脚本,并保存原始日志。

常见假掌握

只跑通作者 demo 就宣布复现成功,既没有基线,也没有独立指标。

掌握标准第三方能运行你的命令,并从原始日志重建报告中的每个表格。

实验结果,才是学习记录。

LAB-01基础

有限差分验证 Autograd

证明你理解梯度,而不是只会调用 backward()。

  1. 实现带 ReLU 的两层 MLP
  2. 手写中心差分梯度检查
  3. 比较 float32/float64 与不同 ε
必须测量max absolute errorrelative error运行时间
交付物gradient-check.ipynb + 一页误差分析
LAB-02基础

从零实现多头注意力

用张量形状和单元测试吃透 QKV、mask 与 head merge。

  1. NumPy 单头版本
  2. PyTorch batch 多头版本
  3. 复制官方权重并对齐输出/梯度
必须测量forward diffgradient diffmask correctness
交付物attention.py + pytest + shape trace
LAB-03基础

解剖文本生成流水线

不用 pipeline()/generate() 完成逐 token 推理。

  1. 打印 tokenizer 每个阶段
  2. 实现 greedy/top-k/top-p
  3. 加入 EOS、重复惩罚与 seed
必须测量TTFTTPOTtoken probabilityoutput reproducibility
交付物generation-trace.json + 可视化时序图
LAB-04进阶

GLUE 上的 LoRA 对照实验

建立可比较基线,量化参数效率而非只报告准确率。

  1. 选择 SST-2/MRPC 子任务
  2. 跑冻结头、LoRA 两组 rank
  3. 固定 split 和三组 seed
必须测量task metrictrainable paramspeak VRAMtokens/s
交付物W&B project + data card + ablation report
LAB-05进阶

制造并侦测数据泄漏

识别“指标提升”可能只是切分污染。

  1. 构造近重复样本跨 split
  2. 比较随机切分和按语义组切分
  3. 实现 MinHash/embedding 去重检查
必须测量duplicate ratemetric inflationcluster overlap
交付物leakage-audit.md + 清洗脚本
LAB-06进阶

训练事故演练

用可观测数据定位 OOM、loss spike 与吞吐下降。

  1. 主动制造三类异常
  2. 记录 batch/系统/训练指标
  3. 只根据时间线提出并验证根因
必须测量detection latencyroot-cause evidencerecovery steps
交付物incident timeline + runbook
LAB-07系统

KV Cache 容量与性能剖析

把理论显存公式和真实服务容量对齐。

  1. 读取模型 config 计算单 token KV
  2. 压测不同上下文和 batch
  3. 比较 cache on/off 与不同 cache 策略
必须测量TTFTTPOTpeak VRAMmax concurrency
交付物profile.csv + 容量模型 + 偏差解释
LAB-08系统

Toy MoE 路由实验

观察稀疏专家的容量、坍塌和负载均衡代价。

  1. 实现 4 experts/top-2 router
  2. 构造偏斜 token 分布
  3. 加入 balancing loss 比较前后
必须测量expert utilizationdrop raterouter entropystep time
交付物routing dashboard + 结论 memo
LAB-09系统

论文最小可行复现

在有限算力下检验一条核心主张。

  1. 写 claim card
  2. 重现 baseline
  3. 只替换一个机制并做三 seed
必须测量paper metricVRAMlatency/throughputvariance
交付物仓库 + env lock + 原始日志 + 复现报告

论文复现前,先写下
什么会推翻你的结论。

把阅读从“作者说了什么”改成“证据是否足以支持主张”。有限算力可以缩小模型和数据,但不能省略基线、单变量、资源指标与失败记录。

CLAIM CARD / TEMPLATE
Claim
机制 A 在约束 C 下改善指标 M
Baseline
不含 A,其他条件严格相同
Falsifier
何种结果足以否定这条主张
Budget
GPU、时长、数据、精度与缩放边界
  1. 01
    锁定主张

    把摘要拆成可以测量、也可能失败的假设。

  2. 02
    重现基线

    基线不可信,新机制的增益就没有参照。

  3. 03
    只改一项

    固定数据、预算、评测和训练步数,隔离变量。

  4. 04
    测效果与系统

    同时报告质量、方差、显存、吞吐和延迟。

  5. 05
    对照官方实现

    解释差异来自代码、环境、缩放还是论文细节。

  6. 06
    保留负结果

    失败日志与边界条件,是复现报告的一部分。

experiment.yaml
claim: ""
baseline: ""
code_sha: ""
dataset_hash: ""
model_revision: ""
seed: [17, 42, 73]
hardware: ""
precision: ""
metrics: [quality, peak_vram, throughput, latency]
falsifier: ""

从一手资料开始,不在二手总结里打转。

阅读顺序:课程建立地图 → 论文确认机制 → 文档完成实现 → 基准验证结果。

架构基础

微调工程

推理系统

论文演进

START SMALL. MEASURE EVERYTHING.

下一步不是再收藏一门课,
而是完成 LAB-01

回到路线图