在大语言模型预训练中,优化器常被简化为“选 AdamW,再调整学习率”。但模型内部并不是均匀的参数集合:词嵌入、注意力投影、前馈网络、归一化层和输出头承担不同功能,其参数尺度、梯度统计与收敛速度也不相同。优化器参数分组的价值,正是让这些层获得更匹配的更新规则,从而改善层级学习的协调性、训练稳定性和最终收敛质量。
参数分组究竟改变了什么
参数分组是指按照参数名称、模块类型、网络深度或张量属性,将模型参数划分为若干集合,并分别设置学习率、权重衰减、动量系数等超参数。PyTorch 优化器原生支持为不同参数组指定独立选项,因此它并非只能用于微调,在预训练阶段同样可以表达分层优化策略,相关机制可参考 PyTorch 优化器文档。
如果所有参数共享完全相同的基础学习率,优化器仍会通过一阶矩和二阶矩进行逐元素自适应,但这种自适应并不能完全消除层间差异。某些层可能持续接受过大的相对更新,另一些层则几乎不动。参数分组相当于在逐元素自适应之外,再增加一层面向模型结构的控制。
层级学习为何会出现不同步
LLM 的底层通常更直接地处理词形、位置和局部组合模式,中间层逐步形成上下文交互,高层则更接近任务损失所要求的抽象预测空间。这里的“层级”并不意味着每一层只学习固定类型的知识,而是说明不同深度的表示与梯度传播位置存在差异。
训练初期,靠近输入和输出的模块可能得到较强或较直接的梯度信号,而深层残差结构中的部分参数需要经过更长时间才能形成稳定表示。如果对所有层采用激进更新,可能出现高层快速适配、底层表示反复漂移的情况;如果统一采用保守设置,又可能让部分层长期欠训练。按深度设置学习率倍率,可以调节这种学习节奏,但倍率应通过小规模实验确定,不能机械套用固定比例。
嵌入层与输出层
词嵌入矩阵往往参数量大、访问频率高度不均,常见词与低频词获得的更新机会不同。若输入嵌入与语言模型输出头共享权重,那么一次更新还会同时影响编码和预测两个角色。将其单独分组,有助于限制过大的参数漂移,也便于检查共享参数是否被重复加入优化器。
归一化参数与偏置项
LayerNorm 或 RMSNorm 的缩放参数,以及各模块中的偏置项,与普通权重矩阵的作用不同。工程实践中常将它们设为不参与权重衰减的参数组,避免对尺度控制参数施加与主权重相同的收缩。AdamW 将权重衰减与损失梯度更新解耦,其理论动机和实现差异可参考 AdamW 论文。不过,“所有一维参数都不衰减”只是常用规则,仍应结合具体架构核对,不能只依赖名称匹配。
注意力层与前馈网络
注意力投影负责信息路由,前馈网络通常承载较多参数并执行通道变换。两者的参数范数、梯度范数和更新范数可能处在不同范围。分组后可以分别观察其更新强度,而不是只看全局梯度范数。若某组长期出现更新范数远大于参数范数,往往意味着学习率过高、数值不稳定或梯度裁剪策略不足。
参数分组对收敛质量的三重影响
- 控制相对更新幅度:真正值得监控的不只是梯度大小,还包括“更新范数除以参数范数”。参数组可以帮助限制局部更新过猛,降低损失尖峰和表示突变的风险。
- 改善正则化精度:对主权重、归一化参数、偏置和嵌入采用不同权重衰减策略,可以减少不必要的收缩,同时保留对大规模矩阵的容量约束。
- 协调不同深度的学习速度:分层学习率能够缓解部分层提前饱和、部分层更新不足的问题,使模型容量得到更均衡的利用。
层级自适应优化器进一步把这种思想写入更新规则。LAMB 会依据层级参数范数与更新范数调整步长,主要用于改善大批量训练下的稳定性。其原始研究展示了该策略在 BERT 等模型上的适用性,但这并不等于它在所有 LLM、数据规模和算力配置下都优于 AdamW,具体方法与适用背景可参考 LAMB 论文。
更稳妥的分组实施方法
- 先建立简单基线:建议首先仅区分“参与权重衰减”和“不参与权重衰减”两组,确认损失曲线、验证集指标和训练吞吐正常。
- 再按结构增加分组:只有在监控数据表明嵌入层、注意力层、前馈网络或特定深度存在明显失衡时,再增加学习率倍率,避免超参数数量无谓膨胀。
- 检查参数覆盖:每个可训练参数必须恰好属于一个组。遗漏参数会导致其不更新,重复参数则可能引发报错或不可预期行为。还应记录各组参数量、名称样例和超参数。
- 统一处理调度器:全局 warmup 与学习率衰减应保持各组倍率关系稳定。若训练中动态修改组学习率,需要确认调度器不会在下一步覆盖修改结果。
- 按组记录诊断指标:至少监控梯度范数、参数范数、更新范数、非有限值数量及有效学习率,并结合训练损失、验证损失和下游评测判断收敛质量。
常见误区与决策原则
参数组并非越多越科学。分组过细会让调参空间迅速扩大,还可能掩盖数据质量、初始化、混合精度或并行通信中的真正问题。仅凭层号设置单调递增或递减的学习率,也不一定符合从头预训练的需要,因为这种策略在预训练与微调中的含义并不相同。
合理的参数分组应当来自可观测的优化差异,而不是来自对网络层功能的想当然分类。
实践中可以把“是否需要独立参数组”转化为三个问题:该类参数是否需要不同的正则化;其相对更新幅度是否持续异常;调整后是否在相同计算预算下改善验证损失或训练稳定性。只有至少一个答案明确为“是”,新增分组才具有充分理由。
总结
优化器参数分组的核心作用,是把统一的全局优化策略转化为尊重模型结构差异的分层控制。它能够通过差异化学习率、权重衰减和更新尺度,协调嵌入、注意力、前馈与归一化模块的学习节奏,并降低局部不稳定对整体收敛的影响。最可靠的路径不是一次设计复杂方案,而是从两组基线开始,依据逐组监控结果逐步细化,并最终用验证损失、稳定性和泛化表现评估其真实收益。