Prhub

#6006 [misc, fully_async] feat: add Qwen3-VL-8B fully async GRPO training script on geo3k

verl-project/verl · 作者 Silas-11 · 合并时间 2026-04-15 10:26

分析状态 已生成
文件变更 1提交数 1 · 评论 2
代码增减 +156 / -0
fully_async examples npu trainer

执行摘要

新增 Qwen3-VL-8B 模型在 geo3k 数据集上的完全异步 GRPO 训练脚本。

PR body中提到:'improving GPU utilization by overlapping training and inference',即通过重叠训练和推理提高GPU利用率,解决同步训练中资源未充分利用的问题,为geo3k数据集提供一个异步训练示例。

该PR值得快速浏览,了解异步训练配置和参数组织方式。建议关注异步特定参数如staleness_thresholdrollout_correction的设计,以及配置块的组织模式,以复用最佳实践。

讨论亮点

review评论中,gemini-code-assist[bot]指出两个关键问题:

  • 数据路径可移植性:硬编码$HOME/data/geo3k路径可能导致脚本在不同环境(如CI/CD)中失效,建议使用环境变量默认值。
  • GPU资源配置:配置每节点16个GPU可能与标准硬件(如8加速器节点)不兼容,导致Ray作业挂起,建议调整为每节点8个GPU并使用多节点。
    评论未显示是否采纳建议,PR被合并,可能存在未解决疑虑。

实现拆解

  1. 新增脚本文件:在verl/experimental/fully_async_policy/shell/目录下创建geo3k_qwen3vl_8b_fsdp2_16_16_npu.sh文件,作为训练入口。
  2. 环境与路径设置:设置环境变量如CUDA_DEVICE_MAX_CONNECTIONS和数据路径(硬编码为$HOME/data/geo3k),配置rollout模式为异步。
  3. GPU分配配置:定义n_gpus_rollout=16n_gpus_training=16等参数,用于Ray资源分配,但评论指出可能需调整为每节点8个GPU。
  4. 配置块定义:组织参数到命名配置块(如DATA_CONFIGACTOR_CONFIG等),包含数据、模型、优化器和异步特定参数(如staleness_thresholdrollout_correction)。
  5. 异步参数集成:添加trigger_parameter_sync_steprequire_batches等参数,支持完全异步训练模式。
    无测试、配置或部署配套改动,仅新增示例脚本。
文件 模块 状态 重要度
verl/experimental/fully_async_policy/shell/geo3k_qwen3vl_8b_fsdp2_16_16_npu.sh 异步策略 added 5.29
verl/experimental/fully_async_policy/shell/geo3k_qwen3vl_8b_fsdp2_16_16_npu.sh entrypoint

这是 PR 的唯一变更文件,新增了完全异步 GRPO 训练的 shell 脚本,定义了环境、GPU 分配和训练配置,是异步训练的实现入口。

# ===================================== GPU Allocation =====================================
n_gpus_rollout=16 # 分配给rollout任务的GPU数量,用于异步推理
n_gpus_training=16 # 分配给训练任务的GPU数量,用于模型更新
n_nodes_rollout=1 # rollout节点数,当前配置为单节点
n_nodes_train=1 # 训练节点数,当前配置为单节点
# 注意:评论指出此配置可能导致标准硬件(每节点8加速器)上作业挂起,建议调整为每节点8 GPU。# ===================================== Async Config =====================================
ASYNC_CONFIG="
  async.staleness_threshold=10 \
  async.trigger_parameter_sync_step=5 \
  async.require_batches=2 \
  async.partial_rollout=True \
  async.rollout_correction=sequence_tis_geometric_rs"
# 注释:ASYNC_CONFIG 定义了异步训练的关键参数,包括陈旧度阈值、参数同步步长和rollout校正机制,以处理训练与推理间的延迟。

评论区精华

数据路径可移植性 设计

gemini-code-assist[bot] 指出硬编码数据路径 `$HOME/data/geo3k` 可能导致脚本在不同环境中不可移植,建议使用环境变量默认值以提高灵活性。

结论:评论未显示是否采纳建议,PR 被合并,可能未解决可移植性问题。 · unresolved

GPU 资源配置 正确性

gemini-code-assist[bot] 警告 GPU 配置(每节点 16 个)可能与标准硬件不兼容,导致 Ray 作业挂起,建议调整为每节点 8 个 GPU 并使用多节点配置。

结论:评论未显示是否采纳建议,PR 被合并,存在资源配置风险。 · unresolved

风险与影响

技术风险:

  • 环境依赖硬编码:脚本中的数据路径$HOME/data/geo3k缺乏灵活性,在不同用户环境或CI中可能无法运行。
  • 资源配置不当:GPU配置(16个每节点)若与硬件不匹配,可能导致作业无限挂起,影响训练可执行性。
  • 兼容性风险:脚本依赖特定模型路径HF_MODEL_PATH和Ascend NPU环境,缺少跨平台验证。

对用户:提供了新的训练示例,帮助用户在Ascend NPU上运行Qwen3-VL-8B的异步GRPO训练,提升资源利用率。对系统:无直接影响,仅添加示例脚本。对团队:扩展了fully_async模块的支持范围,增强了多模态模型训练能力,促进异步训练实践。

环境依赖硬编码 资源配置风险

关联 Issue

未识别关联 Issue

当前没有检测到明确关联的 Issue 链接,后续同步到相关引用后会出现在这里。

完整报告

执行摘要

  • 一句话:新增Qwen3-VL-8B模型在geo3k数据集上的完全异步GRPO训练脚本。
  • 推荐动作:该PR值得快速浏览,了解异步训练配置和参数组织方式。建议关注异步特定参数如staleness_thresholdrollout_correction的设计,以及配置块的组织模式,以复用最佳实践。

功能与动机

PR body中提到:'improving GPU utilization by overlapping training and inference',即通过重叠训练和推理提高GPU利用率,解决同步训练中资源未充分利用的问题,为geo3k数据集提供一个异步训练示例。

实现拆解

  1. 新增脚本文件:在verl/experimental/fully_async_policy/shell/目录下创建geo3k_qwen3vl_8b_fsdp2_16_16_npu.sh文件,作为训练入口。
  2. 环境与路径设置:设置环境变量如CUDA_DEVICE_MAX_CONNECTIONS和数据路径(硬编码为$HOME/data/geo3k),配置rollout模式为异步。
  3. GPU分配配置:定义n_gpus_rollout=16n_gpus_training=16等参数,用于Ray资源分配,但评论指出可能需调整为每节点8个GPU。
  4. 配置块定义:组织参数到命名配置块(如DATA_CONFIGACTOR_CONFIG等),包含数据、模型、优化器和异步特定参数(如staleness_thresholdrollout_correction)。
  5. 异步参数集成:添加trigger_parameter_sync_steprequire_batches等参数,支持完全异步训练模式。
    无测试、配置或部署配套改动,仅新增示例脚本。

关键文件:

  • verl/experimental/fully_async_policy/shell/geo3k_qwen3vl_8b_fsdp2_16_16_npu.sh(模块 异步策略;类别 other;类型 entrypoint): 这是PR的唯一变更文件,新增了完全异步GRPO训练的shell脚本,定义了环境、GPU分配和训练配置,是异步训练的实现入口。

关键符号:未识别

关键源码片段

verl/experimental/fully_async_policy/shell/geo3k_qwen3vl_8b_fsdp2_16_16_npu.sh

这是PR的唯一变更文件,新增了完全异步GRPO训练的shell脚本,定义了环境、GPU分配和训练配置,是异步训练的实现入口。

# ===================================== GPU Allocation =====================================
n_gpus_rollout=16 # 分配给rollout任务的GPU数量,用于异步推理
n_gpus_training=16 # 分配给训练任务的GPU数量,用于模型更新
n_nodes_rollout=1 # rollout节点数,当前配置为单节点
n_nodes_train=1 # 训练节点数,当前配置为单节点
# 注意:评论指出此配置可能导致标准硬件(每节点8加速器)上作业挂起,建议调整为每节点8 GPU。# ===================================== Async Config =====================================
ASYNC_CONFIG="
  async.staleness_threshold=10 \
  async.trigger_parameter_sync_step=5 \
  async.require_batches=2 \
  async.partial_rollout=True \
  async.rollout_correction=sequence_tis_geometric_rs"
# 注释:ASYNC_CONFIG 定义了异步训练的关键参数,包括陈旧度阈值、参数同步步长和rollout校正机制,以处理训练与推理间的延迟。

评论区精华

review评论中,gemini-code-assist[bot]指出两个关键问题:

  • 数据路径可移植性:硬编码$HOME/data/geo3k路径可能导致脚本在不同环境(如CI/CD)中失效,建议使用环境变量默认值。
  • GPU资源配置:配置每节点16个GPU可能与标准硬件(如8加速器节点)不兼容,导致Ray作业挂起,建议调整为每节点8个GPU并使用多节点。
    评论未显示是否采纳建议,PR被合并,可能存在未解决疑虑。

  • 数据路径可移植性 (design): 评论未显示是否采纳建议,PR被合并,可能未解决可移植性问题。

  • GPU资源配置 (correctness): 评论未显示是否采纳建议,PR被合并,存在资源配置风险。

风险与影响

  • 风险:技术风险:
  • 环境依赖硬编码:脚本中的数据路径$HOME/data/geo3k缺乏灵活性,在不同用户环境或CI中可能无法运行。
  • 资源配置不当:GPU配置(16个每节点)若与硬件不匹配,可能导致作业无限挂起,影响训练可执行性。
  • 兼容性风险:脚本依赖特定模型路径HF_MODEL_PATH和Ascend NPU环境,缺少跨平台验证。
  • 影响:对用户:提供了新的训练示例,帮助用户在Ascend NPU上运行Qwen3-VL-8B的异步GRPO训练,提升资源利用率。对系统:无直接影响,仅添加示例脚本。对团队:扩展了fully_async模块的支持范围,增强了多模态模型训练能力,促进异步训练实践。
  • 风险标记:环境依赖硬编码, 资源配置风险

关联脉络

  • PR #5988 [fully_async] feat: enable fully async to log_val_generations: 同属fully_async模块,扩展了异步训练功能,涉及类似配置和日志增强。
  • PR #5950 [doc] chore: add rloo advantage estimator example script for npu: 类似地添加了NPU训练示例脚本,展示了硬件特定训练配置的模式。
  • PR #5961 [rollout, vllm] fix: auto-convert disable_mm_preprocessor_cache to mm_processor_cache_gb for vllm >= 0.13.0: 涉及rollout和vLLM配置,与本脚本中可能使用的vLLM rollout模式相关。

参与讨论