Synth Daily

在 MI355X 上运行 Kimi K3:性价比超越 B300

随着开源人工智能模型变得日益强大和庞大,对硬件的需求也随之增加。例如,拥有 2.8 万亿参数的 Kimi K3 模型对显存提出了极高要求。研究发现,AMD 的 MI355X GPU 在运行此类大型模型时,展现了超越英伟达 B300 的性价比。尽管 B300 在原始吞吐量上更胜一筹,但 MI355X 凭借其更低的成本和相当的硬件规格,在每美元性能(performance per dollar)上取得了决定性胜利,这表明在高端 AI 推理领域,AMD 已成为一个极具竞争力的选择。

大型模型的硬件挑战

新一代的开源模型智能水平大幅提升,但其体积也急剧膨胀。

  • GLM5.2: 7530 亿参数
  • DeepSeek V4-Pro: 1.6 万亿参数
  • Kimi K3: 2.8 万亿参数

运行 Kimi K3 模型仅权重就需要超过 1.5TB 的显存,这还不包括为百万级上下文窗口分配的 KV 缓存。这意味着即使是配备 8 个 GPU 的英伟达 B200 节点也无法容纳该模型。用户只能选择更昂贵的 B300 节点或使用两个 B200 节点(TP16)的组合。

MI355X:一个高性价比的替代方案

AMD 的 MI355X GPU 提供了与 B300 相同的 288GB 显存,但成本却显著降低。

  • 相比 B300,每块 GPU 的价格便宜约 2.4 倍
  • 相比 B200,每块 GPU 的价格便宜约 1.7 倍

传统上,AMD 硬件的主要障碍在于软件支持,例如内核速度较慢和对新框架的支持延迟。然而,随着优化工具的进步以及 AMD 为 Kimi K3 提供即日支持,这一差距正在迅速缩小。

性能对比:原始速度与性价比

在一个包含 1024 token 输入和 400 token 输出的基准测试中,MI355X 的表现非常出色。虽然 B300 在绝对吞吐量上领先,但 MI355X 在性价比上完胜。

  • 8x MI355X (单节点):

    • 峰值总吞吐量: 952 tok/s
    • 每美元/小时 GPU 峰值吞吐量: 48 tok/s/$
  • 2x8 B200 (双节点):

    • 峰值总吞吐量: 498 tok/s (~249 tok/s/节点)
    • 每美元/小时 GPU 峰值吞吐量: 7 tok/s/$
  • 8x B300 (单节点):

    • 峰值总吞吐量: 1,568 tok/s
    • 每美元/小时 GPU 峰值吞吐量: 33 tok/s/$

Kimi K3 的巨大体积是第一个我们看到的、能让 MI355X 在高 HBM 容量上的投入转化为实际、可衡量优势的模型。B200 因为需要跨两个节点运行而性能受限,这恰恰凸显了 MI355X 在硬件设计上的实用性。

如何实现:简单的软件优化

尽管 AMD 提供了基础支持,但要达到峰值性能仍需一些调整。

1. 修复 Speculative Decode

最初,在 AMD 的 ROCm 平台上运行 speculative decode 会导致调度器因 NameError 而崩溃。

  • 问题: sglang 框架在 ROCm 构建中缺少一个用于 top_k_renorm_prob 的函数定义。
  • 解决方案: 直接在 sglang 的 ROCm 分支中用一个简单的 PyTorch 函数实现了这个功能,而无需编写复杂的自定义内核
  • 效果: 单流性能提升约 2.2 倍,峰值总吞吐量提升 18%

2. 优化 Prefill 速度

模型的响应速度,即用户感受最深的“首个 token 生成时间”(TTFT),很大程度上取决于 prefill 阶段的效率。MI355X 在这方面最初表现不佳。

  • 问题: Kimi K3 在 ROCm 上回退到较慢的 Triton Attention 内核,因为快速的 AITER MLA 内核因形状不匹配而无法加载(模型需要 12 个 attention head,而内核专为 4、8 或 16 的倍数构建)。
  • 解决方案: 一个简单的修复方法是将 attention head 数量从 12 填充到 16,运行快速内核,然后从输出中提取所需的结果。
  • 效果: Prefill 速度提升了约 2-3 倍,显著缩短了用户等待第一个 token 出现的响应时间。

结论

在 MI355X 上实现顶级的性价比表现比预想的要直接得多。遇到的软件问题都相对容易解决,且无需编写复杂的自定义内核。这表明 AMD 在 AI 推理领域的竞争力正在快速增强,英伟达长期以来的“CUDA 护城河”可能并非坚不可摧。