执行摘要
本次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最终以硬编码方式合并,这可能导致未来脚本维护时出现不一致。
风险与影响
技术风险:
- 训练稳定性风险:
staleness_threshold从0.45增至0.75,可能显著改变异步训练中的参数同步频率,影响收敛行为。
- 内存风险:PPO token长度计算分母从8改为2,使最大token长度增加4倍,在NPU环境下可能引发内存不足错误。
- 维护风险:
fsdp_size硬编码而非使用变量,降低了脚本的可维护性。
影响范围:
- 仅影响使用该特定脚本进行完全异步DAPO训练的实验人员。
- 对系统其他模块无直接影响。
- 需要实际训练验证调整效果。
关联脉络
从近期历史PR看,完全异步策略相关变更呈现以下趋势:
- 实验性模块持续优化:PR 5816同样修改了完全异步策略的脚本,移除硬编码的工具代理循环,与本PR同属实验模块的维护工作。
- NPU设备支持加强:PR 5795为NPU启用expandable segment支持,与本PR的NPU环境优化相呼应。
- 训练脚本调优常态化:多个PR涉及训练脚本的超参数调整(如PR 5679、5826),表明项目处于密集的实验调优阶段。
本次PR是实验性训练脚本调优的典型代表,反映了团队在异步训练稳定性方面的探索。
参与讨论