时长 6–7 小时:真题(1.5h 作答 + 0.5h 对答案)· 自编模拟卷(1.5h)· 错题溯源与补漏(2h)· §3 补漏三讲(1h)
考试范围 Lecture 1–4,也就是第 1–2 周的全部内容,外加第 0 周打下的基础。
配套代码
w3day1_checks.py(纯 numpy):标签平滑的最优解与硬标签下 logit 的无界增长、推测解码的接受-拒绝规则(精确与蒙特卡洛)和期望产出、PagedAttention 的显存利用率、模拟卷全部计算题的标准答案今天的目标:在闭卷、计时的条件下做一次真实检验;把每一道错题定位到具体的章节并重学;补上前两周讲得不够的三个考点(标签平滑、推测解码、PagedAttention)。
§0 今天怎么安排
学习计划的原话是:“闭卷、计时、手写。做完再对答案。错的每一题回到对应讲次重看那一段。这是第一次真实检验,别自欺欺人。”
| 时段 | 做什么 | 要点 |
|---|---|---|
| 上午 1.5h | 2025 期中真题(§1) | 闭卷,手机放到另一个房间,严格 90 分钟 |
| 0.5h | 对答案、给自己打分 | 选择题直接对;简答题按官方答案的要点逐条给分,没写到的要点不给分 |
| 下午 1.5h | 本文的模拟卷(§C) | 同样闭卷计时。它覆盖的考点和真题互补,计算题多一些 |
| 0.5h | 对模拟卷答案(§D) | |
| 2h | 错题溯源(§2) | 每道错题找到对应小节,重读、重推,写进疑问清单 |
| 1h | 补漏三讲(§3) | 真题里出现过、但前两周只提了一句的三个点 |
先考试,后读 §3。 §3 的内容就是考点,先读了等于提前看答案。
今天要用到的旧结论:全部。这正是期中的意义。
§1 考试是什么样的
2025 年秋季学期的期中卷和答案在课程主页公开:
- 试卷:https://cme295.stanford.edu/exams/fall25-cme295-midterm.pdf
- 答案:https://cme295.stanford.edu/exams/fall25-cme295-midterm-solutions.pdf
结构:90 分钟、100 分、闭卷(不许带笔记、电脑、手机,不许用 AI)。四个部分对应四讲,每部分 25 分:8 道选择题 + 2 道简答题。
| 部分 | 对应 | 选择题涉及 | 简答题的类型 |
|---|---|---|---|
| 1 | Lecture 1 Transformer | 分词、word2vec、RNN、注意力、归一化 | 写出公式并解释各部分的作用;解释一个训练技巧的目的 |
| 2 | Lecture 2 Transformer 变体 | 位置编码、BERT、架构、RoPE、稀疏注意力、掩码 | 比较几种架构;解释一种机制和它的好处 |
| 3 | Lecture 3 LLM | 定义、MoE、KV Cache 与推理系统、采样与温度 | 定义一个训练问题并给出对策;从几个维度比较解码策略 |
| 4 | Lecture 4 训练 | 预训练目标、数据、SFT、LoRA、混合精度、FlashAttention、ZeRO | 解释一个训练阶段的目标与难点;解释一个算法的核心思想与收益 |
从结构里能读出的三件事:
- 简答题考的是”为什么”:几乎每道都是”是什么 + 为什么这样设计 + 带来了什么”。这正是我们四拍写法(动机 → 直觉 → 推导 → 意义与代价)要训练的东西。§A 给了一个答题模板。
- 选择题覆盖面很广,会考到前两周只一笔带过的点。§3 补了其中最可能出现的三个。
- 计算量不大,但要会估算:KV Cache、参数量、显存这类题目在我们的模拟卷里多放了几道,因为面试也最爱问。
注意:课程主页上 2026 年的新版大纲已经调整了讲次(例如把强化学习提前、增加了系统与智能体两讲)。我们的学习计划沿用 2025 版的九讲顺序,期中也用 2025 版的真题。
§2 错题溯源表
每道错题,按下表找到对应的小节。重读不够,要合上书把那一段的推导重写一遍(学习计划”执行纪律”第 1 条)。
2.1 Lecture 1:Transformer 基础
| 考点 | 去哪里看 |
|---|---|
| one-hot 的问题、分布式表示 | Week 0 Day 3 §1 |
| word2vec:skip-gram、负采样、噪声分布的 0.75 次方 | Week 0 Day 3 §3.1–3.5 |
| GloVe 与”两派是一回事” | Week 0 Day 3 §4 |
| 分词:为什么不用词、不用字符;BPE | Week 0 Day 3 §7;Week 1 Day 2 §6 |
| WordPiece、Unigram、SentencePiece | Week 1 Day 2 §6.2–6.4 |
| RNN、BPTT、梯度消失的谱半径条件 | Week 0 Day 4 §2 |
| LSTM 的三个门、为什么能缓解梯度消失 | Week 0 Day 4 §3.3–3.4 |
| Seq2Seq 的信息瓶颈、teacher forcing | Week 0 Day 4 §4 |
| 注意力的诞生、Q/K/V 的来历 | Week 0 Day 4 §5 |
| 缩放点积注意力、为什么除以 | Week 1 Day 1 §2.1;Week 0 Day 4 §5.5 |
| 为什么要三个投影;置换等变 | Week 1 Day 1 §1.4–1.5 |
| 掩码:因果与 padding | Week 1 Day 1 §3 |
| 多头:为什么是切分而不是复制 | Week 1 Day 1 §4 |
| 复杂度、显存、为什么训练能并行 | Week 1 Day 1 §5 |
| LayerNorm、RMSNorm、Pre-LN vs Post-LN | Week 0 Day 2 §4.3–4.5;Week 1 Day 2 §2 |
| FFN 与键值记忆、为什么 4 倍 | Week 1 Day 2 §1 |
| dropout 放在哪;标签平滑 | Week 1 Day 2 §2.4;今天 §3.1 |
2.2 Lecture 2:Transformer 变体与技巧
| 考点 | 去哪里看 |
|---|---|
| 正弦位置编码、相对位移是旋转、投影后失效 | Week 1 Day 2 §3.3–3.6 |
| 可学习的绝对位置编码 | Week 1 Day 2 §3.7 |
| RoPE 的推导与性质 | Week 1 Day 5 §2 |
| 长度外推:PI、NTK、YaRN、ALiBi | Week 1 Day 5 §3 |
| 编码器、解码器与三种架构 | Week 1 Day 2 §4 |
| KV Cache、MQA、GQA | Week 1 Day 4 §1–2 |
| 稀疏注意力(滑动窗口、全局 token)、线性注意力 | Week 1 Day 6 §1–2 |
| FlashAttention | Week 1 Day 6 §3 |
| BERT:MLM 的 80/10/10、NSP、微调 | Week 1 Day 6 §4.2–4.4 |
| BERT 变体、为什么不能直接生成 | Week 1 Day 6 §4.6–4.7 |
2.3 Lecture 3:大语言模型
| 考点 | 去哪里看 |
|---|---|
| LLM 的定义、为什么 decoder-only | Week 2 Day 1 §1 |
| 缩放律、Chinchilla | Week 2 Day 1 §2–3 |
| MoE:路由、总参数 vs 激活参数 | Week 2 Day 2 §1–2 |
| 路由坍缩与负载均衡损失、容量因子、z-loss | Week 2 Day 2 §3 |
| KV Cache 的显存公式与 roofline | Week 1 Day 4 §1.4–1.5 |
| PagedAttention、推测解码 | Week 1 Day 4 §1.6、§4;今天 §3.2–3.3 |
| 贪心、beam search、长度归一化 | Week 2 Day 3 §1 |
| 温度、top-k、top-p、min-p、重复惩罚 | Week 2 Day 3 §2;Week 0 Day 5 §5 |
| 上下文长度的代价、迷失在中间 | Week 2 Day 3 §3 |
| 提示、ICL、CoT、自洽性 | Week 2 Day 3 §4–5 |
2.4 Lecture 4:训练
| 考点 | 去哪里看 |
|---|---|
| 预训练目标、数据清洗与去重、数据混合 | Week 2 Day 4 §1;Week 2 Day 1 §1.2 |
| loss spike | Week 2 Day 4 §2 |
| FP16 vs BF16、混合精度、fp32 主权重 | Week 2 Day 4 §3 |
| 显存账、梯度检查点、梯度累积 | Week 2 Day 4 §4;Week 0 Day 1 §9 |
| DDP、ZeRO、FSDP、TP、PP | Week 2 Day 4 §5 |
| 量化 | Week 2 Day 5 |
| SFT(指令微调)、chat template、只在回答上算 loss | Week 2 Day 6 §1 |
| LoRA、QLoRA | Week 2 Day 6 §3–4 |
2.5 怎么记录
每道错题写一行,放进疑问清单:
[真题 3.2] 选了 B,应为 D。错因:把"总参数"当成了"激活参数"。
回到 Week 2 Day 2 §2.2 重推了一遍 Mixtral 的计数。一句话结论:显存看总参数,算力看激活参数。
错因要分类:概念没懂 / 推导不熟 / 记混了 / 审题错。前两类必须回去重学;第三类做一张对比表;第四类练习时刻意放慢读题。
§3 补漏三讲
3.1 标签平滑(label smoothing)
动机:交叉熵用 one-hot 目标时,最优解是正确类概率等于 1,也就是正确类的 logit 比其他类大无穷多。模型会一直把 logit 往外推,变得过度自信。
做法:把目标换成 。原始 Transformer 用了 (Week 1 Day 2 §4.1 的配置表)。
推导:交叉熵 对 logits 的梯度是 (Week 0 Day 1 推过 的情形)。令它为 0 得 :最优解就是平滑后的目标本身。于是正确类与其他类的 logit 差是一个有限值
w3day1_checks.py 第 1 组(,,从 0 开始梯度下降):
| 步数 | 10 | 100 | 1000 | 10000 | 100000 |
|---|---|---|---|---|---|
| 硬标签:logit 差 | 3.74 | 6.19 | 8.51 | 10.82 | 13.12 |
| 标签平滑:logit 差 | 3.24 | 3.83 | 3.83 | 3.83 | 3.83 |
硬标签下,logit 差每多训练 10 倍就再涨约 2.3(),永远不停;标签平滑收敛到 。 时这个上限是 12.57。
意义与代价:
- 收益:模型不再过度自信,校准更好,常常泛化也更好。
- 代价:它故意不去拟合真实的 one-hot。即使模型完美地学会了平滑目标,在确定性标签上的 NLL 也有 的下限(、 时约 0.105 nats;上表的 时是 0.083),困惑度会变差。Transformer 原论文的原话大意是:“这会伤害困惑度,但提高了准确率和 BLEU。”
- LLM 预训练一般不用:数据量极大,过拟合不是主要矛盾(和 dropout 的理由一样,Week 1 Day 2 §2.4)。
3.2 推测解码(speculative decoding)
动机:batch 1 的解码受访存限制(Week 1 Day 4 §1.5)。每出一个 token 都要把几十 GB 权重从显存读一遍,算力大部分闲着。如果大模型一次前向能验证好几个位置,读一遍权重就能出好几个 token。
直觉:让一个便宜的小模型 先连续猜 个 token,大模型 用一次前向同时算出这 个位置、再加上后面一个位置的分布(共 个,相当于一次长度为 的 prefill),然后逐个决定接受还是拒绝。
规则(Leviathan et al. 2023;Chen et al. 2023):对小模型猜的 token ,
- 以概率 接受;
- 一旦拒绝,从 里重新采一个 token,丢掉后面的猜测;
- 如果 个全被接受,大模型那次前向在第 个位置的分布白送一个 token。
推导:输出分布恰好是 。 记 ,它是接受概率。注意 ,所以重采分布是 。于是
这是拒绝采样的一个变体。它不是近似:输出分布与只用大模型完全相同。 第 2 组:解析的输出分布与 的最大差 ;蒙特卡洛 20 万次,经验分布与 的 TV 距离 0.0029(在抽样误差之内)。
每次大模型前向产出几个 token:若每个猜测独立地以概率 被接受,产出数是”连续接受的个数 + 1”:
| \ | 1 | 2 | 4 | 8 | 模拟() |
|---|---|---|---|---|---|
| 0.6 | 1.60 | 1.96 | 2.31 | 2.47 | 2.309 |
| 0.8 | 1.80 | 2.44 | 3.36 | 4.33 | 3.362 |
| 0.9 | 1.90 | 2.71 | 4.10 | 6.13 | 4.088 |
意义与代价:小模型一次前向的时间是大模型的 倍时,加速比约为 。 时:、 约 2.80 倍,最优 约 3.09 倍; 时最多约 1.92 倍。
- 决定一切:小模型要和大模型足够像(同一家族、同一个分词器)。代码、格式化文本这种可预测的内容 高,收益大。
- 大 batch 时收益变小:batch 大了解码本来就不再是访存瓶颈(Week 1 Day 4 §1.5)。
- 变体:不用单独的小模型,而是在大模型上加几个预测头(Medusa)、用 n-gram 查表猜(prompt lookup)等。
3.3 PagedAttention
动机:服务时每个请求的 KV Cache 最终有多长事先不知道。按最大长度预分配,大部分空间被”可能会生成、其实没生成”的 token 占着(Week 1 Day 4 §1.6)。
做法(Kwon et al. 2023,vLLM):借用操作系统的虚拟内存分页,把 KV Cache 切成固定大小的块(比如 16 个 token 一块),每条序列维护一张块表,按需分配。注意力内核按块表去不连续的地址读 K、V。
w3day1_checks.py 第 3 组:Llama-2-7B 每个 token 的 KV 是 0.5 MiB,给 KV 留 40 GiB,共能放 81,920 个 token。请求长度的中位数 399、均值 533、上限 2048:
| 分配方式 | 同时服务的请求数 | 显存里真正存了 KV 的比例 |
|---|---|---|
| 按最大长度 2048 预分配 | 40 | 26.0% |
| 分页,每块 16 个 token | 约 151 | 98.6% |
| 分页,每块 64 个 token | 约 145 | 94.6% |
意义:并发数提高了近 4 倍,而吞吐量几乎正比于并发数(解码是访存受限的,batch 越大越划算)。块表还带来一个额外的好处:多条序列可以共享同一段前缀的块(并行采样 个回答、beam search、共享的系统提示),写入时才复制(copy-on-write)。第 6 天的测试时缩放会大量用到”同一个提示采样很多次”,这个特性直接决定了成本。
§A 答题方法
A.1 简答题的模板
几乎每道简答题都能套这四步,和我们写文档的四拍一致:
- 是什么:一句话定义,能写公式就写公式。
- 为什么需要它:它解决了什么问题,不用它会怎样。
- 怎么做到的:关键机制,一两个要点。
- 代价 / 局限:它换掉了什么。
例:“解释 FlashAttention 的核心思想和它的实际好处。”
是什么:一种精确计算注意力的算法,结果与标准实现相同(不是近似)。为什么:标准实现要把 的打分矩阵写进显存再读出来,长序列时显存占用 ,而且注意力的瓶颈是访存不是计算。怎么做到:分块(tiling),每次把 Q、K、V 的一块读进片上 SRAM,用 online softmax 边算边更新最大值和归一化常数,不物化完整矩阵;反向时重算注意力矩阵,只存每行的 logsumexp。好处与代价:显存从 降到 ,速度提升数倍,使长上下文训练可行;代价是反向多了重算的计算量,以及需要为硬件专门写内核。
A.2 选择题
- 先排除明显错的。四个选项里通常有一个”听起来对但混淆了概念”的,比如把”省显存”说成”省计算”(GQA)、把”总参数”说成”激活参数”(MoE)。
- 注意绝对化的措辞:带”总是""完全""不可能”的选项多半是错的,除非它说的正是一个精确结论(例如”FlashAttention 不改变数学结果”是对的)。
- 计算题先估数量级:KV Cache、显存、参数量,先写出公式里每一项的数量级,再算。
A.3 时间分配
每部分 22 分钟左右:选择题约 10 分钟(每题一分多钟),两道简答题各约 6 分钟。卡住的题先跳过,全部做完再回来。
§B 实操
- 做 2025 期中真题(1.5h,闭卷、计时、手写),对答案打分。
- 做本文 §C 的模拟卷(1.5h,同样的条件),对照 §D 打分。
- 错题溯源(2h):每道错题按 §2 找到小节,合上书重推一遍,按 §2.5 的格式记录。
- 跑
w3day1_checks.py,读 §3 的补漏三讲,自己推一遍推测解码的”输出分布恰好是 ”。 - 自评:两份卷子的总分各是多少?哪一讲失分最多?如果某一讲失分超过 40%,明天开始新内容之前先花半天补那一讲(学习计划:“允许延期,不允许跳过”)。
§C 模拟卷(90 分钟,闭卷)
这份卷子是按真题的结构自己出的,和真题的考点互补,计算题比真题多。选择题都是单选。
第一部分:Transformer 基础
1.1 BPE 分词器训练时,每一步做的是: (A) 把出现次数最少的字符合并进相邻的 token (B) 把语料中出现次数最多的相邻 token 对合并成一个新 token (C) 删除使语料似然下降最少的 token (D) 按词频从高到低直接把整词加入词表
1.2 skip-gram 负采样中,噪声分布取 而不是 ,主要是为了: (A) 让训练更快收敛 (B) 相对地提高低频词被采为负样本的机会 (C) 保证梯度无偏 (D) 让词向量归一化
1.3(计算) 的各分量独立、均值 0、方差 1。 的标准差是多少?如果不除以 ,会发生什么?
1.4(计算)logits 为 ,分别写出温度 、、 时 softmax 的结果(保留两位小数),并说明温度的作用。
1.5 LSTM 相比普通 RNN 能缓解梯度消失,最关键的原因是: (A) 用了 sigmoid 门 (B) 细胞状态沿时间的更新是加法,遗忘门接近 1 时梯度几乎不衰减 (C) 参数更多 (D) 用了 tanh 激活
1.6 关于 LayerNorm,正确的是: (A) 在 batch 维上归一化,所以推理时需要统计量的滑动平均 (B) 对每个 token 在特征维上归一化,与 batch 大小无关 (C) RMSNorm 在它基础上增加了减均值的步骤 (D) Pre-LN 把 LayerNorm 放在残差相加之后
1.7(简答)写出缩放点积注意力的公式,说明 Q、K、V 各自的角色,以及为什么需要三个不同的投影而不是直接用输入 。
1.8(简答)什么是标签平滑?它对模型的 logits 和困惑度分别有什么影响?
第二部分:Transformer 变体与技巧
2.1 关于正弦位置编码,正确的是: (A) 位置 的编码可以由位置 的编码经过一个只依赖 的线性变换得到 (B) 加到词嵌入上之后,注意力打分仍然只依赖相对位置 (C) 它必须通过训练学习 (D) 它不能用于解码器
2.2 BERT 的 MLM 对被选中的 15% 位置,80% 替换成 [MASK]、10% 替换成随机 token、10% 保持不变。保留”随机替换”和”不变”是为了:
(A) 加快训练 (B) 缓解预训练与微调的不一致(微调时没有 [MASK]),让模型对每个位置都要保持好的表示 (C) 做数据增强以防过拟合 (D) 满足 NSP 任务的需要
2.3(计算)RoPE 用 、base 。最高频和最低频的那对维度,分别转一整圈需要多少个位置?据此解释:为什么在 4096 长度上训练的模型,直接用在 32k 长度上会出问题,而且问题出在哪些维度?
2.4 在 Transformer 解码器里实现因果掩码,正确的是: (A) softmax 之后把未来位置的权重置 0 再重新归一化,与 softmax 前加 完全等价,也没有数值问题 (B) 在 softmax 之前给未来位置的打分加 (或很大的负数) (C) 把未来位置的 value 置 0 (D) 只在推理时需要
2.5 Longformer 这类”滑动窗口 + 少数全局 token”的注意力,序列长 、窗口 时的复杂度是: (A) (B) (C) (D)
2.6 GQA(分组查询注意力)相比 MHA: (A) 减少了注意力打分的计算量 (B) 减少了 KV Cache 的显存和解码时的访存,查询头数不变 (C) 减少了查询头数 (D) 只在训练时起作用
2.7(简答)比较 encoder-only、encoder-decoder、decoder-only 三类架构:各自的注意力掩码、预训练目标、典型任务和代表模型。
2.8(简答)解释 RoPE 的机制,以及它相比可学习的绝对位置编码的优点。
第三部分:大语言模型
3.1 下列哪一条不是现代 LLM 几乎都用 decoder-only 的理由: (A) 每个位置都有训练信号 (B) 生成与预训练的形式一致 (C) 双向注意力在理解任务上一定更差 (D) 结构简单、KV Cache 好用、缩放性质好
3.2 MoE 训练中出现”路由坍缩”时,最直接的对策是: (A) 增加专家数 (B) 加负载均衡辅助损失,或给路由加噪声、设容量上限 (C) 降低学习率 (D) 把 top-2 改成 top-1
3.3(计算)一个 70B 模型:80 层、GQA 8 组 KV 头、、bf16。每个 token 的 KV Cache 多大?batch 32、序列长 8192 时一共多大?
3.4(计算)推测解码中,小模型每个猜测被接受的概率为 0.8,每次猜 4 个。大模型每次前向平均产出几个 token?这种方法会改变输出的分布吗?为什么?
3.5(计算)Mixtral 8x7B:32 层、、每个专家是 SwiGLU()、8 个专家选 2 个、注意力是 GQA(8 组 KV 头,)、词表 32000、输入输出嵌入不共享。估算总参数和每个 token 的激活参数,说明”8x7B”为什么不是 56B 的推理成本。
3.6 对一个尖锐的分布,温度从 1 调到 3(先除温度、再截断)。下列哪种截断策略保留的候选数会从几个暴涨到几百个: (A) top-k() (B) top-p() (C) min-p() (D) 都不能
3.7(简答)什么是 MoE 的路由坍缩?它为什么会发生?给出至少两种缓解方法并解释原理。
3.8(简答)从多样性、质量、计算量三个维度比较贪心解码、beam search、温度采样和 top-p 采样。为什么 beam search 在开放式生成上效果差?
第四部分:训练
4.1 同样的数据量,decoder-only 的下一个 token 预测比 BERT 的 MLM 拿到更多训练信号,是因为: (A) 它的模型更大 (B) 每个位置都有损失,而 MLM 只在约 15% 的位置上有 (C) 它用了更大的学习率 (D) 它不需要分词
4.2 关于 BF16 与 FP16,正确的是: (A) BF16 精度更高 (B) BF16 的指数位与 FP32 相同,范围大,一般不需要 loss scaling;但尾数只有 7 位,所以优化器更新要在 fp32 主权重上做 (C) FP16 的范围更大 (D) 两者都不需要 fp32 主权重
4.3(计算)用 bf16 混合精度 + AdamW 全量微调一个 6.74B 的模型,不算激活,参数、梯度和优化器状态一共需要多少显存?逐项写出每个参数的字节数。
4.4(计算)同一个模型在 8 张卡上用 ZeRO-2 和 ZeRO-3,每张卡的参数状态各是多少?
4.5(计算)给 Llama-2-7B(32 层,)的 、 加 的 LoRA,一共多少个可训练参数?
4.6(计算)标准注意力在 、、bf16、batch 1 时,一层的注意力矩阵占多少显存?FlashAttention 存什么来代替它?
4.7(计算)算力预算 FLOPs。按 Chinchilla 的”每个参数约 20 个 token”和 ,模型该多大、用多少 token?
4.8(简答)指令微调(SFT)的目标是什么?数据格式上要注意什么?有哪些难点?
4.9(简答)解释 FlashAttention 的核心思想和实际好处。
§D 模拟卷详解
计算题的数字都来自 w3day1_checks.py 第 4 组。每题后面是溯源的位置。
第一部分
1.1 B。 BPE 就是反复合并最频繁的相邻对(Week 0 Day 3 §7.3)。C 是 Unigram 的做法(Week 1 Day 2 §6.3)。
1.2 B。 0.75 次方把分布”压平”,低频词被采为负样本的相对概率上升,高频词下降(Week 0 Day 3 §3.5)。
1.3 ,每项方差为 1,独立相加,方差 64,标准差 8。不除的话,打分的尺度随 增长,softmax 饱和成近似 one-hot,梯度几乎为 0(Week 0 Day 4 §5.5;Week 1 Day 1 §2.1)。
1.4 :[0.87, 0.12, 0.02];:[0.67, 0.24, 0.09];:[0.51, 0.31, 0.19]。温度除在 logits 上: 让分布更尖, 更平; 退化成 argmax(Week 2 Day 3 §2.2)。
1.5 B(Week 0 Day 4 §3.4)。
1.6 B。 A 说的是 BatchNorm;RMSNorm 是去掉减均值;Pre-LN 把归一化放在子层之前(Week 0 Day 2 §4.2–4.5)。
1.7 。Q 是”我要找什么”,K 是”我能被怎样找到”,V 是”被找到后我提供什么内容”。三个投影的理由:打分需要非对称( 关注 不等于 关注 ),而 是对称的,且每个词最关注自己;“用来匹配的特征”和”要传递的内容”应该分开;投影还能把维度降到 (Week 1 Day 1 §1.4)。
1.8 见今天 §3.1。要点:目标换成 ;最优 logit 差有限(、 时 12.57),防止过度自信、改善校准;代价是 NLL 有下限(约 0.105 nats),困惑度变差。
第二部分
2.1 A。 (Week 1 Day 2 §3.4)。B 错:加到词嵌入上、再经过 、 投影后,打分里混进了绝对位置(Week 1 Day 2 §3.6),这正是 RoPE 的动机。
2.2 B(Week 1 Day 6 §4.2)。
2.3 第 对维度的角频率 。最高频一对()转一圈要 个位置;最低频一对的波长 个位置。训练长度 4096 时,低频维度连一圈都没转完,只见过很小一段角度;在 32k 上它们会转到训练时从未见过的角度,模型没学过怎么解读。高频维度在训练中已经转了很多圈,没问题。所以 PI、NTK-aware、YaRN 都主要在处理低频维度(Week 1 Day 5 §3.1–3.4)。
2.4 B。 A 的前半句在数学上成立(置 0 再重新归一化,等于只在允许的位置上做 softmax),错在”没有数值问题”:未来位置的打分若远大于允许位置,减去最大值之后允许位置的权重会下溢成 0,重新归一化就是 0/0;而且未来位置白白参与了计算。加法掩码在 softmax 之前一步到位(Week 1 Day 1 §3.3)。
2.5 B(Week 1 Day 6 §1.1)。
2.6 B。 GQA 省的是 K、V 的头数,查询头数不变,打分的计算量也不变(Week 1 Day 4 §2.5)。
2.7 encoder-only:双向注意力(只有 padding 掩码),MLM 预训练,擅长分类、抽取、检索,代表 BERT、RoBERTa。encoder-decoder:编码器双向、解码器因果 + 交叉注意力,跨度破坏或翻译目标,擅长输入输出差异大的条件生成(翻译、摘要),代表 T5、BART。decoder-only:因果掩码,下一个 token 预测,擅长生成,也能通过提示做理解任务,代表 GPT、Llama(Week 1 Day 2 §4.3;Week 2 Day 1 §1.2)。
2.8 对位置 的 、 的每一对维度,按角度 旋转;两个旋转后向量的内积只依赖相对位置 。优点:打分天然只依赖相对位置、不引入参数、作用在每一层的 Q、K 上(不会像加性编码那样在投影后失去相对性)、和 KV Cache 兼容(缓存的是旋转后的 K)、可以通过 PI/NTK/YaRN 做长度扩展(Week 1 Day 5 §2)。
第三部分
3.1 C。 双向注意力在理解任务上常常更好,这不是 decoder-only 胜出的理由;其余三条都是(Week 2 Day 1 §1.2)。
3.2 B(Week 2 Day 2 §3.1–3.3)。
3.3 字节 KiB/token; 个 token 80 GiB(Week 1 Day 4 §1.4)。
3.4 3.36 个。不改变:接受-拒绝规则保证输出分布恰好是大模型的分布(今天 §3.2 的推导)。
3.5 每个专家 ;每层注意力 ,加路由器和两个归一化。总参数 46.7B(精确值 46,702,792,704),激活 12.9B(12,879,925,248)。只有 FFN 是 8 份,注意力和嵌入是共享的,所以远小于 56B;每个 token 只过 2 个专家,计算量接近 13B 的稠密模型。但显存要放下全部 46.7B(Week 2 Day 2 §2.1–2.2)。
3.6 B。 高温把分布拉平,前几个 token 的累积概率远不到 0.9,top-p 要把几百个长尾 token 都放进来才凑够。top-k 固定保留 50 个;min-p 的阈值是 ,随分布一起下降,候选数只会温和增加(Week 2 Day 3 §2.1 的表:尖锐分布在 时 top-p 保留 865 个,min-p 只保留 4 个)。
3.7 定义:少数专家接收了绝大部分 token,其余专家几乎不被使用。原因:正反馈,被选中多的专家训练得更好,打分更高,于是更常被选中。对策:Switch 负载均衡损失 (它的梯度把 token 推离过载的专家);训练初期给路由 logit 加噪声;容量因子限制每个专家接收的 token 数;无辅助损失的偏置均衡(DeepSeek-V3);z-loss 控制路由 logit 的量级以求稳定(Week 2 Day 2 §3)。
3.8 贪心:零多样性、计算最少、容易重复。beam search:零或低多样性,计算约为 beam 宽度倍,在翻译这类”答案集中”的任务上质量高;开放生成上它找到的高概率序列往往平淡、重复甚至很短(搜索的诅咒:人类文本并不是概率最高的那条序列)。温度采样:多样性随温度升高,质量下降,会采到长尾的垃圾 token。top-p:截掉长尾,兼顾多样性与质量,计算与贪心相同(Week 2 Day 3 §1–2)。
第四部分
4.1 B(Week 2 Day 1 §1.2)。
4.2 B(Week 2 Day 4 §3)。
4.3 每个参数:bf16 权重 2 + bf16 梯度 2 + fp32 主权重 4 + Adam 的 4 + 4 字节。 字节 100.4 GiB(Week 2 Day 4 §4.1)。
4.4 ZeRO-2: 23.5 GiB/卡;ZeRO-3: 12.6 GiB/卡(Week 2 Day 4 §5.2)。
4.5 8,388,608(约 8.4M,原模型的 0.12%)(Week 2 Day 6 §3.3)。
4.6 字节 4 GiB,这还只是一层。FlashAttention 不存这个矩阵,只存每行 softmax 的 logsumexp(),反向时分块重算(Week 1 Day 6 §3.4)。
4.7 、 ⇒ , 9.1B, 183B token。(用 Chinchilla 方法 3 拟合的常数直接算,最优 约 5.2B,更偏向小模型、多数据,见 Week 2 Day 1 §3.2 对方法 3 的讨论。)
4.8 目标:把只会续写的预训练模型变成能遵循指令、以助手的方式回应的模型,主要学的是格式和行为,而不是新知识。格式:用 chat template 标出角色和回合边界,结束符要参与训练;loss 只算在回答上。难点:数据质量比数量重要(LIMA 的 1000 条);用新知识做 SFT 会增加幻觉;过拟合与遗忘;多样性(Week 2 Day 6 §1)。
4.9 见 §A.1 的例子。
出关标准
- 在闭卷、计时的条件下做完 2025 期中真题,并对照答案打分
- 做完 §C 模拟卷,对照 §D 打分
- 每一道错题都定位到了具体小节,合上书重推过,并按 §2.5 记录
- 能推出推测解码”输出分布恰好是 “,写出每次前向的期望产出
- 能解释标签平滑对 logits 和困惑度的影响
- 能说清 PagedAttention 解决了什么问题,为什么它让并发数大幅提高
- 失分最多的一讲已经安排了补课时间