vLLM Kimi K3 支持预览
vLLM Kimi K3 支持预览
vLLM 正在为 Moonshot AI 的 Kimi K3 准备 day-0 开源服务支持,这是一个具有 2.8 万亿参数的模型。此集成使开源社区能够在其模型权重发布时立即部署 Kimi K3,计划于 2026 年 7 月 27 日发布。
Kimi K3 架构及服务影响
Kimi K3 引入了几种架构变化,改变了推理引擎的需求。该模型具有 100 万 token 上下文窗口,以及具有 896 个路由专家(每 token 16 个活跃专家)加上共享专家的高度稀疏混合专家(MoE)架构。
关键技术规格及其服务影响包括:
| Property | Kimi K3 Configuration | Serving Implication |
|---|---|---|
| 模型规模 | 2.8T 参数 | 需要大规模专家并行和高带宽加速器域 |
| 上下文长度 | 1M token | 优先考虑缓存容量、前缀重用以及 prefill/decode 分离 |
| 注意力 | 混合 KDA 和全注意力 | 需要同时管理循环状态缓存和分页 KV 缓存 |
| 深度 | 注意力残差 (AttnRes) | 需要专用内核来进行跨层表示读写 |
| 量化 | MXFP4 权重 | 需要一个高效的 FP4 MoE 路径以支持 Kimi K3 的 SiTU 激活 |
| 多模态 | 原生视觉 | 需要多模态预处理和视觉并行策略 |
解决 KDA 的前缀缓存
Kimi Delta Attention (KDA) 是循环的,意味着它会推进一个类似矩阵的循环状态和一个短卷积状态,而不是保留每个 token 的 KV 对。这为传统前缀缓存带来了挑战,因为引擎必须在精确的前缀边界处拥有 KDA 状态,以避免重播之前的状态。
为了解决这个问题,vLLM 实现了一种设计,将以前相关的三个概念解耦:
- 物理块大小: 在 GPU 上分配 KDA 状态和全注意力 KV。
- 调度器对齐: 执行停止的点,以确保缓存组一致性。
- 前缀匹配单元: 用于哈希和匹配共享前缀的细粒度 token 间隔。
这种分离使得 vLLM 能够在较大的物理状态块内的细粒度边界注册有效的 KDA 状态。当后续请求匹配部分块时,缓存状态会被复制到私人目标(copy-on-write),在保留共享前缀的同时允许新请求继续。
性能优化和内核工作
由于 Kimi K3 改变了推理的 "热路径",vLLM 已实施了几种特定于硬件和架构的优化:
KDA 预填充和解码
预填充集成了 FlashKDA 和 Flash Linear Attention (FLA),融合了输入投影和因果卷积。对于解码,vLLM 使用一个融合的 NVIDIA 内核,将短卷积、KDA 状态更新、输出门控和归一化合并为单一操作,以减少每输出 token 时间 (TPOT) 的惩罚。
注意力残差 (AttnRes)
为了在不产生过大内存流量的情况下处理跨层表示读取,vLLM 使用 Triton 和 NVIDIA 内核,融合残差更新、AttnRes 混合和输出 RMSNorm。
MLA 模块和 PD 分离
Kimi K3 每四层使用一次 MLA 注意力。vLLM 已将手动融合的 MLA 模块用来替换 torch.compile 自定义融合。该模块具有分离的预填充和解码路径,这些路径经过优化,适用于 Prefill-Decode (PD) 分离部署,并在解码路径的门控投影中包含多流支持。
MXFP4 MoE 和硬件支持
Kimi K3 的发布配置使用 MXFP4 权重和 SiTU 激活。vLLM 现在通过 MXFP4 TRTLLM-Gen 和 DeepGEMM 将 SiTU 参数映射到优化的 FP4 专家路径。
硬件支持包括:
- NVIDIA: 特定内核的最终调校和 MXFP4 MoE 协作。
- AMD: 通过 FlyDSL 的 MLIR Python 内核栈提供初始支持,具有硬件调优的 A16W4/A8W4 量化融合算子和 SiTU 激活。
Day-0 发布包
开源发布将包括 vLLM 模型、解析器、缓存和内核集成,以及针对 NVIDIA 配置的初始 Docker 镜像和验证过的启动配方。它还将提供使用 FlyDSL MoE 内核的初始 AMD 路径、多模态示例、工具使用、推理和结构化输出示例,以及初始性能结果。