3484 字
17 分钟

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. 背景:残差连接被忽略的「第二个角色」#

残差连接 hl=hl1+fl1(hl1)h_l = h_{l-1} + f_{l-1}(h_{l-1}) 通常被理解成一条梯度高速路:identity 映射让梯度能绕过变换直接回传,深网络才训得稳。这是它广为人知的第一个角色。

但把递推展开,会看到它还有第二个角色:

hl=h1+i=1l1fi(hi).h_l = h_1 + \sum_{i=1}^{l-1} f_i(h_i).

也就是说,ll 层拿到的,是此前所有层输出的一份「均匀加权和」(每一项权重都是 1)。残差其实还定义了「信息如何跨深度聚合」。问题在于,如今序列混合(attention)和专家路由(MoE)都早已用上可学习、输入相关的权重,唯独这个跨深度的聚合,还停留在固定单位权重上——没有任何机制去选择性地强调或抑制某一层的贡献。

在 PreNorm 成为主流之后,这个缺陷更明显。均匀累加让隐状态的幅度随深度以 O(L)O(L) 增长,于是每一层的相对贡献被不断稀释:早层信息被埋没、后面难以有针对性地取回,经验上甚至能剪掉相当一部分层而损失很小。已有的补丁——Highway 的可学习门、ReZero / LayerScale 的缩放、DeepNorm 的归一化——放松了固定系数,但它们都没跳出同一个约束:每层只能看到直接前驱 hl1h_{l-1} 这一个把所有历史揉在一起的单一状态,而拿不到各层各自的输出。这带来三个具体局限:不同类型的层(attention 和 MLP)被迫共享同一份聚合状态;聚合时丢掉的信息在深层无法选择性找回;后面的层为了在累加和里争到影响力,被迫学出越来越大的输出,反过来又不利于训练稳定。

这套困境,和 attention 出现之前 RNN 在序列维度上遇到的,几乎是一回事。

2. 核心洞见:时间与深度的对偶#

RNN 沿时间把整段历史压进一个状态;残差沿深度把前面所有层压进一个状态 hlh_l。两者形式上都是加性递归。当年序列建模的突破,是 Transformer 用 attention 替代了 RNN 的时间递归,让每个位置都能用数据相关的权重、选择性地访问所有历史位置。AttnRes 主张对深度做完全一样的事:

hl=α0lh1+i=1l1αilfi(hi),i=0l1αil=1,h_l = \alpha_{0\to l}\, h_1 + \sum_{i=1}^{l-1}\alpha_{i\to l}\, f_i(h_i),\qquad \sum_{i=0}^{l-1}\alpha_{i\to l}=1,

其中 αil\alpha_{i\to l} 是「第 ll 层看第 ii 层」的注意力权重。序列长度可以到百万,但网络深度通常很克制(L<1000L<1000),所以在深度上做 O(L2)O(L^2) 的 attention 计算量完全可以承受。

时间与深度的对偶:序列维度上 attention 取代了 RNN 递归;AttnRes 在深度维度上做同一件事,用 softmax attention 取代残差的加性递归

论文还给了一个统一视角:标准残差以及此前那些基于递归的变体,都可以证明是「深度维度上的线性注意力」;AttnRes 把它推广成「深度维度上的 softmax 注意力」,恰好是当年序列维度上「线性 → softmax」那一步转变在深度上的重演。

3. Full AttnRes:对所有前层做 softmax 注意力#

最直接的实现是 Full AttnRes,每一层对之前所有层的输出做 softmax attention:

αil=ϕ(ql,ki)j=0l1ϕ(ql,kj),ϕ(q,k)=exp ⁣(qRMSNorm(k)).\alpha_{i\to l} = \frac{\phi(q_l, k_i)}{\sum_{j=0}^{l-1}\phi(q_l, k_j)},\qquad \phi(q,k)=\exp\!\big(q^\top \mathrm{RMSNorm}(k)\big).

这里的设计有几个关键点:

  • query 是每层一个可学习的伪查询(pseudo-query)ql=wlRdq_l = w_l \in \mathbb{R}^d,而不是从当前 hidden state 投影出来的。整个机制每层只多一个 dd 维向量。
  • key 和 value 都是各层的输出本身ki=vi=fi(hi)k_i = v_i = f_i(h_i),其中 i=0i=0 那一项取 token embedding h1h_1,保证 embedding 始终是一个可被取用的源。
  • key 上要做 RMSNorm。层与层的输出幅度差异很大,不归一化的话,幅度大的层会仅凭幅度就霸占注意力权重;RMSNorm 把它们拉到同一尺度再比较。
  • 所有 wlw_l 初始化为零。这一步很重要:初始时所有 αil\alpha_{i\to l} 相等,AttnRes 退化成等权平均,也就是标准残差的那份均匀和;模型从一个已知稳定的点出发,避免训练早期的剧烈波动,之后再慢慢学出有区分度的权重。

成本与它引出的问题。 Full AttnRes 每个 token 需要 O(L2d)O(L^2 d) 计算、O(Ld)O(Ld) 显存来存各层输出。在普通训练里,这份 O(Ld)O(Ld) 显存和反向传播本就要保留的激活完全重叠,几乎没有额外开销。但一旦上大规模训练,常用的激活重算(activation recomputation)和流水线并行(pipeline parallelism)会打破这个假设:那些本可以释放、之后重算的层输出,现在必须一直留着给后续所有层用,在流水线并行下还得跨 stage 传输。于是显存和通信开销都变成 O(Ld)O(Ld)。这正是下面 Block AttnRes 要解决的。

标准残差把所有前层压成单一状态并均匀相加;Full AttnRes 让每层通过可学习的伪查询,选择性地对所有前层输出做 softmax 加权

4. Block AttnRes:分块,把开销降到 O(Nd)#

Block AttnRes 的做法是把 LL 层切成 NN 个 block(每块 S=L/NS=L/N 层):

  • 块内:像标准残差一样,把该块内所有层的输出直接求和,压成一个 block 表示 bnb_n
  • 块间:只对这 NN 个 block 级表示(加上 embedding)做 full attention。

这样每一层要 attend 的对象,从「之前所有 LL 个层输出」缩成「前面已完成的若干个 block 表示 b0,,bn1b_0,\dots,b_{n-1},外加当前块内到目前为止的部分和 bni1b_n^{\,i-1}」。显存和通信都从 O(Ld)O(Ld) 降到 O(Nd)O(Nd),计算从 O(L2)O(L^2) 降到 O(N2)O(N^2)

NN 是一个在两个极端之间插值的旋钮:N=LN=L 就是 Full AttnRes,N=1N=1 就退回标准残差(只是把 embedding 单独拎出来当一个源)。论文发现 N8N\approx 8 就能拿回 Full AttnRes 的大部分收益——每个 token 只要存 8 个隐状态。

Block AttnRes:L 层分成 N 个 block,块内用标准残差求和成一个 block 表示,块间只对 N 个 block 表示做 softmax 注意力

5. 让它在大规模下真正跑得动#

Block AttnRes 能落地,很大程度上靠一个设计细节:伪查询 wlw_l 是与输入、与 hidden state 都解耦的可学习参数。这意味着一整块里所有层的注意力权重可以一次性批量算出来,不必等它们顺序产出。论文围绕这一点做了几项工程优化:

  • 跨 stage 缓存(cross-stage caching):流水线并行下,朴素做法是每次 stage 切换都把已累积的全部 block 重传一遍,冗余很大。改成本地缓存已收到的 block、只传增量,峰值通信从 O(C)O(C) 降到 O(P)O(P),能和计算充分重叠。
  • 两阶段计算(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)但要多一个 d×dd\times d 投影、解码时还得顺序访存,于是默认用可学习查询;多头深度聚合反而更差,说明「一层相关时是整层相关」,深度上的最优混合在各通道间大体一致;去掉 key 的 RMSNorm 会掉点。还有一个对比很说明问题:只保留最近 WW 层的滑动窗口聚合明显不如 Block AttnRes——选择性地够到远处的层,比多看几层近邻更重要
  • 学到的权重模式。 可视化 αil\alpha_{i\to l} 后能看到:对角占优(局部性仍是主通路);embedding 那一列(source 0)长期获得可观权重,是一种「深度维度上的 attention sink」;层还出现了专门化——pre-MLP 的输入更依赖近邻,pre-attention 的感受野更宽。

上面的具体分数来自论文 Table 2–4 和图 4–8,密集表格里的数字建议对着原文再核一遍。

7. 统一视角:残差就是一个结构化矩阵#

论文最后把各种残差变体统一进一个深度混合矩阵 MRL×LM\in\mathbb{R}^{L\times L}MilM_{i\to l} 就是第 ll 层给第 ii 层输出分配的权重。区别只在这些权重怎么来(固定 / 训练后静态 / 输入相关),以及 MM 被约束成低秩还是允许稠密。

  • 标准残差MM 是一个全 1 的下三角矩阵,秩最低(1-semiseparable),权重固定。
  • Highway:仍是 1-semiseparable,但权重变成输入相关。
  • (m)HC(Hyper-Connections):维护 mm 条并行流,MM 变成 mm-semiseparable——本质是沿深度做了 state expansion。
  • Full AttnRes:稠密、满秩 LL、输入相关。
  • Block AttnRes:有效秩介于 NNN+SN+S 之间,正好在标准残差(N=1N=1)和 Full AttnRes(N=LN=L)之间插值。

深度混合矩阵 M 的对比:标准残差是全 1 下三角(低秩、固定),Full AttnRes 是稠密满秩,Block AttnRes 呈块结构、秩介于两者之间

这个视角把结论收得很干净:已有的残差变体,本质上都是深度维度上的线性注意力;AttnRes 是深度维度上的 softmax 注意力。 它也解释了前面看到的「深度 attention sink」——某些源(尤其 embedding)无论输入如何都稳定吸走大量权重,和序列维度 attention 里的 sink 现象同源。

8. 局限与讨论#

  • Full 仍不实用,Block 是妥协。 Full AttnRes 的 O(Ld)O(Ld) 显存 / 通信在当前硬件上对大模型仍然吃不消,Block AttnRes 是务实折中;等未来互联和显存放宽,用更细的 block 甚至直接上 Full 是自然的升级路径。
  • 它偏好更深更窄的模型,但别直接照搬成部署建议。 固定算力和参数下的架构扫描显示,AttnRes 会把最优点从 baseline 的较宽配置推向更深更窄(dmodel/Lbd_\text{model}/L_b 从约 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
Kimi K3论文:Attention Residuals
https://blog.gzher.com/posts/paper-kimi-k3-attention-residuals/
作者
中会 / Claude Opus 4.8
发布于
2026-07-20
许可协议
CC BY-NC-SA 4.0