拆解 Kimi K3 的两大架构支柱:KDA 与 AttnRes,讲到小白也能懂

零基础友好、全程打比方:KDA 把'开卷翻书'的注意力改成'一页高级小抄',显存省 75%、百万 token 解码快 6.3 倍;AttnRes 把'流水账'残差流改成'带目录的笔记本',训练效率 +25%、开销不到 2%。看完就知道 2.8T 是怎么撑起来的。

zhuermu··15 分钟
Kimi K3KDAAttnRes线性注意力残差连接模型架构
拆解 Kimi K3 的两大架构支柱:KDA 与 AttnRes,讲到小白也能懂

English Version: Inside Kimi K3’s Two Architectural Pillars: KDA and AttnRes, Explained From Zero

零基础友好 · 全程打比方 · 看完就知道 2.8T 是怎么撑起来的

上一篇聊 Kimi K3 发布时挖了个坑:要写一篇 KDA 和 AttnRes 的架构详解。好消息是不用等官方技术报告——这两个东西的论文早就公开了:KDA 见 arXiv:2510.26692,AttnRes 见 arXiv:2603.15031。这篇文章不需要你有任何深度学习基础,我保证每一步都打比方讲明白。放心往下看。

预备知识:大模型是怎么”读书”的

先花三分钟建立两个画面感,后面全靠它们。

画面一:注意力 = 开卷考试

大模型生成文字的方式,是一个词一个词往外蹦。每蹦一个新词之前,它都要做一件事:回头看一遍前面已经出现的所有词,判断哪些跟当前最相关。这就是大名鼎鼎的”注意力机制”(Attention)。

你可以把它想象成开卷考试:答每道题(生成每个词)的时候,都可以把整本书(前面所有内容)摊开来翻。比如模型读到”小明把苹果给了小红,她很开心”,要理解”她”指谁,就得回头去看”小红”那个位置。翻书翻得准,理解就深——这是 Transformer 强大的根源。

画面二:残差连接 = 传话游戏里的”原话抄送”

大模型是一层一层叠起来的,K3 这种级别的模型有几十上百层。信息从第 1 层流到最后一层,就像传话游戏:每一层都对内容加工一次再传给下一层。传话游戏玩过吧?传到第十个人,话早就变形了。

深度学习界的解法叫残差连接(Residual Connection):每一层不是把内容”替换”掉,而是把自己的加工结果加在原话上一起往下传。相当于传话时永远附带一份原始录音,怎么传都丢不了底稿。这个设计从 2015 年的 ResNet 用到今天,是深层网络能训得动的命根子。

💡 记住这两个画面就够了:注意力 = 开卷考试翻书,管的是模型在”一句话内部”怎么找信息;残差连接 = 带着原话往下传,管的是信息在”层与层之间”怎么流动。KDA 改造的是前者,AttnRes 改造的是后者。

这套经典设计,有两个越来越疼的毛病

毛病一:书越厚,翻书越翻不起

开卷考试有个致命问题:每答一道题都要把全书翻一遍。书有 100 页时还好;书有 100 万页(对应 100 万 token 的上下文,大概是几十本长篇小说),每个词都翻一遍全书,计算量就是天文数字。数学上这叫”平方复杂度”:文本长度翻 10 倍,计算量翻 100 倍

而且为了翻得快,模型得把全书都放在手边——每个历史词都要在显存里存一份”索引卡片”(术语叫 KV cache)。上下文拉到百万级,光这些卡片就能塞爆一整台服务器的显存。所以长上下文的第一道坎不是”模型能不能理解”,是**“你付不付得起电费和显存”**。

毛病二:层数越深,新层的声音越小

再看残差连接。“每层的输出都加在主干上”,听起来很美,但你细算一下账:第 1 层加一笔,第 2 层加一笔……加到第 80 层的时候,主干上已经堆了 80 层的输出,而且每一笔的权重都固定是 1,谁也不比谁重要

AttnRes 论文把后果说得很直白:主干上的数值随深度不受控地越滚越大,而每个新层的贡献占比越来越小。打个比方:往一锅越来越浓的汤里加盐,锅越大,同样一勺盐越尝不出来。第 80 层辛辛苦苦算出的结果,扔进前面 79 层的”存量”里,只能溅起一点小水花。这直接限制了”把模型做深”的收益——层数堆上去了,后面的层却在打酱油。

💡 一句话总结病情:横向(文本变长),翻书的账单是平方级的;纵向(网络变深),新层的贡献被存量稀释。KDA 治横向,AttnRes 治纵向。下面一个一个来。

KDA:从”开卷翻书”改成”记一页高级笔记”

第一步:理解”线性注意力”这条路线

既然翻全书太贵,那能不能换个考法——闭卷,但允许带一页 A4 纸的小抄?这就是”线性注意力”(Linear Attention)的思路:不保存全部历史,而是一边读一边把重点**压缩进一块固定大小的”记忆板”**里。读到哪,更新到哪。

好处立竿见影:不管书多厚,小抄永远只有一页——计算量随长度线性增长(长 10 倍就贵 10 倍,不是 100 倍),显存占用恒定不变,KV cache 塞爆显存的灾难直接消失。

但代价也很明显:一页纸就那么大,写满了怎么办? 新内容要往里写,就得覆盖旧内容。“记什么、忘什么、怎么擦”,就成了这条路线十几年的核心难题。事实上过去的线性注意力模型效果一直干不过”翻全书”的标准注意力,就是输在这里——小抄记得太糙。

第二步:小抄怎么记才聪明?三代进化

  • 第一代(早期线性注意力):无脑往上摞。新信息直接叠加到记忆板上,旧的新的糊成一团,越记越花。
  • 第二代(Delta 规则):先擦再写。写新笔记前,先找到小抄上与之相关的旧内容,把过时的部分擦掉,再写入新的。比如小抄上记着”会议在周二”,新信息说改到周四了,Delta 规则会先划掉”周二”再写”周四”,而不是两条都留着打架。KDA 名字里的 “Delta” 就是从这来的。
  • 第三代(Gated DeltaNet):加个遗忘阀门。给记忆板装一个”门控”,让旧信息随时间主动褪色,给新信息腾地方。但这个阀门很粗糙——一个开关管整块板子,要褪色就全体一起褪。

第三步:KDA 的核心改进——把一个阀门换成一排阀门

KDA(Kimi Delta Attention)站在 Gated DeltaNet 肩膀上,关键一步是把门控做了:记忆板被分成很多通道,每个通道有自己独立的遗忘速率

这有什么用?想象模型在读一个大项目的代码:有些信息是长期骨架(整个项目的目录结构、核心接口),应该记很久;有些是阅后即焚的细节(当前这个函数里的临时变量),处理完就该腾地方。以前”一个阀门管全部”,长期记忆和临时记忆只能一起褪色;KDA 让它们各褪各的——重要的慢慢忘,琐碎的赶紧忘。论文的原话是:让有限的记忆状态被”更高效地利用”。一页 A4 小抄,从此记得下一整个项目的精华。

标准注意力与线性注意力对比示意图 左:开卷考试,每个新词回看全部历史;右:一页小抄 + KDA 分通道遗忘 | 本文自绘示意图

第四步:数学漂亮没用,还得 GPU 跑得快

这里有个外行容易忽略的点:GPU 这种硬件最喜欢”大块规整的矩阵乘法”,最讨厌”一个 token 一个 token 顺序处理”。而线性注意力天生是顺序更新的(像 RNN),朴素实现根本喂不饱 GPU。

KDA 的解法是一套”分块”(chunkwise)算法:把序列切成小块,块内的计算重新组织成 GPU 最爱的大矩阵乘法,块与块之间才做顺序传递。技术上它用了 DPLR(对角加低秩)转移矩阵的一个特化变体——你不需要懂这个词,只需要知道结论:相比通用形式砍掉了一大截计算量,同时保持了”先擦再写”的经典行为。在数学优雅和硬件效率之间,Kimi 毫不犹豫选了后者——这个务实劲儿贯穿它整个技术栈。

第五步:不搞纯血,搞混合

“小抄再高级,也有需要精确翻书的时候”——比如在百万 token 里精确找回某个具体数字。所以 Kimi 没有全盘押注线性注意力,而是搞分层混合:按 3:1 的比例,每 3 层 KDA(记小抄,快、省)搭配 1 层完整注意力(翻全书,准)。就像考场上大部分题靠小抄和脑子,关键几道大题才去翻书。

验证这套设计的模型叫 Kimi Linear:480 亿总参数、30 亿激活。团队用完全相同的数据、配方和训练预算,把它和纯标准注意力的模型放在一起赛跑。

Kimi Linear 论文图1:性能与解码加速对比 论文图 1:左图,Kimi Linear(蓝点右上角)在 128k 长文本上性能最高且解码快近 4 倍;右图,上下文越长优势越大,1M 时每 token 延迟只有标准注意力(MLA,虚线)的 1/6.3 | 图源:arXiv:2510.26692

结果(Kimi Linear 论文):一、短文本、长文本、强化学习三种场景全赢——论文自称这是线性注意力架构第一次在公平对比下全面胜过标准注意力;二、“索引卡片”(KV cache)显存占用最多省 75%;三、100 万 token 上下文的生成速度最高提升 6 倍(K3 官方博客说 6.3 倍)。

划重点:“公平对比”四个字最值钱。以前线性注意力论文喜欢挑对自己有利的场地跑分,这次是同场同规则硬碰硬还赢了。这就是为什么 K3 敢把 KDA 放进 2.8 万亿参数的旗舰——它不是”为了省钱忍痛降级”,而是又快又好

AttnRes:把”流水账”改成”带目录的笔记本”

先把问题再讲透一点

回到前面那锅汤。标准残差连接的规则是:每一层的输出,无条件、等权重地全部倒进主干。第 80 层接手时,锅里是前面 79 层的大杂烩——它没法说”我只想要第 3 层提取的基础语法特征,不想要中间那些”。想用第 3 层的东西?对不起,只能连汤带料一起喝。

这带来两个具体恶果:一是主干上的数值随深度越滚越大(每层都往里加,又没人做减法),数值一大,训练就容易不稳;二是越深的层贡献占比越小,一百层的模型,后半段的层可能都在”小声哼哼”。花钱训了一百层,有效的可能只有前六十层——这就是白白浪费算力。

AttnRes 的解法:让每一层自己”点菜”

AttnRes(Attention Residuals,注意力残差)的想法说出来特别简单:既然注意力机制能让模型在”一句话里”挑重点,为什么不能用同样的机制,让每一层在”前面所有层的输出里”挑重点?

具体做法分三步,就是标准的注意力三件套,只是方向从”横着”变成了”竖着”:

  • 打分:第 80 层拿着自己当前的需求,给第 1 到 79 层的输出各打一个”相关性分数”;
  • 归一化:用 softmax 把分数变成一组加起来等于 1 的权重(相当于”预算分配”:第 3 层给 40%,第 77 层给 25%,其他层分剩下的);
  • 加权求和:按这个权重把各层输出混合起来,作为自己的输入。

关键在于:这些权重不是写死的,是训练学出来的,而且随输入内容动态变化。处理代码时可能多看语法层,处理数学时可能多看推理层。用比方总结:残差流从一本”只能往后摞、不能翻页的流水账”,变成了一个带目录、可检索的笔记本——第 80 层想要第 3 层的原始笔记,直接按目录翻回去拿原件,不用从浓汤里捞。

标准残差与 AttnRes 对比示意图 左:标准残差,全部等权倒进主干;右:AttnRes,按内容”打分点菜” | 本文自绘示意图

AttnRes 论文图1:三种残差连接结构对比 论文图 1 原图:(a) 标准残差,(b) 完整 AttnRes——注意每层多出的红色回连线,就是”翻回前面任意层”的通道,(c) 分块版 Block AttnRes | 图源:arXiv:2603.15031

效果呢?论文报告:稀释问题被明显缓解,各层的输出幅度和梯度在深度方向上变得均匀——翻译成人话:一百层的模型,一百层都在认真干活,没人打酱油了。而且这个收益在不同模型尺寸上稳定复现(这叫 scaling law 实验),说明不是小模型上的偶然。

那代价呢?聪明的你应该已经想到了

“每层都要回看前面所有层”——那前面所有层的输出就都得留在显存里随时待查,层数一多这是笔巨大的内存开销。更麻烦的是,大模型训练是把不同层放在不同机器上流水作业的(流水线并行),跨层回看意味着机器之间要频繁传数据。这类”每层看所有层”的想法其实学界早有人提过,一直没进过大模型,就是被这两笔账拦住的。

Kimi 把账算平用了三招,思路都不难懂:

  • Block AttnRes(分块):不让每层看每层,而是把层分成组(比如 8 层一组),只对”组级摘要”做注意力。就像查资料不用翻每一页,翻章节摘要就够了——内存省一大截,效果保留大半;
  • 缓存式流水线通信:跨机器要传的数据提前缓存好,不让计算停下来等传输;
  • 两阶段计算:把注意力计算拆成两步错峰执行,进一步隐藏开销。

最终账单:额外计算开销:不到 2%(K3 官方博客口径);换来的训练效率提升:约 25%——论文里的原始表述是:用 Block AttnRes 训练达到的损失,相当于基线模型多花 1.25 倍算力才能达到的水平。花 2 块钱买 25 块钱的收益,这就是它进 K3 的理由。官方实现已开源,仓库地址:github.com/MoonshotAI/Attention-Residuals,定位是标准残差连接的”即插即用替代品”。

合起来看:一个思想,两个方向

把两个组件放一起看,有个很漂亮的对称性:

KDAAttnRes
方向横向(文本长度)纵向(网络深度)
治的病翻书的平方账单深层贡献被稀释
类比高级小抄:分通道记忆和遗忘带目录笔记本:按需翻回任意层
收益显存 -75%,1M 解码快 6.3 倍训练效率 +25%,开销 <2%

发现共同点了吗?两者干的是同一件事:把网络里”固定的、不加区分的”信息处理,换成”学习出来的、看内容下菜的”选择。KDA 让模型选择”记什么忘什么”,AttnRes 让模型选择”用哪层不用哪层”。当年注意力机制正是靠”让模型自己选”干掉了一批固定规则的老架构,现在这个思想被推广到了记忆管理和残差连接上。

放回 K3 的语境,这两个组件是 2.8T + 百万上下文能成立的前提:KDA 让百万 token 的推理在经济上可行——官方能把 1M 上下文卖到和 Claude Sonnet 5 一个价还有得赚,KDA 加前缀缓存是重要原因;AttnRes 保证模型往深往大堆的时候每层都物尽其用。官方说 K3 比 K2 的 scaling 效率高 2.5 倍,这两位就是主要功臣。

彩蛋:社区已经开始”接力”了

上一篇说过,开源架构的价值是让全世界来复现、魔改、证伪。AttnRes 论文发布才四个月,arXiv 上已经出现两类后续:

  • 挑毛病的:有研究(arXiv:2605.17887)发现 AttnRes 会加剧模型里的”异常激活值”问题,给低精度量化部署添麻烦——对想压缩模型的团队是个实用预警;
  • 往前推的:Delta Attention Residuals(arXiv:2605.18855)说标准 AttnRes 回看的内容冗余太多,提出了改进——相当于把 KDA 的”先擦再写”思想反过来用到深度方向。

一挑一推,这才是开源研究该有的生态。闭源实验室的架构创新,外界连它用没用都不知道,更别提帮它找 bug 了。

写在最后:K3 不是”堆出来”的

看懂了这两个组件,再回头看”2.8 万亿参数”这个数字,感觉就不一样了。它不是钞能力的产物:Kimi 先在 480 亿的小模型上把 KDA 和 AttnRes 的收益一点点验证扎实,把 GPU 内核代码写好、把推理框架适配做完,然后才敢把整套架构放大几十倍推到 2.8T。

先用小模型证明架构,再用架构撬动规模——在算力受限的约束下,这可能是比”大力出奇迹”更值得学习的路径。7 月 27 日权重和完整技术报告放出后,KDA 和 AttnRes 在 2.8T 尺度上应该还有新料,到时候接着聊。


文中为便于理解使用了大量类比,严格定义以论文原文为准;K3(2.8T)尺度上的完整消融数据以即将发布的技术报告为准。

参考资料

  1. Kimi Linear: An Expressive, Efficient Attention Architecture — arXiv
  2. Attention Residuals — arXiv
  3. AttnRes 官方代码仓库 — GitHub
  4. Kimi K3: Open Frontier Intelligence — 月之暗面官方博客