Prhub

#5275 [veomni] feat: Add GRPO training scripts for Qwen3-VL-30B-MOE (VeOmni Backends)

原始 PR 作者 phdddd 合并时间 2026-05-19 15:32 文件变更 3 提交数 9 评论 10 代码增减 +182 / -2

执行摘要

新增 Qwen3-VL-30B-MOE 的 VeOmni GRPO 训练脚本

PR body: Add NPU/GPU GRPO training scripts for Qwen3-VL-30B-MOE (VeOmni backends). 目的是扩展VeOmni后端对MoE视觉语言模型的支持。

值得精读,特别是 VeOmni 后端用户。注意根据实际硬件调整 max_model_len 和并行配置。脚本结构清晰,可作为自定义训练任务的起点。

讨论亮点
  • 安全风险:gemini-code-assist[bot] 指出脚本传递 $@ 允许任意参数覆盖,可导致 data.trust_remote_code=True 等危险配置,引发远程代码执行。作者移除了 $@ 传递,问题已解决。
  • 配置错误:bot 发现 max_model_len=1024 小于 max_prompt_length+max_response_length=2048,会导致序列截断;同时存在重复参数 trainer.use_legacy_worker_impl=disable。作者调整了模型长度并去除了重复参数。
  • NPU 验证询问:wucong25 询问脚本是否在 Ascend 200T A2 上验证(num_gpus_per_node=8)。作者回复 NPU 默认 1 节点 16 卡,脚本按 GPU 写法但配置参数通用。
  • 文档更新要求:wucong25 要求刷新 grpo_trainer 的 README 和模型支持列表。作者已完成相应更新。

实现拆解

  1. 新增训练脚本 examples/grpo_trainer/run_qwen3_vl_30b_moe_veomni.sh:包含完整的GRPO训练参数配置,特别添加了 ACTOR_VEOMNI_CONFIGREF_VEOMNI_CONFIG 区块,支持参数/优化器卸载、全分片、序列并行(Ulysses)、专家并行以及注意力实现选择(veomni_flash_attention_2_with_sp)和 MoE 实现(fused)。通过环境变量或直接修改变量调整超参数。
  2. 更新示例文档 examples/grpo_trainer/README.md:在模型支持表格中为 Qwen3-VL-30B-A3B 和 Qwen3-30B-A3B 增加 VeOmni 后端标记。
  3. 更新算法支持表 docs/ascend_tutorial/model_support/model_and_algorithm_support.md:在末尾新增三行记录,分别是 Qwen3-1.7B、Qwen3-30B-A3B 和 Qwen3-VL-30B-A3B-Instruct,均使用 VeOmni 后端,并给出示例脚本链接和硬件信息。
文件 模块 状态 重要度
examples/grpo_trainer/run_qwen3_vl_30b_moe_veomni.sh 示例脚本 added 5.86
examples/grpo_trainer/README.md 示例脚本 modified 2.7
docs/ascend_tutorial/model_support/model_and_algorithm_support.md 文档 modified 2.43

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

评论区精华

安全风险 - 参数注入 安全

gemini-code-assist[bot] 指出脚本传递 `$@` 允许任意参数覆盖,可导致 `data.trust_remote_code=True` 等危险配置,引发远程代码执行。

结论:作者移除了 `$@` 传递,问题已解决。 · 已解决

max_model_len 配置错误 正确性

bot 发现 `max_model_len=1024` 小于 `max_prompt_length+max_response_length=2048`,会导致序列截断;且存在重复参数 `trainer.use_legacy_worker_impl=disable`。

结论:作者调整了模型长度至足够值并去除了重复参数。 · 已解决

NPU 验证询问 question

wucong25 询问脚本是否在 Ascend 200T A2 上验证(`num_gpus_per_node=8`)。

结论:作者回复 NPU 默认 1 节点 16 卡,脚本按 GPU 写法但配置参数通用,用户可根据实际情况调整。 · 已解决

文档更新要求 documentation

wucong25 要求刷新 grpo_trainer 的 README 和模型支持列表。

结论:作者已更新了 README 和支持表。 · 已解决

风险与影响

  • 安全风险:尽管已移除 $@,脚本仍允许通过环境变量大量覆盖配置,用户需警惕来源不明的参数设置。
  • 配置错误:若用户未根据硬件调整 max_model_len 和并行大小,可能导致训练失败或性能损失。
  • 重复参数风险:脚本中曾出现重复配置,虽已修复,但类似问题可能再次发生,需持续 review。
  • 缺少测试覆盖:脚本为示例性质,未提供单元或集成测试,用户需自行验证正确性。
  • 用户:提供了开箱即用的 VeOmni 训练示例,降低用户使用门槛,尤其帮助用户在 Ascend NPU 上快速启动 GRPO 训练。
  • 系统:新增脚本作为官方示例,需与 VeOmni 后端版本保持同步,增加维护成本。
  • 团队:需要后续持续跟进 VeOmni 的更新并更新文档及脚本。
安全风险 - 参数注入 配置错误 -max_model_len 重复参数 缺少测试覆盖

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论