Pre-LN 与 Post-LN:归一化位置之争

02-架构解剖 进阶 约 15 分钟 #LayerNorm#Pre-LN#Post-LN#训练稳定 更新 2026-10-02
当前状态:未学
本文基于模型知识整理(生成时未联网核对),理论分析建议对照 Xiong et al. 2020 复核。

一句话定义

LayerNorm 放在子层之前(Pre-LN:x+Attn(LN(x)),现代默认)还是之后(Post-LN:LN(x+Attn(x)),2017 原版)——Post-LN 最终质量略优但必须靠 warmup 才训得稳;Pre-LN 梯度畅通、几乎不需要 warmup、可训更深——现代大模型清一色 Pre-LN 或其变体。

为什么重要

这是"理论稳定 vs 最终性能"的经典工程权衡,也是大模型训练配方(kp-013)的第一块积木。2017 原论文用 Post-LN+精调 warmup;GPT-2 起转向 Pre-LN;Llama 的 RMSNorm+Pre-LN 是当代标准——理解位置差异,就读懂了训练配方演化的第一页。

前置知识

kp-006(Block 结构)、LayerNorm 的作用(归一化激活尺度)。

核心概念

  • 两种结构:

- Post-LN:x₁ = LN(x + Attn(x))——LN 在残差相加之后,每层输出都被重新归一化; - Pre-LN:x₁ = x + Attn(LN(x))——LN 只作用于进子层的支路,残差主干"裸奔"直通。

  • 梯度行为差异(Xiong 2020 的核心结论):

- Post-LN:梯度在层间经 LN 反复重缩放,靠近输出的层梯度大、靠近输入的层梯度小——深模型需要 warmup"慢慢加热"否则爆炸; - Pre-LN:残差主干的梯度直通无阻(含 LN 的支路才被缩放),各层梯度近似均匀——可直接训深,最终性能对学习率更宽容。

  • 质量差异:Post-LN 在充分调参(含 warmup)下最终损失常略优于 Pre-LN——"归一化每层输出"有轻微的正则化效果;Pre-LN 换取的是训练鲁棒性(大模型训练一次成本千万级,鲁棒性价值远超那点质量差)。
  • 现代变体:RMSNorm(Llama 系:去均值化简,只除 RMS——更省计算);Sandwich-LN(前后都放,MoE 稳定用)——归一化本身的简化也是配方演化的一部分。

原理与机制

Post-LN 梯度为什么会分层:每过一层,梯度被 LN 的雅可比乘一次(重缩放因子与该层激活分布有关)——L 层连乘造成梯度的系统性层间失衡(深层的输入端层梯度指数级缩小)。warmup 的作用=在初期小步长下让激活分布先稳定,避免第一批更新就踩爆。

Pre-LN 的"主干直通":残差路径 x→x+Attn(LN(x)) 中,x 到输出的映射含恒等项——梯度对恒等项偏导为 1,不随深度衰减;LN 只影响支路。代价:主干上的表示"未被归一化",尺度可能逐层漂移(靠初始化与 RMSNorm 端点归一化治理,kp-013)。

选择哲学:小模型/学术复现(Post-LN 可行,追求极限质量);大模型/工业训练(Pre-LN/RMSNorm,追求必成与鲁棒)——当训练一次贵到无法重试,鲁棒性就是最大的性能。

图示

Post-LN: x₁ = LN(x + Attn(x))   每层输出重归一化
         梯度层间失衡 → 必需 warmup ; 深层难训 ; 最终质量略优
Pre-LN:  x₁ = x + Attn(LN(x))   主干直通
         梯度均匀 → 免warmup可深训 ; 现代默认
变体: RMSNorm(去均值简化, Llama) | Sandwich(MoE)
权衡: Post=理论质量 vs Pre=训练鲁棒

直观类比

Post-LN 像"每道工序后全车质检":质量稳定但流水线相互牵制,开工前要精细热机(warmup);Pre-LN 像"只在零件进机器前自检":总装线直通不停站——速度快、不易停线,整车质量靠首尾两道终检兜底。

实例或案例

  • GPT-2 起(2019)Pre-LN 成为 GPT 系标准;Llama/RWKV/Mistral 的 RMSNorm 全是 Pre 位置。
  • 训练深 Post-LN 的挣扎:原始论文需精心 warmup(4000 步);社区复现深 Post-LN 常见 loss spike——与 Pre-LN 对照鲜明的工程记忆。
  • MoE 中的 Sandwich-LN:MoE 输出方差大,前后双重归一化稳住专家输出(kp-022 的联动)。

常见误区

  • 误区一:"Post-LN 是错误设计"。它只是时代产物(当时无 warmup 经验积累),其质量上限仍是理论上限之一;"错误"的是不加配套措施就用。
  • 误区二:"RMSNorm 是 LayerNorm 的等价替身"。去掉了均值中心化(更少计算、实验性能相当)——是刻意简化不是随意替换。
  • 误区三:"Pre-LN 深层尺度漂移无关紧要"。主干激活尺度确实会漂(层越深越大)——靠端点归一化与初始化纪律治理,完全不管会出问题。

与其他知识点的关系

  • kp-006:Block 骨架的位置参数。
  • kp-013:warmup 与初始化的配套纪律。
  • kp-022/024:RMSNorm 在 Llama/量化栈中的落地。

自测题

  1. 写出 Pre-LN 与 Post-LN 的公式。

答:Pre:x+Attn(LN(x));Post:LN(x+Attn(x))——LN 在支路前 vs 相加后。

  1. 为什么 Post-LN 需要 warmup 而 Pre-LN 基本不需要?

答:Post-LN 梯度经逐层 LN 重缩放、层间失衡(输入端层梯度小),初期大步长易爆;Pre-LN 主干梯度直通均匀——无需热身即可稳定。

  1. 为什么现代大模型甘愿接受 Pre-LN 的轻微质量差?

答:大模型训练一次成本巨大,Pre-LN 的鲁棒性(免 warmup 微调、可训更深、对超参宽容)在期望成本上完胜微小质量差。

延伸阅读

  • Xiong 等, "On Layer Normalization in the Transformer Architecture"(ICML 2020,梯度分析原文)。
  • Zhang & Sennrich, "Root Mean Square Layer Normalization"(NeurIPS 2019,RMSNorm)。
  • GPT-2/Llama 官方实现(对照两种 LN 的代码位置)。