CS336 2026 Lecture 3:语言模型架构与超参数
| 字段 | 内容 |
|---|---|
| 作者/整理 | 基于 Stanford CS336 Spring 2026 官方讲义整理 |
| 来源 | Stanford CS336 |
| 日期 | 2026 年春季 |

本讲的问题:架构选择到底该听谁的?
Lecture 3 的主题是 architecture and hyperparameters。它回答一个实践问题:当你真的要从零训练语言模型时,哪些 Transformer 设计已经成为强默认值,哪些仍需要实验验证,哪些其实是系统和推理成本驱动的选择?
本讲的核心方法
不要把公开模型的架构表当作“真理列表”。正确做法是把不同模型的选择放在一起,看共识、例外、证据强弱和系统动机。现代默认值是经验均衡,不是数学定理。
本讲目标:从架构动物园中提取默认值
本节建立全讲方法:不要逐个追随 2024--2025 的模型 tweak,而要从公开 dense model 中提取稳定共识和高风险变量。
先看课程给出的路线图。它没有按模型公司或发布时间组织材料,而是先建立一个现代 Transformer baseline,再把公开模型之间的差异分解为 architecture、hyperparameter 与 stability 三类问题。这样做的好处是:新模型发布时,只需判断它改变了哪一层决策,而不必从头记忆整张配置表。
读图:为什么先讲“如何学习架构”
这页把 hands-on experience 放在首位,因为架构名词只有落到 tensor shape、参数量、数值范围和运行时上才真正可比较;公开模型报告则是第二层证据,用来发现跨团队重复出现的默认值。后文每个结论都应回答三个问题:它解决什么瓶颈、证据来自质量还是系统指标、换规模或硬件后是否仍成立。
展开说明:本页用原始 Transformer 作为起点:sinusoidal position embedding、ReLU FFN、post-norm LayerNorm。后续所有现代变体都可以看成对这三个默认值的替换。
与原始版本对照后,Slide 4 把作业中实现的“简单现代版”单独列出。这里真正值得记住的不是四个名词,而是四类迁移:norm 从 residual add 之后移到子层之前;position 从输入端相加改为 Q/K 旋转;FFN 从单支非线性改成 gated branch;线性层去掉 bias。后文会逐项判断这些变化是质量共识、稳定性要求,还是数据移动优化。
baseline 不是 recipe 的终点
Pre-norm、RoPE、SwiGLU 与 no-bias 是可靠起点,却不能自动决定 FFN ratio、head shape、depth/width、regularization 或推理 attention。真正的 recipe 还必须绑定模型规模、训练数据、上下文长度、并行方式和服务目标;本讲后半段正是在补齐这些条件。
接下来两页用模型发布数量解释为什么不能按“逐模型背配置”的方式学习。第一张图把 2024--2025 年 dense releases 并置,重点看它们虽然有大量微调,但主体仍围绕 LLaMA-like block;第二张图进一步强调发布速度和命名噪声会掩盖共识。读者应把模型名当作证据样本,而不是把每一个新名称都当成全新范式。
读图:模型很多,不等于架构空间同样大
先比较每个模型是否仍使用 decoder-only Transformer、pre-norm、gated FFN 与 RoPE,再看真正变化的列。常见差异集中在 norm placement、attention variant、position treatment 和少数 ratio;这说明调查的目标应是找“稳定列”和“变化列”。发布数量本身不能证明某个 tweak 有效,只有消融、训练稳定性或运行时证据才能支撑因果判断。
不要用“出现频率”替代实验
某个设计在很多模型里出现,只能说明它是工程上可接受的 strong prior,不能说明它在你的数据、规模与硬件上最优。频率适合确定实验起点;是否保留仍应由 controlled ablation、稳定性监控和端到端 throughput 决定。
展开说明:本页说明本讲不是凭偏好讲架构,而是看 dense architectures 的公开数据:哪些共同、哪些变化、哪些能学。
从数据表转向具体章节前,Slide 8 把问题压缩成 coverage map:先看 activation、attention 和 position 这些结构变化,再看 FFN/head/vocab/depth-width 等数值选择,最后处理训练不稳定。这个顺序很重要,因为稳定性技巧往往是在既定架构上控制数值尺度,而不是用来掩盖一个未经验证的 architecture recipe。
阅读路线:先机制,后默认值,再看例外
Activation、position 和 attention 先回答“计算图如何改变”;FFN ratio、head shape 与 aspect ratio 再回答“规模如何分配”;z-loss、QK norm 等最后回答“数值什么时候失控”。把三层混在一起容易产生错误归因,例如把 RMSNorm 的带宽收益说成纯 FLOPs 收益,或把 GQA 的推理优势误写成训练质量定律。
展开说明:本页给出大方向:LLaMA-like architecture 占主导,同时出现 QK norm、hybrid attention 等趋势。
本章小结
本节的关键不是记住所有模型名,而是把公开模型的设计选择转化成可迁移判断:共识默认值可以作为起点,例外需要知道原因,涉及系统和推理成本的选择必须结合资源账本讨论。
Norm 与 residual stream
本节解释 pre-norm、post-norm、RMSNorm、double norm 和 bias removal。核心是保护 residual stream,并减少数据移动。
术语消化:norm 与 residual stream
- Residual stream:Transformer block 中跨层传递的主信号路径,残差连接让梯度和信息更容易穿过深层网络。
- Post-norm:先做 attention/MLP 和 residual add,再 LayerNorm;原始 Transformer 和 BERT 常见。
- Pre-norm:先 LayerNorm,再做子层计算和 residual add;现代大模型常用,训练更稳定。
- RMSNorm:只按 root-mean-square 缩放,不减均值、通常无 bias,减少数据移动和参数。
展开说明:本页是 norm 部分的核心共识:现代 LM 几乎都用 pre-norm,使 LayerNorm 不阻断 residual stream 主路径。
展开说明:本页把经验观察和文献图放在一起:pre-norm 相对 post-norm 有更好的深层训练稳定性证据。
读图:Slide 11 应该怎么看
这页不是装饰性截图,而是本节论点的证据页。先看图中模型/论文/曲线或表格的比较对象,再看它们支持的趋势:哪些设计已经形成共识,哪些只是局部实验结果,哪些主要由运行时或推理成本推动。读这类页时要区分 quality evidence、runtime evidence 和 stability evidence,不能把一种证据直接替换成另一种。
结果页说明 pre-norm 更容易训练,但还需要机制解释。Slide 12 并列两条证据链:一条关注 post-norm 深层网络中的 gradient attenuation,另一条关注训练早期的 gradient spikes。两者共同支持的不是“LayerNorm 越多越好”,而是主 residual path 应尽量保持接近 identity,让梯度和表示可以跨很多层直接传播。
读图:机制解释与工程结论
左侧解释为什么 post-norm 可能让跨层梯度逐步衰减,右侧解释为什么某些 placement 会产生尖峰。课程给出的现代结论是:pre-norm 的价值已不只是省掉 warmup,而是允许更深网络、较大学习率和更平滑的训练。图中机制不是互斥理论,它们描述了不同训练区间的风险。
既然 norm 不应切断 residual stream,一些近期模型又引入“额外 norm”,看起来似乎矛盾。Slide 13 的关键是位置:double norm 或 non-residual postnorm 把第二个 norm 放在子层输出或 residual 主路径之外,因此可以控制 branch magnitude,却不把每层主信号强制重新归一化。Grok、Gemma 2 与 OLMo 2 的差异也提醒我们,这仍是架构级选择,不是统一标准。
“postnorm” 名称相同,路径可能不同
判断一个 norm 是否危险,不能只看论文里写了 postnorm,而要沿计算图检查它是否位于 residual stream 的必经路径。若 norm 只约束 attention/MLP branch 的输出,它与原始 Transformer 在 residual add 后归一化不是同一件事。
展开说明:本页定义 LayerNorm 和 RMSNorm 的差别:LayerNorm 减均值并归一化方差,RMSNorm 不减均值也不加 bias。
从定义转到性能时,Slide 15 先给出常见说法:RMSNorm 不计算均值、通常没有 bias,因此运算和参数更少。这个说法方向正确,却不够解释端到端收益,因为大模型的大部分 FLOPs 位于矩阵乘;若只按 FLOP 占比估算,norm 的差异似乎微不足道。真正要追问的是 norm 是否需要额外读取、写回整段 activation。
第一处系统连接:算术量与数据移动
LayerNorm 需要读取 activation、计算 mean 和 variance、再写回归一化结果;RMSNorm 去掉 mean 与 bias 后更容易做成短路径或 fused kernel。HBM 是 High Bandwidth Memory,即 GPU 封装旁用于存放模型参数和 activation 的高带宽显存;一次 HBM 往返通常比片上寄存器或 SRAM 访问昂贵。即使节省的 FLOPs 很少,只要减少 HBM 读写或 kernel launch,wall-clock 仍可能明显改善。因此本讲把 RMSNorm 视为 architecture 与 systems 的交叉点。
Slide 16 用 roofline 风格信息把这一点说得更直接:图中的 FLOP 数和 FLOP-to-memory ratio 必须一起读。低 arithmetic intensity 的算子常由 memory bandwidth 限制,GPU 算力并没有被打满;此时减少一次 activation pass 比减少同数量的矩阵乘 FLOPs 更值钱。这也为后面的 GQA、KV cache 与 local attention 埋下同一条系统主线。
读图:不要只看左上角 FLOPs
图中一类标注给出算术工作量,另一类标注给出 FLOP-to-memory ratio。若 ratio 低,算子更可能是 bandwidth-bound;此时理论 FLOPs 降幅不能直接换算成运行时间。正确的验收应同时报告 kernel latency、memory traffic 和端到端 step time,而不是只引用参数量或 FLOP 数。
展开说明:本页展示 RMSNorm runtime 和性能增益的文献证据,说明它是经验上可靠的现代默认值。
展开说明:本页把无 bias 扩展到更一般的 linear/FFN 设计:现代 Transformer 常移除 bias,以减少参数移动和稳定性问题。
最后的 recap 页把本节证据压缩为一条可执行 recipe:residual stream 内优先 pre-norm,必要时在 branch 外增加非残差 norm;归一化形式通常用 RMSNorm;linear 与 norm bias 常被移除。注意,这三项的证据类型不同:pre-norm 主要是优化稳定性,RMSNorm 与 no-bias 同时涉及质量持平和数据移动。
Norm recipe 的验收清单
实现时应检查四件事:主 residual path 是否保持 identity-like;额外 norm 是否位于 branch 而非主路径;RMSNorm kernel 是否真的减少读写或 launch;去掉 bias 后参数初始化与 checkpoint 兼容性是否处理正确。只写“使用 RMSNorm”不足以证明系统上更快。
本章小结
本节的关键不是记住所有模型名,而是把公开模型的设计选择转化成可迁移判断:共识默认值可以作为起点,例外需要知道原因,涉及系统和推理成本的选择必须结合资源账本讨论。
Activations、FFN 与 parallel blocks
本节把 ReLU/GeLU/GLU/SwiGLU 放在一个门控 FFN 框架下,并解释 parallel block 更偏系统选择。
术语消化:ReLU、GeLU、GLU、SwiGLU
ReLU 是硬截断非线性,GeLU 用高斯 CDF 做平滑门控。GLU 系列把 FFN 拆成 value 分支和 gate 分支,用逐元素乘法控制哪些 hidden features 通过。SwiGLU 用 Swish 作为 gate,现代 LLaMA/PaLM 风格模型普遍采用。
FFN 公式:普通激活与门控激活
普通 FFN 可以写成
GLU/SwiGLU 类门控 FFN 则写成
其中 \(W_v\) 是 value projection,\(W_g\) 是 gate projection,\(\odot\) 是逐元素乘法。门控结构的代价是多一支投影,所以很多模型会把中间维度缩到约 \(2/3\),让参数量和 FLOPs 与普通 FFN 可比。
符号说明:FFN 与 RoPE 公式
\(x\) 表示当前位置 token 的 hidden state;\(W_1,W_2,W_v,W_g,W_o\) 是可学习投影矩阵;\(\phi\) 是 ReLU/GeLU/Swish 等非线性;\(\odot\) 表示逐元素乘法。RoPE 中 \(i\) 是 token 位置,\(k\) 是第 \(k\) 个二维旋转平面,\(\theta_k\) 是该平面的旋转频率。公式说明的是机制形状,不代表唯一实现细节。
这一部分先故意展示 activation zoo,因为名称最容易制造“每个函数都完全不同”的错觉。更好的分类方式只有两轴:第一,普通 FFN 还是 gated FFN;第二,非线性使用 ReLU、GeLU、Swish 还是近似线性。这样 GeGLU、ReGLU、SwiGLU 与 LiGLU 都只是同一门控骨架上的 gate choice,而不是四套无关架构。
术语表不要只写“更平滑”
ReLU 的核心是零阈值截断;GeLU 用输入在高斯分布下的概率做连续门控;Swish 近似为输入乘 sigmoid;GLU 家族则显式增加一条 gate projection。比较时必须同时计算参数量、两支投影的中间维度和可用 kernel,否则“激活函数更好”可能只是模型更大或实现更快。
Slide 21 把公式和代表模型放在一起,展示了明显的历史迁移:早期 Transformer、T5、Gopher 与 Chinchilla 常见 ReLU;GPT 系列与 BLOOM 广泛使用 GeLU;2023 年后的 LLaMA、PaLM 与许多新模型则更常用 SwiGLU 或 GeGLU。这个时间趋势提供 strong prior,但最终因果证据还要看后续的等参数消融。
模型名单不是公平对照
不同模型同时改变数据、规模、optimizer 与训练 token,不能从“新模型常用 SwiGLU”直接推出性能增益。名单只说明可用性和社区共识;真正判断 gate 是否值得,需要在相同参数预算、相近 FLOPs 与相同训练 recipe 下比较。
展开说明:本页解释 GLU 的机制:一支产生候选值,另一支产生 gate,用逐元素乘法调制 FFN 输出。
展开说明:本页比较 GeGLU、ReGLU、SwiGLU、LiGLU 等变体,核心差异在 gate 分支用什么非线性。
展开说明:本页展示 Shazeer 2020 的证据:gated variants 通常稳定优于普通 FFN。
读图:Slide 24 应该怎么看
这页不是装饰性截图,而是本节论点的证据页。先看图中模型/论文/曲线或表格的比较对象,再看它们支持的趋势:哪些设计已经形成共识,哪些只是局部实验结果,哪些主要由运行时或推理成本推动。读这类页时要区分 quality evidence、runtime evidence 和 stability evidence,不能把一种证据直接替换成另一种。
Shazeer 2020 的单篇结果还不足以形成默认值,因此 Slide 25 加入 Narang et al. 的独立结果。读这页时先确认比较是否保持参数量或 compute 接近,再看不同任务和规模上 gated variants 的方向是否一致。多项工作重复观察到收益,才把“有趣变体”提升为现代 recipe 的高概率起点。
读图:重复证据比单个最好点更重要
不要只找某一列的最小 loss,而应看不同设置下 gated variants 是否多数优于普通 ReLU/GeLU,以及优势是否需要额外参数才能出现。跨论文方向一致说明机制具有一定稳健性;具体选择 SwiGLU 还是 GeGLU,仍可能由 kernel、数值稳定和现有实现决定。
阶段性 recap 进一步给出保守结论:普通 GeLU/ReLU 仍能训练出强模型,GLU 不是“模型能否工作”的必要条件;但在等预算证据和大量现代模型实践下,SwiGLU/GeGLU 已成为更好的默认实验起点。Nemotron 的 squared ReLU 等例外值得记录,却不能推翻主流证据,只说明搜索空间仍未关闭。
选择 activation 的实际流程
先用实现成熟的 SwiGLU 或 GeGLU 作为 baseline,并把中间维度按参数预算缩放;再用小规模 ablation 比较 validation loss、step time、peak memory 和数值稳定性。只有当特殊 activation 在相同预算下持续改进这些指标,才值得承担非标准 kernel 与部署复杂度。
展开说明:本页比较标准串行 block:先 attention 后 MLP。它引出 parallel block 作为系统/延迟选择。
标准 block 串行执行 attention 与 MLP,而 Slide 28 展示 GPT-J、PaLM、GPT-NeoX 等采用 parallel layers:两个 branch 读取同一个 normalized residual state,再把输出一起加回。它减少依赖链,并可能共享 LayerNorm、并行调度或融合矩阵乘;代价是计算图和串行 block 不完全等价,质量需要单独验证。
Parallel block 主要解决什么
这项选择的第一动机通常是 latency 与 kernel scheduling,而不是提出更强的非线性。若两个 branch 可以同时执行,或把投影拼成更大的矩阵乘,就可能提高硬件利用率;但端到端收益取决于并行 runtime、通信和 batch shape。没有实际 profiler 数据时,不能只凭结构图断言更快。
展开说明:本页总结 architecture variations:pre-norm、RMSNorm、SwiGLU、parallel block 等哪些是强共识,哪些仍是局部选择。
本章小结
本节的关键不是记住所有模型名,而是把公开模型的设计选择转化成可迁移判断:共识默认值可以作为起点,例外需要知道原因,涉及系统和推理成本的选择必须结合资源账本讨论。
Position embeddings 与 RoPE
本节解释从绝对位置到 RoPE 的迁移:相对位置信息通过 Q/K 旋转进入 attention score。
RoPE 的一句话定义
RoPE 把位置信息编码为 query/key 向量的旋转,使 attention score 中自然出现相对位置。它不是把 position embedding 加到 token embedding 上,而是在每层 attention 的 Q/K 空间里改变几何关系。
RoPE 公式链路
把每两个 hidden dimensions 看成一个二维平面。位置 \(i\) 上的向量对 \((x_{2k},x_{2k+1})\) 被旋转角度 \(i\theta_k\):
当 query 和 key 都按各自位置旋转后,它们的点积会依赖相对位移 \(i-j\)。这就是 RoPE 能支持 relative-position behavior 的几何原因。
展开说明:本页列出 sinusoidal、learned absolute、relative、ALiBi、RoPE 等位置编码路线。
展开说明:本页给出 RoPE 的相对位置目标:让 attention score 能感知相对距离。
“希望 attention 依赖相对位置”还不是构造。Slide 32 给出 RoPE 的几何桥梁:内积对共同旋转不变,因此可以把 token 在不同绝对位置上的 Q/K 看成同一内容向量经过不同角度旋转。比较两个 token 时,绝对角度相消,只留下旋转角之差,也就是位置差。图中的短语例子是在说明同一个词移到不同上下文位置后,内容坐标和位置坐标如何解耦。
从共同旋转到相对位移
若位置 \(i\) 和 \(j\) 的向量分别乘旋转矩阵 \(R_i\) 与 \(R_j\),则
最后一项只依赖 \(j-i\)。这条等式解释了 RoPE 为什么把位置注入 Q/K 而不是 V,也解释了 attention score 如何自然获得方向和距离信息。
高维向量可以用许多旋转方式,Slide 33 说明标准 RoPE 的具体选择:把坐标两两配对,每一对在二维平面中旋转,并给不同维度对分配不同频率。高频平面敏感于局部位移,低频平面覆盖更长距离;这种多尺度结构类似 sinusoidal embeddings,但作用位置从输入加法变为 attention 的 Q/K 几何。
RoPE 公式成立,不代表长度外推自动成立
相对位置形式保证了几何结构,却没有保证训练长度之外的频率仍被模型正确使用。改变 base、缩放位置或只旋转部分维度都会改变外推行为;长上下文 recipe 必须在目标长度上测 token-level cross-entropy、retrieval 和 attention pattern,而不是只检查公式可运行。
展开说明:本页给出 RoPE 公式:把偶/奇维组成二维平面,用 sin/cos 对每对维度旋转。
展开说明:本页说明 RoPE 在 attention 的 Q/K 上实施,通常不直接改 V。实现细节会影响 shape 和广播。
本章小结
本节的关键不是记住所有模型名,而是把公开模型的设计选择转化成可迁移判断:共识默认值可以作为起点,例外需要知道原因,涉及系统和推理成本的选择必须结合资源账本讨论。
Hyperparameter defaults
本节整理 FFN ratio、head dim、aspect ratio、vocab size、dropout、weight decay 的现代默认值和例外。
超参数默认值的读法
本节所有比例都应读作“保守起点”,不是“唯一正确”。若模型规模、数据、硬件、上下文长度或推理目标不同,就需要用小规模实验验证这些默认值是否仍适用。
架构模块确定之后,仍有一组“没有新模块、但会决定模型形状”的问题:FFN 应放大多少倍、head 数与 head dimension 如何配合、词表多大、模型更深还是更宽、是否使用 dropout。Slide 36 的作用是把这些问题显式化,避免默认值悄悄藏在配置文件里,最后被误认为与质量或成本无关。
超参数其实是资源分配规则
FFN ratio 决定多少参数和 FLOPs 放在 token-wise MLP;head shape 决定 attention projection 与 kernel shape;vocab size 改变 embedding/output matrix 和 token 序列长度;depth/width 影响并行、latency 与优化路径。它们不是互相独立的旋钮,任何一个变化都可能重分配训练和推理成本。
展开说明:本页展示 FFN hidden dim 与 model dim 的常见比例,传统 dense FFN 常用约 4 倍。
普通两层 FFN 常取 \(d_{ff}\approx4d_{model}\);但 gated FFN 多了一条输入投影,若仍保持 4 倍中间维度,参数量与 FLOPs 会显著增加。Slide 38 因此比较公开模型实际使用的 \(d_{ff}/d_{model}\):LLaMA、Qwen、DeepSeek、Yi 等大量 GLU 模型落在约 2.5--3.5 的范围,接近按等预算推导的 \(8/3\),而 PaLM、Mistral 与 LLaMA 2 稍大。
为什么是约 \(8/3\),而不是固定 \(4\)
普通 FFN 主要有两张矩阵,参数规模约为 \(2d_{model}d_{ff}\);GLU 有 value、gate 和 output 三张矩阵,约为 \(3d_{model}d_{ff}^{GLU}\)。令二者接近,得到 \(d_{ff}^{GLU}\approx\frac{2}{3}d_{ff}\);若普通 FFN 用 \(4d_{model}\),则 GLU 约为 \(\frac{8}{3}d_{model}\)。实际模型还会为了 tensor-core 对齐取整。
默认范围并不意味着所有模型都保守。Slide 39 用 T5 11B 的 \(d_{ff}=65{,}536\) 与 \(d_{model}=1{,}024\) 展示一个 64 倍极端 aspect,随后列出 Gemma 系列等较新的更大 multiplier。教学重点不是复制 T5 数字,而是认识到超参数表中的例外可能来自时代、训练目标或系统实现;遇到离群点时应追查完整 recipe,而不是单独迁移一个 ratio。
离群配置不能脱离参数账本
一个超大 FFN multiplier 会把参数和计算大量移入 MLP,同时改变 attention/MLP 的比例、激活内存和并行方式。若只把 multiplier 抄到另一模型,却不匹配总参数、训练 token、optimizer 与硬件 shape,得到的不是对原 recipe 的复现。
展开说明:本页展示 ff_dim multiplier 在一定盆地内都可行,超参选择不是尖锐单点,而是宽容区间。
读图:Slide 40 应该怎么看
这页不是装饰性截图,而是本节论点的证据页。先看图中模型/论文/曲线或表格的比较对象,再看它们支持的趋势:哪些设计已经形成共识,哪些只是局部实验结果,哪些主要由运行时或推理成本推动。读这类页时要区分 quality evidence、runtime evidence 和 stability evidence,不能把一种证据直接替换成另一种。
展开说明:本页总结:保守默认值好用,但应通过小规模实验验证,不要把公式当法律。
展开说明:本页讨论 head_dim × num_heads 与 model_dim 的关系,现代模型通常让总 head dim 接近 model dim。
抽象关系之后,Slide 43 列出 GPT-3、T5、PaLM、LLaMA 2 与 Qwen 3.5 等实例。多数模型让 \(n_{heads}\times d_{head}\) 与 \(d_{model}\) 同阶,但 T5 等 Google 模型出现明显偏离。读表时应同时看 head dimension 是否便于 kernel、总 Q/K/V projection 是否扩大,以及后续是否采用 GQA/MQA;单独看 head 数没有可比性。
读表:head count 不是容量的独立指标
增加 head 数若同时减小每个 head 的维度,attention projection 的总宽度可能不变;反之,总 head dimension 大于 model dimension 会扩张投影成本。比较模型时至少记录 \(d_{model}\)、\(d_{head}\)、query head 数、KV head 数和 projection ratio,否则无法判断质量与 KV cache 成本。
接下来转向整体 aspect ratio,也就是模型更深还是更宽。Slide 44 用 \(d_{model}/n_{layer}\) 汇总公开模型,显示许多主流 recipe 落在相对窄的范围,但 BLOOM、T5 与 Gemma 等仍有明显差异。这个比值只是描述性统计:相同值不代表相同参数量,embedding、FFN ratio 和 attention projection 仍会改变总预算。
Aspect ratio 的三重约束
更深会增加串行层数、pipeline 边界和逐 token latency,但每层矩阵较小;更宽可用更大 GEMM 提高单层效率,却增加 activation、通信量和单层参数。优化上,深度还改变 residual path 与梯度传播。因此最佳 ratio 必须同时满足统计效率、并行拓扑和服务延迟。
Slide 45 专门把系统代价画出来:极深模型更难做低延迟推理,也更难在 pipeline parallelism 中保持均衡;每个 token 必须依次穿过更多层,无法像 batch 维度那样完全并行。课程由此把 aspect ratio 从“神秘架构偏好”还原为可测的 latency/parallelism tradeoff。
只匹配参数量仍可能比较不公平
两个参数量相同的模型若 depth-width 不同,训练 step time、pipeline bubble、activation checkpointing 成本和 decode latency 都可能不同。架构消融应至少同时报告参数量、训练 FLOPs、tokens/s、显存峰值与服务 latency,不能只报告 validation loss。
展开说明:本页引用 Kaplan/Tay 等证据说明 depth/width scaling 有经验趋势,但仍依赖任务和规模。
读图:Slide 46 应该怎么看
这页不是装饰性截图,而是本节论点的证据页。先看图中模型/论文/曲线或表格的比较对象,再看它们支持的趋势:哪些设计已经形成共识,哪些只是局部实验结果,哪些主要由运行时或推理成本推动。读这类页时要区分 quality evidence、runtime evidence 和 stability evidence,不能把一种证据直接替换成另一种。
展开说明:本页对比单语、多语、生产系统的 vocab size,显示 tokenizer/词表也是架构超参。
展开说明:本页询问预训练是否需要 dropout。大型 LM 预训练常少用 dropout,因为数据量巨大且目标不是小数据过拟合。
Slide 49 把历史实践放进同一张表:较早的 Transformer、GPT-2/3 与 OPT 常在预训练使用 dropout,而 T5 v1.1、PaLM、LLaMA 等较新大模型更常设为零;weight decay 则被许多 recipe 保留。这里存在报告偏差——论文不写 dropout 往往意味着开源配置中没有,但不能据此断言所有闭源模型都相同。
读表:regularization 选择随数据规模变化
大规模预训练通常不缺随机性,数据量也远大于小型监督任务,因此 dropout 的收益下降且可能降低吞吐;weight decay 则直接约束参数尺度,并与 optimizer 动力学相连。这个趋势不应迁移到小数据 fine-tuning:数据变少、训练轮数增加后,dropout 或其他 regularization 可能重新有价值。
展开说明:本页引用 Andriushchenko 等工作,提示 weight decay 可能影响 logit/表示尺度和泛化。
展开说明:本页总结 FFN ratio、head ratio、aspect ratio、vocab、dropout、weight decay 的现代保守默认。
本章小结
本节的关键不是记住所有模型名,而是把公开模型的设计选择转化成可迁移判断:共识默认值可以作为起点,例外需要知道原因,涉及系统和推理成本的选择必须结合资源账本讨论。
Stability tricks
本节处理 softmax 和 logits 的稳定性:z-loss、QK norm、logit soft-capping。
稳定性技巧的共同风险
z-loss、QK norm、logit soft-capping 都在限制数值尺度。它们能减少训练爆炸或 softmax 饱和,但也可能改变模型表达范围。稳定性补丁必须和 loss 曲线、梯度 norm、下游指标一起看。
超参数 recap 之后,Slide 52 用一条平稳曲线和一条爆炸曲线界定本节目标:稳定性技巧不是为了让正常训练再快一点,而是避免少数 step 的数值失控毁掉昂贵 run。大模型、长上下文和低精度训练会放大 logits、attention scores 与 gradient spikes,因此必须区分“优化不佳”和“数值范围已经失控”。
稳定性排查先看哪几条时间序列
至少同时记录 training loss、gradient norm、logit RMS/max、attention score RMS/max、activation RMS 和 learning rate。若 loss 突然上升前 logits 或 QK score 已持续增大,z-loss、QK norm 或 soft-capping 才是针对性工具;若首先出现通信错误、NaN kernel 或数据异常,则不应把问题归因于 architecture。
展开说明:本页指出 softmax 因指数和除法容易数值不稳定,是 output 和 attention 两处的共同风险。
展开说明:本页定义 z-loss:约束 log-sum-exp normalizer,防止 logits 尺度失控。
读图:Slide 54 应该怎么看
这页不是装饰性截图,而是本节论点的证据页。先看图中模型/论文/曲线或表格的比较对象,再看它们支持的趋势:哪些设计已经形成共识,哪些只是局部实验结果,哪些主要由运行时或推理成本推动。读这类页时要区分 quality evidence、runtime evidence 和 stability evidence,不能把一种证据直接替换成另一种。
展开说明:本页讲 QK norm:对 query/key 做 norm 控制 attention logits,减少 softmax 极端值。
读图:Slide 55 应该怎么看
这页不是装饰性截图,而是本节论点的证据页。先看图中模型/论文/曲线或表格的比较对象,再看它们支持的趋势:哪些设计已经形成共识,哪些只是局部实验结果,哪些主要由运行时或推理成本推动。读这类页时要区分 quality evidence、runtime evidence 和 stability evidence,不能把一种证据直接替换成另一种。
展开说明:本页展示用 tanh 对 logits 做 soft cap,限制极端 logits。
本章小结
本节的关键不是记住所有模型名,而是把公开模型的设计选择转化成可迁移判断:共识默认值可以作为起点,例外需要知道原因,涉及系统和推理成本的选择必须结合资源账本讨论。
Attention variants and inference pressure
本节解释 attention head 设计为何被推理成本重新打开:MQA、GQA、local/sliding-window attention。
术语消化:MHA、MQA、GQA、local attention
- MHA:每个 query head 都有自己的 key/value head,表达力强但 KV cache 大。
- MQA:多个 query heads 共享一组 key/value,显著降低推理 KV cache,但可能轻微损失质量。
- GQA:介于 MHA 与 MQA 之间,多个 query heads 共享一组 KV heads,是现代推理友好的折中。
- Local/sliding-window attention:只 attend 附近窗口,降低长上下文成本,但需要周期性 full attention 或其他机制维持全局信息。
首用解释:perplexity 能说明什么
Perplexity(困惑度)是 token-level 交叉熵的指数,即 \(\mathrm{PPL}=\exp(\mathcal{L}_{CE})\);可直观理解为模型在每一步面对的“有效选项数”。数值越低通常表示语言建模概率更集中。它适合检测 MQA/GQA 是否损伤基础建模质量,但不是聊天、推理或长上下文能力的完整代理,也不能跨 tokenizer 直接比较绝对数值。
展开说明:本页说明大多数模型不太改 attention heads,但 inference-driven 例外越来越重要。
展开说明:本页从 attention compute 角度引入 GQA/MQA,关注 key/value head 成本。
读图:Slide 58 应该怎么看
这页不是装饰性截图,而是本节论点的证据页。先看图中模型/论文/曲线或表格的比较对象,再看它们支持的趋势:哪些设计已经形成共识,哪些只是局部实验结果,哪些主要由运行时或推理成本推动。读这类页时要区分 quality evidence、runtime evidence 和 stability evidence,不能把一种证据直接替换成另一种。
训练或 prefill 可以并行处理整段序列,decode 却必须 token-by-token 进行。Slide 59 把这一差异落到 KV cache:历史 token 的 key/value 不再重复计算,而是按 layer 保存在显存中;每生成一个 token,都要读取已有 cache、计算新 attention、再追加一条 K/V。序列越长、batch 越大、KV heads 越多,memory traffic 越快成为瓶颈。
KV cache 的一阶内存账本
若共有 \(L\) 层、batch 为 \(B\)、已缓存长度为 \(N\)、KV head 数为 \(H_{kv}\)、每个 head 维度为 \(D_h\)、每元素占 \(s\) bytes,则 K 和 V 合计约为
MHA 中 \(H_{kv}\) 通常等于 query head 数;MQA 将其降为 1,GQA 则降为若干组。这个线性因子正是推理系统采用共享 KV heads 的直接动机。
展开说明:本页解释 decode 的 arithmetic intensity 低,attention KV 读取会成为推理瓶颈。
读图:Slide 60 应该怎么看
这页不是装饰性截图,而是本节论点的证据页。先看图中模型/论文/曲线或表格的比较对象,再看它们支持的趋势:哪些设计已经形成共识,哪些只是局部实验结果,哪些主要由运行时或推理成本推动。读这类页时要区分 quality evidence、runtime evidence 和 stability evidence,不能把一种证据直接替换成另一种。
展开说明:本页给出 MQA 核心:多个 query heads 共享更少的 key/value heads。
展开说明:本页给出 GQA:不极端共享到一个 KV head,而是分组共享,质量和成本折中。
展开说明:本页展示 MQA/GQA 的 PPL 影响证据,说明质量损失通常小但不能忽略。
读图:Slide 63 应该怎么看
这页不是装饰性截图,而是本节论点的证据页。先看图中模型/论文/曲线或表格的比较对象,再看它们支持的趋势:哪些设计已经形成共识,哪些只是局部实验结果,哪些主要由运行时或推理成本推动。读这类页时要区分 quality evidence、runtime evidence 和 stability evidence,不能把一种证据直接替换成另一种。
展开说明:本页引入 sliding-window/local attention,降低长上下文完整 attention 的二次成本。
展开说明:本页展示混合策略:多数层 local,周期性 full attention 保持全局信息流。
读图:Slide 65 应该怎么看
这页不是装饰性截图,而是本节论点的证据页。先看图中模型/论文/曲线或表格的比较对象,再看它们支持的趋势:哪些设计已经形成共识,哪些只是局部实验结果,哪些主要由运行时或推理成本推动。读这类页时要区分 quality evidence、runtime evidence 和 stability evidence,不能把一种证据直接替换成另一种。
一张 Command A 图还不足以说明 hybrid attention 已成趋势,因此 Slide 66 并列 Gemma 4、OLMo 3 与 Qwen 3.5/Qwen 3 Next 的近期设计。它们的共同点不是完全相同的窗口或周期,而是把 full attention 当作稀缺的全局通信层,把 local/sliding-window attention 当作多数层的低成本默认;不同模型再配合 RoPE、NoPE 或其他位置处理。
读图:比较模式,而不是照抄周期
先看每个模型中 full layer 的间隔、local window 的大小和 position encoding,再看它们的上下文长度与推理目标。共同趋势支持“混合全局与局部”这一设计方向,却不能推出每四层一个 full attention 是通用最优。窗口和周期会同时改变 receptive field、KV traffic、kernel shape 与长程任务质量。
本章小结
本节的关键不是记住所有模型名,而是把公开模型的设计选择转化成可迁移判断:共识默认值可以作为起点,例外需要知道原因,涉及系统和推理成本的选择必须结合资源账本讨论。
如何验证一个 architecture tweak
把公开模型的共同选择变成自己的 recipe,不能只做一次最终 loss 对比。一个可信的 architecture ablation 至少要固定数据顺序、token budget、optimizer、learning-rate schedule 与总参数/训练 FLOPs,并在多个随机种子或可控规模上比较。若改动同时改变参数量,例如普通 FFN 换成 GLU,就必须缩放中间维度;若改动主要声称系统收益,例如 RMSNorm、parallel block 或 GQA,就必须加入端到端 step time、decode latency、memory traffic 和 peak memory,而不能只写理论 FLOPs。
| 证据层 | 至少记录什么 | 它能排除的错误结论 |
|---|---|---|
| 质量 | validation loss、perplexity、目标任务指标、多个 checkpoint | 避免把短暂优化优势或 tokenizer 差异当成最终质量。 |
| 稳定性 | gradient/logit/activation RMS、spike 次数、NaN 与恢复行为 | 避免只报告成功 run,忽略更高失败率。 |
| 预算 | 参数量、训练 FLOPs、token 数、FFN/head shape | 避免改动其实只是偷偷增加模型容量。 |
| 系统 | tokens/s、kernel latency、HBM traffic、显存峰值、decode latency | 避免把 FLOPs 降低直接等同于 wall-clock 加速。 |
| 迁移 | 至少两个规模、一个未参与调参的 hold-out setting | 避免把单一规模的局部最优写成架构定律。 |
本讲的正确产物不是“最佳架构名单”
更有价值的产物是一组带证据类型的默认值:pre-norm 主要由优化稳定性支持,RMSNorm 同时有质量持平和带宽动机,SwiGLU 有等预算消融与广泛实践,RoPE 提供相对位置几何,GQA/local attention 则主要响应推理内存和长上下文成本。知道结论依赖哪类证据,才知道换环境后应该重测什么。
本讲按源顺序纳入 Slides 2--67 的全部教学页;Slide 1 仅为课程标题,与讲义封面重复,故有意省略。
把这些页面放回同一条证据链后,可以看到“现代默认值”并不是一次性被发明出来的:一部分来自优化稳定性,一部分来自等预算质量比较,另一部分则由 HBM 带宽、KV cache 与 kernel shape 等系统约束推动。读者真正应带走的是判断方法——先确认改动解决哪类瓶颈,再检查它是否在相同参数、token 与 compute 预算下成立,最后用未参与调参的规模和任务验证能否迁移。
本章小结:Recap
最后回到本讲总问题:哪些默认值稳,哪些选择依赖规模、系统和任务。
展开说明:本页总结:现代 LM 有许多共同架构默认值,也有受推理、稳定性、系统约束驱动的新变化。
本章小结
本节的关键不是记住所有模型名,而是把公开模型的设计选择转化成可迁移判断:共识默认值可以作为起点,例外需要知道原因,涉及系统和推理成本的选择必须结合资源账本讨论。
跨章节综合:如何选择自己的 architecture recipe
前面逐项讨论了 norm、FFN、position、head shape、regularization 与 attention 变体,本节把这些局部选择压缩成一张决策表。核心不是给出永远正确的 recipe,而是区分稳定默认值、受推理系统驱动的变体,以及出现训练不稳定或长上下文需求时必须重新实验的边界。 | 决策层 | 保守默认值 | 什么时候需要重新实验 | | --- | --- | --- | | Norm | pre-norm + RMSNorm + no bias | 极深模型、训练不稳定、需要 QK norm 或额外 postnorm 时 | | FFN | SwiGLU / GeGLU,按参数量调整 hidden dim | 小模型、特殊硬件、不同 activation kernel 性能差异明显时 | | Position | RoPE | 超长上下文 extrapolation、局部 attention、特殊多模态输入时 | | Head shape | 总 head dim 接近 model dim,head dim 取硬件友好值 | 推理 KV cache 成本高,考虑 GQA/MQA/MLA 时 | | Regularization | 预训练少用 dropout,保留 weight decay | 数据很小、fine-tuning、过拟合明显时 | | Stability | 监控 logits、QK norm、gradient norm | 出现 loss spikes、softmax 饱和、长上下文训练不稳时 |
最终 takeaways
现代 LM 架构已经形成一组强默认值:pre-norm、RMSNorm、SwiGLU、RoPE、bias-free linear layers、保守 FFN/head/aspect ratio、GQA 或 hybrid attention 的推理友好变体。但这些默认值不是理论定律,而是公开模型、硬件、数据和训练稳定性共同塑造的经验均衡。
不要把架构选择和系统选择分开
RMSNorm、bias removal、parallel layers、GQA、sliding-window attention 看起来是 architecture,但常常由 memory bandwidth、kernel fusion、KV cache、latency 和 parallelism 驱动。Lecture 3 和 systems/inference 单元是相互嵌套的。
总结与延伸
本讲把现代 Transformer 的大量细节组织成四类问题:norm 和 residual stream 保证训练稳定,FFN/activation 决定表达和参数效率,position embedding 决定序列几何,hyperparameters 和 attention variants 则把模型质量、训练效率和推理成本连在一起。
- 共识默认值:pre-norm、RMSNorm、SwiGLU、RoPE、no bias 已经是现代大模型常见起点。
- 经验证据:很多选择来自公开模型和消融结果,而不是完备理论证明。
- 系统动机:FLOPs 少不一定 runtime 少;数据移动、KV cache 和 kernel shape 经常决定真实收益。
- 实验原则:保守默认值用于起步,真正 recipe 需要小规模可控实验验证。
拓展阅读
- Xiong et al. 2020 on pre-norm and warmup.
- Zhang and Sennrich 2019 on RMSNorm.
- Shazeer 2020 on GLU variants and SwiGLU.
- Su et al. 2021 on RoPE.
- Shazeer 2019 and Ainslie et al. 2023 on MQA/GQA.