Prhub

#1737 fix: propagate moe_token_dispatcher_type in bridge model provider

原始 PR 作者 nanjiangwill 合并时间 2026-03-22 16:25 文件变更 1 提交数 1 评论 0 代码增减 +2 / -0

执行摘要

修复 bridge 模式中 moe_token_dispatcher_type 传播缺失导致的 ValueError 错误。

关联Issue #1725描述了bug:PR #1715添加了variable_seq_lengths传播但遗漏了moe_token_dispatcher_type,导致在使用bridge模式时finalize()抛出ValueError: 'Token dispatcher type: allgather does not support variable sequence length'。由于slime始终设置args.variable_seq_lengths=True,所有bridge模式模型训练都受影响,需要传播moe_token_dispatcher_type以兼容Megatron版本。

对于使用bridge模式的开发者,此PR值得快速查看以理解参数传播机制和向后兼容性处理;关注hasattr的使用方式,可作为类似场景的参考。

讨论亮点

Review评论为空,没有讨论记录。

实现拆解

在文件slime/backends/megatron_utils/model_provider.py的wrapped_model_provider函数中,添加了两行代码:使用hasattr检查args是否具有moe_token_dispatcher_type属性,如果存在则将其值传播给provider.moe_token_dispatcher_type。这确保了参数正确传递,并用hasattr处理可能不存在的属性以向后兼容新Megatron版本。

文件 模块 状态 重要度
slime/backends/megatron_utils/model_provider.py backends/megatron_utils modified 7.0

关键符号

wrapped_model_provider

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

评论区精华

没有提炼出高价值讨论线程

当前评论区没有形成足够清晰的争议点或结论,后续有更多讨论时会体现在这里。

风险与影响

风险较低。变更简单,仅添加参数传播,用hasattr保护兼容性,减少回归风险。但需确保args.moe_token_dispatcher_type已正确设置为alltoall(在arguments.py中已修正),否则可能仍引发验证错误。无测试覆盖变更,但逻辑直白,影响有限。

影响所有使用bridge模式的模型训练,修复了导致训练失败的bug,提升系统稳定性和用户体验。对开发者透明,无需额外配置。对团队而言,简化了Megatron版本兼容性处理,减少了错误排查时间。

兼容性处理 参数传播缺失

关联 Issue

#1725 [bug] Bridge provider missing moe_token_dispatcher_type propagation with variable_seq_lengths

完整报告

参与讨论