Prhub

#19228 [AMD] optimize Kimi K2.5 fused_moe_triton performance by tuning

原始 PR 作者 ZiguanWang 合并时间 2026-02-27 03:50 文件变更 5 提交数 1 评论 5 代码增减 +486 / -23

执行摘要

通过调优 fused_moe_triton 内核并添加 int4_w4a16 支持,显著提升 Kimi K2.5 模型在 AMD 硬件上的性能。

根据 PR body,'Kimi K2.5 fused_moe_triton use default config so the performance is poor.' 这表明优化动机是改善特定模型在默认配置下的性能表现。

建议工程师精读此 PR,特别是关注 int4_w4a16 量化支持的具体实现(如权重初始化和尺度计算)和调优配置的选取策略,这对高性能计算和量化优化有参考价值。

讨论亮点

Review 过程中没有具体的评论讨论,但 issue 评论中 ZiguanWang 提到设备名获取在 Docker 容器中可能为空的问题,这影响了配置文件的命名。此外,hubertlu-tw 触发了 CI 测试。

实现拆解

实现分为三个关键部分:首先,在 common_utils.py 中修改模型配置获取逻辑,支持 encoder-decoder 模型和 int4 量化块形状计算;其次,在 tuning_fused_moe_triton.py 和 tuning_fused_moe_triton_sep.py 中添加 int4_w4a16 的权重初始化、尺度计算和基准测试支持;最后,新增两个 JSON 配置文件,为 int4_w4a16 提供调优后的内核参数(如 BLOCK_SIZE_M、GROUP_SIZE_M)。

文件 模块 状态 重要度
benchmark/kernels/fused_moe_triton/common_utils.py benchmark/kernels modified 7.0
benchmark/kernels/fused_moe_triton/tuning_fused_moe_triton.py benchmark/kernels modified 8.0
python/sglang/srt/layers/moe/fused_moe_triton/configs/triton_3_4_0/E=384,N=128,device_name=,dtype=int4_w4a16.json layers/moe added 9.0

关键符号

get_model_config get_config_filename benchmark_config

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

评论区精华

设备名获取问题 question

ZiguanWang 在 issue 评论中提到,get_device_name 在 Docker 容器中可能返回空字符串,导致配置文件设备名为空。

结论:未明确解决,但可能通过配置文件名处理适应。 · mentioned

风险与影响

风险包括:配置变更可能意外影响其他模型或量化类型,尤其在 common_utils.py 的 block_shape 计算中;新增的 int4_w4a16 支持需要确保与现有量化路径兼容,避免性能回归;调优基于 AMD 硬件,可能在其他平台(如 NVIDIA)上表现不同;测试覆盖可能不足,新配置文件未涵盖所有边缘情况。

对用户而言,Kimi K2.5 模型的推理速度显著提升,prefill 阶段 MOE 层耗时从 9.11ms 降至 2.881ms,decode 阶段从 501us 降至 276us,提高用户体验。系统在 AMD 硬件上的 fused_moe_triton 内核效率优化,可能为其他模型性能调优提供参考。团队需要更新文档和测试以覆盖新配置,并确保跨平台兼容性。

配置变更风险 硬件特定优化 测试覆盖不足

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论