Prhub

#38504 [Kernels][MoE] Fix legacy_routing to use bitmatrix-based routing path

原始 PR 作者 AndreasKaratzas 合并时间 2026-04-07 10:57 文件变更 7 提交数 10 评论 8 代码增减 +84 / -216

执行摘要

修复 MoE 路由中 HIP 平台整数除法导致的 bitmatrix 错误,避免 GPU 内存访问故障。

PR body指出:'Three issues prevented test_gpt_oss_triton_kernels and GPQA serving from working on gfx950 (CDNA4) after the legacy routing deprecation',详细描述了pack_bitmatrix中的未定义行为导致专家31污染bitmatrix,引发GPU内存访问故障。根因是HIP使用C风格整数除法,-1 // 32 = 0 且 1 << -1 设置比特31,破坏路由元数据。

建议技术管理者和工程师精读此PR,关注pack_bitmatrix的valid guard设计和平台条件化对齐策略,这些是处理跨平台差异的典型模式。同时,可参考相关MoE refactor PR以了解路由演进脉络。

讨论亮点

review中核心讨论:

1) tjtanaa询问更改是否来自另一个PR #38503,AndreasKaratzas确认并恢复相关scheduler代码,聚焦于MoE修复;
2) tjtanaa建议移除未使用的legacy_routing_from_sparsematrix函数并要求披露模型准确性,AndreasKaratzas回应已移除并启用GPQA eval测试,提供了通过结果。讨论强调了代码清理和测试验证。

实现拆解

实现分为四部分:

1) 在vllm/model_executor/layers/fused_moe/gpt_oss_triton_kernels_moe.py的pack_bitmatrix函数中添加valid = indices >= 0 guard,防止负索引产生伪比特;
2) 在tests/kernels/moe/test_gpt_oss_triton_kernels.py中条件化padding对齐,ROCm使用256/512匹配CDNA4硬件要求,CUDA保持64/128;
3) 更新四个GPQA eval配置文件,添加--tokenizer openai/gpt-oss-20b和--tensor-parallel-size 2参数;
4) 移除legacy_routing_from_sparsematrix等未使用代码,统一使用bitmatrix-based路由路径。

文件 模块 状态 重要度
vllm/model_executor/layers/fused_moe/gpt_oss_triton_kernels_moe.py MoE modified 9.0
tests/kernels/moe/test_gpt_oss_triton_kernels.py 测试 modified 7.0
tests/evals/gpt_oss/configs/gpt-oss-20b-rocm-quark-mxfp4-bf16-aiter.yaml 配置 modified 5.0

关键符号

pack_bitmatrix legacy_routing

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

评论区精华

legacy 路由代码移除 设计

tjtanaa 建议移除未使用的 legacy_routing_from_sparsematrix 函数,以清理代码。

结论:作者已移除该函数,并启用 GPQA eval 测试验证准确性。 · 已解决

模型准确性验证 测试

tjtanaa 要求披露模型准确性,作者提供了 GPQA eval 结果,显示所有配置通过阈值。

结论:测试通过,准确性在允许范围内,确保修复不引入回归。 · 已解决

风险与影响

风险包括:

1) 核心路径变更:pack_bitmatrix修改可能影响所有MoE路由逻辑,需确保CUDA平台行为不变(作者说明为no-op);
2) 跨平台不一致:条件化对齐引入维护负担,未来硬件变更需调整;
3) legacy代码移除可能破坏潜在依赖,但鉴于deprecation,风险较低;
4) 配置文件修改可能导致其他环境serving错误,需验证参数适用性。

影响范围:

1) 用户:在AMD GPU(如gfx950)上运行GPT-OSS模型的用户将避免GPU崩溃,提升serving稳定性和准确性;
2) 系统:MoE路由更健壮,测试套件通过率从1/5提升至5/5,GPQA eval全部通过;
3) 团队:代码更简洁,legacy代码减少,跨平台支持增强。影响程度中等,主要针对特定硬件和模型。

核心路径变更 跨平台不一致 legacy 代码移除

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论