softmax attention 每生成一个 token 都要读完整段历史,KV cache 随序列线性增长。 线性注意力换成一个与序列长度无关的矩阵状态,代价是状态容量有限,必须学会在写入时遗忘、在冲突时定向改写。 RWKV-4 用 time-mix/channel-mix 把这件事做成可训练的 RNN;RWKV-7 把更新写成向量门控的广义 delta rule;Kimi Linear 的 KDA 再把门细化到每个通道,并用 3:1 的 KDA:MLA 混合保住全局检索。
线性注意力把历史压进一个 dk × dv 的矩阵状态:每来一个 token,用外积写入;查询时用 q 读出。
decode 阶段只读这个状态,不读历史,因此每步计算和显存都与序列长度无关。
但固定状态不会自己忘记。加性写入只叠加、不删除,序列一长,不同的 key 就会挤进同一片方向,检索时取回混合值。 补缺口的两条机制是:gating/decay 按比例缩小旧状态,delta rule 沿当前 key 定向删除再写入。
Gated DeltaNet 把标量门和 delta rule 合在一起;KDA 把标量门换成逐通道对角门,并把门放在 Householder 之前;RWKV-7 则把衰减和学习率都向量化,还允许删除 key 与写入 key 不同。 三者都把更新写成对角加秩一的 DPLR,从而能 chunked 并行。
Kimi Linear 用 3:1 的 KDA:MLA 混合:长上下文平均分 54.5 对 MLA 的 52.2,1M prefill 快 2.9×。 但解码加速原文给出 6×、2.3×、6.3× 三组数字,§06 并列呈现,不替作者合并。
先建立共同认知:线性注意力把历史压进一个与序列长度无关的矩阵状态;难点不是省显存,而是有限容量下如何选择性写入、定向删除。
softmax attention 在 decode 时要把每个历史 token 的 K/V 留在显存里,再让当前 query 与它们逐个打分。 Kimi Linear 的 §1 把这条代价写成两点:时间随序列二次增长,KV cache 随序列线性增长。 序列越长,每一步 decode 要读的 K/V 越多,显存也越难留给更大的 batch。
线性注意力换成另一套记账方式:维护一个矩阵状态 St,每来一个 token 就把它的 key/value 外积加进去;查询时用 q 从状态里读。
状态大小是 dk × dv,与已经处理了多少 token 无关。
Kimi 的 KDA 每个头取 128×128,decode 时只保留这一块状态。
问题出在「只加不减」。RWKV-7 的 §2 把这件事讲得很直接:旧状态不会被移除,只会因为新值不断叠加而变成数值上更小的一部分; 状态容量有限,最终不同的值会混在一起,按某个 key 取回时拿到的是多条关联的混合。 Gated DeltaNet 的 §1 用另一个说法描述同一件事:能同时存下的正交 key-value 对数量受维度限制,序列长度超过维度后,memory collision 不可避免。
所以一个可用的固定状态至少要做三件事:决定哪些旧记忆该淡出;决定当前 token 的写入强度;在需要时把某个 key 上的旧值替换掉,而不是继续叠加。 后面的 gating、delta rule 和 chunked 并行,都是围绕这三件事展开的。
KV cache 的大小与序列长度成正比;线性状态的大小只与 head 维度有关。前者可以精确保留每个 token 的 K/V,后者必须把历史压缩进固定秩的矩阵。 压缩比越高,检索越依赖「写什么、删什么」的策略。这不是实现细节,而是结构性的取舍。推断(由固定秩状态与 GDN §1 的容量上限推出)
RWKV-4 证明线性 RNN 可以训练到 14B;Mamba-2 把衰减变成数据相关;DeltaNet 补上定向删除;GDN 把门控和 delta 合并。它们各自仍留下一个粒度问题。
RWKV-4 的每个 block 由 time-mix 和 channel-mix 两个子块组成。time-mix 先做 token shift,把当前输入和上一时刻输入线性插值,再送进 WKV 算子:
wkvt = (Σi<t e−(t−1−i)w+ki ⊙ vi + eu+kt ⊙ vt) / (Σi<t e−(t−1−i)w+ki + eu+kt)
这里的 w 是每个通道一个的可学习衰减向量,u 是当前 token 的 bonus。它让模型能按相对位置指数衰减,但 w 不是输入的函数:同一层、同一通道的衰减曲线在训练完后固定。
channel-mix 则是一个带输出门的 ReLU² MLP。
它能以 O(BTd²) 的矩阵乘加 O(BTd) 的串行 scan 训练,也能在推理时写成逐 token 递推(§3.2–§3.3)。缺口是:衰减不能按输入变化,也不能只删掉某个 key 上的旧值。
Mamba-2 把线性注意力的状态更新写成带标量衰减的递推:St = αt St−1 + vt kt⊤,其中 αt 由输入决定。
Gated DeltaNet 的 §2.1 把这种形式概括为「Linear Attention with decay」。
Mamba-2 的贡献之一是把这类状态空间模型写成结构化矩阵,并给出 SSD 的分块算法(§5、§6):块内做矩阵乘,块间传递状态,从而在 GPU 上并行训练。 这套「chunked」思路后来被 GDN 和 KDA 继承。
缺口是粒度:αt 是一个标量,整张状态一起衰减。想只忘掉某条过期的 key-value 关联,它做不到,只能让所有关联一起变淡。
DeltaNet 把状态看成一张在线学习的 fast-weight 表,损失是 ½‖S⊤kt − vt‖²。对状态做一步梯度下降,得到:
St = (I − βt kt kt⊤) St−1 + βt kt vt⊤
(I − β k k⊤) 先把状态里沿 k 方向的分量消掉,再把新的 k v⊤ 写进去。β 控制替换强度:β=0 不写,β=1 完全替换。
这解决了「旧值擦不掉」的问题,但没有全局清空能力:上下文切换时,上一段的关联仍会留在其他方向上。
GDN 把两者合成一条规则:
St = St−1(αt(I − βt kt kt⊤)) + βt vt kt⊤
αt→0 时可以快速清空,αt→1 时退化为纯 delta rule。GDN 的 S-NIAH 实验正是用这两种失败模式来展示互补性:Mamba-2 在长序列上衰减太快,DeltaNet 在需要过滤时清不掉旧信息(§3.2)。
缺口仍在粒度:αt 是每个 head 一个标量。Kimi Linear 的 §1 把这一点称为「coarse head-wise forget gate」——一个 head 里的所有通道共享同一个遗忘率。
表 1 · 状态更新的谱系(按各文公式整理;GDN 原文用行向量状态,KDA 用列向量,表中保留各自写法)
| 模型 | 状态更新 | 门控粒度 | 定向删除 | 出处 |
|---|---|---|---|---|
| RWKV-4 | st = e−w ⊙ st−1 + ekt ⊙ vt(逐通道向量状态) |
通道级固定 w,非输入相关 |
否 | §3.1.2 |
| Mamba-2 | St = αt St−1 + vt kt⊤ |
标量 αt |
否 | GDN §2.1;Mamba-2 §5.1 |
| DeltaNet | St = St−1(I − βt kt kt⊤) + βt vt kt⊤ |
无门控 | 是 | GDN §2.2 |
| Gated DeltaNet | St = St−1(αt(I − βt kt kt⊤)) + βt vt kt⊤ |
标量 αt |
是 | GDN Eq.10 |
| RWKV-7 | St = St−1(diag(wt) − κ̂t⊤(at ⊙ κ̂t)) + vt⊤ k̃t |
向量 wt、at |
是,且删除/写入 key 可不同 | RWKV-7 Eq.17 |
| KDA | St = (I − βt kt kt⊤) Diag(αt) St−1 + βt kt vt⊤ |
逐通道 αt |
是 | Kimi Linear Eq.1 |
这张表按状态更新公式排,不按性能排。RWKV-4 的状态是逐通道向量,不是矩阵,不能直接和后面几行的矩阵状态比容量。 表中把「门控」和「定向删除」并列,是为了看两者的分工;RWKV-7 和 KDA 分别把门控推进到向量级和通道级。
记住两条更新链:GDN 的标量门 → KDA 的对角门;RWKV-7 的向量门 + 解耦删除/替换键。两者都把状态更新写成可 chunk 的 DPLR。
先看 GDN 的形式。它把标量门放在 Householder 更新外面,整张状态先乘 αt,再做 rank-1 修正:
KDA 把 αt 从一个标量换成一个向量 αt ∈ [0,1]dk,并把 Diag(αt) 放到 Householder 之前:
αt 逐通道,βt 仍是每个 head 一个标量(§4)
这个顺序不是排版偏好。把 Diag(αt) 放在前面,KDA 可以把它和 rank-1 项合并成 DPLR:
St = (Diag(αt) − βt kt kt⊤ Diag(αt)) St−1 + βt kt vt⊤,
对应 D = Diag(αt)、a = βt kt、b = kt ⊙ αt(§6.2)。
删除方向因此变成 k ⊙ α,而不是单独的 k;这是它和 GDN 标量门的形式差异。
把 (I − β k k⊤)S 拆开看:S − β k(k⊤S)。第二项是状态在 k 方向上的投影,乘上 β 后从状态里减掉;后面再加 β k v⊤,把当前 token 的 value 写进同一个方向。
因此它不是「再加一条」而是「先擦后写」。β=1 时,旧投影被完全移除;β=0 时,状态不动。
αt 是乘法衰减。连续多步的累积衰减是 γt = ∏i≤t αi(Kimi Linear §2.1 的 Decay Formulation)。
α 越接近 1,旧记忆保留越久;α 越接近 0,越接近清空。KDA 把 α 变成逐通道向量后,每个特征维度可以有独立的衰减率,类似给每个通道一条自己的「位置频率」。
下面的交互把「固定 α、距离 d 之后还剩多少」单独拿出来。它是一个标量玩具模型,只保留累积乘积,不含 delta 写入。
参数为页面自定,公式 αd 来自 §2.1 的累积衰减定义;这是简化模拟,不是 KDA kernel 的还原。
组 A:α = 0.9,d = 10
34.87%。组 B:α = 0.99,d = 100
36.60%。
JS 用 Math.pow(alpha, d) * 100,再按数值大小选择小数位;上面两组都落在两位小数区间,切换参数后与手算逐位相同。
αd 是常数 α 下的累积乘积,逐通道 α 的完整形式见 §2.1。
覆盖:常数 α 下的累积衰减 αd;d = 1/10/50/100/200 的保留比例;滑块与读数的联动。
未覆盖:α 随输入变化;逐通道不同的 α;归一化项;delta rule 的写入;状态数值范围与低精度误差;真实 KDA kernel 的分块与显存访问。
因此它是简化模拟,只回答「固定 α 下,距离 d 后的记忆还剩多少」。
RWKV-7 走的是另一条向量化路线。它把状态更新写成:
St−1 在左、更新矩阵在右
这里有三个向量:wt 是逐通道衰减,at 是逐通道 in-context learning rate,κ̂t 是归一化后的 removal key。
k̃t 是 replacement key,可以写成 kt ⊙ lerp(1, at, α)(Eq.7)。
删除用的是 κ̂,写入用的是 k̃,两者不必相同;这是 RWKV-7 相对经典 delta rule 多出来的自由度(§3)。
转移矩阵 Gt = diag(wt) − κ̂t⊤(at ⊙ κ̂t) 不再是标准 Householder,而是带缩放的近似;
论文的 Eq.19 把它写成 (I − κ̂t⊤(at/wt ⊙ κ̂t)) diag(wt),并说明特征值落在 [−1,1](Appendix C)。
Kimi Linear §6.1 把 gated delta rule 的转移矩阵解释为一种数据相关的乘法位置编码:查询和键之间的相对位置,由中间这些转移矩阵的乘积体现。 RoPE 用固定频率的旋转矩阵做同样的事;KDA 把频率换成可学习的逐通道衰减,因而能表达更细的 position bias。 Kimi Linear 因此在 MLA 层使用 NoPE:位置信息由 KDA 层承担(§4、§6.1)。
把两条链并排看:KDA 的门是 Diag(αt),β 仍是标量,删除和写入共用 kt;RWKV-7 的门是 diag(wt),学习率 at 也是向量,删除和写入的 key 还可以分开。
两者都不是对方的简单特例;它们各自选择把哪一维向量化,以换取表达力和 kernel 效率的平衡。推断(由两条更新公式的维度差异直接看出)
递推适合 decode,不适合训练;chunked 形式用块内 matmul + 块间状态传递,把序列维的串行长度缩到块数。KDA 的约束 DPLR 正是为了让这套 kernel 跑得快。
同一个状态更新有三种写法。递推形式每 token 一步,decode 时最省,但训练时不能在序列维并行;并行形式把整段序列的注意力矩阵显式写出来,训练能并行,代价是 O(T²) 的矩阵;chunked 形式取中间:块内用矩阵乘并行,块间只传状态。
Gated Linear Attention 的并行形式是 ((Q ⊙ Γ)(K/Γ)⊤ ⊙ M)V(Kimi Linear Table 6 的 GLA 行);delta rule 则需要 WY 表示来处理那一串 rank-1 更新。
KDA 的 chunked 算法把每个块内的更新压成 W、U 两个中间量,再用 UT transform 求一个下三角逆(Eq.6–7),块间状态递推是:
W = M(Γ ⊙ K)、U = MV,M 由 Eq.6 的三角逆得到(原文 Eq.8 上标为 i→C;同文 Eq.6–7、Eq.9 为 1→C,此处按 1→C 转写)输出也分成块间和块内两部分:
U − WS 是「伪 value」项
KDA 相对一般 DPLR 的工程优势来自「把 a、b 都绑定到 k」。一般 DPLR 在 chunked 形式里要做二阶分块来处理 1/Γ 的数值问题;KDA 把二级分块从四次降到两次,并去掉约三次额外矩阵乘(§3.2),kernel 速度约为 DPLR 的 2×(§6.2 的 Kimi Figure 2 报的是 64k 以内接近 2×)。
复杂度上,Kimi Linear §6.3 给出单头、长度 T、块大小 C、head 维 dh 的 KDA FLOPs:
C = 64 见 §6.3表 2 · 单头 FLOPs 公式在 T = 1M、dh = 128、C = 64 下的取值(页面按 Eq.13–14 计算,不是实测)
| 项 | 公式 | 取值 |
|---|---|---|
| KDA 状态项 | 6Tdh² | 9.83×10¹⁰ |
| KDA 块内项 | 3TCdh | 2.46×10¹⁰ |
| KDA mask 项 | TC² | 4.10×10⁹ |
| KDA 合计 | Eq.13 | 1.27×10¹¹ |
| 全注意力 | 2T²dh | 2.56×10¹⁴ |
| 比值 | Attn / KDA | ≈2016× |
这组数字只比较单头、单层的理论 FLOPs,且全注意力一项是 dense attention 的公式,不是 MLA 的实测。Kimi Linear 的 3:1 混合里只有 1 层是 MLA,不能把 2016× 直接当成端到端加速;它说明的是「序列越长,二次项越占主导」这个方向。
RWKV-7 的 kernel 数据更偏工程实测:在 H100、batch 8、head dim 64、model dim 4096(64 个 wkv head)的条件下,优化后的 RWKV-7 kernel 比官方 RWKV-6 kernel 快约 3×。 序列长度 16k 时,forward 不存状态为 7.9 ms,存状态为 11.2 ms,backward 为 22.5 ms,Flash Attention v3 forward 为 33.9 ms。 按论文的变量计数,RWKV-7 是 18 个变量当量,FA3 是 10 个(§8);换来的收益是序列维线性增长。
下面的交互把 chunked scan 缩成一个标量玩具模型。它只保留 St = αt(1−βt)St−1 + βtvt(即 key 固定为 1 的标量情形),用来对照「逐 token 递推」和「块内闭式 + 块间状态」是否给出同一个状态。
序列 v = [1,3,2,5,4,6]、α = [0.9,0.8,0.9,0.7,0.9,0.8]、β = [1,0.5,0,1,0.5,0] 是页面自定的玩具输入,不是论文数据。
公式是 §3.1 的标量特例;这是简化模拟,不是 KDA kernel 的还原。
组 A:C = 3,整段序列
at = αt(1−βt)、bt = βtvt。t1: a=0, b=1;t2: a=0.4, b=1.5;t3: a=0.9, b=0。组 B:C = 2,同一序列
JS 按同一顺序做乘加,块边界再用闭式重算;两组参数下保留两位小数的结果与手算相同。序列是页面自定的玩具输入,公式来自 §3.1 的 chunkwise 展开。
覆盖:标量状态、key 固定为 1 的简化情形;递归更新 St = atSt−1 + bt;块内闭式 Send = (∏ai)Sstart + Σ(∏i>jai)bj;C = 2/3/6 三种分块的块边界对照。
未覆盖:向量/矩阵状态;delta rule 的 (I−βkk⊤) 定向投影;KDA 的对角门 Diag(α);RWKV-7 的解耦 key;WY/UT 三角逆;1/Γ 的数值精度;真实 CUDA kernel 与显存访问;MLA 与 3:1 混合层。
因此它是简化模拟,只回答「分块扫描与逐 token 递归在标量情形下是否给出同一个状态」。
看一张图:RWKV-7 是单层 time-mix + channel-mix;Kimi Linear 是 3 层 KDA + 1 层 NoPE MLA 的重复块。比例决定显存与检索能力的折中。
r, k, v, d, a, g 六路 token-shifted 表示(其中 d、a、g 与 value residual v 走低秩 MLP);wt = exp(−e−0.5 sigmoid(dt)) 限制在 (exp(−e−0.5), 1),at 是逐通道 sigmoid,κt = kt ⊙ ξ,k̃t = kt ⊙ lerp(1, at, α)(§4.1)。
这些量进入 WKV 递推,输出再过 LayerNorm、bonus 和输出门。
ReLU(k′)2Wv′,隐藏维 4D(§4.2)。论文同时去掉了 token shift 的数据依赖和 channel-mix 的 receptance gating,以换取训练/推理速度(§3)。
αt 由低秩投影加 decay 函数生成,βt 是 sigmoid 标量;输出过 head-wise RMSNorm 和数据相关门(§4)。
KDA 的 head 维是 128,状态是 128×128。
RWKV-7 和 Kimi Linear 的取舍不同。RWKV-7 把整个模型都做成线性 RNN,单层里没有全局注意力;Kimi Linear 把长上下文检索列为纯线性结构的主要瓶颈,因此在每 4 层里保留 1 层 full MLA 作为全局通路(§4)。 这样做的代价是那层 MLA 仍然要存 KV;换来的是全局检索通路。
分开读三组数字:Kimi 的长上下文与效率、RWKV-7 的英文/多语基准、以及两者都没能消除的例外。差异统一用「点」表示,不混用相对百分比。
这张表是 Kimi [email protected] 与 full-attention MLA 在 128k 上下文下的对照。两边都是 1.4T token 预训练的模型,评测在同一套 long-context benchmark 上(Kimi Table 5)。 差值列是页面用 Kimi − MLA 算的;正数表示 Kimi 高,负数表示 MLA 高。
表 3 · Kimi Linear 与 MLA 的长上下文对照(Kimi Table 5;128k 上下文,1.4T token)
| Benchmark | MLA | Kimi Linear | 差值(点) |
|---|---|---|---|
| RULER | 81.3 | 84.3 | +3.0 |
| MRCR | 22.6 | 29.6 | +7.0 |
| HELMET-ICL | 88.0 | 90.0 | +2.0 |
| LongBench V2 | 36.1 | 35.0 | −1.1 |
| Frames | 60.5 | 58.8 | −1.7 |
| RepoQA | 63.0 | 68.5 | +5.5 |
| Long Code Arena (Lib) | 32.8 | 37.1 | +4.3 |
| Long Code Arena (Commit) | 33.2 | 32.7 | −0.5 |
| Avg. | 52.2 | 54.5 | +2.3 |
这张表里并非每一项都高:LongBench V2 和 Frames 上 MLA 更高,Long Code Arena 的 Commit 子项也略低。平均分的 +2.3 点主要来自 MRCR(+7.0)、RepoQA(+5.5)和 Long Code Arena (Lib)(+4.3);RULER 为 +3.0。 论文把长上下文检索列为纯线性结构的主要瓶颈,并用 3:1 混合把一部分压力交回给 full MLA(§4)。
SFT 后的短上下文结果也有类似的结构。Kimi Table 4 里,Kimi Linear 在 GPQA-Diamond(Avg@8)上是 62.1,MLA 是 57.1;MMLU-Pro 是 67.4 对 65.7。 但 LiveBench(Pass@1)为 45.2,低于 MLA 的 45.7;MATH500(Acc.)为 81.2,低于 GDN-H 的 83.0;EvalPlus 为 61.0,低于 MLA 的 62.6。 预训练 Kimi Table 3 里 EvalPlus 也是 GDN-H 更高:Kimi 60.2,GDN-H 63.1。
预训练的短上下文平均趋势则偏向 Kimi:MMLU 73.8 对 MLA 71.6,BBH 72.9 对 71.6。 这组差异分别是 +2.2 点和 +1.3 点;它们和上面的负项一起看,才是完整的 Kimi Linear 结果,而不是一句「全面更好」。
RWKV-7 的对照条件不同:0-shot(MMLU 为 5-shot)、fp32、lm-eval v0.4.8(§7.1)。RWKV-7 Table 3 是英文平均,RWKV-7 Table 4 是多语平均。 三行模型的训练 token 数分别是 5.6T、18.0T、15.0T,不能把分数差直接归因于架构。
表 4 · RWKV-7 2.9B 与同尺寸 Qwen2.5-3B / Llama3.2-3B 的平均分(英文 RWKV-7 Table 3,多语 RWKV-7 Table 4)
| 模型 | 训练 token | 英文平均 | 多语平均 |
|---|---|---|---|
| RWKV7-World3-2.9B | 5.6T | 71.5 | 61.1 |
| Qwen2.5-3B | 18.0T | 71.4 | 55.6 |
| Llama3.2-3B | 15.0T | 67.8 | 58.1 |
RWKV-7 英文平均 71.5,比 Qwen2.5-3B 的 71.4 高 0.1 点,比 Llama3.2-3B 的 67.8 高 3.7 点; 多语平均 61.1,比 Qwen2.5-3B 的 55.6 高 5.5 点,比 Llama3.2-3B 的 58.1 高 3.0 点。 英文差 0.1 点,多语差 5.5 点;三行模型的训练数据和 token 数不同,不能把差距单独归因于架构。推断(由 RWKV-7 Table 3、RWKV-7 Table 4 的 token 数差异推出)
Kimi Linear 的 prefill 在 512k 时是 MLA 的 2.3×,1M 时是 2.9×;4k–16k 区间两者接近(§5.6)。 论文报告优势随序列长度增大(§5.6)。
解码加速在原文有多组不同写法,页面并列,不替作者合并:
§6.3 给了差异的口径:2.3× 是 batch size = 1 的 I/O-bound 解码(Kimi Figure 7(b)),6.3× 是省下 KV cache 后支持更大 batch 的理论上限(Kimi Figure 1(b))。但 §1 的 Kimi Figure 1(b) caption 又用 1.84 ms vs 11.48 ms 的实测 TPOT 支持 6.3×,原文自身「理论 vs 实测」的标签并不完全一致。页面保留这些原标签,不合并成一个加速比。
GDN 的实验能说明「门控 + delta」的分工。1.3B 模型、4K 序列下,S-NIAH-2 上 GDN 为 92.2,DeltaNet 为 18.6;S-NIAH-3 上 GDN 为 27.6,Mamba2 为 4.6(GDN Table 2)。 前者说明只有 delta、没有门控时,长上下文里的旧信息清不掉;后者说明只有衰减、没有 delta 时,复杂 value 记不牢。
RWKV-4 的 LRA 平均分是 72.07,同表 Transformer 是 53.66,S4 是 86.09;Path-X 一栏为 ✗(RWKV-4 Table 4)。 它在自然语言类任务上接近 S4,但在 Image、Pathfinder、Path-X 上明显落后,说明固定状态的压缩并不是对所有长序列任务都等价。
把适用边界写清楚:状态容量有上限;混合模型仍依赖全注意力层;chunked kernel 有数值和实现代价;RWKV-7 的发布模型还有训练阶段的限制。
1/Γ 的除法精度困扰,GLA 用对数域和二级分块处理;KDA 通过约束 DPLR 减少了二级分块,但 Eq.9 仍保留 K/Γ 的除法,数值问题没有被完全消除。推断(由 Eq.9 仍在除 Γ 推出;§3.2、§6.2 只给工程收益)
<|endoftext|> 时性能会下降(§10.1)。
训练还受 96 张 H800 的预算限制,并且是从 RWKV-5/6 checkpoint 继续训练、部分数据重复使用(§10.1)。这些条件限制了「同尺寸对比」能外推的范围。
负载是长上下文、decode 占主导、且能接受「固定状态 + 少量全注意力层」的混合结构时,线性注意力最直接:Kimi Linear 的 3:1 混合在 128k 以上的检索任务上有分数收益,prefill 延迟和 decode 的 KV cache 压力也随序列长度拉开。 反过来,如果任务要求在超长上下文中精确回忆每个 token、或者序列本来就很短、或者团队没有对应的 chunk kernel 与训练稳定性经验,纯线性或仓促替换都不划算。