Prhub

#44830 [Kernel][Perf] Tune fused_moe FP8 config for Qwen3-Next-80B tp=4 on H100 (+25% at batch 96-512)

原始 PR 作者 qyYue1389 合并时间 2026-06-09 19:15 文件变更 1 提交数 3 评论 0 代码增减 +43 / -0

执行摘要

为 Qwen3-Next-80B 调优 FP8 MoE 内核配置

Qwen3-Next-80B 具有 512 专家,tp=4 时内核形状为 E=512, N=128,默认配置在该批量范围下比调优配置慢约 25%,直接影响生产服务的吞吐和延迟。

值得精读,展示了 vLLM 中针对特定模型-硬件组合进行内核调优的标准流程,以及如何利用 JSON 配置机制实现高效、安全的调优集成。

讨论亮点

该 PR 无 review 评论,仅由 claude[bot] 自动评论,且因为来自 fork 被阻止了自动审查。最后由 ZJY0516 直接批准合并。

实现拆解

  1. 使用 benchmark_moe.py --tune 在 H100 80GB HBM3 上对 18 个批量大小进行调优,共评估 10,368 种配置,耗时 77 分钟。
  2. 筛选出 5 个批量大小(96, 128, 256, 512, 1024)的调优配置,其中核心调整为 GROUP_SIZE_M=64(默认 GROUP_SIZE_M=32),其他参数如 BLOCK_SIZE_M=16, BLOCK_SIZE_N=128, BLOCK_SIZE_K=128(批量 512 时为 256),num_warps=4, num_stages=2。
  3. 将配置写入 JSON 文件并放入 vllm/model_executor/layers/fused_moe/configs/ 目录,利用现有 fallback 机制,使其他批量大小自动使用默认配置。
文件 模块 状态 重要度
vllm/model_executor/layers/fused_moe/configs/E=512,N=128,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128,128].json MoE 内核 added 5.65

关键源码片段

vllm/model_executor/layers/fused_moe/configs/E=512,N=128,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128,128].json configuration

新增的调优配置文件,包含 5 个批量大小的最优参数,是本次 PR 的核心变更。

{
    "triton_version": "3.6.0",
    "96": {
        "BLOCK_SIZE_M": 16,
        "BLOCK_SIZE_N": 128,
        "BLOCK_SIZE_K": 128,
        "GROUP_SIZE_M": 64, // 核心变动:从默认 32 提升至 64,优化 L2 缓存 tile 遍历顺序
        "num_warps": 4,
        "num_stages": 2
    },
    "128": { /* 同 96 配置 */
        "BLOCK_SIZE_M": 16, "BLOCK_SIZE_N": 128, "BLOCK_SIZE_K": 128,
        "GROUP_SIZE_M": 64, "num_warps": 4, "num_stages": 2
    },
    "256": { /* 同 96 配置 */
        "BLOCK_SIZE_M": 16, "BLOCK_SIZE_N": 128, "BLOCK_SIZE_K": 128,
        "GROUP_SIZE_M": 64, "num_warps": 4, "num_stages": 2
    },
    "512": {
        "BLOCK_SIZE_M": 16,
        "BLOCK_SIZE_N": 128,
        "BLOCK_SIZE_K": 256, // 批量较大时增加 K 分块大小以提高局部性
        "GROUP_SIZE_M": 64,
        "num_warps": 4,
        "num_stages": 2
    },
    "1024": {
        "BLOCK_SIZE_M": 32, // 最大批量增加 M 分块以容纳更多行
        "BLOCK_SIZE_N": 128,
        "BLOCK_SIZE_K": 128,
        "GROUP_SIZE_M": 64,
        "num_warps": 4,
        "num_stages": 2
    }
}

评论区精华

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

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

风险与影响

风险很低。仅新增一个 JSON 配置文件,不涉及任何代码逻辑改动;调优配置只影响指定 GPU 型号和内核形状,其他场景自动 fallback 到默认配置;调优结果已通过 benchmark 验证,无回归。

对使用 Qwen3-Next-80B-FP8 模型、H100 GPU、tp=4 的用户,在批量 96~512 时获得 20%~25% 性能提升;对其他批量大小和模型无影响。

仅影响特定模型 无代码改动 性能回归风险极低

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论