用”记忆”换”未来”:Kimi Delta Attention 如何让大模型读懂百万字
内容目录

8分钟阅读,聊聊长上下文背后的一场温柔妥协。


如果有人问你:”你能记住我们三个月前说过的一句话吗?”

你可能会愣一下,然后开始回忆:”好像…在某个下午…关于什么来着…”

人类的记忆本身就是有损的。我们记不住每个细节,但我们记住了那些”重要的东西”——情绪、场景、核心观点。细节会模糊,但理解还在。

Kimi的Delta Attention(KDA),其实就在做同一件事:用有损的记忆,换取理解未来的能力。

一、当上下文突破一百万

2025年,大模型的战场悄悄变了。

从”32K够不够”到”128K是不是新标准”,再到”1M上下文成常态”。大家都在拼谁能在一次对话里装下更多信息。

但问题来了:传统Attention机制是O(n²)的复杂度。每增加一个token,计算量都要跟所有历史token做一次交互。

1M上下文意味着什么?如果每层都用标准MHA,推理成本会爆炸——用户等不起,服务器也烧不起。

Kimi的选择不是”用更强的硬件硬扛”,而是”换一种记忆方式”。

二、像RNN,但不一样

初看KDA,很多人会说:”这不就是RNN吗?”

确实很像。KDA把Attention的历史信息压缩成一个固定大小的状态矩阵,跟RNN把历史压缩进隐藏状态hₜ,思路一模一样。

但有个关键区别:

RNN要一步步串行计算,训练起来极慢。KDA基于Delta Rule,配合DPLR算法,实现了训练时完全并行,推理时退化成RNN式串行

所以它本质是”可并行训练的RNN”——继承了RNN的线性复杂度,又突破了RNN的训练效率瓶颈。

这就像你不用再从第一天开始一步步回忆,而是可以直接带着压缩好的”记忆包”继续生活。

三、信息会丢失吗?当然会

压缩必然带来损失。长序列后,早期token的位置信息会逐渐模糊。这是线性注意力的宿命。

但KDA做了三件事,把这个损失控制在一个”可接受”的范围:

第一,混合架构。

每4层中,3层用KDA线性注意力,1层用完整标准MHA。这层MHA就像”记忆锚点”,定期把被压缩丢失的细节重新捞回来。

第二,大容量状态矩阵。

不像RNN用几百维的h,KDA的状态矩阵是 d × dN(比如4096 × 65536)。容量巨大,能装下几十万token的语义信息而不溢出。

第三,门控擦除机制。

普通RNN是不断累加,旧信息会被新信息覆盖。KDA有可学习的遗忘门,能主动”忘记”过时的东西,只保留重要的。

这就像人类记忆:你记不清三个月前对话的具体措辞,但你记住了当时的情绪和结论。细节丢了,但理解还在。

四、1M上下文的现实权衡

实测效果:Kimi Linear在1M上下文场景下,比MHA快6.3倍,质量损失只有2-3%。

这个2-3%是怎么来的?

不是所有任务都完美适配。

  • 长文本总结、问答、写作 → KDA很好用
  • 代码补全、RAG检索、精确定位 → KDA吃力

所以KDA不是”完胜MHA的新技术”,而是”在长文本这个特定场景下,给了我们一个新的选择”。

它不追求”完全不丢信息”,而是承认”有些信息可以丢,有些不能丢”。然后用混合架构守住底线。

五、KV Cache的新玩法

传统的KV Cache是按token粒度缓存的——缓存前100个token的K和V,新请求来了直接从第101个开始。

KDA不能这么玩,因为历史被压缩进状态矩阵了,没有独立的K/V向量。

但它可以缓存状态矩阵本身:相同prefix的请求直接加载已算好的状态,增量更新就行。

每来一个新token,只需要:

  1. 编码当前token得到kₜ和vₜ
  2. 计算外积vₜ ⊗ kₜ^T
  3. 加到缓存的状态矩阵S_{t-1}上

不需要回看任何历史token。计算量从 O(总长度 × d²) 降到了 O(新token数 × d²)。

本质还是prefix caching,只是换了个载体——从独立的K/V向量,变成了整个状态矩阵。

六、Delta Rule的数学本质

KDA的核心更新公式其实很简单:

S_t = λ · S_{t-1} + v_t ⊗ k_t^T

  • S_t 是当前时刻的状态矩阵
  • S_{t-1} 是上一时刻的状态矩阵
  • λ 是可学习的门控系数(控制遗忘速度)
  • v_t ⊗ k_t^T 是当前token的外积
  • ⊗ 是外积运算

每一步只需要当前token的k和v,就能更新状态矩阵。历史信息全部藏在S_{t-1}里。

这就是线性注意力的本质:把O(n²)的交互压缩成O(n)的状态更新。

七、训练时的DPLR并行化

你可能会问:”这不就是RNN吗?怎么并行训练?”

关键在于Delta Rule的数学性质配合DPLR(Diagonal Plus Low-Rank)算法。

训练时,KDA不逐步展开,而是把整个序列一起处理:

  • 用DPLR分解把状态矩阵的更新分解成可并行的形式
  • 实现O(n)复杂度的全序列并行训练
  • 推理时退化成标准的Delta Rule递归更新

这是KDA的核心创新点之一:训练并行、推理串行。

八、技术对比一览

维度 MHA KDA Mamba
训练并行度 ✅ 完全并行 ✅ 完全并行(DPLR) ❌ 串行
推理复杂度 O(n²) O(n) O(n)
1M上下文可行性 ❌ 太慢 ✅ 可行 ✅ 可行
精确检索能力 ✅ 最佳 ⚠️ 中等 ⚠️ 中等
KV Cache灵活性 ✅ 可任意切分 ⚠️ 整存整取 ❌ 无KV
质量损失 2-3% 3-5%

KDA不是完胜MHA,而是在长文本场景下的实用折中。

九、没有万能方案

MHA太慢,Linear Attention太崩。KDA选的是中间路线:用压缩换容量,用混合换精度。

技术选型的本质从来不是”找完美方案”,而是”找到当前约束下的最优平衡点”。

1M上下文的时代,不可能再用纯MHA硬扛;纯Linear Attention又扛不住长序列的质量需求。

KDA展示了一种思路:承认不可兼得,然后聪明地折中。

十、写在最后

为什么说KDA是”温柔的妥协”?

因为它没有试图”记住一切”。它知道——有些东西,记不住了就记不住吧。

重要的是:当你需要理解未来时,过去的那些东西,对你来说还够用吗?

Kimi的答案是:够用。代价是2-3%的精度损失,换来6.3倍的速度提升。

这不是完美。但这是在现实约束下,最务实的答案。

就像人类的记忆——我们记不住所有细节,但我们还是能理解过去,继续前行。

也许,这就是技术对现实的致敬。

十一、Kimi的落地实践

Kimi Delta Attention已经在Kimi Linear 48B、Kimi Linear 3B和Kimi K3(2.8万亿参数MoE)中落地使用。

实测数据显示:

  • KV Cache减少75%
  • 1M上下文下6.3倍加速
  • 端到端质量损失仅2-3%

开源方面,Kimi发布了FlashKDA kernel,支持vLLM和SGLang部署。

从论文到工程落地,KDA展示了”从理论到产品”的完整路径。

十二、一些开放问题

KDA也不是终点。还有很多问题在探索中:

  1. 状态矩阵的遗忘门训练稳定性如何?在超长序列下能不能稳定学到”该忘什么”
  2. 能不能动态调整KDA:MHA的比例?而非固定的3:1
  3. 如果某个token编码错误,会不会污染整个状态矩阵?
  4. 如何提高状态矩阵的共享灵活性?现在只能整存整取

技术永远在演进,今天的”最佳方案”,明天可能就是新的起点。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇