Prhub

#39904 Add tuned triton fused_moe configs on H100 for gpt-oss

原始 PR 作者 zhangxin81 合并时间 2026-04-28 18:38 文件变更 1 提交数 5 评论 5 代码增减 +147 / -0

执行摘要

为 gpt-oss 120b 添加 H100 调优的 Triton fused MoE 配置

根据 PR body,目的是优化 gpt-oss 120b 的 Fused MoE 内核性能。默认配置未针对该模型和 GPU 进行调优,通过引入手调配置可以显著减少内核延迟,从而提升推理吞吐。

建议合并。该 PR 安全、聚焦,通过简单配置文件实现了可量化的性能提升。值得关注的是 vllm 的配置加载机制如何自动应用此类文件,后续可推广到其他模型和 GPU。

讨论亮点

在 review 中, reviewer ZJY0516 要求使用最新 Triton 版本(3.6.0)重新调优配置,而非原提交的 3.5.1。作者随即更新了 triton_version 字段, reviewer 确认后批准合并。此外,作者曾请求 reviewer 协助跳过不相关的 CI 失败,但最终通过内部渠道合并。

实现拆解

实现仅涉及添加一个 JSON 配置文件,位于 vllm/model_executor/layers/fused_moe/configs/ 目录,文件命名遵循 E=专家数,N=中间维度,device_name=设备名 的约定。

  1. 确定配置参数:通过扫描不同 batch size,使用 Triton 调优工具自动搜索最优的 BLOCK_SIZE_M、BLOCK_SIZE_N、BLOCK_SIZE_K、GROUP_SIZE_M、num_warps、num_stages 组合,覆盖从 1 到 4096 的 16 种典型 batch size。
  2. 编写配置文件:将搜索结果写入 JSON,包含 triton_version 元数据,便于向后兼容。文件中每个键对应一个 batch size,值为一组调优参数。
  3. 验证效果:在 gpt-oss 120b 模型上进行 benchmark,对比默认配置,内核时间平均降低 3.35%,最大降低 8.09%。
  4. 代码集成:vllm 已有自动加载配置的机制(如 fused_moe/configs 目录),新增文件无需其他代码更改即可生效。
  5. Review 反馈整合:根据 reviewer 建议将 triton_version 从 3.5.1 更新为 3.6.0,匹配当前 vllm 使用的 Triton 版本。
文件 模块 状态 重要度
vllm/model_executor/layers/fused_moe/configs/E=128,N=2880,device_name=NVIDIA_H100_80GB_HBM3.json 融合 MoE added 6.08

关键源码片段

vllm/model_executor/layers/fused_moe/configs/E=128,N=2880,device_name=NVIDIA_H100_80GB_HBM3.json configuration

新增的 Triton 调优配置文件,直接影响 fused MoE 内核性能,是 PR 的唯一变更。

// Triton fused MoE 调优配置,适用于 NVIDIA H100 80GB HBM3 GPU
// 模型:gpt-oss 120b,128 专家(E=128),中间维度(N=2880)
// 每个 entry 对应一个 batch size 的最优参数组合
{
    "triton_version": "3.6.0", // 调优所用 Triton 版本
    "1": {
        "BLOCK_SIZE_M": 16,
        "BLOCK_SIZE_N": 32,
        "BLOCK_SIZE_K": 64,
        "GROUP_SIZE_M": 1,
        "num_warps": 4,
        "num_stages": 4
    },
    "2": {
        "BLOCK_SIZE_M": 16,
        "BLOCK_SIZE_N": 32,
        "BLOCK_SIZE_K": 64,
        "GROUP_SIZE_M": 1,
        "num_warps": 4,
        "num_stages": 3
    },
    // ... 中间配置略(完整见文件)...
    // 大 batch size 使用更大块和更多 warps 以充分利用 HBM 带宽
    "4096": {
        "BLOCK_SIZE_M": 128,
        "BLOCK_SIZE_N": 256,
        "BLOCK_SIZE_K": 64,
        "GROUP_SIZE_M": 1,
        "num_warps": 8,
        "num_stages": 4
    }
}

评论区精华

Triton 版本更新建议 性能

reviewer ZJY0516 指出应该使用当前 vllm 使用的 Triton 版本(3.6.0)来调优配置,而非原提交的 3.5.1。这与确保配置与实际运行环境匹配有关。

结论:作者将配置中的 triton_version 更新为 3.6.0,ZJY0516 随后批准合并。 · 已解决

风险与影响

风险极低。仅添加配置文件,不涉及任何运行时逻辑变更。主要风险在于:如果未来 Triton 版本升级或模型配置变化,此配置可能不再最优,但 vllm 的配置加载机制会自动回退到默认配置,不会导致错误。另外,配置文件名中的 GPU 型号(H100)确保其他设备不会错误使用。

影响范围仅限在 H100 GPU 上运行 gpt-oss 120b 模型的用户,可带来 3-4% 的平均内核性能提升,且无兼容性问题。代码库无其他部分受影响。对团队而言,此 PR 展示了 Model-Specific 手调配置的实践。

低风险,仅配置变更 无回归风险 影响范围限定

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论