LLM训练:学习率与批量大小的优化最佳实践及调参示例
大语言模型训练中批量大小与学习率的调优实践及联动策略
一、批量大小的优化实践
- 先摸硬件上限:先测出单卡能跑的最大批量(不触发显存溢出),再用梯度累积模拟更大批量。比如单卡最多跑8条数据,要等效32的批量,就把梯度累积步数设为4。
- 别用太小的批量:极小批量会让梯度噪声太大,模型收敛容易晃,建议等效批量至少在32以上。
- 适配任务序列长度:文本生成任务里,序列越长越占显存,长序列时得适当减小单卡批量。
二、学习率的优化实践
- 初始值范围:预训练LLM一般用1e-5到1e-4,微调时降到5e-6到2e-5就行。
- 用学习率调度器:优先选余弦退火或者线性衰减,别用固定学习率,不然后期容易震荡。
- 加warm-up阶段:前几百步用小学习率慢慢升上来,防止模型刚开始参数乱跳,warm-up步数一般占总步数的5%-10%。
三、批量大小与学习率的联动调整逻辑
核心是线性缩放规则:等效批量翻倍,学习率也跟着翻倍,这样能保持梯度更新的幅度一致,不让收敛节奏乱掉。
- 等效批量怎么算:单卡批量 × 显卡数量 × 梯度累积步数,只要这个值变了,就按比例调学习率。
- 超大批量的例外:如果等效批量超过1024,学习率别直接翻倍,乘以0.8左右就行,避免模型卡在局部最优。
- 验证调整效果:改完先跑1-2个epoch看损失曲线,要是损失降得慢或者晃,就把学习率调低一点;要是损失降得太快,可小幅提一点学习率。
四、文本生成任务调参交互示例
拿7B模型在单张A100(80G)上微调文本摘要任务举例:
- 初始配置:
- 单卡批量:
8(序列长度512,刚好不爆显存) - 梯度累积步数:
4→ 等效批量 = 8×1×4=32 - 初始学习率:
2e-5
- 单卡批量:
- 优化调整:
- 要把等效批量升到64,单卡批量不变,把梯度累积步数改成
8 - 按线性缩放,学习率调为
4e-5
- 要把等效批量升到64,单卡批量不变,把梯度累积步数改成
- 效果验证:
- 跑1个epoch后发现损失震荡,说明学习率偏高,改成
3.2e-5(原缩放值的0.8倍) - 之后损失平稳下降,最终摘要的ROUGE指标比初始配置提升了2.1%
- 跑1个epoch后发现损失震荡,说明学习率偏高,改成
内容的提问来源于stack exchange,提问作者Arman Asgharpoor
相关产品推荐
相关产品推荐

