开发者生态
morning
更小、更快、更安全:大规模运行 Kimi 和 GLM
摘要
Workers AI runs inference for some of the best open models in the world on GPUs in Cloudflare data centers close to your users. Two of the most capable, and most demanding, are Moonshot's Kimi K-serie...
the
and
cache
model
are
models
context
memory
about
that
2026-08-04
1 阅读
约7分钟阅读
ascorbic
字号:
Workers AI 在靠近用户的 Cloudflare 数据中心的 GPU 上运行世界上一些最好的开放模型的推理。其中能力最强、要求最高的两个是 Moonshot 的 Kimi K 系列和 Z.ai 的 GLM。它们是大型的、长上下文的、专家混合的模型,而且使用起来非常好。由于内存限制,它们也很难有效地提供服务。我们之前写过如何在 Workers AI 上提供大型模型,以及如何分离推理的预填充和解码阶段,以充分利用每个 GPU。这篇文章探讨了我们在此之上分层的三种技术,以将这些模型装入内存并保持快速:量化 KV 缓存、压缩模型权重,并且由于这两种技术都将更多请求打包到共享硬件上,因此保护了这些请求共享的缓存。这些优化使我们能够以更低的成本支持更多的客户,而模型精度没有变化。我们所有的实验和生产流量都在 SGLang(一个开源推理服务框架)上运行和进行基准测试。我们发现 SGLang 提供了市场上最好的性能,并且我们与 SGLang 团队密切合作,提供上游补丁和新功能,以使我们的工作可供开源社区使用。量化 KV 缓存 当模型生成文本时,它会将已处理的每个标记的注意力键 (K) 和值 (V) 存储在称为 KV 缓存的结构中。缓存使模型能够扩展较长的对话,而无需重新读取每个新令牌的整个上下文。对于长上下文模型,它增长得很快,通常是 KV 缓存,而不是模型的权重,首先填满 GPU 内存。默认情况下,缓存以 16 位精度 (BF16) 存储。我们将其存储为 8 位浮点(FP8、e4m3),这使其大小减半。在 Kimi K2.6 上,我们可以在内存中保存的上下文数量从大约 686,000 个标记增加到大约 137 万个,是原来的两倍。值得精确说明好处从何而来,因为它不是原始速度。量化缓存会为每个令牌增加少量工作,因为 FP8 注意力内核必须在读取值时对其进行转换。它改变的是我们可以同时保留多少个请求。以下测量结果针对分解的 H200 部署上的 Kimi K2.6 解码,直接比较注意力内核: 并发请求 BF16 KV 缓存(tok/s) FP8 KV 缓存(tok/s) 1 137 125 8 731 689 16 1,106 1,028 32 1,558 1,489 64 内存不足2,192 在任何单一并发级别,BF16 每个令牌都快几个百分点。但是 BF16 在 32 个并发请求时耗尽了缓存,并且无法接受第 33 个并发请求,而 FP8 继续达到 64 个并发请求,达到每秒 2,192 个令牌,比 BF16 的峰值高出约 41%,每个令牌的成本大约降低了 30%。因为我们将预填充和解码作为单独的池运行,所以我们可以在最有帮助的地方应用此方法:预填充是受计算限制而不是受内存限制,因此我们将缓存保留在 BF16 中并保持其稍高的吞吐量。如果它改变了模型的答案,这一切都无关紧要,所以我们检查了。在我们的评估套件中,FP8 和 BF16 缓存无法区分: 基准 BF16 KV FP8 KV GSM8K 94.24 94.09 ARC-Easy 89.06 89.14 ARC-Challenge 66.72 67.49 MMLU 89.11 89.04 MMLU-Pro 80.29 79.29 mcxams(内部基准) 61 / 63 61 / 63 工具调用有效性 92.2% 92.6% 压缩模型权重 KV 缓存是对 GPU 内存的一项需求;模型的权重是另一个。对于 GLM 5.2,我们将权重从 8 位浮点压缩为 4 位整数 (INT4),而不会损失精度。检查点从 705 GB 缩小到 421 GB,大约减少了 40%,8 路张量并行部署中的每个 GPU 内存从大约 88 GB 减少到 52 GB,这为同一硬件上大约 118 万个 KV 缓存令牌留下了空间。在我们的评估套件中,INT4 和 FP8 权重无法区分: 基准/能力指标 FP8 INT4 GSM8K 精确匹配 94.39% 93.56% GSM8K 灵活 94.24% 93.48% ARC-Easy 准确度 86.62% 86.15% ARC-Easy Acc(标准) 84.51% 85.19% ARC-Challenge 准确度 64.93% 64.85% ARC-Challenge Acc(标准) 67.24% 66.64% MMLU 平均 86.60% 86.54% MMLU-Pro 精确 80.80% 80.47% mcxams(内部基准) 通过 62 / 63 62 / 63 较小的权重使解码阶段更快,原因很明显:生成每个令牌意味着将模型的权重从 GPU 内存中流出,因此解码速度受到内存带宽的限制。移动的数据越少,每个令牌就会更快到达。低并发时效果最大,其中每个请求的延迟最重要: 并发请求 GLM FP8 (tok/s) GLM INT4 (tok/s) INT4 增益 1 60 92 +55% 8 425 513 +21% 16 683 825 +21% 32 994 1,267 +27% 64 1,672 1,933 +16% 预填充的行为有所不同。它受计算限制,并且 INT4 权重必须在模型与它们相乘之前扩展回来,因此额外的步骤会使预填充变慢而不是更快,GLM 在 FP8 中每秒维持约 10,160 个令牌,而在 FP8 中每秒维持约 10,160 个令牌。
这篇文章对您有帮助吗?
订阅66必读
每日精选科技资讯,直达你的邮箱