Prhub

#47945 [ROCm] Add tuned selective_state_update float16 config for AMD Instinct MI300X

原始 PR 作者 vanshbhatia-amd 合并时间 2026-07-08 19:03 文件变更 1 提交数 1 评论 1 代码增减 +51 / -0

执行摘要

MI300X Mamba SSU 调优配置

vLLM 已为 NVIDIA 各 GPU 和 MI355 提供 tuned selective_state_update 配置,但 MI300X 缺少对应文件,运行时回退到通用启发式策略,Mamba 解码吞吐量未达最优。PR body 明确说明 'On MI300X get_ssm_configs() finds no matching file and falls back to the generic _get_default_ssm_launch_config() heuristic, which is well off the optimal (BLOCK_SIZE_M, num_warps) for these shapes and leaves Mamba decode throughput on the table.'

值得合入:纯数据类配置,低风险高回报,已通过正确性验证和性能对比。适用于所有 MI300X 用户,尤其是部署 Mamba 模型的场景。建议未来覆盖更多 AMD GPU 型号。

讨论亮点

该 PR 无人类 reviewer 的实质性讨论;自动 bot 评论提示 fork PR 需要 maintainer 手动触发 review,但 tomeras91 已直接批准。作者在 PR 描述和 issue 评论中提供了详细的性能数据表格,展示从 1.18x(batch=128)到 2.13x(batch=196608)的加速效果,足以支撑合入。

实现拆解

  1. 生成配置:在 MI300X 上运行 vLLM 内置基准脚本 benchmark_selective_state_update,使用 --dstate 128 --dtype float16 --mamba-ssm-cache-dtype float16 --save-configs --compare --validate 参数,自动扫描有效批量并记录最优 (BLOCK_SIZE_M, num_warps)。
  2. 添加文件:将生成的 JSON 配置放入 vllm/model_executor/layers/mamba/ops/configs/selective_state_update/headdim=64,dstate=128,device_name=AMD_Instinct_MI300X,cache_dtype=float16.json,文件名按 device name 和 dtype 自动生成,无需任何代码修改即可被 get_ssm_configs() 识别加载。
  3. 验证正确性--validate 确保所有 tuned effective_batch 点通过 CPU 参考基准(12/12);--compare 显示一致加速。配置文件仅影响 Triton launch geometry,不改变 kernel 数学逻辑,因此模型输出不受影响。
文件 模块 状态 重要度
vllm/model_executor/layers/mamba/ops/configs/selective_state_update/headdim=64,dstate=128,device_name=AMD_Instinct_MI300X,cache_dtype=float16.json Mamba kernel added 6.17

关键源码片段

vllm/model_executor/layers/mamba/ops/configs/selective_state_update/headdim=64,dstate=128,device_name=AMD_Instinct_MI300X,cache_dtype=float16.json infrastructure

唯一变更文件,新增 MI300X 的 float16 selective_state_update 调优配置,包含从 batch 128 到 262144 共 12 个(BLOCK_SIZE_M, num_warps)配置对。直接决定 kernel 并行效率。

{
  "triton_version": "3.4.0",
  // 批量大小作为键,值为 Triton launch 几何参数
  "128": {
    "BLOCK_SIZE_M": 32,
    "num_warps": 8
  },
  "256": {
    "BLOCK_SIZE_M": 16,
    "num_warps": 4
  },
  "1024": {
    "BLOCK_SIZE_M": 64,
    "num_warps": 1 // 小批量时 warp 数少,提高占用
  },
  // ... 中间配置省略 ...
  "65536": {
    "BLOCK_SIZE_M": 64,
    "num_warps": 8 // 大批量时增加 warp,提升并行度
  },
  "262144": {
    "BLOCK_SIZE_M": 32,
    "num_warps": 4
  }
}

评论区精华

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

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

风险与影响

风险极低:该 PR 仅新增一个 JSON 配置文件,不影响任何源代码逻辑。配置文件仅控制 Triton kernel 的 launch geometry(BLOCK_SIZE_M, num_warps),kernel 计算逻辑保持不变,理论上模型输出完全一致。正确性已验证(12/12 点通过 CPU 参考)。

对在 MI300X 上运行 Mamba 架构模型(如 Mamba2)的用户,该 PR 可显著提升 selective_state_update kernel 的 decode 吞吐,典型加速 1.3x-2.1x。对非 Mamba 模型无影响;对非 MI300X AMD GPU(如 MI325X、MI308X)仍缺少配置,等待后续 PR。

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论