# PR #1775 完整报告

- 仓库：`THUDM/slime`
- 标题：[Fix] Fix duplicate Megatron LR scheduler resume when optimizer state is not loaded
- 合并时间：2026-03-29 13:45
- 原文链接：http://prhub.com.cn/THUDM/slime/pull/1775

---

# 执行摘要
此 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()` 函数中删除了一行代码：
```python
- 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 以提升性能稳定性。