Prhub

#6198 [trainer] fix: remove actor.dump_memory_snapshot

原始 PR 作者 tardis-key 合并时间 2026-04-29 10:57 文件变更 2 提交数 1 评论 0 代码增减 +0 / -16

执行摘要

移除 actor.dump_memory_snapshot 调用

根据 Issue #6181 报告,使用 actor_rollout_ref.actor.profiler 采集内存快照时出现 dump_memory_snapshot 方法未找到的崩溃错误。该 PR 将旧的手动快照逻辑移除,并引导用户使用统一的 DistProfiler 接口来替代。

值得关注此 PR 背后的 DistProfiler 统一化方向,但当前变更简单,不需要深度精读。建议确认 diffusion 训练器的 DistProfiler 支持是否已到位,避免用户困惑。

讨论亮点

Review 中 gemini-code-assist[bot] 指出,在 diffusion 训练器中移除该调用可能导致回归,因为其对应的 DistProfiler 生命周期管理尚未在该训练器中实现。但 reviewer wuxibin89 最终批准了该 PR。未看到其他讨论。

实现拆解

  1. verl/trainer/ppo/ray_trainer.pyfit() 方法中,移除检查 actor_rollout_ref.actor.profiler.tool == "torch_memory" 并调用 self.actor_rollout_wg.dump_memory_snapshot(...) 的代码块(共 8 行)。
  2. verl/trainer/diffusion/ray_diffusion_trainer.pyfit() 方法中,做同样的移除操作(共 8 行)。
  3. 无其他文件变更,总删除 16 行,无新增行。
文件 模块 状态 重要度
verl/trainer/ppo/ray_trainer.py 训练器 modified 5.04
verl/trainer/diffusion/ray_diffusion_trainer.py 训练器 modified 5.04

关键源码片段

verl/trainer/ppo/ray_trainer.py core-logic

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 core-logic

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}"
# )# 移除后:上述代码块被完全删除。

评论区精华

Diffusion 训练器回归风险 正确性

gemini-code-assist[bot] 指出移除 diffusion 训练器中的 dump_memory_snapshot 可能导致回归,因为 DistProfiler 生命周期管理可能未在该训练器中实现。

结论:PR 最终被批准,未明确回应此风险。 · 已解决

风险与影响

  1. 回归风险 (中):Diffusion 训练器中移除手动快照后,若 DistProfiler 尚未完全支持该训练器,用户可能在 diffusion 场景下无法正常采集内存快照。
  2. 兼容性风险 (低):对于仍依赖旧配置 actor_rollout_ref.actor.profiler 的用户,需要迁移到新的 global_profiler 配置,否则快照功能将不可用。

影响范围:所有使用内存快照功能的用户。
影响程度:中等。功能未删除而是迁移,但 API 发生变化,用户必须修改配置才能继续使用。对于已使用 global_profiler 的用户无影响。

API 变更 缺少扩散训练器验证

关联 Issue

#6181 采集内存快照,出现报错

完整报告

参与讨论