Kimi Linear: An Expressive, Efficient Attention Architecture

Paper: arXiv:2510.26692 Code: MoonshotAI/Kimi-Linear; FLA KDA kernels; HuggingFace checkpoint; vLLM implementation Code reference: MoonshotAI/Kimi-Linear master @ 8c1d85e (2026-05-19); fla-org/flash-linear-attention main @ 5aea42b; vllm-project/vllm main @ ef54a4d; HF Instruct snapshot e1df551a447157d4658b573f9a695d57658590e9

0. 结论速读

这篇技术报告的核心结论是:Kimi Linear 不是把 full attention 简单替换成任意线性注意力,而是在 Kimi Delta Attention(KDA)+ 周期性 MLA 全局层 + MoE 通道混合 之间做了一个工程上可落地的折中,使线性注意力第一次在作者定义的公平大规模对照里同时覆盖短上下文、长上下文与 Math RL 场景,并在 1M 上下文解码时把 KV cache 降到最多 75%,TPOT 加速到 6.3×。

我的一句话理解:KDA 的新意不只在“线性复杂度”,而在把 Gated DeltaNet 的粗粒度 head-wise decay 改成 channel-wise 对角门控,再把这个递推写成适合 chunkwise kernel 的受限 DPLR 形式;模型层面再用 3:1 的 KDA:MLA 混合比例保留全局信息流,避免纯 RNN 状态在长程 recall 上崩掉。

适合引用这篇论文的场景:讨论 million-token 解码成本、KV cache 压缩、linear attention 在工业 MoE LLM 中的可行性、DeltaNet/Gated DeltaNet 的后继结构、或需要比较 MLA/full attention 与线性 attention 混合架构的长上下文模型设计。

需要谨慎的地方:论文公开的是 KDA kernel、HF/vLLM 推理实现和 checkpoint;完整预训练 launch script / 数据配方没有随代码发布。因此 1.4T/5.7T 训练、RLVR、模型尺寸等实验数字主要来自论文与公开 config.json,不能从训练脚本逐项复核。

1. 问题背景:为什么 full attention 在 1M context 下仍然是瓶颈

Transformer full attention 的主要优势是显式访问历史 token 的全部 K/V,因此复杂推理、代码仓库阅读、长文档问答与 agent 轨迹都能在需要时回看任意位置。但这个设计也带来两个硬瓶颈:prefill 阶段注意力计算随上下文增长,decode 阶段需要保存随长度线性增长的 KV cache。上下文从 128K 推到 1M 后,KV cache 不只是显存问题,也会影响 batch size、调度延迟、跨卡通信与 serving 成本。

线性注意力和状态空间/RNN 风格模型的吸引力在于:它们把历史压缩到固定尺寸 state,decode 时不需要保存全部 token 的 KV。但已有模型常见失败点也很明确。第一,有限 state 容量会把多个历史片段挤压到同一个记忆矩阵里,复杂 recall 容易互相干扰。第二,许多线性注意力在训练吞吐、kernel 实现、短上下文 benchmark 上并没有压过成熟 full attention。第三,纯线性层缺少 full attention 的显式 token-to-token 全局路由,长上下文中定位、复制、跨段绑定任务经常弱于 full attention。

Kimi Linear 的目标不是证明 full attention 完全不需要,而是找到一个更工程化的替代形式:大部分层使用低 KV-cache、低 decode 成本的 KDA,周期性插入 MLA 层承担全局 token mixing。这样模型在长上下文服务时仍能大幅减少 per-layer KV cache,同时保留少量 full attention 层带来的全局检索能力。

Figure 1 解读:左图把质量和解码加速放在同一张图里。1.4T 训练下,Kimi Linear 在 MMLU-Pro 4K 上为 51.0,高于 MLA 47.2 与 GDN-H 47.9;在 RULER 128K 上为 84.3,高于 MLA 81.3 与 GDN-H 80.5,并接近 4× 解码加速。右图展示 TPOT 随解码长度的增长;到 1M token 时,Kimi Linear 为 1.84 ms,MLA 为 11.48 ms,因此论文给出 6.3× 加速。

2. 核心思想:KDA 如何改写 DeltaNet/GDN 的记忆更新

KDA 从 Gated DeltaNet 出发。GDN 的基本想法是用一个可学习 gate 控制递推 state 的遗忘,并用 delta rule 形式把新的 key/value 写入状态矩阵。KDA 的关键改动是把原先更粗的 decay 改成细粒度对角门控:每个 feature dimension 有独立的遗忘率 ,而不是整头共享一个 scalar 或较粗粒度的门。这让有限 state 在不同通道上能保留不同历史信息,等价于给 RNN memory 提供更细的写入/遗忘控制。

论文把 KDA 的递推写为: $ \mathbf{S}_t = (\mathbf{I} - \beta_t \mathbf{k}_t \mathbf{k}_t^\top) \operatorname{Diag}(\boldsymbol{\alpha}t)\mathbf{S}{t-1}

  • \beta_t \mathbf{k}_t \mathbf{v}_t^\top, \qquad \mathbf{o}_t = \mathbf{S}_t^\top \mathbf{q}_t. \mathbf{S}_t \in \mathbb{R}^{d_k \times d_v}\operatorname{Diag}(\alpha_t)\beta_t\mathbf{k}_t\mathbf{k}_t^\top\alpha_t\beta_t k_t v_t^\top(I-\beta kk^T)$ 把与当前 key 冲突的旧信息做校正,降低重复写入和记忆污染。

KDA 与一般 DPLR 的关系也很重要。一般 DPLR 可写成 。KDA 选择了一个受限形式:对角部分对应 ,低秩部分绑定在 key 相关项上。这样看起来表达能力比任意 DPLR 更受限,但好处是 chunkwise 并行可以少做若干矩阵乘法,也避免 chunk 里累计 decay 的倒数项带来的数值和 I/O 开销。论文强调 KDA 更贴近经典 delta rule,同时比一般 DPLR 更容易做高效 kernel。

3. Chunkwise 并行:为什么 KDA 不是“慢的 RNN”

如果逐 token 递推,KDA decode 很自然,但训练 prefill 会像 RNN 一样难并行。论文的工程重点是把一个 chunk 内的 rank-1 变换压缩成 dense 表示,让 chunk 内并行计算,chunk 间只传固定尺寸 state。作者把 个 token 的局部递推展开为两部分:一部分是旧 state 经过一串转移矩阵后的贡献,另一部分是 chunk 内新写入的贡献;再用类似 WY representation 的方式生成 ,把输出拆成 inter-chunk 与 intra-chunk 两项。

这个设计背后的实用含义是:训练时主要走 chunk kernel,保留矩阵乘法和 Tensor Core 友好的并行路径;推理短 decode 时可以切到 fused recurrent kernel,只维护 recurrent state 与卷积 state。开源 FLA 实现也印证了这一点:KimiDeltaAttention.forward 在训练时要求 mode == "chunk",但当 query length 小于等于 64 且非训练时会切到 fused_recurrent

伪代码(按 FLA fla/layers/kda.pyfla/ops/kda/chunk.py 摘要):

# KimiDeltaAttention.forward 的实现逻辑摘要
mode = "fused_recurrent" if q_len <= 64 and not training else self.mode
if training:
    assert mode == "chunk"
last_state = get_layer_cache(layer, past_key_values)
 
# 1. 线性投影;若启用 short conv,则 q/k/v 先过短卷积与 SiLU
q = q_conv1d(q_proj(hidden_states)) or silu(q_proj(hidden_states))
k = k_conv1d(k_proj(hidden_states)) or silu(k_proj(hidden_states))
v = v_conv1d(v_proj(hidden_states)) or silu(v_proj(hidden_states))
 
# 2. 生成 KDA gate 与写入强度
g = f_proj(hidden_states)          # 后续在 kernel 中变成 decay/gate 相关项
beta = sigmoid(b_proj(hidden_states))
q, k = reshape_to_heads(q, k)
g, v = reshape_to_heads(g, v)
 
# 3. 训练/长 prefill 用 chunk;短 decode 用 fused recurrent
if mode == "chunk":
    o, recurrent_state = chunk_kda(q, k, v, g, beta,
                                   A_log, dt_bias,
                                   initial_state=last_state.recurrent_state,
                                   use_qk_l2norm_in_kernel=True,
                                   use_gate_in_kernel=True,
                                   state_v_first=True)
else:
    o, recurrent_state = fused_recurrent_kda(q, k, v, g, beta,
                                             A_log, dt_bias,
                                             initial_state=last_state.recurrent_state)
 
# 4. 更新 cache,输出门控 RMSNorm,再投回 hidden size
update_layer_cache(recurrent_state, conv_state)
o = FusedRMSNormGated(o, g_proj(hidden_states))
o = o_proj(flatten_heads(o))

chunk_kda 的 autograd function 会先在 kernel 内做 q/k L2 norm、beta sigmoid(如果启用),再调用 chunk_kda_fwd 返回 o, final_state, g_cumsum, Aqk, Akk, w, u, qg, kg, v_new, h 等中间量。反向时这些中间量用于重算/回传梯度。这个实现细节说明论文里的 chunkwise 数学并不是只停留在公式上,而是已经被拆成可训练 kernel 路径。

Figure 2 解读:KDA kernel 的执行时间随输入长度增长明显低于一般 DPLR。论文在附录进一步解释:KDA 省掉了 DPLR chunkwise 里若干和 、inter-chunk/output 相关的额外矩阵乘法,因此在 64K 级别接近 2× kernel speed。这个结果支撑了“受限 DPLR 换取硬件效率”的设计取舍。

4. 模型结构:3:1 KDA/MLA 混合,而不是纯线性注意力

Kimi Linear 的 backbone 对齐 Moonlight 风格的 MoE Transformer。公开 HF config 显示 Instruct checkpoint 使用 hidden_size=2304num_hidden_layers=27num_attention_heads=32num_experts=256num_experts_per_token=8num_shared_experts=1kv_lora_rank=512vocab_size=163840linear_attn_config 中列出了 KDA 层与 full attention 层:KDA layers 为 1,2,3,5,6,7,…,25,26;full attention/MLA layers 为 4,8,12,16,20,24,27。也就是说公开模型基本按“三层 KDA 后一层 MLA”的节奏排布,最后第 27 层再补一个全局层。

模型每个 block 都是 token mixing layer + MoE channel mixing layer。token mixing 可以是 KDA 或 MLA;channel mixing 是稀疏 MoE。论文说 48B total / 3B activated,8/256 experts active,并有一个 shared expert。第一层使用 dense layer 稳定训练。MLA 层采用 NoPE:KDA 本身已经由递推与 gate 处理位置相关信息,MLA 层不再把 RoPE 作为主要位置机制;作者还做了 Kimi Linear (RoPE) 对照,发现 RoPE 版本在短上下文类似,但长上下文不如 NoPE 版本。

Figure 3 解读:左侧是 3:1 的层间结构:若干 KDA block 后插入一个 MLA block。右上是 MoE routing:1 个 shared expert 加若干 routed experts;右下是 KDA 层内部:q/k/v 由线性层和 short convolution 生成,q/k 做 L2 norm, 由独立投影控制记忆衰减与写入,输出再经过 gated RMSNorm 和线性投影。

这类混合结构的关键是避免两个极端。全 MLA/full attention 极端质量强但长上下文 serving 昂贵;纯线性 attention 极端 KV cache 低但 recall 可能不足。3:1 比例把大多数层换成固定 state,又周期性给模型显式全局访问历史的机会。Table 1 的 ablation 显示 3:1 在 first-scale law 小模型上训练 PPL 9.23、验证 PPL 5.65,是作者测试比例中最优或并列最优;7:1 训练 PPL 同为 9.23 但验证 PPL 5.70,15:1 更差,0:1 full attention 验证 PPL 5.77,1:1 验证 PPL 5.66 但推理开销更高。

Table 1 解读:输出门和短卷积都不是可随意删除的小组件。无 output gate 的验证 PPL 为 5.67,swish output gate 变成 5.81,无 convolution layer 为 5.70,都不如默认设置 5.65。直观上,短卷积补充局部 token 依赖,output gate 控制每个 token 从 KDA state 读出的信息量,二者共同缓解线性 attention 的局部表达不足和 Attention Sink 问题。

5. 实验:短上下文、长上下文、RL scaling 都压过对照

5.1 合成任务:KDA 的有限 state 更会“记”

论文先用 palindrome、multi-query associative recall (MQAR)、stack 三类合成任务测试 KDA、GDN、Mamba2 的记忆能力。它们都考察有限 state 是否能保留可检索信息:palindrome 要反向复制;MQAR 要根据查询 key 找 value;stack 要模拟 Last In First Out 的状态跟踪。Figure 4 中 KDA 在不同 sequence length 与训练步数下普遍更稳,尤其 MQAR 和 stack 的收敛速度明显好于 GDN/Mamba2。

Figure 4 解读:这组实验不是主结果,但能解释 KDA 的结构动机。GDN 只有较粗 gate 时,在多条关联记忆进入同一个 state 后更容易干扰;KDA 的 channel-wise decay 让不同维度有不同保留/遗忘速率,因此在复制、关联回忆、栈式状态更新上更接近 full attention 所需的“可选择记忆”。

5.2 1.4T 公平对照:Kimi Linear 同 recipe 压过 MLA 和 GDN-H

作者用相同 1.4T 预训练 recipe 比较 MLA、GDN-H、Kimi Linear。短上下文 base 表中,Kimi Linear 在 HellaSwag 82.9、ARC-challenge 67.3、Winogrande 78.6、BBH 72.9、MMLU 73.8、MMLU-Pro 51.0、TriviaQA 71.7 上都高于两个对照;数学/代码里 GSM8K 83.9、CRUXEval-I 56.6、CRUXEval-O 62.0 也领先,MATH 与 MLA 持平 54.7,EvalPlus 则低于 GDN-H 的 63.1。

SFT 后的 instruct 表继续显示优势:Kimi Linear 在 MMLU 77.0、MMLU-Pro 67.4、MMLU-Redux 80.3、GPQA-Diamond 62.1、AIME 2025 21.3、HMMT 2025 12.5、PolyMath-en 43.6、LiveCodeBench v6 26.0 上领先;但 LiveBench 45.2 低于 GDN-H 46.4,MATH500 81.2 低于 GDN-H 83.0,EvalPlus 61.0 也低于 MLA/GDN-H。论文的结论不是“每列全胜”,而是在绝大多数关键项和平均趋势上 Kimi Linear 更强。

Table 3/4 解读:最值得注意的是 Kimi Linear 不是靠更大参数或更多 token 赢。三组对照都训练 1.4T、同总参数/激活参数/训练设置,差异主要是 token mixing 架构。MMLU-Pro 从 MLA 47.9 到 Kimi Linear 51.0,GPQA-Diamond instruct 从 MLA 57.1/GDN-H 58.6 到 62.1,说明线性 attention 在这个混合架构里没有牺牲高难知识/推理能力。

5.3 长上下文:NoPE + 周期性 MLA 是关键

长上下文表比较 MLA、GDN-H、Kimi Linear (RoPE)、Kimi Linear。Kimi Linear 在 RULER 84.3、MRCR 29.6、HELMET-ICL 90.0、RepoQA 68.5、Long Code Arena Lib 37.1 与平均分 54.5 上最好;LongBench V2 为 35.0,略低于 MLA 36.1;Frames 为 58.8,低于 MLA 60.5;Long Code Arena Commit 为 32.7,略低于 MLA 33.2。整体上,Kimi Linear 是 long-context 平均最强。

RoPE 版本提供了一个有价值的对照。Kimi Linear (RoPE) 的平均分是 51.8,低于默认 Kimi Linear 54.5,说明在 KDA+MLA 混合模型里,把位置信息留给 KDA 递推/gate 与 NoPE MLA 组合,比直接套 RoPE 更利于长距离泛化。这也呼应论文第 6 节的观点:线性/递推状态本身可以视为一种可学习的位置编码或位置偏置机制。

5.4 RL scaling:Math RL 中增长更快

作者还比较了 Kimi Linear@1.4TMLA@1.4T 在 Math RL 训练期间的训练集与测试集 accuracy 曲线。论文使用 RLVR,算法与超参保持一致,任务包含 AIME 2025、MATH500 等。Figure 6 展示 Kimi Linear 在训练集、MATH500、AIME2025 三个曲线上基本全程高于 MLA;论文解读是 Kimi Linear 在 RL 阶段更高效,可能因为固定 state 与混合全局层在长输出/复杂推理时更适合 test-time scaling。

Table 5/Figure 6 解读:长上下文平均 54.5 与 Math RL 曲线共同支撑论文标题中的 expressive + efficient。若只看速度,线性 attention 很容易成立;若只看短上下文,full attention 很难被替换。Kimi Linear 的价值在于同一套模型在这两个方向都没有明显崩掉,并且 RL scaling 曲线还显示出比 MLA 更好的增长势头。

5.5 5.7T 开放模型:48B/3B MoE 对比 Moonlight

附录 D 给出扩展到 5.7T token 的 Kimi-Linear-Base 与 Kimi-Linear-Instruct。Base 对比 Moonlight-Base:Kimi-Linear-Base 为 48B total / 3B activated,Moonlight-Base 为 16B total / 3B activated。Kimi-Linear-Base 在 TriviaQA 75.2 vs 66.2、SimpleQA 10.1 vs 5.6、MMLU-Pro 54.8 vs 42.4、MMLU-redux 79.7 vs 73.8、GPQA-Diamond 40.4 vs 35.2、LiveCodeBench 20.0 vs 14.3、EvalPlus 64.9 vs 50.3 上都明显更高。

Instruct 表中,Kimi-Linear-Instruct 报告 RULER@128K 95.4、RULER@1M 94.8、GPQA-Diamond 71.7、MMLU-Redux 86.9、MMLU-Pro 72.7、FaithJudge 64.2、AIME 2025 58.6、MATH500 94.6、HMMT 2025 44.5、LiveCodeBench v6 45.7、Humaneval+ 70.9、MBPP+ 72.4。Moonlight-Instruct 因 8K context limit 没有评估 RULER 和部分长上下文项;在可比项上 Kimi-Linear-Instruct 多数领先。

Table 8/9 解读:这两张表更接近实际可用 checkpoint 的能力画像。它们不再是严格同尺寸架构 ablation,因为 Kimi-Linear-Base total params 为 48B 而 Moonlight-Base 为 16B;但 activated params 同为 3B,说明 serving 计算量大致仍围绕 3B active MoE。读这组结果时要把“架构改进”和“总参数/稀疏容量增加”分开看。

6. 效率与复杂度:KV cache 从线性历史变成固定 state

论文第 5.6 与 6.3 强调效率来自两层:单层 KDA 的 kernel 快,以及混合模型整体的 KV cache 小。KDA 层不需要为每个历史 token 存 K/V,而维护固定大小的 state。由于模型仍保留 1/4 左右 MLA 层,不能把 KV cache 完全降为常数,但相对 full attention 的所有层存 KV,混合结构最多能把 KV cache 用量降低 75%。

在 1M context 下,论文 Figure 7 报告 prefilling 中 Kimi Linear 比 MLA 快约 2.3×,decode TPOT 在 1M 处比 MLA 快约 6×;Figure 1 给出更具体的 1.84 ms vs 11.48 ms,即 6.3×。这个差异随长度放大,因为 full attention 的历史 KV 访问和 cache 管理成本持续增长,而 KDA 的 recurrent state 不随序列长度线性膨胀。

Figure 7 解读:prefill 左图中,Kimi Linear 和 GDN-H 接近,均明显快于 MLA;decode 右图中,随着长度从 128K 到 1M,Kimi Linear 与 MLA 的差距持续扩大。这里 GDN-H 也快,但前面质量实验显示 GDN-H 不如 Kimi Linear;因此 KDA 的优势是同时保住 GDN-H 类线性结构的速度和更强的记忆表达。

7. 代码阅读与论文实现映射

Code reference: MoonshotAI/Kimi-Linear master @ 8c1d85e; fla-org/flash-linear-attention main @ 5aea42b; vllm-project/vllm main @ ef54a4d; HF Instruct snapshot e1df551a447157d4658b573f9a695d57658590e9

Paper ConceptSource FileKey Class/Function
论文入口、checkpoint、推荐安装 fla-core>=0.4.0MoonshotAI/Kimi-Linear/README.mdUsage / Deployment sections
KDA 层:q/k/v、gate、beta、chunk/recurrent 选择fla/layers/kda.pyKimiDeltaAttention.forward
训练用 chunkwise KDA autogradfla/ops/kda/chunk.pyChunkKDAFunction, chunk_kda
gate 与 beta sigmoid fused kernelfla/ops/kda/gate.pyfused_kda_gate, fused_beta_sigmoid, kda_gate_chunk_cumsum
decode 用 fused recurrent kernelfla/ops/kda/fused_recurrent.pyfused_recurrent_kda
HF 公开模型 config 与 KDA/MLA 层表config.json, configuration_kimi.pylinear_attn_config, is_kda_layer
HF 模型层路由modeling_kimi.pyKimiDecoderLayer, KimiDeltaAttention, KimiMLAAttention, KimiLinearModel
vLLM 推理集成vllm/model_executor/layers/kda.pyKimiDeltaAttention, state/cache helpers
vLLM 模型包装vllm/model_executor/models/kimi_linear.pyKimiLinearModel, KimiLinearForCausalLM

7.1 开源代码确认的实现事实

第一,公开 HF config 与论文的 3:1 混合结构一致,但以 layer list 明确实现:kda_layers 为 20 层,full_attn_layers 为 7 层。configuration_kimi.pyis_kda_layer(layer_idx)(layer_idx + 1) in kda_layers 判断,因此列表是 1-indexed。modeling_kimi.py 的 decoder layer 先判断 config.is_kda_layer(layer_idx),为真则创建 KimiDeltaAttention,否则创建 KimiMLAAttention

第二,FLA 的 KDA 层和论文神经参数化对应。代码中 q_proj/k_proj/v_proj 生成 q/k/v,若启用 short conv 则进入 ShortConvolutionf_proj 生成 gate 相关输入,b_proj(...).sigmoid() 生成 beta;q/k 以 head_k_dim reshape,v 以 head_v_dim reshape。随后 chunk_kdafused_recurrent_kda 接收 A_logdt_biasinitial_stateuse_qk_l2norm_in_kernel=Trueuse_gate_in_kernel=True 等参数。

第三,输出端不是直接返回 KDA state readout,而是 FusedRMSNormGatedo_proj。这与论文中 output gate ablation 呼应:默认 Sigmoid output gate 能稳定输出并缓解 attention sink;去掉 gate 或改成 swish gate 都会降低验证 PPL。

第四,vLLM 实现说明 Kimi Linear 不是只能在 HF eager 模式跑。vllm/model_executor/layers/kda.py 为 KDA state dtype、state shape、conv kernel size、tensor parallel head 分片等提供了 serving 侧包装;vllm/model_executor/models/kimi_linear.py 将 Kimi Linear 接入 vLLM 的模型加载、并行层、MoE 与 causal LM 输出接口。这是论文“开源 vLLM implementation”的对应落点。

7.2 未在公开代码中验证到的内容

完整预训练和 SFT/RLVR launch script 没有在 MoonshotAI/Kimi-Linear、FLA KDA 路径或 HF model repo 中公开。因此以下数字我在笔记中按论文/公开 config 引用,但不能说是从训练脚本复核:1.4T 与 5.7T token 数据、学习率/批大小细节、RLVR 训练超参、first-scale law 每个小模型的完整训练配置、Moonlight 对照训练配方。公开 config.json 可以确认 checkpoint 的层数、head、expert、KDA/MLA layer list、MoE 选择等推理结构;训练数据和 recipe 仍以论文为准。

8. 与已有方法的关系

Kimi Linear 与 Mamba/GDN/GLA/RWKV 等线性或亚二次模型属于同一大类:用固定 state 替代显式 KV 历史。但它不是单纯复用 Mamba 的 selective scan,也不是 GLA 的 multiplicative decay。它把 GDN 的 delta-rule state update 保留下来,同时把 decay 改成 GLA 风格的 channel-wise diagonal gate;再把 DPLR 形式限制到更适合 KDA 的结构,从而换取 chunk kernel 效率。

与 MLA/full attention 的关系更像“混合替换”。MLA 层仍然承担全局 token-to-token 信息流,尤其在跨长距离查找、复杂代码/文档定位时提供兜底;KDA 层负责大部分 token mixing,并把 decode cache 控制在固定 state。相比纯 linear attention,周期性 MLA 是质量保险;相比纯 MLA,KDA 是 serving 成本保险。

与 MoE 的关系也值得注意。论文结果来自 48B total / 3B activated 的稀疏模型,通道混合能力很强。KDA 解决的是 token mixing 的历史压缩和长上下文效率,MoE 解决的是每 token 的非线性容量。两者结合后,模型可以在 active compute 约 3B 的前提下拥有 48B 稀疏容量,这可能放大了 KDA 架构在 benchmark 上的收益。

9. 局限与我会追问的问题

第一,论文的对照很强,但公开训练代码不足。若要在自己的系统中复现,需要知道数据混合、batch/token schedule、optimizer、LR、warmup、RLVR 细节、MoE router loss 等。当前公开材料更适合验证推理结构和 kernel,而不是完整重训。

第二,3:1 可能不是通用最优。Table 1 显示 3:1 在作者 first-scale law 设置下最好,但不同模型尺寸、任务分布、专家数量、KV budget、硬件 batch shape 下,最佳比例可能变化。特别是检索/代码仓库/多跳 QA 等任务可能需要更多全局层,而纯生成/长输出场景可能能接受更高 KDA 比例。

第三,KDA 的固定 state 容量仍然可能成为极长上下文 recall 上限。RULER@1M 很高,但实际 agent 轨迹和代码库工作流会出现多实体、多文件、多版本依赖,信息冲突比 synthetic/RULER 更复杂。未来应看 needle-in-haystack 之外的真实工具调用轨迹、跨文件修复、长链 proof、长视频/多模态 memory 等任务。

第四,速度数字依赖 kernel 与 serving 栈。论文给出 vLLM/FLA 实现,但用户真实部署还会受到 tensor parallel、batch composition、prefill/decode 分离、KV offload、MoE routing、quantization、paged attention 调度影响。KDA 降低了理论和 kernel 层成本,但端到端收益需要按具体 serving stack 复测。

第五,NoPE 与 KDA gate 的关系仍有可解释性空间。论文从可学习位置编码角度讨论 KDA:递推转移矩阵携带位置关系,MLA 不显式使用 RoPE 也能长上下文泛化。这个观点很有启发,但还需要更多 probing:哪些 head/channel 学到了距离衰减,哪些负责实体绑定,KDA state 是否会在 RL 后形成新的位置偏置。

10. 实用 takeaway

如果目标是构建 128K-1M context 的 LLM serving,Kimi Linear 的主要启发是:不要只在 attention complexity 上做理论替换,而要同时设计 layer ratio、position encoding、kernel path、cache layout 与 MoE 容量。单个 linear attention 模块可能不够,混合结构更可能是短期可落地路线。

如果要迁移到自己的模型,优先复用以下顺序:先验证 KDA layer 在小模型的 PPL 与 synthetic recall;再做 KDA/MLA ratio ablation;再接入 chunk kernel 和 recurrent decode;最后再上 MoE 与 long-context SFT/RL。不要一开始就把 full attention 全部替换掉,因为论文证据也显示少量 MLA 层是长上下文质量的重要保险。

如果要部署公开 checkpoint,路径比较直接:安装 fla-core>=0.4.0 后用 HF remote code 加载 moonshotai/Kimi-Linear-48B-A3B-Instruct,或使用最新 vLLM 启动 OpenAI-compatible API,设置 --max-model-len 1048576。但生产环境仍需要单独压测 TPOT、显存、batch size、MoE expert 并行与长上下文请求混排。

11. 图表来源与资产说明

本笔记遵循 arXiv source-first 流程:已下载 arXiv source tarball 并运行 source figure extraction。源包中只有 figures/logo.pdffigures/hf-logo.png 两个独立图像资产;主要论文图表是 LaTeX/TikZ/表格源文件(如 figures/model.tex, figures/speed.tex, table/ablation.tex),没有独立 PNG/PDF figure 文件。因此最终笔记使用由 arXiv PDF 渲染并裁剪的图表作为 fallback,裁剪对象均对应源 LaTeX 中的 figure/table 内容;未将中间 review packet、PDF 文本、source tree 或代码仓库放入 Obsidian vault。