Prhub

#23611 [AMD] Optimize MiniMax-M2.5 - use aiter biased_grouped_topk for sigmoid scoring in MoE routing

原始 PR 作者 yctseng0211 合并时间 2026-04-25 13:18 文件变更 1 提交数 1 评论 1 代码增减 +18 / -7

执行摘要

AMD MoE routing 使用 aiter 内核,性能提升 35%

MiniMax-M2.5 模型使用带 correction bias 的 sigmoid 评分进行 MoE 路由,现有 topk_sigmoid 实现在 AMD GPU 上性能不够理想。aiter.biased_grouped_topk 内核将每次调用从 ~9.3μs 降低至 ~6μs,减少约 35% 的路由开销,从而提升整体推理吞吐。

建议批准并合并,性能提升明显且经过充分验证,代码改动小、风险可控。

讨论亮点

本次 PR 仅包含 1 个 commit,reviewer HaiShaw 直接批准,无额外评论区交锋。

实现拆解

  1. 修改 MoE 路由核心函数:在 python/sglang/srt/layers/moe/topk.pyfused_topk 函数中,当 scoring_func == "sigmoid" 时新增条件分支:若 _use_aiter 为 True 且 correction_bias 不为 None,则调用 aiter_biased_grouped_topk 替代原有的 topk_sigmoid
  2. 封装 aiter 内核调用:调用时传入 gating_outputcorrection_bias(转换为与 gating_output 相同 dtype)、预分配的 topk_weightstopk_ids,并设置 num_expert_group=1topk_group=1need_renorm=renormalize,以匹配 sigmoid scoring 语义。
  3. 保留回退路径:如果 _use_aiter 为 False 或 correction_bias 为 None,仍然走原来的 topk_sigmoid 路径,确保兼容性。
文件 模块 状态 重要度
python/sglang/srt/layers/moe/topk.py MoE 路由 modified 6.5

关键源码片段

python/sglang/srt/layers/moe/topk.py core-logic

MoE 路由核心实现,新增 aiter 内核调度分支以替换 sigmoid scoring 路径

# python/sglang/srt/layers/moe/topk.py
# 在 fused_topk 函数中,elif scoring_func == "sigmoid" 分支处新增 AMD 优化路径
elif scoring_func == "sigmoid":
    if _use_aiter and correction_bias is not None:
        # 使用 AMD aiter 库的 biased_grouped_topk ASM 内核
        # 该内核比通用 topk_sigmoid 快约 35%(6μs vs 9.3μs)
        aiter_biased_grouped_topk(
            gating_output,
            correction_bias.to(dtype=gating_output.dtype),
            topk_weights,
            topk_ids,
            num_expert_group=1,
            topk_group=1,
            need_renorm=renormalize,
        )
    else:
        # 回退到通用 sigmoid topk 实现
        topk_sigmoid(
            topk_weights,
            topk_ids,
            gating_output,
            renormalize,
            correction_bias,
        )

评论区精华

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

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

风险与影响

  • 功能风险:新增分支仅在 _use_aiter and correction_bias is not None 时生效,其他路径保持不变,回归风险低。
  • 精度风险:PR 提供了 GSM8K 精度对比(93.3% vs 93.4%),无退化。
  • 兼容性风险:只影响 AMD GPU + sigmoid scoring + correction_bias 非 None 的场景,不影响现有软max 路径或非 AMD 硬件。
  • 性能风险:仅正向影响,无回归。
  • 用户侧:使用 AMD GPU 运行 MiniMax-M2.5 模型的用户将获得 2-2.4% 吞吐提升,延迟降低。
  • 系统侧:MoE 路由内核调用更高效,可能轻微降低 GPU 占用,无明显副作用。
  • 团队侧:变更集中在 1 个文件,逻辑清晰,维护成本低。

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论