执行摘要
此PR修复了Megatron后端中LR scheduler重复恢复的bug,通过移除冗余调用避免了在--no-load-optim配置下学习率错误跳到最小值的问题,提升了训练稳定性,属于重要bugfix。
功能与动机
为什么做:当使用--no-load-optim参数时,模型权重从检查点加载,但优化器/scheduler状态不恢复,而多余的scheduler快速前进调用会导致学习率直接被推到min_lr,引发lr=0错误。PR body中明确指出:“the fresh scheduler was still fast-forwarded to the checkpoint iteration... the LR could be pushed directly to min_lr at startup”。
实现拆解
做了什么:仅在slime/backends/megatron_utils/model.py文件的initialize_model_and_optimizer()函数中删除了一行代码:
- opt_param_scheduler.step(increment=iteration * args.global_batch_size)
这消除了重复的scheduler恢复,因为Megatron已在load_checkpoint()中处理scheduler状态恢复。没有其他改动。
评论区精华
讨论了什么:无review评论或讨论,因此无交锋内容可供提炼。
风险与影响
技术风险:风险较低,主要依赖Megatron的load_checkpoint()逻辑正确性;如果外部恢复有误,可能引入回归,但根据描述风险有限。无测试覆盖变更,但代码简单。
影响评估:修复了特定训练配置下的LR错误,影响使用Megatron后端且需要不加载优化器状态恢复的用户,提升训练可靠性;对系统其他部分无直接影响。
关联脉络
跨PR关系:从近期历史PR看,无直接修改相同文件的PR,但此PR属于megatron_utils模块的bugfix系列,如PR 1765(修复参数调用)也涉及megatron_utils,显示该模块持续优化。整体趋势表明仓库在修复训练相关bug以提升性能稳定性。
参与讨论