Prhub

#47947 [ROCm] Add tuned selective_state_update float32 config for AMD Instinct MI300X

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

执行摘要

为 MI300X 添加 fp32 的 selective_state_update 配置

此前 MI300X 只有 float16 状态缓存的调优配置 (PR #47945),但许多部署使用默认的 fp32 状态缓存,导致使用通用启发式启动参数,性能不佳。此 PR 增加对应的 fp32 配置,使 MI300X 与 NVIDIA 设备及 MI355 在两种 dtype 下都拥有调优配置。

值得合入。PR 小而明确,数据充分,验证完整,是 MI300X Mamba 性能优化的一个干净补丁。建议读者关注 SSM kernel 调优流程和配置生成脚本,未来可为其他 AMD GPU 补充类似配置。

讨论亮点

无实质性 review 讨论,只有 CI 机器人的注释(自动审核因 fork 禁用)和一位审批者的 approve。PR 描述和 issue 评论已说明性能收益和验证过程。

实现拆解

  1. 新增 JSON 配置文件:在 vllm/model_executor/layers/mamba/ops/configs/selective_state_update/ 下添加 headdim=64,dstate=128,device_name=AMD_Instinct_MI300X,cache_dtype=float32.json,包含 13 个 effective_batch (128~262144) 对应的 BLOCK_SIZE_Mnum_warps
  2. 配置生成方式:使用项目内基准脚本 benchmarks.kernels.benchmark_selective_state_update 在 MI300X 上以 float16 激活、float32 状态缓存运行,遍历 effective_batch 网格,搜索最优的 Triton launch 参数。
  3. 验证:所有配置点均通过 CPU 参考验证 (--validate),并通过 --compare 确认对启发式参数 (M=4, w=4) 有稳定加速。
  4. 运行时加载:vLLM 在初始化 SSM 核时会在对应路径查找配置文件,若存在则使用其中的 launch 参数,不影响模型数学精度。
文件 模块 状态 重要度
vllm/model_executor/layers/mamba/ops/configs/selective_state_update/headdim=64,dstate=128,device_name=AMD_Instinct_MI300X,cache_dtype=float32.json 模型执行器 added 5.32

关键源码片段

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

新增的调优配置文件,为 MI300X fp32 状态缓存提供每个 effective_batch 点下的最优 BLOCK_SIZE_M 和 num_warps,是 PR 唯一的变更文件。

{
  // Triton 版本记录,便于未来判断是否需要重新调优
  "triton_version": "3.4.0",
  // 每个 effective_batch 对应的最优 launch 参数
  "128": { "BLOCK_SIZE_M": 8, "num_warps": 4 },
  "256": { "BLOCK_SIZE_M": 8, "num_warps": 4 },
  "1024": { "BLOCK_SIZE_M": 64, "num_warps": 1 },
  "2048": { "BLOCK_SIZE_M": 32, "num_warps": 4 },
  "4096": { "BLOCK_SIZE_M": 32, "num_warps": 4 },
  "8192": { "BLOCK_SIZE_M": 8, "num_warps": 1 },
  "16384": { "BLOCK_SIZE_M": 32, "num_warps": 4 },
  "32768": { "BLOCK_SIZE_M": 8, "num_warps": 1 },
  "65536": { "BLOCK_SIZE_M": 64, "num_warps": 4 },
  "131072": { "BLOCK_SIZE_M": 64, "num_warps": 4 },
  "196608": { "BLOCK_SIZE_M": 64, "num_warps": 1 },
  "262144": { "BLOCK_SIZE_M": 64, "num_warps": 4 }
}

评论区精华

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

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

风险与影响

风险极低。该 PR 仅添加一个 JSON 配置文件,不修改任何 Python 源码或 Triton kernel 逻辑。配置文件也仅影响 launch geometry,不会改变计算结果。若文件路径未被正确加载,会回退到通用启发式,不影响正确性。唯一潜在风险是配置针对特定 Triton 版本 (3.4.0) 生成,若未来 Triton 升级后最优参数变化,可能需要重新调优。

对用户:MI300X 上使用 fp32 状态缓存的 Mamba-2 模型(如 AntonV/mamba2-2.7b-hf 等)在 selective_state_update kernel 上可获得最高 1.85× 加速(effective_batch=1024 时),整体推理延迟降低。对系统:无影响。对团队:小且低风险的增量优化,符合持续调优策略。

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论