已关闭
[Bug][自提单]: hash router的tid2eid在独立FSDP封装下形状不匹配 #2475
lzy0920232创建于 7月30日关闭于 7月31日
7月30日 添加了label:bug
7月30日 问题后端类型 由 [] 改变为 [Ascend]
7月30日 关联分支 由 [] 改变为 [master]
7月30日 关联组件 由 [] 改变为 [B-SIG-MindFormers-Train]
7月30日 关联了pull request:【bugfix】【pynative】修复 hash router 在 FSDP 下参数形状不匹配
7月31日 关闭了 issue
7月31日 issue状态由 TODO 改变为 DONE
Checklist
🐞 问题详细描述
在 DeepSeek-V4 hash router 场景开启 FSDP 后,训练在首个 step 前的 FSDP lazy-init 阶段失败。
复现所需关键配置:
parallelism: data_parallel_shard: 2 context_parallel: 4 context_parallel_method: colossal tensor_parallel: 1 expert_parallel: 8模型配置中开启 hash router,
actual_vocab_size=131072、moe_router_topk=4。8 卡启动训练后稳定复现:(131072, 4)对应 hash router 的tid2eid[actual_vocab_size, top_k]查表参数。PR #8581 将 FP32 router 从 transformer layer 中拆成独立 FSDP 单元:
但独立封装时没有继承外层 layer FSDP policy 中对
tid2eid的 replicate 约束,导致:tid2eid先按 8 卡 FSDP 域切分为(16384, 4);Router.reset_parameter()通过set_data()写回完整(131072, 4)查表;期望行为:
tid2eid是requires_grad=False的确定性索引表,应在独立 router FSDP 单元中保持复制;修复 PR:#8619
详细的环境信息描述
r1.0.0@fed8671b2d99405de064deb35be88d4145f9fe0dd3a1aa34042e1903c60733309c9eb453f58b83db其他辅助信息
修复方案是在独立封装 router 时将存在的
router.tid2eid加入replicate_params,并增加 GPT FSDP wrapper 回归单测。验证结果:
版本信息
24fb1fa1f12068ebb93407c3f389d8729654f873da06dd923163ed96b98aae73ef17334f733ba2beThanks for contributing 🎉!