开发者生态
morning
在 MI355X 上运行 Kimi K3 的性价比比 B300 更好
2026-08-02
1 阅读
约8分钟阅读
ilreb
字号:
在过去的几个月里,我们看到开源模型的功能呈爆炸式增长。随着 DeepSeek V4-Pro 和 GLM5.2 达到接近 Opus 的智能水平,开源已经成为我们所使用的闭源模型的真正、经济高效的替代品。但我们还没有看到像 Kimi K3 这样的一款。 Kimi K3 有望实现 Fable/Sol 级别的智能,标志着开源新时代的开始。但更智能的模型意味着更大的模型——这些模型的规模扩张速度与它们的功能扩张速度一样快。 GLM5.2有753B参数,DeepSeek V4-Pro 1.6T,Kimi K3有2.8T(!!)参数。在为 1M 上下文令牌分配 KV 缓存之前,这已经超过 1.5TB 的 VRAM。即使是 B200 节点(8 个 GPU)也无法容纳 Kimi K3。这让您的选择有限:在 B300 节点上提供服务,每个 GPU 具有 288GB VRAM,或者提交两个 B200 节点 (TP16) 来为 Kimi 提供服务。但猜猜还有哪个非 NVIDIA GPU 拥有 288GB 的 VRAM? AMD 的 MI355X。你能看出我们喜欢这些芯片吗? MI355X 的每个 GPU 平均比 B300 便宜约 2.4 倍,比 B200 便宜约 1.7 倍,是硬件规格相当的 Blackwells 的经济高效替代品。 AMD 的唯一问题是软件支持 — 较慢的内核和推理框架上的 Day-0 支持较少,使得在 AMD 上提供前沿模型成为一项真正的工程工作。我们在 Wafer 的主张是,智能体正在内核和模型优化方面进行改进,正在缩小这一差距。但随着 AMD 提供对 Kimi K3 的 Day-0 支持,我们已经完成了大部分工作。结果非常好:在 1,024 个令牌输入/400 个令牌输出基准测试中,MI355X 达到 952 tok/s/node 和 118 tok/s 单流 — 超过每个节点聚合吞吐量的 3.8 倍,超过我们 TP16 B200 部署的单流解码的 1.3 倍(其 498 tok/s 是 16 个 GPU、2 个节点的总数 — ~249/节点)。 B300 节点在总吞吐量方面仍比 MI355X 赢得约 1.65 倍,但以 2.4 倍的价格,MI355X 在性价比方面击败了 B300。 8× MI355X (TP8) 2×8 B200 (TP16) B300 (TP8+DCP8) 每个流解码 tok/s 118 tok/s 90 tok/s 172 tok/s 峰值聚合 952 tok/s 498 tok/s 1,568 tok/s 每个 GPU 峰值聚合 119 tok/s 31 tok/s 196 tok/s 每 $/GPU-小时 48 tok/s/$ 7 tok/s/$ 33 tok/s/$ 性能/美元的峰值聚合,MI355X 为 2.50 美元/GPU 小时,B300 为 6.00 美元,B200 为 4.25 美元。对于 B200 的辩护,它的数字有些缩减,因为它在解码关键路径上支付了跨节点全归约(RoCE v2 约为 195 Gb/s)——它是这里唯一跨两个节点的配置,因为 Kimi K3 不适合在单个 8×192GB 节点上加上 1M 代币 KV 池的权重。但这正是重点:Kimi K3 的尺寸是我们见过的首批型号之一,MI355X 专注于 HBM 容量,这使其比 B200 具有实用的、可测量的优势。我们是如何做到的 虽然 Kimi K3 开箱即用,但要使其达到当前的吞吐量数字,仍有许多工作要做。主要杠杆是推测解码。 K3 提供零吃水张量——没有 MTP,没有 EAGLE——所以唯一的推测路径是外部块扩散吃水:RadixArk 的 Kimi-K3-DSpark。在 CUDA 上它只是运行。在 ROCm 上,我们的第一个实际请求因以下错误而中断了调度程序:NameError:名称“top_k_renorm_prob”未定义。您的意思是:“top_p_renorm_prob”吗? sglang 的接受采样验证器有两种方法来构建目标分布:调用 top_k_renorm_prob 的密集路径,以及直接通过 torch.topk 路由的稀疏快速路径。 CUDA 构建从 sql_kernel 导入 top_k_renorm_prob ; ROCm 仅构建 Triton top-p 内核的别名,而 top_k_renorm_prob 未定义 — 没有可供 gfx950 别名的 top-k renorm 内核。因此,当请求到达密集路径时,验证程序就会遇到 NameError 并导致调度程序崩溃。修复方法是使用单个 PyTorch 函数。 Top-k renorm 是一个小操作:获取模型的概率向量,保留 k 个最高条目,将其余的归零,然后重新缩放剩余的总和为 1。排序、 masked_fill 、除法 — 直接放入 sglang 的 ROCm 采样分支,与 CUDA 构建从 sgl_kernel 获得的计算相同。没有自定义内核:ROCm 的反应是假设您需要一个,但这里缺少定义,而不是缺少内核。通过固定和强化规范 dec,我们获得了约 2.2 倍的单流性能、约 1.7 倍的中等负载下每流性能以及 + 18% 的峰值聚合性能。更重要的是,我们的峰值总吞吐量达到了更高的并发性(c64 与 c24 无规范)。预填充优化围绕模型性能的讨论往往会强调每秒的解码令牌数。但在许多情况下,解码 tok/s 是愚人金——解码被过度美化,而首次令牌时间(用户感受最深的数字)却被忽视了。 MI355X 在这方面表现不佳:相同的 172k 令牌冷预填充在 MI355X 上花费了约 51 秒,而在 B300 上则花费了约 23 秒。在 1M 上下文模型上,许多工作负载都有巨大的预填充(有时是冷的),
这篇文章对您有帮助吗?
订阅66必读
每日精选科技资讯,直达你的邮箱