Prhub

#5864 [fully_async] chore: Update fully async dapo qwen3-30b npu script

verl-project/verl · 作者 wangshuyang31 · 合并时间 2026-04-03 01:11

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

执行摘要

更新完全异步 DAPO 训练脚本,调整超参数以对齐同步脚本的奖励进展。

根据PR描述,本次变更的目的是'确保奖励进展与对应的同步脚本对齐'(ensuring a proper reward progression aligned with the corresponding sync script)。这表明脚本调整是为了使完全异步训练模式下的奖励曲线与同步训练模式保持一致,解决可能存在的训练稳定性或收敛性问题。

建议相关实验人员仔细阅读该脚本的变更,特别是超参数调整的逻辑。对于研究异步训练调优的工程师,可以关注staleness_threshold和PPO token长度计算的调整策略。普通开发者无需深入阅读。

讨论亮点

review中仅有一条来自gemini-code-assist[bot]的评论,指出脚本中fsdp_size变量定义但未使用,而是硬编码了-1值,这降低了脚本的可维护性。建议使用变量引用并确保Hydra配置覆盖使用正确的'+'前缀。该建议未被采纳,PR最终以硬编码方式合并。

实现拆解

仅修改了一个shell脚本文件,主要调整包括:1) 禁用enable_overlong_buffer;2) 将train_prompt_mini_bsz从32减至16,total_rollout_steps从(64100)减至(32100);3) 将staleness_threshold从0.45增至0.75;4) 将actor_ppo_max_token_len和infer_ppo_max_token_len的计算分母从8改为2;5) 添加recompute=True、max_num_seqs=128、loss_agg_mode='token-mean'等新参数;6) 将fsdp_size从16改为-1;7) 添加模型dropout配置覆盖;8) 添加actor_rollout_ref.actor.fsdp_config.forward_prefetch=False等配置。

文件 模块 状态 重要度
verl/experimental/fully_async_policy/shell/dapo_30b_a3b_math_fsdp_npu.sh experimental/fully_async_policy modified 8.0

分析完成后,这里会展示 LLM 生成的相对完整源码片段和详细注释。

评论区精华

fsdp_size 变量硬编码问题 设计

gemini-code-assist[bot] 指出脚本中定义了 fsdp_size 变量但未使用,而是硬编码了 -1 值,这降低了脚本的可维护性。建议使用变量引用并确保 Hydra 配置覆盖使用正确的 '+' 前缀。

结论:建议未被采纳,PR 最终保持硬编码方式合并。 · closed

风险与影响

风险较低但需注意:1) 超参数调整可能影响训练稳定性,特别是staleness_threshold从0.45大幅增至0.75,可能改变异步训练中的参数同步行为;2) batch size减半和rollout steps减半可能影响训练效率和收敛速度;3) PPO token长度计算分母从8改为2,显著增加了内存需求,在NPU环境下可能引发内存不足;4) 硬编码fsdp_size=-1而非使用变量,降低了脚本的可维护性和一致性;5) 缺少对应的测试验证,依赖人工实验验证效果。

影响范围有限:1) 仅影响使用该特定脚本进行完全异步DAPO训练的用户,特别是Qwen3-30B模型在NPU上的实验;2) 对系统其他模块无直接影响;3) 对团队开发影响较小,属于实验性脚本的调优更新;4) 可能改善训练稳定性,但需要实际训练验证。

超参数调整 内存需求增加 硬编码配置 缺少测试覆盖

关联 Issue

未识别关联 Issue

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

完整报告

执行摘要

本次PR更新了完全异步策略下Qwen3-30B模型在NPU上运行的DAPO训练脚本,主要调整了多个超参数配置,包括禁用过⻓缓冲区、减小批次大小、增加陈旧度阈值、修改PPO token长度计算等,旨在使奖励进展与对应的同步脚本保持一致。变更仅影响实验性脚本,风险较低但需注意内存需求和训练稳定性。

功能与动机

根据PR描述,本次变更的目的是"确保奖励进展与对应的同步脚本对齐"(ensuring a proper reward progression aligned with the corresponding sync script)。这表明脚本调整是为了解决完全异步训练模式下可能存在的奖励曲线不一致问题,通过超参数调优使异步训练的行为更接近同步训练,提高训练的可预测性和稳定性。

实现拆解

仅修改了verl/experimental/fully_async_policy/shell/dapo_30b_a3b_math_fsdp_npu.sh一个文件,主要调整包括:

参数 原值 新值 影响
enable_overlong_buffer True False 禁用过⻓缓冲区处理
train_prompt_mini_bsz 32 16 训练批次大小减半
total_rollout_steps (64*100) (32*100) rollout总步数减半
staleness_threshold 0.45 0.75 陈旧度阈值大幅增加
PPO token长度计算分母 8 2 内存需求显著增加
fsdp_size 16 -1 使用自动FSDP大小
新增参数 - recompute=True, max_num_seqs=128, loss_agg_mode="token-mean" 添加梯度检查点和优化设置
模型dropout配置 - 添加attention_dropout=0., embd_pdrop=0., resid_pdrop=0. 禁用dropout以稳定训练

评论区精华

review中仅有一条来自gemini-code-assist[bot]的评论,指出脚本中fsdp_size变量定义但未使用的问题:

"The variable fsdp_size is defined at line 70 but is not utilized here. Instead, a hardcoded value of -1 is used. This reduces the maintainability of the script... It is better to use the variable to ensure consistency."

该建议未被采纳,PR最终以硬编码方式合并,这可能导致未来脚本维护时出现不一致。

风险与影响

技术风险

  1. 训练稳定性风险staleness_threshold从0.45增至0.75,可能显著改变异步训练中的参数同步频率,影响收敛行为。
  2. 内存风险:PPO token长度计算分母从8改为2,使最大token长度增加4倍,在NPU环境下可能引发内存不足错误。
  3. 维护风险fsdp_size硬编码而非使用变量,降低了脚本的可维护性。

影响范围

  • 仅影响使用该特定脚本进行完全异步DAPO训练的实验人员。
  • 对系统其他模块无直接影响。
  • 需要实际训练验证调整效果。

关联脉络

从近期历史PR看,完全异步策略相关变更呈现以下趋势:

  1. 实验性模块持续优化:PR 5816同样修改了完全异步策略的脚本,移除硬编码的工具代理循环,与本PR同属实验模块的维护工作。
  2. NPU设备支持加强:PR 5795为NPU启用expandable segment支持,与本PR的NPU环境优化相呼应。
  3. 训练脚本调优常态化:多个PR涉及训练脚本的超参数调整(如PR 5679、5826),表明项目处于密集的实验调优阶段。

本次PR是实验性训练脚本调优的典型代表,反映了团队在异步训练稳定性方面的探索。

参与讨论