Prhub

#50007 [ROCm] Add tuned selective_state_update float32 config for AMD Instinct MI325X

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

执行摘要

新增 MI325X Mamba SSU float32 调优配置

在 PR body 中,作者指出 MI325X 在 get_ssm_configs() 中找不到匹配的 SSU 配置,只能回退到 _get_default_ssm_launch_config() 的通用启发式 (BLOCK_SIZE_M, num_warps) = (4, 4),这与 dstate=128 的最优几何相差甚远,导致 Mamba decode 吞吐受损。此前 MI300X #47947、MI355 #47943/#48373、MI350 #48159 都已有对应配置,MI325X 缺失。

值得阅读的轻量级 PR,展示了 vLLM 的 per-device kernel launch 配置机制和调参→验证→落地的完整流程,对需要为其他设备/内核添加类似调优的工程师有参考价值。

讨论亮点

dllehr-amd 在审批时要求确认 lm_eval 确实以 float32 状态缓存运行,作者给出了完整命令行、启动日志和 get_ssm_configs(64, 128, "float32") 加载 12 个键的证据,确认无误。此后 dllehr-amd 两次 approve,hongxiayang 运行 /ci run 后 approve。作者还向 @tdoublep 和 @tomeras91 请求合并,并询问 merge 时间。

实现拆解

  1. 使用仓库内置调参脚本 benchmarks.kernels.benchmark_selective_state_update 在单张 MI325X(gfx942)上以 --dstate 128 --dtype float16 --mamba-ssm-cache-dtype float32 启动扫描。
  2. 脚本自动生成 headdim=64,dstate=128,device_name=AMD_Instinct_MI325X,cache_dtype=float32.json 文件,包含 12 个 effective_batch(128 到 262144)对应的 BLOCK_SIZE_Mnum_warps
  3. 文件直接放入 vllm/model_executor/layers/mamba/ops/configs/selective_state_update/ 目录,运行时 get_ssm_configs()(headdim, dstate, device_name, cache_dtype) 自动加载,无需代码改动。
  4. 验证:--validate 12/12 通过,--compare 显示相对启发式配置最高 2.27x 加速;test_mamba_ssm_configs.py 6 个测试通过;lm_eval lambada_openai 上精度与启发式一致(acc 0.7040, ppl 4.2693 vs 4.2698)。
文件 模块 状态 重要度
vllm/model_executor/layers/mamba/ops/configs/selective_state_update/headdim=64,dstate=128,device_name=AMD_Instinct_MI325X,cache_dtype=float32.json 内核配置 added 5.19

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

评论区精华

lm_eval 是否实际使用 float32 配置? 测试

dllehr-amd 在审批时要求确认 lm_eval 命令确实使用了 float32 状态缓存,以及运行的配置是否是本 PR 的。

结论:作者提供了 lm_eval 命令行和日志证据,确认运行了 float32,并且 get_ssm_configs() 加载了本 PR 的配置文件。 · 已解决

请求合并 other

作者 @tdoublep @tomeras91 请求合并,并询问合并时间。

结论:hongxiayang 运行 /ci run 并 approve,最终合并。 · 已解决

风险与影响

配置仅覆盖 headdim=64, dstate=128, cache_dtype=float32 组合,其他 dtype 或 headdim 仍走启发式。配置基于 Triton 3.6.0 环境生成,未来 Triton 版本升级可能导致最优参数漂移,但配置文件带 triton_version 字段。单测覆盖有限,主要是配置加载测试,没有针对 MI325X 硬件的回归测试。如果设备名识别异常(libdrm 报告),可能加载不到,但回退逻辑仍然存在,不会崩溃。

影响面仅限 AMD MI325X 上 Mamba2 模型的 decode 性能,尤其是 effective_batch 1024-8192 范围提升 1.49-2.27x,大 batch 也有 1.2-1.4x 提升。对用户无行为变化,无需修改任何调用方。对团队来说,这是 vLLM 按设备调优 kernel 配置的又一实践,方法可复用于其他 GPU。

特定设备 / 组合才能受益 Triton 版本依赖 缺少硬件回归测试

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论