跳到正文

Transformer 为何用 LayerNorm 而非 BatchNorm?

训练稳定性、批大小依赖性与序列建模特性分析

原题:在Transformer等大模型中,为何普遍采用Layer Normalization而非Batch Normalization?请从训练稳定性、批大小依赖性和序列建模特性等方面进行解释。

模型架构 · 美团真题

回答与解析

核心是统计轴与状态

BatchNorm通常按通道利用batch及实现中纳入的空间或时间轴计算统计量;训练依赖当前batch,推理使用running mean和variance。LayerNorm在Transformer中通常对每个token自己的hidden dimension计算,不读取其他样本。

因此LN更适合大模型常见的可变micro-batch、梯度累积、变长序列和自回归动态batch。BN是否被padding影响取决于张量布局、统计轴及是否做masked统计;它不是数学上必须固定序列长度。大模型训练的batch也没有通用的1到8,必须区分每卡micro-batch、数据并行规模和global batch。

LN/RMSNorm与残差结构形成成熟的Pre-Norm或Post-Norm配方,训练与推理都使用当前token统计,不维护BN式运行状态。BN并非不能用于序列模型,但需要处理跨样本耦合、masked统计、同步通信和训练推理分布差异。

选型应固定模型与初始化,比较不同micro-batch和序列长度下的loss、梯度、吞吐和最终质量,而不是用“大模型batch小”一句话代替分析。

口语版讲法(约4分钟)

  • 比较BN和LN统计轴
  • 区分micro-batch与global batch
  • 解释变长和padding条件
  • 说明训练推理状态差异
  • 保留BN可用边界

Transformer更常使用LayerNorm,根本原因不是一句“文本batch小”,而是统计轴和训练推理行为更匹配。BatchNorm通常对每个通道,利用batch以及实现里指定的空间或时间轴计算均值方差。训练时一个样本的输出会受同batch其他样本影响,推理时则使用训练阶段累计的running statistics。

LayerNorm在Transformer里通常对每个token自己的hidden dimension归一化,不读取其他batch样本,也不是把整句话所有token混在一起求一个均值。这样micro-batch大小、数据并行切分或线上动态batch变化时,归一化行为更一致。现代模型也常用RMSNorm,但它和LayerNorm一样保留了这种按token、与batch解耦的接口。

大模型的batch不能概括成固定的一到八。每张卡的micro-batch可能很小,但可以通过数据并行和梯度累积得到更大的global batch。BatchNorm看到的是当前前向的统计,不会自动看到梯度累积后的全局样本;如果用SyncBatchNorm跨设备聚合,又会增加通信。因此要明确讨论的是哪一级batch。

变长序列和padding会让BN设计更复杂,但不能说BN必须固定序列长度。是否被padding影响,取决于张量布局、统计轴以及是否排除无效位置。标准算子若把padding纳入统计会产生偏差,自定义masked统计可以缓解。LayerNorm对每个有效token的隐藏维独立计算,天然避免跨序列统计被padding混入。

训练与推理状态也是关键。自回归服务的batch组成和长度不断变化,LN每次只用当前token统计,不需要维护running mean和variance;BN则要考虑训练分布与线上分布是否一致。再加上Transformer残差结构已经形成成熟的Pre-Norm、Post-Norm和RMSNorm配方,所以LN类方法成为默认。

但BN不是数学上不可用。特定架构可以设计合适统计轴、mask和同步方式。真正比较时,我会固定模型、初始化和优化器,在不同micro-batch、长度和推理模式下测loss、梯度范数、吞吐及最终质量。这个证据比“BN只能用于固定长度大batch”更准确。

混合精度下还要检查均值、方差或均方根是否用足够精度累积,epsilon是否适合当前dtype。归一化位置也会改变残差和梯度路径,Pre-Norm与Post-Norm不是只换一行代码,深层训练稳定性与初始化都应重新验证。

如果线上只做单样本推理,BN仍会使用训练期运行统计,而不是当前单样本方差;LN则始终由当前token计算。这个差异会影响分布漂移诊断,也说明训练模式与eval模式切换必须纳入测试。

上线回归要同时覆盖train与eval模式。

并记录配置。

关键一句:梯度累积为什么不会让BatchNorm自动看到global batch统计。

核验来源

  1. Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift
  2. Layer Normalization
  3. Attention Is All You Need

面试官还可能这样问

  1. 问法 1 · 场景切入

    假设你在做电商平台的大模型客服,用户发来的消息长度差异很大,有的是一句话,有的是长段落,而且训练时batch size只能设很小。你模型里用的是LayerNorm还是BatchNorm?为什么选这个?

  2. 问法 2 · 层层追问

    大模型里常用的归一化方式你了解哪些?……那BN和LN主要区别在哪?……为什么Transformer普遍用LN而不是BN?

  3. 问法 3 · 直球架构

    解释一下为什么Transformer普遍采用Layer Normalization而不是Batch Normalization?从训练稳定性、批大小依赖性和序列建模特性几个角度谈。

同模块相关题目