# PR #6198 完整报告

- 仓库：`verl-project/verl`
- 标题：[trainer] fix: remove actor.dump_memory_snapshot
- 合并时间：2026-04-29 10:57
- 原文链接：http://prhub.com.cn/verl-project/verl/pull/6198

---

# 执行摘要

- 一句话：移除 actor.dump_memory_snapshot 调用
- 推荐动作：值得关注此 PR 背后的 DistProfiler 统一化方向，但当前变更简单，不需要深度精读。建议确认 diffusion 训练器的 DistProfiler 支持是否已到位，避免用户困惑。

# 功能与动机

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

# 实现拆解

1. 在 `verl/trainer/ppo/ray_trainer.py` 的 `fit()` 方法中，移除检查 `actor_rollout_ref.actor.profiler.tool == "torch_memory"` 并调用 `self.actor_rollout_wg.dump_memory_snapshot(...)` 的代码块（共 8 行）。
2. 在 `verl/trainer/diffusion/ray_diffusion_trainer.py` 的 `fit()` 方法中，做同样的移除操作（共 8 行）。
3. 无其他文件变更，总删除 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 调用。

```python
# 移除前（第 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 调用。

```python
# 移除前（第 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 最终被批准，未明确回应此风险。

# 风险与影响

- 风险：
 1. **回归风险 ( 中 )**：Diffusion 训练器中移除手动快照后，若 `DistProfiler` 尚未完全支持该训练器，用户可能在 diffusion 场景下无法正常采集内存快照。
 2. **兼容性风险 ( 低 )**：对于仍依赖旧配置 `actor_rollout_ref.actor.profiler` 的用户，需要迁移到新的 `global_profiler` 配置，否则快照功能将不可用。
 - 影响：**影响范围**：所有使用内存快照功能的用户。
**影响程度**：中等。功能未删除而是迁移，但 API 发生变化，用户必须修改配置才能继续使用。对于已使用 `global_profiler` 的用户无影响。

- 风险标记：API 变更 , 缺少扩散训练器验证

# 关联脉络

- PR #6181 采集内存快照，出现报错 : 关联 Issue，报告 dump_memory_snapshot 方法未找到的崩溃问题，直接触发本 PR。