Kimi K3
Kimi K3 在 93 个 Attention Layers 中组合 69 层 Kimi Delta Attention(KDA)与 24 层 Gated MLA。KDA 用固定大小的 Recurrent State 处理大部分层,Gated MLA 周期性读取逐 token 的全局 KV Memory,从而在长上下文效率与精确回看能力之间折中。
93 Attention Layers
├─ 69 × KDA
│ ├─ Short Convolution State
│ └─ Fixed-size Recurrent State
└─ 24 × Gated MLA
├─ Token-addressable Latent KV Cache
└─ Output Gate整体比例接近 3 × KDA + 1 × Gated MLA,但实际层位置由模型配置中的 kda_layers 与 full_attn_layers 指定,不应在推理实现中只用层号取模代替配置。
Kimi Delta Attention
KDA 属于 Linear Attention。它不为每个历史 token 保存独立 K/V,而是把历史持续写入固定大小的状态矩阵
设
等价地,KDA 的状态转移矩阵可以写成 Diagonal-Plus-Low-Rank 形式:
与为每个 Head 使用单一衰减系数的粗粒度门控相比,KDA 的
KDA 还维护 Q/K/V 的短卷积状态。Prefill 使用 Chunk-wise Parallel Kernel,单 token Decode 使用 Recurrent Kernel;两条路径必须产生一致的状态更新语义。
📄 Kimi K3:KDA Prefill 与 Decode Kernel
g = self.f_b_proj(self.f_a_proj(hidden_states))
g = rearrange(g, "... (h d) -> ... h d", d=self.head_dim)
beta = self.b_proj(hidden_states).float()
if mode == "chunk":
output, recurrent_state = chunk_kda(
q=q,
k=k,
v=v,
g=g,
beta=beta,
initial_state=recurrent_state,
output_final_state=True,
use_gate_in_kernel=True,
use_beta_sigmoid_in_kernel=True,
)
else:
output, recurrent_state = fused_recurrent_kda(
q=q,
k=k,
v=v,
g=g,
beta=beta,
initial_state=recurrent_state,
output_final_state=True,
)
cache_params.recurrent_states[self.layer_idx] = recurrent_stateGated MLA
Gated MLA 保留 DeepSeek V3 MLA 的核心结构:每个 token 缓存低维 Latent KV,并执行能够精确读取历史位置的全局 Softmax Attention。Kimi K3 在 Attention Output 上增加输入相关的门控:
门控与 Attention Output 逐元素相乘,再进入 Output Projection。它让模型按 token 和特征维度调节全局 Attention 信息进入 Residual Stream 的强度。
📄 Kimi K3:MLA Output Gate
attn_output, _ = attention_interface(
self,
query_states,
key_states,
value_states,
attention_mask,
scaling=self.scaling,
)
attn_output = attn_output.reshape(batch_size, seq_length, -1)
if self.use_output_gate:
gate = self.g_proj(hidden_states).sigmoid()
attn_output = attn_output * gate
attn_output = self.o_proj(attn_output)Hybrid Attention 的 Cache
两类层维护不同状态:
| Layer | Cache / State | 是否随上下文长度增长 | 能否精确读取旧 token |
|---|---|---|---|
| KDA | Recurrent State + 短卷积状态 | 否 | 否,历史已聚合 |
| Gated MLA | 逐 token Latent KV | 是 | 是 |
因此,Kimi K3 整机的 Cache 仍会随上下文增长,但只有 Gated MLA Layers 产生逐 token KV Cache。KDA Layers 承担大部分序列建模计算,Gated MLA Layers 周期性补充全局、可寻址的历史读取。