GLM5.2 在 AMD MI355X 上的性能表现:以更低成本实现高吞吐量

GLM5.2 在 AMD MI355X 上的性能表现:以更低成本实现高吞吐量

AMD MI355X 为 GLM5.2 提供卓越的性价比

Wafer 已经证明,AMD Instinct MI355X 在 2.4 RPS(每秒请求数)下,为 GLM5.2 模型提供每节点 2626 个 token/s(tok/s/node)的总吞吐量。这一配置实现了 NVIDIA B200 约 80% 的性能,而每 GPU 的硬件成本估计比 B300 低 2.75 倍。

性能基准测试

在包含 20k 输入 token 和 1k 输出 token 且缓存命中率为 60% 的工作负载下,MI355X 达到了以下饱和点:

Sustained RPS Aggregate tok/s/node TTFT p50 / p95 Success
0.5 449 0.59s / 0.60s 100%
1.0 974 0.60s / 0.81s 100%
1.5 1913 0.62s / 1.03s 100%
2.0 1944 0.62s / 1.05s 100%
2.25 2089 0.63s / 1.23s 100%
2.4 (saturation) 2626 0.81s / 2.22s 100%

此外,在单流测试(10k 输入 / 1.5k 输出 token)中,MI355X 实现了 213 tok/s。

技术优化路径

实现这些结果需要克服若干软件和框架方面的障碍,因为 AMD 的 ROCm 栈通常缺乏 NVIDIA CUDA 生态系统所提供的 "day-0" 支持。

量化与框架选择

Wafer 利用 AMD Quark 将基础 bf16 GLM-5.2 模型量化为 MXFP4。研究发现,与官方 FP8 量化相比,这种量化方式实际上是无损的,对 GSM8K 和 GPQA-Diamond 等基准测试的影响极小。

对于推理引擎,sglang 被选中而非 vLLM 和 ATOM,因为它在保持一致性的同时,为原生支持 MXFP4 量化提供了最小的阻力。

启用投机采样 (Speculative Decoding)

sglang ROCm 镜像中并未开箱即用支持投机采样,这需要两个特定的修复方案:

  1. 权重映射修复: MTP (Multi-Token Prediction) 头的模块前缀与主解码器栈之间的不匹配导致了量化查找失败。通过在 sglang 使用的解码器名称下的 Quark 未量化列表里重复 layer 78 的条目,Wafer 成功解锁了投机采样,从而使单流吞吐量提升了近 3 倍。
  2. ROCm Guard 实现: 深度投机采样(例如 5/1/6 配置)被一个缺乏 ROCm guard 的融合多步元数据内核 (fused multi-step metadata kernel) 阻碍。通过添加一个 #ifdef USE_ROCM guard,解决了这个问题。

吞吐量与内核调优

为了最大化总吞吐量,Wafer 将配置从 Tensor Parallelism 8 (TP8) 切换到了 TP4×DP2 (Data Parallelism) 配置。

此外,团队发现 GLM-5.2 的 fp4 MoE (Mixture of Experts) 在 sglang 镜像上默认回退到了缓慢的 FlyDSL 启发式算法。通过手动为 GLM 特定的 fp4 形状进行 MoE 内核选择调优 (model_dim 6144, moe_inter 2048, E=256, topk=8),吞吐量最终提升到了 2626 tok/s/node。

行业影响与社区观点

这一实现表明,随着代理式编程 (agentic coding) 和手动优化可以弥补硬件能力与软件支持之间的差距,"CUDA 护城河" 正在被侵蚀。

社区反驳观点

虽然技术成就非常显著,但 Hacker News 上的社区成员就这些基准测试的实际应用性提出了几个关键点:

  • 量化质量: 一些用户认为 FP4 量化在实践中很少能真正做到无损,并可能导致模型“脑部切除” (lobotomized) 从而失去前沿水平的质量。

  • 基准测试有效性: 批评者指出,60% 的缓存命中率和使用投机采样会显著影响结果,质疑这些是否代表了典型的生产环境工作负载。

  • 指标差距: 讨论强调了缺乏性能/功耗比 (performance-per-watt) 指标,这对于美国以外的、电力成本更高的电厂运营商来说至关重要。

  • 生产可行性: 一些人质疑这些优化主要是针对单流流量的“基准测试黑客行为” (benchmark hacking) 而非可扩展的生产策略。

Sources