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 实现了一种设计,将以前相关的三个概念解耦:

  1. 物理块大小: 在 GPU 上分配 KDA 状态和全注意力 KV。
  2. 调度器对齐: 执行停止的点,以确保缓存组一致性。
  3. 前缀匹配单元: 用于哈希和匹配共享前缀的细粒度 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 路径、多模态示例、工具使用、推理和结构化输出示例,以及初始性能结果。

Sources