Prhub

#5682 [fsdp, model] feat: add qwen3.5 fsdp grpo training support.

verl-project/verl · 作者 Zhang1Sheng · 合并时间 2026-03-30 13:48

分析状态 已生成
文件变更 8提交数 1 · 评论 31
代码增减 +674 / -3
fsdp model trainer examples npu

执行摘要

新增 Qwen3.5 模型的 FSDP GRPO 训练支持,涵盖适配器、补丁和示例脚本。

PR body明确表述“enables FSDP GRPO training for Qwen3.5 models”,旨在响应用户对Qwen3.5模型FSDP训练的需求,Issue评论中用户如winnieyangwannan直接询问支持情况,表明这是提升框架实用性的功能扩展。

该PR值得精读,特别是qwen3_5.py中的适配器设计展示了如何修复FSDP2 CPU卸载bug,以及monkey_patch.py的扩展模式。建议关注配置参数设置、依赖版本管理和测试覆盖策略,以避免常见部署问题。

讨论亮点

Review中核心讨论包括:1) CI看护:beirong8kmiles建议将模型加入CI,作者Zhang1Sheng回复因vllm0.18版本当前NPU CI无法直接看护,突显测试覆盖缺口。2) 配置参数:wucong25质疑update_weights_bucket_megabytes设置过大,作者解释当前配置影响不大,参数未调整。3) 依赖版本:wucong25询问transformer版本要求,作者回答需要v5.0以上,明确了兼容性约束。4) 文件格式:gemini-code-assist[bot]指出脚本缺少换行符,建议修复以预防解析错误。

实现拆解

实现拆解为三部分:1) 模型适配器:新增verl/models/transformers/qwen3_5.py文件,包含fast_pos_embed_interpolate函数修复FSDP2 CPU卸载bug,并提供前向传播函数。2) 补丁集成:修改monkey_patch.py添加qwen3_5模型类型支持;更新npu_patch.py为Qwen3.5和Qwen3.5 MoE添加NPU补丁;调整npu_vllm_patch.py版本检查范围。3) 示例脚本:新增四个训练脚本(examples/grpo_trainer/run_qwen3_5_*),配置GRPO算法、FSDP2策略及关键参数,支持普通和NPU环境。

文件 模块 状态 重要度
verl/models/transformers/qwen3_5.py model added 8.0
verl/models/transformers/monkey_patch.py model modified 7.0
examples/grpo_trainer/run_qwen3_5_27b_vllm_fsdp.sh examples added 6.0
verl/models/transformers/npu_patch.py model modified 5.0
verl/utils/vllm/npu_vllm_patch.py vllm modified 4.0

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

关键符号

fast_pos_embed_interpolate forward_with_normal_backend qwen3_5_base_forward qwen3_5_moe_experts_forward_npu

评论区精华

CI 测试覆盖 测试

beirong8kmiles 建议将模型加入 CI,作者 Zhang1Sheng 回复因 vllm0.18 版本当前 NPU CI 无法直接看护。

结论:暂未解决,需后续 CI 更新以覆盖新版本依赖。 · pending

配置参数优化 设计

wucong25 质疑 update_weights_bucket_megabytes 设置过大,作者 Zhang1Sheng 解释当前配置影响不大。

结论:参数保持原样,未进行调整,依赖经验设置。 · 已解决

依赖版本管理 other

wucong25 询问 transformer 版本要求,作者 Zhang1Sheng 回答需要 v5.0 以上。

结论:明确了依赖要求,确保兼容性。 · 已解决

文件格式规范 style

gemini-code-assist[bot] 指出多个脚本文件缺少换行符,建议修复以避免解析错误。

结论:建议已提出,但 PR 中未体现是否采纳,状态未知。 · unknown

风险与影响

技术风险包括:1) 回归风险:monkey_patch.py新增条件分支可能干扰其他模型前向传播。2) 兼容性风险:依赖特定版本(vllm0.18.0、transformer v5.0+),可能导致环境配置问题或升级困难。3) 性能风险:示例脚本中配置参数(如update_weights_bucket_megabytes)未优化,可能影响训练效率。4) 测试覆盖不足:由于CI无法看护,缺乏自动化测试,Issue评论中用户报告激活卸载错误等bug未完全解决。5) 补丁复杂度:新增适配器和补丁增加了代码维护负担。

影响分析:1) 用户影响:为Qwen3.5模型用户提供了FSDP GRPO训练能力,扩展VERL框架的模型支持范围,降低部署门槛。2) 系统影响:新增模块化代码(如qwen3_5.py)有助于隔离变更,但增加了维护成本;修复FSDP2 CPU卸载bug提升了框架稳定性。3) 团队影响:需后续PR支持ulysses sequence parallel等功能,并可能需更新CI以覆盖新依赖版本。

缺少测试覆盖 依赖版本锁定 配置矛盾风险 补丁集成复杂度

关联 Issue

未识别关联 Issue

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

完整报告

执行摘要

  • 一句话:新增Qwen3.5模型的FSDP GRPO训练支持,涵盖适配器、补丁和示例脚本。
  • 推荐动作:该PR值得精读,特别是qwen3_5.py中的适配器设计展示了如何修复FSDP2 CPU卸载bug,以及monkey_patch.py的扩展模式。建议关注配置参数设置、依赖版本管理和测试覆盖策略,以避免常见部署问题。

功能与动机

PR body明确表述“enables FSDP GRPO training for Qwen3.5 models”,旨在响应用户对Qwen3.5模型FSDP训练的需求,Issue评论中用户如winnieyangwannan直接询问支持情况,表明这是提升框架实用性的功能扩展。

实现拆解

实现拆解为三部分:1) 模型适配器:新增verl/models/transformers/qwen3_5.py文件,包含fast_pos_embed_interpolate函数修复FSDP2 CPU卸载bug,并提供前向传播函数。2) 补丁集成:修改monkey_patch.py添加qwen3_5模型类型支持;更新npu_patch.py为Qwen3.5和Qwen3.5 MoE添加NPU补丁;调整npu_vllm_patch.py版本检查范围。3) 示例脚本:新增四个训练脚本(examples/grpo_trainer/run_qwen3_5_*),配置GRPO算法、FSDP2策略及关键参数,支持普通和NPU环境。

关键文件:

  • verl/models/transformers/qwen3_5.py(模块 model): 新增Qwen3.5适配器核心文件,包含修复FSDP2 CPU卸载bug的关键函数fast_pos_embed_interpolate和前向传播逻辑。
  • verl/models/transformers/monkey_patch.py(模块 model): 修改以支持qwen3_5和qwen3_5_moe模型类型,是补丁应用入口点,影响模型前向传播路径。
  • examples/grpo_trainer/run_qwen3_5_27b_vllm_fsdp.sh(模块 examples): 提供Qwen3.5-27B FSDP GRPO训练示例脚本,配置关键参数如actor.use_dynamic_bsz=False,为用户提供开箱即用的训练方案。
  • verl/models/transformers/npu_patch.py(模块 model): 扩展NPU后端支持,添加Qwen3.5和Qwen3.5 MoE的补丁函数,确保在Ascend硬件上的兼容性。
  • verl/utils/vllm/npu_vllm_patch.py(模块 vllm): 调整vllm版本检查范围(从0.13.0扩展至0.14.0),确保NPU环境下的vllm兼容性。

关键符号:fast_pos_embed_interpolate, forward_with_normal_backend, qwen3_5_base_forward, qwen3_5_moe_experts_forward_npu

评论区精华

Review中核心讨论包括:1) CI看护:beirong8kmiles建议将模型加入CI,作者Zhang1Sheng回复因vllm0.18版本当前NPU CI无法直接看护,突显测试覆盖缺口。2) 配置参数:wucong25质疑update_weights_bucket_megabytes设置过大,作者解释当前配置影响不大,参数未调整。3) 依赖版本:wucong25询问transformer版本要求,作者回答需要v5.0以上,明确了兼容性约束。4) 文件格式:gemini-code-assist[bot]指出脚本缺少换行符,建议修复以预防解析错误。

  • CI测试覆盖 (testing): 暂未解决,需后续CI更新以覆盖新版本依赖。
  • 配置参数优化 (design): 参数保持原样,未进行调整,依赖经验设置。
  • 依赖版本管理 (other): 明确了依赖要求,确保兼容性。
  • 文件格式规范 (style): 建议已提出,但PR中未体现是否采纳,状态未知。

风险与影响

  • 风险:技术风险包括:1) 回归风险:monkey_patch.py新增条件分支可能干扰其他模型前向传播。2) 兼容性风险:依赖特定版本(vllm0.18.0、transformer v5.0+),可能导致环境配置问题或升级困难。3) 性能风险:示例脚本中配置参数(如update_weights_bucket_megabytes)未优化,可能影响训练效率。4) 测试覆盖不足:由于CI无法看护,缺乏自动化测试,Issue评论中用户报告激活卸载错误等bug未完全解决。5) 补丁复杂度:新增适配器和补丁增加了代码维护负担。
  • 影响:影响分析:1) 用户影响:为Qwen3.5模型用户提供了FSDP GRPO训练能力,扩展VERL框架的模型支持范围,降低部署门槛。2) 系统影响:新增模块化代码(如qwen3_5.py)有助于隔离变更,但增加了维护成本;修复FSDP2 CPU卸载bug提升了框架稳定性。3) 团队影响:需后续PR支持ulysses sequence parallel等功能,并可能需更新CI以覆盖新依赖版本。
  • 风险标记:缺少测试覆盖, 依赖版本锁定, 配置矛盾风险, 补丁集成复杂度

关联脉络

  • PR #5874 [megatron, cfg] feat: add Qwen3.5-122B Megatron launch script: 同属Qwen3.5模型支持系列,但专注于Megatron后端,与本PR的FSDP后端形成互补。
  • PR #5802 [4/n][trainer] feat: flowgrpo - add diffusers + fsdp engine support: 涉及FSDP引擎扩展,与本PR的FSDP训练支持相关,展示框架内FSDP功能的演进。
  • PR #5381 从Issue评论中提及,具体标题未提供: Issue评论中Zhikaiiii提及PR #5381讨论了Qwen3.5模型在Megatron下的配置约束,与本PR的FSDP配置设置(如model.use_remove_padding)引发用户疑问,揭示跨后端配置一致性问题。

参与讨论