在 AMD Instinct MI355X 上优化 MiniMax M3

vLLM 已显著优化了 MiniMax M3 在 AMD Instinct MI355X 上的推理服务性能,在低并发的 MXFP8 标准推理中,输出吞吐量提升了高达 3.14 倍。这是通过迭代识别并解决从 GEMM 分块(tiling)和算子融合(kernel fusion)到分布式系统编排的整个技术栈中的瓶颈实现的。

在 AMD Instinct MI355X 上的性能基准测试

优化工作为 MiniMax M3 在各种配置下的吞吐量和延迟带来了实质性的提升:

  • MXFP8 标准推理 (并发度 32): 输出 tokens/s/GPU 从 109.1 提升至 342.4 (3.14×)。中位数首字延迟 (TTFT) 从 1.46 秒降至 0.67 秒,平均每个输出 token 的延迟 (TPOT) 从 69.1 毫秒降至 22.1 毫秒。
  • MXFP8 标准推理 (并发度 128): 输出 tokens/s/GPU 从 297.8 提升至 623.7 (2.09×)。中位数 TTFT 从 3.53 秒降至 1.54 秒,平均 TPOT 从 100.7 毫秒降至 48.8 毫秒。
  • MXFP4 推理 (并发度 128): 在 TP4/EP1 配置下,吞吐量从 212.1 提升至 716.8 output tokens/s/GPU。进一步优化至 TP2/EP1 后达到 943.5 output tokens/s/GPU,相比初始结果实现了 4.45 倍的提升。
  • Speculative Decoding (EAGLE3): 在 TP4/EP1 配置下,并发度 128 时,达到 682.4 output tokens/s/GPU。
  • P/D Disaggregation (预填充/解码分离): 在并发度 512 时,达到 6,370.5 总 tokens/s/GPU,中位数 TTFT 为 1.32 秒。

算子与算子优化

性能提升源于对局部形状分析(local shape analysis)的系统化方法以及对冗余计算的消除。

局部形状与分块 (Local Shape and Tiling)

vLLM 优化了 GEMM 启动器(launcher),以处理预填充(large-M)和解码(small-M)的不同模式。通过在解码阶段选择更窄的 N 分块并使用更大的 K 步长以减少循环迭代,vLLM 将 TP8 8K/1K 的输出吞吐量提升了 7.8–9.4%。此外,通过重新排列分组 MoE 程序,使得相邻程序能够从 GPU 缓存中复用激活行(activation rows)和专家权重分块(expert-weight tiles),从而在 TP4 测试中获得了 1.08×–1.46× 的提升。

共享专家融合 (Shared Expert Fusion)

MiniMax M3 的共享专家最初是作为一个独立的稠密 MLP 路径执行的。vLLM 将共享专家融合进了路由专家表(routed expert table)中,使得分组 GEMM 可以同时处理两者。这消除了单独的启动开销和中间流量,在并发度 1 时将输出吞吐量提升了 30.2%,在并发度 128 时提升了 5.6%。

稀疏注意力与索引复用 (Sparse Attention and Index Reuse)

为了降低稀疏注意力的开销,vLLM 实现了索引共享,即后续层复用之前层的 top-k 块决策。这在并发度 1 时将平均 TPOT 降低了约 10%。此外,vLLM 开发了一个稀疏页面适配器(sparse-page adapter),将 MiniMax M3 的 128-token 逻辑块映射到 AITER 的 16-token 页面,而无需复制 KV 数据,从而在 TP4、并发度 256 的配置下,将输出吞吐量提升了 5.56% (MXFP8) 至 6.93% (MXFP4)。

分布式系统与投机执行 (Speculative Execution)

优化工作不仅限于单个算子,还扩展到了多 GPU 协调以及投机解码的集成。

EAGLE3 投机解码

vLLM 在 AMD 硬件上集成了 EAGLE3 草案模型,并实现了请求级索引批处理(request-level index batching)以同时处理所有草案位置。这使索引算子提升了高达 48.9%。此外,将 AITER 稀疏分页注意力扩展到多 token 验证,使 TP4 测试中的输出吞吐量提升了 7.90% (MXFP8) 且 8.32% (MXFP4) 提升。

P/D Disaggregation (预填充/解码分离)

vLLM 通过推导每层精确的传输几何结构(transfer geometry)和字节偏移量,实现了 P/D 分离,以确保正确的 KV 移交(handoffs)。系统调优显示,对于 8K/1K 工作负载,将所有工作节点移至 TP4 并使用两个 TP4 预填充工作节点与一个 TP4 解码工作节点的比例,在并发度 512 时实现了 6,370.5 总 tokens/s/GPU,中位数 TTFT 为 1.32 秒。

Agentic 工作负载分析

使用 AgentX 基准测试进行智能体(agentic)编码(涉及不规则输出和可复用前缀),vLLM 在 TP4、并发度 28 的配置下,使用 MXFP4、EAGLE3-GQA 和前缀缓存(prefix caching)进行了测试。系统交付了 127.4 output tok/s/GPU 和 509.5 总输出 tok/s,其中 p50 TTFT 为 645 ms,p50 TPOT 为 41.3 ms。分析显示 GPU 缓存命中率实现了 92.1%,KV-cache 利用率达到 88.5%,这表明未来的优化方向应侧重于前缀对齐(prefix alignment)和逐出策略(eviction policies),而非进一步的 GEMM 调优。

优化方法论检查清单

为了优化未来的模型推理服务路径,vLLM 提出以下技术检查清单:

  1. 局部形状分析: 记录分片(sharding)后的局部形状直方图,包括复制的注意力头(heads)和路由 token 数量。
  2. Repetition Estimation (重复率估计): 计算每层工作量乘以层数、输出 token 数量和活跃请求数。
  3. Byte Plane Separation (字节平面分离): 区分计算张量、持久状态和通信。
  4. Fast Path Verification (快速路径验证): 记录每个快速路径的准入条件,并通过分发追踪(dispatch traces)验证实际执行。
  5. Correctness Gating (正确性校验): 在性能门槛(performance gates)的同时实施正确性检查。
  6. Iterative Profiling (迭代式剖析): 一旦叶子算子(leaf kernels)趋于平稳,则检查更高层级的队列、所有权(ownership)、缓存容量和 OS 限制。

Sources