一句话定义:线性缩放规则(Linear Scaling Rule)是一条调参经验——在随机梯度下降(SGD)里,把批大小(batch size)扩大 k 倍,学习率(learning rate)也跟着扩大 k 倍。
原理不复杂。SGD 每步只用一个批次的样本估梯度,批越小,梯度越"吵";批越大,估计越接近真实梯度。把 k 个小批次的梯度平均,近似等于一个 k 倍大批次算出的梯度。既然 k 次小步累积的总位移约等于 k·lr 乘上平均梯度,那想用一步大批次走出同样的位移,学习率就得乘以 k。
打个比方:开会征求意见。每次问 8 个人,小改一点方案,连问 8 轮;改成一次问 64 个人、只改一次,这一改的幅度就得是原来的 8 倍,总修正量才相当。风险在于:这 64 人万一整体偏了,你一步改猛,没有回头路——大 batch 配大学习率容易翻车,正是这个道理。
它和几个邻居容易混:
| 策略 | batch 放大 k 倍后学习率 | 常见适用场景 |
|---|---|---|
| 不缩放 | 不变 | 求稳,宁可慢 |
| 线性缩放 | ×k | 纯 SGD 或带动量,且必须配 warmup |
| 平方根缩放 | ×√k | 自适应优化器、超大 batch 更常用 |
梯度累积(gradient accumulation)是用小批次凑出等效大批次,梯度上等价,但对批归一化(BatchNorm)的统计量和优化器状态未必等价,不能一概而论。
为什么到了大模型训练里,这条公式经常不灵?原因有三。其一,Adam 这类自适应优化器会把更新幅度归一化,不再与梯度大小成正比,线性缩放的前提被削弱。其二,训练初期参数离目标很远、梯度方向很乱,"估计准"不等于"方向对",此时直接上大步长极易发散,所以必须先 warmup:用极小学习率跑一段,等优化器统计量和参数尺度稳下来再爬升。warmup 不是可选项,是这条规则的安全绳。其三,存在临界批大小(critical batch size):batch 大到一定程度,梯度噪声已经很小,再加 batch 只烧算力不提速,学习率自然也不该继续线性放大;而训练后期那点噪声还有正则作用,步子太大反而伤泛化。
实操建议:把线性缩放当起点,别当定律。要放大 batch,就得同时把学习率、warmup 长度、权重衰减这套互相耦合的超参一起调,跑几条短对照曲线看损失是否平稳下降,不稳就退回 √k 甚至完全不缩放。具体框架的默认配置,以官方文档为准。
对普通人来说,这条规则的价值在于提醒:AI 里的调参口诀都带前提条件,前提一变,经验就失效。
