# Kimi Delta Attention

> 拆开 KDA 的更新式：delta 规则只写「预测误差」、通道级门控让每个特征维度各自决定遗忘速度，以及它相对 Gated DeltaNet、Mamba2 的位置。

- 作者：David（道雾轩）
- 专栏：Kimi K3 深度解析（https://daiw.net/manual/kimi-k3.md）
- 最后更新：2026-08-06
- 原文：https://daiw.net/manual/kimi-k3/kda
- 转载与引用：请注明出处并附原文链接（https://daiw.net/about/copyright）

# Kimi Delta Attention

KDA 是 K3 的**核心零件**，93 层里有 69 层是它。这一章把它的更新式一项一项拆开。

## 先建立直觉：从缓存到状态

softmax 注意力的做法是「**把所有历史都存下来，用的时候逐个比对**」。线性注意力换了个思路：**维护一个固定大小的矩阵状态 $S$，每来一个 token 就更新它一次。** 读取时不再回看历史，只查这个状态。

最朴素的线性注意力更新是「累加」：

$$
S_t = S_{t-1} + k_t v_t^\top
$$

问题立刻就来了：**只加不减**。读一百万个 token，状态里堆满了陈年信息，新写入的内容被淹没。于是后续工作围绕两件事做文章——**怎么遗忘**、**怎么更聪明地写入**。

## KDA 的更新式

KDA 给出的答案是这一行：

$$
S_t = \left(I - \beta_t\, k_t k_t^\top\right)\operatorname{Diag}(\alpha_t)\, S_{t-1} + \beta_t\, k_t v_t^\top
$$

它把三件事拧在了一起。逐项看。

### 一、$\operatorname{Diag}(\alpha_t)$：通道级遗忘

这是**乘在旧状态上的衰减**。$\alpha_t$ 是一个向量，$\operatorname{Diag}(\alpha_t)$ 把它铺成对角阵——意味着**状态的每一个特征维度（通道）有自己独立的衰减率**。

对比一下就知道这一步有多关键：

| 方案 | 遗忘门的粒度 |
| --- | --- |
| Mamba2 | 每个头一个标量 |
| Qwen3-Next 的门控 | 每个注意力头一个标量 |
| **KDA** | **每个特征通道一个值** |

标量门的含义是「这一步整体忘掉 30%」；通道级门的含义是「**这几维忘快点，那几维给我留着**」。当模型需要在超长上下文里既跟踪一个贯穿全文的主题、又不断刷新局部细节时，这种细粒度就是必需的——用一个旋钮控制所有维度，两种需求会互相打架。

### 二、$I - \beta_t k_t k_t^\top$：delta 规则

这是 DeltaNet 一脉的招牌。朴素累加是「**不管三七二十一，把新的 $k v$ 加进去**」；delta 规则先做一次**预测再修正**：

1. 用当前状态查一下：如果拿 $k_t$ 去问，状态会答出什么值？
2. 把这个答案和真实的 $v_t$ 比较，得到**误差**。
3. **只把误差写进去。**

$I - \beta_t k_t k_t^\top$ 正是「在 $k_t$ 方向上先擦掉旧答案」的那一步，后面的 $+\beta_t k_t v_t^\top$ 才是「写入新答案」。$\beta_t$ 控制这次改写的力度，是可学习的。

好处很实在：**同一个 key 被反复写入时不会无限累积**，状态里存的始终是「当前最好的答案」，而不是「历史所有答案之和」。对固定容量的状态来说，这等于省下了大量冗余。

### 三、两者的组合：DPLR 的特化

把这两项合起来看，状态转移矩阵的形式是「**对角阵 + 低秩修正**」——学名 **DPLR（Diagonal-Plus-Low-Rank）**。通用的 DPLR 转移代价不菲；KDA 用的是它的一个**特化变体**，把计算量显著压了下来，这也是它能在 69 层里大规模铺开的工程前提。

<Callout type="info">
  **一句话概括 KDA**：Gated DeltaNet 的两项能力——「delta 规则式写入」与「门控式遗忘」——都保留，但把遗忘门从**每头一个标量**细化到**每通道一个值**，并选了一条算得动的 DPLR 特化路径。
</Callout>

## 它买到了什么

在 Kimi Linear 的实验里，这套设计的收益是具体的：**KV 缓存降低约 75%**，**1M 上下文下的解码吞吐最高提升约 6 倍**。

注意这两个数字来自 Kimi Linear 论文的混合配置（3 层 KDA 配 1 层 MLA），不是 K3 本身的实测值。K3 用的是 69:24 的比例，[下一章](https://daiw.net/manual/kimi-k3/hybrid-stack)会讲为什么。

## 代价在哪

线性注意力不是免费午餐。固定大小的状态意味着**精确回看能力的损失**：让它复述第 80 万个 token 处的一个具体字符串，它未必答得出——那不是「注意力不够」，是那份信息已经被后来的写入挤掉了。

这正是 K3 必须保留 24 层 softmax 注意力的原因。下一章讲这个混合堆叠。👉 [69 + 24 的混合堆叠](https://daiw.net/manual/kimi-k3/hybrid-stack)

## 参考文献

- [1] Moonshot AI. “Kimi Linear: An Expressive, Efficient Attention Architecture.” 2025. arXiv:2510.26692. —— KDA 更新式、DPLR 特化与混合比例实验的原始出处。
- [2] Yang et al. “Gated Delta Networks.” 2024. —— KDA 的直接前身。
- [3] Dao & Gu. “Mamba-2.” 2024. —— 标量门控的对照组。
- [4] fla-org/flash-linear-attention 中的 KDA 实现说明。
