跳到正文

RMSNorm vs LayerNorm:数值稳定性怎么比?

计算方式、数值稳定性、训练动态与内存开销对比,LLaMA 为何用 RMSNorm

原题:请比较Layer Normalization与RMS Normalization在计算方式、数值稳定性、训练动态和内存开销方面的差异,并结合当前主流大模型(如LLaMA系列)的实践,分析为何RMSNorm被更广泛采用。

模型架构 · 字节真题

回答与解析

计算定义

对单个 token 的 hidden vector x∈R^d:

  • LayerNorm:y=((x-mean(x))/sqrt(mean((x-mean(x))²)+eps))*gamma+beta
  • RMSNorm:y=(x/sqrt(mean(x²)+eps))*gamma

LayerNorm 具有 re-centering 和 re-scaling invariance;RMSNorm 舍弃中心化,只保留重缩放相关性质。RMS 也可能为零,因此同样需要 eps。RMSNorm 会把输入整体 RMS 归一到由 gamma 控制的尺度,并非保留原始幅度。

工程差异

RMSNorm 少计算均值、减法和通常的 beta,理论操作更少;但端到端速度和显存收益取决于融合 kernel、shape、硬件以及它在全模型中的占比,不能承诺固定百分比。两者通常都逐 token、沿 hidden dimension 归一化,不依赖 batch 统计。

训练与选型

RMSNorm 不要求输入预先近似零均值,也不能笼统称为对异常值更鲁棒或数值必然更稳定。LLaMA 等模型采用 pre-normalization 的 RMSNorm,说明它是经过大规模实践验证的架构选择,但不证明它与 RoPE、SwiGLU 天然绑定或对所有任务最优。选型应在相同初始化、学习率、精度和 kernel 下比较 loss、梯度范数、吞吐和最终任务质量。

口语版讲法(约3分钟)

  • 先写出两个正确公式
  • 比较中心化与重缩放性质
  • 拆开理论操作和端到端性能
  • 说明 LLaMA 实践与选型边界

我会先把公式写准确。对一个 token 的 hidden vector,LayerNorm 先减去各维均值,再除以方差平方根加 epsilon,最后乘逐维 gamma、加 beta。RMSNorm 不减均值,分母直接是 sqrt(mean(x²)+epsilon),然后乘逐维 gamma。不能把 RMS 再开一次平方根,也不能说 RMS 永远不为零,所以 epsilon 两边都需要。

性质上,LayerNorm 同时提供 re-centering 和 re-scaling invariance;RMSNorm 舍弃前者,只保留与缩放相关的归一化。它不是把输入“隐式中心化为零”,也不要求输入原本近似零均值。归一化以后,输入整体 RMS 被缩放到由 gamma 决定的尺度,因此也不能说它保留了原始幅度。

计算上,RMSNorm 少算均值、中心化减法,并且通常没有 beta,理论操作更少。但归一化在整层计算里只占一部分,现代框架还会做 kernel fusion,所以全模型速度和显存收益必须看具体硬件、hidden size、batch、dtype 和实现。不能把某个 benchmark 的百分比写成通用保证。两者在 Transformer 里通常都是逐 token 沿 hidden dimension 计算,不需要同步所有 GPU 的 token 统计。

训练稳定性也要谨慎。RMSNorm 原论文说明去掉中心化后仍能达到可比表现,但这不等于它对异常值天然更鲁棒或任何模型都更稳定。LLaMA 使用 pre-norm 的 RMSNorm,是一个经过大规模实践验证的架构选择;它并不能证明 RMSNorm 与 RoPE 或 SwiGLU 有数学上的天然绑定。

如果我要做选型,会固定初始化、学习率、精度和实现,比较训练 loss、梯度范数、吞吐、峰值显存和下游质量。结论通常是 RMSNorm 更简单、可能更高效,但是否更好仍由具体模型和 kernel 实测决定。

面试中可以用一个简单变换说明差别:给 hidden vector 每个维度都加同一个常数,LayerNorm 的中心化会消掉这部分平移,RMSNorm 不会;把整条向量乘一个正比例,两者都会通过分母抵消大部分尺度变化。这个例子比只背公式更容易解释 re-centering 与 re-scaling 的边界。

实现检查则要覆盖常量输入、极小幅值、低精度和不同 hidden size,并与框架算子比较前向和梯度。若端到端训练出现不稳,我会同时看残差尺度、初始化、学习率和精度,而不是立刻归因于归一化名称。最终选型要在同一 kernel 条件下测吞吐和质量,才能判断少一次均值计算是否真的转化成系统收益。

还可以补充残差结构中的位置。pre-norm 或 post-norm 会改变梯度路径,不能把整个训练稳定性都归到 LayerNorm 与 RMSNorm 的差别上。做替换实验时要保持归一化位置、残差缩放和参数初始化不变,否则对比混入了其他架构变量。

关键一句:归一化公式的操作数差异很小,端到端收益主要受融合 kernel 和模型 shape 影响。

核验来源

  1. Root Mean Square Layer Normalization
  2. Layer Normalization
  3. LLaMA: Open and Efficient Foundation Language Models

面试官还可能这样问

  1. 问法 1 · 场景切入

    假设现在要在同一 Transformer 上比较 LayerNorm 与 RMSNorm。你会怎样控制初始化、学习率、精度和 kernel,判断计算收益与训练稳定性差异?

  2. 问法 2 · 层层追问

    两种公式分别统计什么?……RMSNorm 省掉哪些操作?……端到端速度为何不等于少一个均值?……如果梯度异常,为什么不能只凭换 Norm 归因?

  3. 问法 3 · 直球技术

    请比较 LayerNorm 与 RMSNorm 的公式、re-centering/re-scaling、epsilon、实现成本和训练动态,并解释 LLaMA 的选择为何不构成普遍最优证明。

同模块相关题目