用48小时+40罐气泡水,他拆出了Kimi K3真正的秘密

  • 2026-07-30
  • 人工智能
  • kimi
  • --

前两天在X上看到一位技术大佬 @waterloo_intern 发了一篇长文。为了梳理 Kimi K3 的建模代码,他说自己花了48小时、650毫克咖啡因,喝掉40罐LaCroix气泡水,还翻了8篇论文,不得不说这是一个狠人。

从 GPT-2 一路追到线性注意力、DeltaNet、Gated DeltaNet,再到 Kimi Delta Attention,最后才拼出 K3 的整体结构。
但真正让我停下来继续读的,不是这些“工程师式的自虐记录”,而是一个数字:22580。翻开他的技术长文,开头就说了:2019 年的 GPT-2 只有约 1.24 亿参数,而 Kimi K3 达到 2.8 万亿。粗略换算,一个 K3 的参数规模,大约相当于 22580 个 GPT-2。

七年时间,参数增长了两万多倍。但问题是——K3 真正值得研究的地方,从来不是“更大”。如果只是堆参数,这篇文章根本不需要写这么长。它真正揭示的是:大模型的每一次架构演进,本质上都在修复上一代留下的一个具体缺陷。上下文越来越长,KV Cache 扛不住;压缩成固定状态后,信息开始互相干扰;能覆盖旧信息后,又不会主动遗忘;序列问题解决了,深度方向的残差又开始失真。Kimi K3,本质上就是一条“不断修补记忆系统”的工程路线。原文有点长,就不贴出来了,有兴趣的可以去看原文。我试图用相对简洁和容易理解的方式把这篇文章梳理一遍,这也是我向大佬学习的一个过程。


GPT-2

一切的一切还要从GPT-2说起,GPT-2用的是标准 Softmax Attention。每生成一个 Token,都要用 Query 去匹配所有历史 Key,再从 Value 中取信息。为了避免重复计算,系统会把历史 Key/Value 存下来,这就是 KV Cache。可以把它理解成“带索引的记忆库”。优点很明显:精确。想回忆某个早期 Token,可以直接查。但问题也同样明显:上下文越长,KV Cache 越大。当上下文从几千 Token 扩展到几十万甚至百万时,显存和带宽会迅速成为瓶颈。

因此,后来的很多架构都在研究一个问题:能不能不保存全部历史,而是把历史压缩到一个固定大小的状态里?


线性注意力

线性注意力的思路是改变计算方式。传统注意力会保存不断增长的K和V,线性注意力则把过去的信息不断累加到一个固定大小的状态矩阵中。无论上下文是一千个Token还是十万个 Token,状态大小都不随序列长度增长。
这对长文本推理非常有优势,但代价同样明显。原本每个Token都有自己的存储位置,现在所有历史都被压进同一个矩阵。随着信息越来越多,不同的键值关系会开始互相干扰你可以把它想象成一块白板:KV Cache 是不断换新纸,而线性注意力是一直在同一块白板上写。写得越多,旧信息越容易被覆盖或混淆。


Delta Rule

Delta Rule 的改进非常关键,也是文章的一个难理解的点。

新信息写进状态之前,模型先用当前 Key 读取一次,看看这个位置原来存了什么;然后计算新旧信息之间的差值,只写入真正需要修改的部分。也就是说:不是直接写,而是“先看旧的,再做局部修改”。

它不再像普通线性注意力那样,只会不停地做加法。这相当于给固定大小的记忆增加了“编辑能力”。模型不需要把整块白板推倒重写,而是能够找到某个关联,把旧内容擦掉,再写入新的内容。

早期 Fast Weight Programmer 的研究已经指出,纯加法式的有限记忆最终会进入过容量状态,而 Delta Rule 能够更准确地修改已经存储的键值关系。

但它仍然缺一个能力:主动遗忘。


Gated DeltaNet

Delta Rule 擅长修改一个明确的键值关系,但如果上下文已经切换,模型想一次性降低一批旧信息的影响,就不太方便。Gated DeltaNet加了一个“衰减门”(gate):在写入新信息前,可以先把旧状态乘一个0~1之间的系数,接近1,意味着继续保留;接近0,意味着快速遗忘。

这么一来,模型就同时拥有两种能力:Delta Rule负责精确修改某个关联,Gate负责控制整体记忆的保留和衰减。但这里还是有一个限制:这个“遗忘”是粗粒度的。同一个注意力头里的不同特征,往往共享一个衰减比例,无法精细控制。于是后面的KDA出现了。


KDA

KDA(Kimi Delta Attention)是 Kimi K3 里最关键的结构之一。它的核心改进是:把“统一衰减”变成“分通道衰减”。可以理解为Gated DeltaNet是调整个房间灯光亮度,而KDA是可以单独调每一盏灯。这意味着模型可以做到某些信息快速消失、某些信息长期保留、某些特征被重写、某些特征持续累积在 Kimi Linear 的受控实验里,这套混合线性注意力架构在相同训练条件下超过了完整注意力基线;在一百万 Token 上下文场景中,论文报告最高可减少 75% 的 KV Cache,并实现最高约 6 倍的解码吞吐量。需要注意的是,这是 Kimi Linear 前代模型上的实验结果,不能直接等同于 K3 的实际线上速度,但它验证了 KDA 这条路线的潜力。

这也是我认为原文里最值得关注的部分。KDA 并不是凭空出现的“黑科技”,而是沿着线性注意力、Fast Weight、Delta Rule 和 Gated DeltaNet 一步步演进出来的。每一步都能找到明确的问题来源,也能找到对应的代码变化。这种架构演进,比单纯公布一个更大的参数数字有意思得多。


Kimi K3

线性注意力再强,也有一个硬限制,就是固定状态无法无损存储无限信息。无论门控设计得多精细,只要把越来越多的历史压进固定容量里,就一定会发生信息损失。K3没有试图“解决一切”,而是选择混合结构。它的主干大体按照三层 KDA 搭配一层 MLA(Multi-head Latent Attention,多头潜在注意力 )的方式交错排列。官方配置显示,模型共有 93 层,其中大部分是 KDA 层,并周期性插入完整注意力层。它仍然保留 Softmax Attention 的精确检索能力,只是会对 Key 和 Value 做更紧凑的潜空间压缩,从而降低 KV Cache 的成本。其中KDA负责低成本、持续地压缩和更新长期记忆,MLA负责在必要的时候,回到完整上下文中进行更加准确的检索。K3 的厉害之处,并不是证明线性注意力可以彻底取代 Softmax Attention,而是承认二者各有优缺点,然后把它们放进同一个模型里协同工作。


MoE

K3 的另一个关键点是 MoE(Mixture of Experts 混合专家模型)。K3 的总参数量达到 2.8 万亿,但每个 Token 实际激活的参数量约为 1040 亿。模型配置中包含 896 个可路由专家,每个 Token 只选择其中 16 个,同时还有两个共享专家处理所有 Token。可以把它理解成:并不是每个问题都要召集所有人开会,而是根据当前 Token 的内容,选择最合适的一小组专家参与计算。


AttnRes

原文后半段还有一个很容易被忽略,但我觉得非常重要的设计:AttnRes,也就是 Attention Residuals。传统 Transformer 的残差是简单相加,每经过一层,就把这一层的输出加到已有状态上。模型越来越深以后,早期层、中间层和后期层的信息不断混在一起。所有历史层默认获得相同的加法权重,某一层真正有价值的表征可能被大量后续输出稀释。AttnRes 的做法是让当前层对之前的层做一次注意力选择。也就是说:普通注意力是在序列方向上关注“当前 Token 应该参考哪些历史 Token”。AttnRes 则是在模型深度方向上关注“当前这一层,应该参考前面哪些层产生的表示”。K3 使用的是 Block AttnRes,并不是保存和检索每一层的全部输出,而是把若干层划分为一个块,在块级别进行选择,从而控制内存和通信成本。这让模型不仅在“时间维度”有记忆,也在“深度维度”有选择能力。


总结

以上就是从GPT-2到Kimi K3的演进过程。你会发现K3并不仅仅靠的是堆高参数规模,而是让模型学会了更聪明地管理有限的记忆:该写入什么、该覆盖什么、该遗忘什么,以及何时回到完整上下文中精准检索。规模决定上限,而选择性记忆,才是这条架构演进的核心。对于Kimi来说这才只是刚刚开始,因为它在开源的那一刻,全球有无数个像@waterloo_intern一样聪明的大脑,开始替它解释、验证和优化。社区也会开始替它补充文档、梳理谱系、适配框架、优化 Kernel、研究量化、寻找边界。虽然目前最强的闭源模型还有绝对的能力上的优势,但开源模型会在架构研究、推理优化、量化部署和行业适配上获得更快的外部反馈。

所以就目前来看,Kimi K3在关注度和反响上都好,吸引了大批的国内外开发者的关注,从huggingface上的热度就能看出来,短短2天下载量99k,点赞8.65k。我想即使大部分人没有足以运行起它的硬件,但是这不妨碍下载下来研究它。我想:开源模型最重要的资产,未必只是那份可以下载的权重。真正重要的是,当代码被放到桌面上以后,全世界会有多少聪明的大脑,愿意继续替它往前推一步。

素材来源于X,@waterloo_intern

Maple
Maple
© 2025 by Maplezz 本文基于 CC BY-NC-SA 4.0 许可 CC 协议 必须注明创作者 仅允许将作品用于非商业用途 改编作品必须遵循相同条款进行共享 最后更新:2026/8/5