RolloutSkip 功能用法文档 ======================================== 最新更新:2025年8月1日。 适用场景 -------------------- RolloutSkip 功能旨在通过缓存和重用先前生成的序列来加速强化学习训练中的 rollout 过程。当你需要在以下场景时,此功能尤为有用: 1. 你需要使用相同的配置反复运行实验。 2. 你希望通过避免冗余的序列生成来节省时间,从而更接近最优策略。 API 及用法示例 ---------------------- 2.1 Trainer 适配 ~~~~~~~~~~~~~~~~~~~~~~ `RayDAPOTrainer()` (位于 `verl/recipe/dapo/dapo_ray_trainer.py`) 和 `RayPPOTrainer()` (位于 `verl/trainer/ppo/ray_trainer.py`) 都已适配。 以下是为 RayPPOTrainer 适配 rollout_skip 的示例。 .. code-block:: python # 导入 RolloutSkip 类 from verl.utils.rollout_skip import RolloutSkip ... class RayPPOTrainer: ... def fit(self): ... # 添加如下代码: rollout_skip = RolloutSkip(self.config, self.actor_rollout_wg) rollout_skip.wrap_generate_sequences() ... for epoch in range(self.config.trainer.total_epochs): for batch_dict in self.train_dataloader: ... 2.2 基本配置 ~~~~~~~~~~~~~~~~~~~~~~~ 然后,你应该在你的配置文件中添加以下参数来启用 RolloutSkip 功能: .. code-block:: bash actor_rollout_ref.rollout.skip_rollout=True \ actor_rollout_ref.rollout.skip_dump_dir="/tmp/rollout_dump" \ 注意: 1. `skip_dump_dir` 是缓存序列的存储目录。请确保此目录对你的训练进程是可写且可访问的。并且要确保 `skip_dump_dir` 不是相对路径,因为 ray 会将数据存储在 `/tmp/ray/session_/` 中,而工作节点将找不到相对路径。 2. 转储数据的路径遵循此命名模式 `{experiment_name}_{project_name}_TrainGBS{train_gbs}__InferGBS{gen_gbs}__N{n}`,一旦你更改了 `experiment_name`、`project_name`、`train_gbs`、`gen_gbs` 或 `n`,缓存的数据将存储在一个新目录中。