本文提出了 Progressive Residual Warmup (ProRes),一种针对 Transformer 预训练的逐层残差预热策略。该方法通过一个随时间变化的标量 α 动态控制各层残差分支的贡献,实现了“浅层先学、深层后到”的顺序优化,在多种模型规模(最高至 7B)和架构变体上均显著提升了收敛速度与泛化性能。
TL;DR
在预训练大模型时,我们通常假设所有层应该同时开始学习。然而,ProRes (Progressive Residual Warmup) 告诉我们:“长幼有序”才是优化的王道。通过让浅层先稳定表示,深层逐步加入战斗,ProRes 在不增加推理开销的情况下,显著提升了 Llama 类架构的预训练稳定性和最终性能。
背景定位:这是一篇针对 Transformer 优化基础理论的创新工作,挑战了传统的静态初始化视角,提出了动态、阶段感知的残差控制机制。
1. 痛点:深层的“越位”与优化的混乱
在传统的 Pre-LN 或 Post-LN 架构中,残差连接(Residual Connection)虽然解决了消失梯度问题,但也带来了一个副作用:在训练初期,所有层会同时对表示(Representation)进行大幅修改。
由于深层的输入高度依赖浅层,当浅层还处于“混沌”状态时,深层强行进行的参数更新往往是低效甚至有害的噪声。这种现象在极深模型中尤为明显,表现为激活值指数级增长和频繁的训练崩坏(Loss Spikes)。
2. 核心直觉:ProRes 的“循序渐进”
作者提出的 ProRes 遵循一个极简物理直觉:让深层等一等。
2.1 数学定义
对于第 层,ProRes 将其残差前向过程修改为: 其中, 是一个依赖于当前训练步数 和所属层数 的标量。
2.2 线性调度(Linear Schedule)
最推荐的配置是线性预热: 这意味着:
- 初始化即恒等: 时 ,模型退化为一串恒等映射,保证了极佳的起始梯度流动。
- 顺序激活:第一层最快达到满血状态,而第 层需要最长的等待时间。这种设计完美契合了 Transformer 的层级依赖逻辑。
表 1:ProRes 在 Pre-LN, Post-LN 等多种变体上的实现形式
3. 实验战绩:全线飘红
ProRes 的强大之处在于其通用性。无论你使用的是经典的 Pre-LN,还是为了稳定性设计的 DeepNorm 或 LayerNorm Scaling (LNS),加入 ProRes 都能获得 Buff 加成。
-
规模扩展:在 7B 参数模型实验中,ProRes 在训练全程保持了对 Vanilla Pre-LN 的领先,且在学习率衰减阶段(Decay Stage)表现出更强的潜力。
-
深度扩展性(Depth Scaling):
图 1:随着层数增加,ProRes(蓝色实线)展现出最稳健的 Perplexity 下降曲线,尤其在 120 层时,优势远超 LNS 和基线。 -
优化稳定性: 如图 2 所示,在极深模型中,普通 Pre-LN 的梯度和 Loss 波动剧烈(Spike Score 高),而 ProRes 几乎保持零波动。

4. 深度洞察:为什么有效?
论文通过分析激活值增长和表示演化给出了答案:
- 抑制指数爆炸:Vanilla Pre-LN 容易在深层出现激活值 norm 指数增长,ProRes 强制让早期训练保持在线性增长轨道上,避免了浮点溢出风险。
- 平滑演化:通过测量层输出与最终模型输出的余弦相似度,发现 ProRes 的表示演化比基线平滑得多。基线在训练中频繁出现表示“回退”或剧烈震荡,而 ProRes 则是稳健地向终点推进。
图 4:(a) 无 ProRes 时深层表示波动剧烈;(b) 加入 ProRes 后演化路径极度平滑。
5. 总结与反思
ProRes 成功的关键在于它尊重了神经网络的 Inductive Bias——即层级深度本身就带有时间先后的逻辑含义。
局限性:
- 调度参数 可能需要根据总训练步数微调。
- 对于某些已经极其稳定的架构(如使用了强力微缩 LNS 的模型),收益会边际递减。
启示: 在追求大模型 Scaling 的过程中,除了增加参数和数据,重新检视优化过程中的时序协调,或许是通往万亿参数模型更高效、更稳定的“免费午餐”。
本文由资深学术主编重构。代码已开源:https://github.com/dandingsky/ProRes
