执行摘要
修复 ROCm 平台未量化 MoE 模型使用 AITER 后端时 MORI 专家并行失效的静默退化问题。
根据 PR body,当使用 MORI EP(--all2all-backend mori)与未量化 MoE 模型和 AITER 后端时,UnquantizedFusedMoEMethod.maybe_make_prepare_finalize() 返回 None,导致 MORI dispatch/combine 被静默跳过,token 无法发送到远程 GPU,每个 GPU 仅运行本地专家,造成专家贡献严重下降(约 87.5%),模型输出质量退化。
建议精读此 PR 以理解未量化 MoE 调度机制,特别关注 AITER 后端集成和 MORI 初始化逻辑;设计决策中,scale_type_size 的处理和守卫移除值得学习,以提高代码清晰度和避免过度工程。
review 中有两个核心讨论:
1) 在 all2all_utils.py 中,gemini-code-assist[bot] 建议当 scale_dim=0 时,将 scale_type_size 设为 0 而非 torch.float32.itemsize,以提高代码清晰度,作者 pinsiangamd 接受建议并基于 MORI 测试更新。
2) 在 layer.py 中,tjtanaa 询问是否有更好方式处理多个标志列表,作者 pinsiangamd 回应移除了守卫,因为它不完整且与修复无关,真正修复在其他文件中。
参与讨论