执行摘要
- 一句话:移除 actor.dump_memory_snapshot 调用
- 推荐动作:值得关注此 PR 背后的 DistProfiler 统一化方向,但当前变更简单,不需要深度精读。建议确认 diffusion 训练器的 DistProfiler 支持是否已到位,避免用户困惑。
功能与动机
根据 Issue #6181 报告,使用 actor_rollout_ref.actor.profiler 采集内存快照时出现 dump_memory_snapshot 方法未找到的崩溃错误。该 PR 将旧的手动快照逻辑移除,并引导用户使用统一的 DistProfiler 接口来替代。
实现拆解
- 在
verl/trainer/ppo/ray_trainer.py 的 fit() 方法中,移除检查 actor_rollout_ref.actor.profiler.tool == "torch_memory" 并调用 self.actor_rollout_wg.dump_memory_snapshot(...) 的代码块(共 8 行)。
- 在
verl/trainer/diffusion/ray_diffusion_trainer.py 的 fit() 方法中,做同样的移除操作(共 8 行)。
- 无其他文件变更,总删除 16 行,无新增行。
关键文件:
verl/trainer/ppo/ray_trainer.py(模块 训练器;类别 source;类型 core-logic): PPO 训练器核心文件,移除了 snapshot 调用。
verl/trainer/diffusion/ray_diffusion_trainer.py(模块 训练器;类别 source;类型 core-logic): Diffusion 训练器核心文件,移除了 snapshot 调用。
关键符号:未识别
关键源码片段
verl/trainer/ppo/ray_trainer.py
PPO 训练器核心文件,移除了 snapshot 调用。
# 移除前(第 1652-1658 行):
# if (
# hasattr(self.config.actor_rollout_ref.actor, "profiler")
# and self.config.actor_rollout_ref.actor.profiler.tool == "torch_memory"
# ):
# self.actor_rollout_wg.dump_memory_snapshot(
# tag=f"post_update_step{self.global_steps}", sub_dir=f"step{self.global_steps}"
# )
# 移除后:上述代码块被完全删除,训练循环中不再手动触发 snapshot。
verl/trainer/diffusion/ray_diffusion_trainer.py
Diffusion 训练器核心文件,移除了 snapshot 调用。
# 移除前(第 1066-1072 行):
# if (
# hasattr(self.config.actor_rollout_ref.actor, "profiler")
# and self.config.actor_rollout_ref.actor.profiler.tool == "torch_memory"
# ):
# self.actor_rollout_wg.dump_memory_snapshot(
# tag=f"post_update_step{self.global_steps}", sub_dir=f"step{self.global_steps}"
# )
# 移除后:上述代码块被完全删除。
评论区精华
Review 中 gemini-code-assist[bot] 指出,在 diffusion 训练器中移除该调用可能导致回归,因为其对应的 DistProfiler 生命周期管理尚未在该训练器中实现。但 reviewer wuxibin89 最终批准了该 PR。未看到其他讨论。
- Diffusion 训练器回归风险 (correctness): PR 最终被批准,未明确回应此风险。
风险与影响
-
风险:
- 回归风险 (中):Diffusion 训练器中移除手动快照后,若
DistProfiler 尚未完全支持该训练器,用户可能在 diffusion 场景下无法正常采集内存快照。
- 兼容性风险 (低):对于仍依赖旧配置
actor_rollout_ref.actor.profiler 的用户,需要迁移到新的 global_profiler 配置,否则快照功能将不可用。
- 影响:影响范围:所有使用内存快照功能的用户。
影响程度:中等。功能未删除而是迁移,但 API 发生变化,用户必须修改配置才能继续使用。对于已使用 global_profiler 的用户无影响。
-
风险标记:API 变更, 缺少扩散训练器验证
关联脉络
- PR #6181 采集内存快照,出现报错: 关联 Issue,报告 dump_memory_snapshot 方法未找到的崩溃问题,直接触发本 PR。
参与讨论