内容提要
Kimi K3采用KDA与MLA混合注意力架构,引入循环状态缓存,改变传统KV缓存语义。Mooncake与SGLang、vLLM、TokenSpeed合作,实现KDA感知的检查点管理、跨实例缓存复用及统一数据传输平面,支持百万级长上下文推理,降低冗余计算,提升多轮对话和智能体任务效率。
延伸解读
KDA缓存语义变化带来的核心挑战
KDA将历史信息压缩为固定大小的循环状态,使得缓存不再随上下文长度线性增长,但也改变了前缀缓存的重用规则。传统KV缓存可按token粒度截断复用,而KDA状态无法任意截断,必须与MLA KV对齐到同一前缀边界才能恢复。这意味着系统需要存储稀疏检查点,并在缓存命中时回退到最近的检查点重算,增加了推理系统的复杂性和计算开销。
检查点密度与缓存命中率的权衡
KDA检查点存储开销大,单个检查点约0.4 GiB,若每128个token存一个,百万上下文需约3 TB存储。稀疏检查点虽降低存储,但会降低有效前缀命中率,尤其在智能体场景中,多轮对话共享前缀长,新增token少,即使命中率小幅下降也会导致大量重算。因此,系统需要在检查点密度和重算成本之间取得平衡,SGLang和vLLM分别通过访问模式感知和选择性保留策略来优化。
跨实例缓存复用与异构状态传输
K3的混合注意力架构使得缓存包含MLA KV和KDA状态两种异构类型,跨实例复用和PD/EPD分离不再只是KV块传输,而是需要统一的数据平面。Mooncake与SGLang、vLLM、TokenSpeed合作,通过HiCache、KV Connector和Flat KV等机制,将不同状态抽象为统一对象或页面,实现跨实例共享和高效传输,同时保持语义一致性,从而支持大规模分布式推理。
Q&A
Kimi K3的混合注意力架构是什么?
Kimi K3采用KDA(Kimi Delta Attention)与MLA(Multi-head Latent Attention)混合注意力架构,其中69层使用KDA,24层使用MLA,通常以三个KDA层后接一个MLA层的模式排列。
KDA与传统的KV Cache有何不同?
KDA通过循环状态和卷积窗口压缩历史信息,缓存大小固定,不随上下文长度线性增长;而传统KV Cache存储每个token的键值对,缓存随上下文长度增长。
KDA给前缀缓存复用带来了哪些挑战?
KDA状态不能任意截断,必须与MLA KV对齐到相同前缀边界才能恢复;固定间隔检查点会导致存储开销巨大或缓存命中率下降,需要权衡检查点密度与重计算成本。
SGLang如何实现KDA感知的检查点管理?
SGLang在Radix Tree中维护稀疏KDA检查点,根据请求执行阶段(如Prefill块边界、Decode固定间隔、Radix Tree分支点)选择高价值位置存储检查点,并通过LRU策略管理检查点预算,同时支持将非活动检查点压缩为INT8格式以节省存储。
vLLM如何实现KDA状态与MLA KV的统一管理?
vLLM通过混合KV缓存管理器统一管理MLA KV和KDA状态,使用细粒度前缀哈希进行逻辑匹配,支持部分命中,并提供基于间隔和基于Marconi风格的选择性保留策略来优化检查点存储。
Mooncake如何支持Kimi K3的跨实例缓存复用?
Mooncake通过HiCache和KV Connector与SGLang、vLLM集成,将MLA KV和KDA状态作为缓存对象存储和传输,实现跨实例的缓存共享,提高缓存命中率并减少冗余计算。
TokenSpeed的Flat KV是什么?
Flat KV是TokenSpeed提出的统一页级状态表示,将MLA KV和KDA状态抽象为相同大小的页对象,通过统一的页分配器管理,使得不同状态类型可以使用相同的分配、回收和传输机制。
Kimi K3的EPD分解是什么?
EPD分解将推理流程分为Encoder、Prefill和Decode三个阶段,Encoder独立处理视觉输入,Prefill结合视觉嵌入和文本上下文,Decode生成token,各阶段可独立扩展,通过Mooncake统一数据传输平面连接。