Prhub

#47943 Add tuned selective_state_update float32 config for AMD Instinct MI355

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

执行摘要

为 AMD MI355 添加 selective_state_update 的 float32 调优配置

此前 MI355 仅有 float16 的调优配置(来自 #47767),而 NVIDIA 设备均同时提供两种精度。为达到功能对等,需要为 FP32 状态缓存也提供经过调优的启动配置,避免回退到通用启发式配置导致性能不佳。PR 提问者提到 'This brings MI355 to parity, so deployments that keep the SSM state cache in fp32 also get a tuned launch config instead of the generic _get_default_ssm_launch_config() heuristic.'

低风险、低复杂度的性能优化 PR,值得合并。对于使用 Mamba 模型且部署在 MI355 上的团队,建议关注此配置以提升推理性能。同时也建议其他 AMD GPU(MI300X 等)提交类似的调优配置。

讨论亮点

无实质性讨论:仅有一条 Claude bot 的自动评论(因来自 fork 而跳过审查),以及维护者 tomeras91 的批准,无人工评审意见或问题。

实现拆解

  1. 生成调优配置:使用仓库内已有的基准测试脚本 benchmarks/kernels/benchmark_selective_state_update.py,在 MI355 上以 float32 状态缓存运行,自动搜索最优的 BLOCK_SIZE_Mnum_warps 组合,并保存到配置文件中。
  2. 添加配置文件:在 vllm/model_executor/layers/mamba/ops/configs/selective_state_update/ 下新增以 headdim=64,dstate=128,device_name=AMD_Instinct_MI355_OAM,cache_dtype=float32.json 命名的 JSON 文件,内容包含多个 effective_batch 区间对应的启动参数。
  3. 无需修改代码:框架已支持按配置键自动查找和加载此类 JSON 文件,因此仅需添加文件即可生效,无需改动任何 Python 源码。
文件 模块 状态 重要度
vllm/model_executor/layers/mamba/ops/configs/selective_state_update/headdim=64,dstate=128,device_name=AMD_Instinct_MI355_OAM,cache_dtype=float32.json 配置 added 5.07

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

评论区精华

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

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

风险与影响

风险极低。该 PR 仅新增纯配置文件,不影响任何代码逻辑,且仅针对特定 GPU 型号和精度配置生效(其他 GPU 继续使用通用启发式)。新配置经过基准测试验证,不会引入回归。

影响范围有限:仅 AMD Instinct MI355 用户在部署时若使用 float32 的 SSM 状态缓存(Mamba-2 模型),可获得 1.01× 至 1.40× 的 kernel 加速。对于使用 float16 缓存或非 MI355 GPU 的用户无影响。

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论