Kimi K3论文:Attention Residuals
Attention Residuals(AttnRes,注意力残差)是 Kimi 团队(Moonshot AI)关于新一代架构的第二篇技术报告,直接建立在第一篇《Kimi Linear》之上——它的实验模型就是「Kimi Linear 48B + AttnRes」。如果说 Kimi Linear 换的是 token mixing(跨序列的信息流),这篇换的就是 残差连接(跨深度的信息流)。
一句话概括:把「所有层输出用固定单位权重相加」的残差连接,换成「对深度做 softmax attention」——让每一层用一个可学习、输入相关的权重,去选择性地聚合前面所有层的输出,而不是被动接收一份被压扁的均匀和。
这个改动看着朴素,动机却很扎实:标准残差 + PreNorm 会让隐状态幅度随深度不断膨胀,把每一层的相对贡献稀释掉。AttnRes 借「时间与深度的对偶」这条线索,把 Transformer 当年在序列维度做过的「用 attention 替代 RNN 递归」这件事,原样搬到了深度维度上。
1. 背景:残差连接被忽略的「第二个角色」
残差连接 通常被理解成一条梯度高速路:identity 映射让梯度能绕过变换直接回传,深网络才训得稳。这是它广为人知的第一个角色。
但把递推展开,会看到它还有第二个角色:
也就是说,第 层拿到的,是此前所有层输出的一份「均匀加权和」(每一项权重都是 1)。残差其实还定义了「信息如何跨深度聚合」。问题在于,如今序列混合(attention)和专家路由(MoE)都早已用上可学习、输入相关的权重,唯独这个跨深度的聚合,还停留在固定单位权重上——没有任何机制去选择性地强调或抑制某一层的贡献。
在 PreNorm 成为主流之后,这个缺陷更明显。均匀累加让隐状态的幅度随深度以 增长,于是每一层的相对贡献被不断稀释:早层信息被埋没、后面难以有针对性地取回,经验上甚至能剪掉相当一部分层而损失很小。已有的补丁——Highway 的可学习门、ReZero / LayerScale 的缩放、DeepNorm 的归一化——放松了固定系数,但它们都没跳出同一个约束:每层只能看到直接前驱 这一个把所有历史揉在一起的单一状态,而拿不到各层各自的输出。这带来三个具体局限:不同类型的层(attention 和 MLP)被迫共享同一份聚合状态;聚合时丢掉的信息在深层无法选择性找回;后面的层为了在累加和里争到影响力,被迫学出越来越大的输出,反过来又不利于训练稳定。
这套困境,和 attention 出现之前 RNN 在序列维度上遇到的,几乎是一回事。
2. 核心洞见:时间与深度的对偶
RNN 沿时间把整段历史压进一个状态;残差沿深度把前面所有层压进一个状态 。两者形式上都是加性递归。当年序列建模的突破,是 Transformer 用 attention 替代了 RNN 的时间递归,让每个位置都能用数据相关的权重、选择性地访问所有历史位置。AttnRes 主张对深度做完全一样的事:
其中 是「第 层看第 层」的注意力权重。序列长度可以到百万,但网络深度通常很克制(),所以在深度上做 的 attention 计算量完全可以承受。
论文还给了一个统一视角:标准残差以及此前那些基于递归的变体,都可以证明是「深度维度上的线性注意力」;AttnRes 把它推广成「深度维度上的 softmax 注意力」,恰好是当年序列维度上「线性 → softmax」那一步转变在深度上的重演。
3. Full AttnRes:对所有前层做 softmax 注意力
最直接的实现是 Full AttnRes,每一层对之前所有层的输出做 softmax attention:
这里的设计有几个关键点:
- query 是每层一个可学习的伪查询(pseudo-query),而不是从当前 hidden state 投影出来的。整个机制每层只多一个 维向量。
- key 和 value 都是各层的输出本身:,其中 那一项取 token embedding ,保证 embedding 始终是一个可被取用的源。
- key 上要做 RMSNorm。层与层的输出幅度差异很大,不归一化的话,幅度大的层会仅凭幅度就霸占注意力权重;RMSNorm 把它们拉到同一尺度再比较。
- 所有 初始化为零。这一步很重要:初始时所有 相等,AttnRes 退化成等权平均,也就是标准残差的那份均匀和;模型从一个已知稳定的点出发,避免训练早期的剧烈波动,之后再慢慢学出有区分度的权重。
成本与它引出的问题。 Full AttnRes 每个 token 需要 计算、 显存来存各层输出。在普通训练里,这份 显存和反向传播本就要保留的激活完全重叠,几乎没有额外开销。但一旦上大规模训练,常用的激活重算(activation recomputation)和流水线并行(pipeline parallelism)会打破这个假设:那些本可以释放、之后重算的层输出,现在必须一直留着给后续所有层用,在流水线并行下还得跨 stage 传输。于是显存和通信开销都变成 。这正是下面 Block AttnRes 要解决的。
4. Block AttnRes:分块,把开销降到 O(Nd)
Block AttnRes 的做法是把 层切成 个 block(每块 层):
- 块内:像标准残差一样,把该块内所有层的输出直接求和,压成一个 block 表示 。
- 块间:只对这 个 block 级表示(加上 embedding)做 full attention。
这样每一层要 attend 的对象,从「之前所有 个层输出」缩成「前面已完成的若干个 block 表示 ,外加当前块内到目前为止的部分和 」。显存和通信都从 降到 ,计算从 降到 。
是一个在两个极端之间插值的旋钮: 就是 Full AttnRes, 就退回标准残差(只是把 embedding 单独拎出来当一个源)。论文发现 就能拿回 Full AttnRes 的大部分收益——每个 token 只要存 8 个隐状态。
5. 让它在大规模下真正跑得动
Block AttnRes 能落地,很大程度上靠一个设计细节:伪查询 是与输入、与 hidden state 都解耦的可学习参数。这意味着一整块里所有层的注意力权重可以一次性批量算出来,不必等它们顺序产出。论文围绕这一点做了几项工程优化:
- 跨 stage 缓存(cross-stage caching):流水线并行下,朴素做法是每次 stage 切换都把已累积的全部 block 重传一遍,冗余很大。改成本地缓存已收到的 block、只传增量,峰值通信从 降到 ,能和计算充分重叠。
- 两阶段计算(two-phase computation):Phase 1 把一个块内所有伪查询打包,对之前的 block 表示做一次批量 inter-block attention;Phase 2 再顺序处理块内依赖,用 online softmax 把两部分精确合并。这样把「每层都要扫一遍所有前块」的访存摊薄到「每块一次」。
- 省显存的 prefill:把 block 表示沿序列维分片到多卡,128K 上下文下每卡显存从约 15 GB 降到约 1.9 GB,配合分块 prefill 还能进一步压到 0.3 GB 以内。
综合下来,开流水线并行时训练端到端开销小于 4%,推理延迟开销小于 2%——足以当成标准残差的「即插即用」替代。
6. 效果
- scaling law。 扫了 5 个模型规模、每个规模训练 baseline / Full AttnRes / Block AttnRes 三个变体。两种 AttnRes 在整个算力范围内都稳定优于 baseline;Block AttnRes 大约相当于让 baseline 多用 1.25 倍算力,而它和 Full 的差距随规模缩小,最大规模下只差 0.001。
- 训练动态。 把 AttnRes 装进 Kimi Linear 48B/3B、训 1.4T token 后观察到三件事:验证 loss 全程更低,且在学习率 decay 阶段差距拉大;输出幅度上,baseline 随深度单调增长(PreNorm 稀释的典型症状),Block AttnRes 则在每个块边界「重置」累加,呈现有界的周期性;梯度上,baseline 早层梯度过大,AttnRes 因为 softmax 权重之间存在竞争,梯度在各层的分布明显更均匀。
- 下游 benchmark。 AttnRes 在所有评测任务上都追平或超过 baseline,多步推理和组合类任务提升最明显:GPQA-Diamond +7.5、Math +3.6、HumanEval +3.1,知识类的 MMLU +1.1、TriviaQA +1.9 也有稳定收益。
- 消融。 DenseFormer(能看到所有前层、但用固定且输入无关的标量系数)几乎没提升,说明输入相关的加权才是关键;mHC(输入相关、m 条并行流)到 1.737 附近,而 Full AttnRes 只用每层一个查询向量就做到 1.737、Block 1.746。此外:softmax 优于 sigmoid(softmax 的竞争性归一化逼出更果断的选择);把 query 改成输入相关能再降一点(1.731)但要多一个 投影、解码时还得顺序访存,于是默认用可学习查询;多头深度聚合反而更差,说明「一层相关时是整层相关」,深度上的最优混合在各通道间大体一致;去掉 key 的 RMSNorm 会掉点。还有一个对比很说明问题:只保留最近 层的滑动窗口聚合明显不如 Block AttnRes——选择性地够到远处的层,比多看几层近邻更重要。
- 学到的权重模式。 可视化 后能看到:对角占优(局部性仍是主通路);embedding 那一列(source 0)长期获得可观权重,是一种「深度维度上的 attention sink」;层还出现了专门化——pre-MLP 的输入更依赖近邻,pre-attention 的感受野更宽。
上面的具体分数来自论文 Table 2–4 和图 4–8,密集表格里的数字建议对着原文再核一遍。
7. 统一视角:残差就是一个结构化矩阵
论文最后把各种残差变体统一进一个深度混合矩阵 : 就是第 层给第 层输出分配的权重。区别只在这些权重怎么来(固定 / 训练后静态 / 输入相关),以及 被约束成低秩还是允许稠密。
- 标准残差: 是一个全 1 的下三角矩阵,秩最低(1-semiseparable),权重固定。
- Highway:仍是 1-semiseparable,但权重变成输入相关。
- (m)HC(Hyper-Connections):维护 条并行流, 变成 -semiseparable——本质是沿深度做了 state expansion。
- Full AttnRes:稠密、满秩 、输入相关。
- Block AttnRes:有效秩介于 和 之间,正好在标准残差()和 Full AttnRes()之间插值。
这个视角把结论收得很干净:已有的残差变体,本质上都是深度维度上的线性注意力;AttnRes 是深度维度上的 softmax 注意力。 它也解释了前面看到的「深度 attention sink」——某些源(尤其 embedding)无论输入如何都稳定吸走大量权重,和序列维度 attention 里的 sink 现象同源。
8. 局限与讨论
- Full 仍不实用,Block 是妥协。 Full AttnRes 的 显存 / 通信在当前硬件上对大模型仍然吃不消,Block AttnRes 是务实折中;等未来互联和显存放宽,用更细的 block 甚至直接上 Full 是自然的升级路径。
- 它偏好更深更窄的模型,但别直接照搬成部署建议。 固定算力和参数下的架构扫描显示,AttnRes 会把最优点从 baseline 的较宽配置推向更深更窄( 从约 60 移到约 45),说明它能更好地利用深度;但更深的模型推理延迟更高,这只是诊断信号,最终还要和推理成本一起权衡。
- 深度 attention 目前是 vanilla 版。 因为层数还在 softmax attention 的舒适区内,论文直接用了普通深度 attention;换成线性复杂度的深度 attention 是未来方向。
- 和 Kimi Linear 正交。 AttnRes 改的是残差(跨深度信息流),Kimi Linear 改的是 token mixing(跨序列信息流),两者互不冲突、可以叠加,这也正是本文最终模型的由来。要理解这里的 KDA / MLA 混合骨干,建议先读《Kimi Linear》那篇。
参考
- Kimi Team. Attention Residuals. Technical Report, 2026. arXiv:2603.15031
- Kimi Team. Kimi Linear: An Expressive, Efficient Attention Architecture. 2025. arXiv:2510.26692
- He et al. Deep Residual Learning for Image Recognition. CVPR 2016. arXiv:1512.03385
- Vaswani et al. Attention Is All You Need. NeurIPS 2017. arXiv:1706.03762
- Xiong et al. On Layer Normalization in the Transformer Architecture. ICML 2020. arXiv:2002.04745
- Srivastava et al. Highway Networks. 2015. arXiv:1505.00387
- Pagliardini et al. DenseFormer: Enhancing Information Flow in Transformers via Depth Weighted Averaging. 2024. arXiv:2402.02622
- Zhu et al. Hyper-Connections. 2025. arXiv:2409.19606
- Dao & Gu. Transformers are SSMs (Structured State Space Duality). 2024. arXiv:2405.21060