跳转到主要内容

Kimi K3:架构、训练与推理系统研究

沿一次 Kimi K3 前向过程,系统解释 Hybrid KDA–MLA、AttnRes、Stable LatentMoE、长上下文训练和在线推理系统

· 约 18 分钟阅读

Kimi K3 的看点是同时扩大三条信息通路:KDA 沿 token 序列压缩并更新历史,AttnRes 跨深度选择前层表示,Stable LatentMoE 在宽度方向调用大量专家。理解 K3 最直接的路径,是跟随一个 token 走完一次前向。

30 秒复习
  • 一句话:K3 用 69 层固定状态 KDA 承担大部分长序列混合,用 24 层 Gated MLA 周期性恢复全局逐 token 访问,再用 AttnRes 和 Stable LatentMoE 扩展深度与宽度信息流。
  • 三个判断:KDA state 是固定大小的递推矩阵,与 KV Cache 属于两类对象;层序为 KDA×3 → MLA×1 重复 23 次、末尾再补一层 MLA;MXFP4 的作用范围限于 routed expert 权重。
  • 核心模型:2.78T total / 104.2B activated,93 层,hidden size 7168,96 heads,896 routed experts、top-16、2 shared experts,最大上下文 1,048,576。
  • 边界:本文基于 2026-07-27 技术报告、官方配置和参考实现;生产集群的 TP/PP/EP 规模、实际 kernel 时延与完整容量数据仍属内部信息。

Kimi K3 一次前向的架构主线

1. 先冻结真实配置

以下参数同时得到 K3 技术报告 Table 1 与发布版 config.json 支持。报告中的圆整说法是 2.8T / 104B,精确表格口径是 2.78T / 104.2B。

维度Kimi K3解释
总参数2.78T大部分位于 routed experts
每 token 激活参数104.2B每 token 只走这条计算路径
Transformer 层数9369 KDA + 24 Gated MLA
Hidden size7168与 Kimi K2 相同
Attention heads96KDA head dim 为 128
Routed experts896每层专家池
Active routed experts16/token稀疏度为 896/16 = 56
Shared experts2每 token 都执行
LatentMoE width3584full width 的 0.5×
Expert intermediate3072routed expert 的 GLU 中间维度
Dense FFN layers1仅第 1 层为 dense,其余层走 MoE
Vocabulary163,840配置中的 vocab_size
最大上下文1,048,576即 1M token
ViT401M / 27 层patch size 14,12 heads
AttnRes block size12 层8 个 layer blocks,另含 embedding source

1.1 真实层序

发布配置明确列出全局注意力层:

4, 8, 12, ..., 88, 92, 93

因此前 92 层是 23 个四层混合组:

Layer 1  KDA
Layer 2  KDA
Layer 3  KDA
Layer 4  Gated MLA
...
Layer 89 KDA
Layer 90 KDA
Layer 91 KDA
Layer 92 Gated MLA
Layer 93 Gated MLA   # 额外的最终全局层

这恰好得到 23 × 3 = 69 个 KDA 和 23 + 1 = 24 个 MLA。最后再放一个 MLA,是为了保证 backbone 的最终层一定执行全局注意力。

两种 block 的所指

KDA/MLA 的“四层混合组”描述 token mixing 的排列;AttnRes 的“12 层 block”描述 depth mixing 的缓存和聚合边界。前者作用于 token 维,后者作用于深度维。

2. 沿一次前向过程看 K3

输入首先变成共享 hidden states,然后依次通过 93 个 attention + FFN/MoE 层:

文本 token ───────────────┐
                          ├─> shared embeddings
图像/视频 -> MoonViT-V2 -> MLP projector ┘
  -> AttnRes 选择本层输入
  -> RMSNorm
  -> KDA 或 Gated MLA
  -> 更新当前 AttnRes block 的 prefix sum
  -> AttnRes 再选择 MoE 输入
  -> RMSNorm
  -> Dense FFN(仅首层)或 Stable LatentMoE
  -> 更新 block prefix sum
  -> 下一层
  -> final AttnRes -> RMSNorm -> LM Head

标准 PreNorm Transformer 只有单一 residual stream;K3 的 hidden_states 更像当前 12 层 block 内的部分和,同时保存此前 block 的表示。每个 attention 和 MoE 子层开始前,AttnRes 都会重新决定“从哪些深度取信息”。

3. KDA:把历史写进固定状态

3.1 状态更新公式

对单个 head,令 qt,ktRdkq_t,k_t\in\mathbb{R}^{d_k}vtRdvv_t\in\mathbb{R}^{d_v},状态 StRdk×dvS_t\in\mathbb{R}^{d_k\times d_v}。KDA 的一步更新为:

St=(Iβtktkt)Diag(αt)St1+βtktvt,o~t=Stqt.S_t= \left(I-\beta_t k_tk_t^\top\right) \operatorname{Diag}(\alpha_t)S_{t-1} +\beta_t k_tv_t^\top, \qquad \tilde{o}_t=S_t^\top q_t.

可以把它拆成三个动作:

  1. Diag(α_t):每个 key channel 独立遗忘旧状态;
  2. I - β_t k_t k_tᵀ:先擦除旧状态在当前 key 方向上的内容;
  3. β_t k_t v_tᵀ:再把当前 value 写到该 key 方向。

等价的直觉形式是:

St=DtSt1+βtkt(vtktDtSt1),Dt=Diag(αt).S_t=D_tS_{t-1}+\beta_tk_t\left(v_t^\top-k_t^\top D_tS_{t-1}\right), \qquad D_t=\operatorname{Diag}(\alpha_t).

括号里的量是“希望写入的 value”和“当前状态已经读出的 value”之间的误差。这就是 delta rule:按误差量修正一份有限状态。

3.2 q、k、v、α、β 从哪里来

官方参考实现的主路径是:

x
├─ Wq -> ShortConv(k=4) -> Swish -> L2Norm -> q
├─ Wk -> ShortConv(k=4) -> Swish -> L2Norm -> k
├─ Wv -> ShortConv(k=4) -> Swish          -> v
├─ low-rank decay projection              -> α
└─ Wβ -> Sigmoid                          -> β

ShortConv 给 KDA 一个很短的局部时序感受野;递推状态负责压缩更长历史。βt\beta_t 控制当前 token 的写强度,αt\alpha_t 则是细到每个 key channel 的保留率。

K3 把 log-decay 改为有下界的参数化:

gt=gminSigmoid(eAzt),αt=exp(gt),gmin=5.g_t=g_{\min}\operatorname{Sigmoid}(e^Az_t), \qquad \alpha_t=\exp(g_t), \qquad g_{\min}=-5.

于是每步 retention 都满足 αt,j>e5\alpha_{t,j}>e^{-5}。这项下界同时带来 kernel 收益:16-token tile 的累计 log-decay 被限制在 (80,0)(-80,0),倒数缩放落在 BF16 动态范围内,对角 tile 因此可以直接用 Tensor Core dense matmul 一次算完。

3.3 K3 相比 Kimi Linear 的另一项变化

KDA 输出先做 head-wise RMSNorm,再乘输入相关的 full-rank gate:

yt=Wo[Sigmoid(Wgxt)RMSNorm(o~t)].y_t=W_o\left[\operatorname{Sigmoid}(W_gx_t)\odot \operatorname{RMSNorm}(\tilde{o}_t)\right].

Kimi Linear 使用低秩输出门;K3 改成 full-rank,让每个 token 独立调制读出的各个 channel。

3.4 KDA state 与 KV Cache 的本质区别

对象规模随上下文表示什么Decode 动作
Full/MLA KV Cache线性增长 O(S)O(S)每个历史 token 的可检索表示当前 query 读取历史 entries
KDA recurrent state恒定 O(1)O(1)全部历史压缩后的矩阵状态原地更新一个固定矩阵
ShortConv state恒定 O(1)O(1)最近几个投影 token更新长度 4 的局部窗口

K3 配置为 96 heads、dk=dv=128d_k=d_v=128。单个 KDA 层、单个请求的主 recurrent state 逻辑元素数为:

96×128×128=1,572,864.96\times128\times128=1{,}572{,}864.

若只按 BF16 payload 粗算约为 3 MiB/层;69 层约 207 MiB/请求,此外还有 ShortConv state、对齐、分片、checkpoint 和运行时副本。这是根据公开 shape 的逻辑量推导,生产 resident memory 需以实测为准。

4. 为什么仍然需要 Gated MLA

KDA 的优势与代价同源:状态大小恒定,代价是任意长历史都被压缩进一个有限矩阵,历史 token 因此失去 softmax attention 那种独立寻址入口。

K3 于是保留 24 层 Gated MLA,让它周期性承担全局内容检索:

KDAGated MLA
固定 recurrent state随 token 增长的 latent KV
强于顺序、局部与 recency mixing强于跨长距离的全局内容寻址
Decode 成本与历史长度解耦读取全局历史,缓存表示已压缩
NoPE 下隐式携带位置线索K3 中同样使用 NoPE,位置敏感性由 KDA 层提供

MLA 先把 hidden state 压缩为 latent:

ct=Wcxt,c_t=W_cx_t,

再上投影为各 attention heads 的 content key/value。K3 的 MLA 走 NoPE,在每 3 个 KDA 层之后读取一次全局内容。扩展到 1M context 时因此省去 RoPE base 调整与 YaRN。

MLA 输出也使用 full-rank channel gate:

yt=Wo[Sigmoid(Wgxt)o~t].y_t=W_o\left[\operatorname{Sigmoid}(W_gx_t)\odot\tilde{o}_t\right].

所以“Gated MLA”的 gate 作用在 attention 输出的 channel 维度上,由当前输入决定开合。

4.1 与 Full Attention、MLA、DSA 的对照

机制历史表示每步访问长上下文主要代价
Full Attention完整逐 token K/V全历史KV 容量与 dense attention
MLA逐 token latent KV全历史cache 变小,访问长度仍为 SS
DSA逐 token latent KV + indexer选出的 top-k 历史索引扫描、稀疏 gather 与 cache
KDA固定 recurrent state当前 state状态更新串行依赖与大 state 流量
K3 Hybrid69 层 KDA + 24 层 MLA多数层读 state,周期性读全历史两类 cache、两套 kernel 与一致性管理

表中 DSA 指 DeepSeek Sparse Attention,此处仅作“稀疏选择历史”的对照,属于 K3 之外的方案。DSA 削减主 attention 参与计算的 token 数,代价留在 indexer 与逐 token cache;KDA 则直接改变历史的表示形式。

5. AttnRes:沿网络深度做 Attention

普通 residual connection 把所有前层信息累加进一个 hidden state。层数增加后,早期表示容易被连续归一化和残差累加稀释。AttnRes 把深度看成另一条可检索序列。

5.1 Full AttnRes

ll 层使用一个可学习 pseudo-query wlw_l,对 embedding 与所有前层输出计算 softmax 权重:

αil=exp(wlRMSNorm(vi))j<lexp(wlRMSNorm(vj)),hl=i<lαilvi.\alpha_{i\to l}= \frac{\exp\left(w_l^\top\operatorname{RMSNorm}(v_i)\right)} {\sum_{j<l}\exp\left(w_l^\top\operatorname{RMSNorm}(v_j)\right)}, \qquad h_l=\sum_{i<l}\alpha_{i\to l}v_i.

它的 depth arithmetic 只有 O(L2d)O(L^2d)L=93L=93 时开销很小;真正的瓶颈是保存所有层输出带来的 O(Ld)O(Ld) activation 和 pipeline communication。

5.2 Block AttnRes

K3 每 12 层形成一个 block,将 block 内输出累加为一个 prefix_sum,跨 block 只保存 block representation。对每个 attention/MoE 子层:

历史 block representations + 当前 block prefix_sum
  -> RMSNorm keys
  -> 本层 pseudo-query 打分
  -> softmax over depth
  -> 加权合成为本子层输入

93 层形成 8 个 layer blocks,其中最后一个为 9 层;再把 embedding 作为第 0 个 source,共得到 9 个 block-level sources。内存与通信从 O(Ld)O(Ld) 降为 O(Nd)O(Nd)

6. Stable LatentMoE:沿宽度扩展专家空间

6.1 一次 routed path

对每个 token xR7168x\in\mathbb{R}^{7168}

x
├─ two shared experts at full width ----------------------┐
└─ router: Sigmoid(Wr x)                                  │
   -> bias-corrected top-16 of 896                        │
   -> W_down: 7168 -> 3584                                │
   -> dispatch to 16 latent experts                       │
   -> weighted combine -> RMSNorm -> W_up: 3584 -> 7168  │
                                                          ├─> add
shared path ----------------------------------------------┘

LatentMoE 的关键是:router 仍看 full-width hidden state,routed expert 则只处理 3584 维 latent。EP payload 与每个专家的权重流量都按 latent 宽度计费,active expert 数因此可以放到 16。

6.2 三个“Stable”控制点

  1. Normalized LatentMoE:16 个 routed expert 聚合后先 RMSNorm,再做 W_up,压住各种路由组合造成的尺度漂移。
  2. SiTU-GLU:对 gate branch 和 up branch 分别 soft-cap,K3 使用 β1=4\beta_1=4β2=25\beta_2=25,把 SwiGLU 两个无界分量的乘积约束在有限范围。
  3. Quantile Balancing:用专家 bias 调整下一批 token 的 top-k 选择,使每个专家接近目标负载;bias 只影响选择,mixture weight 仍取原始 router 分数,推理时冻结。

SiTU-GLU 为:

[β1tanh(Wgxβ1)Sigmoid(Wgx)][β2tanh(Wuxβ2)].\left[\beta_1\tanh\left(\frac{W_gx}{\beta_1}\right) \odot\operatorname{Sigmoid}(W_gx)\right] \odot \left[\beta_2\tanh\left(\frac{W_ux}{\beta_2}\right)\right].

Quantile Balancing 用直方图近似全局 quantile:每个 expert 维护一份 histogram,各 rank 的 bin counts 做一次 all-reduce 即可,省去收集全部 margin。

7. 原生视觉路径

K3 从预训练第一步就联合优化文本 backbone 与 MoonViT-V2,视觉编码器与语言模型同期成长。

  • MoonViT-V2:27 层、约 401M 参数、12 heads、patch size 14;
  • 从随机初始化开始直接用 next-token prediction 训练;
  • 图像和视频共享参数,attention 分为空间与时间两部分;
  • 投影前做 2×2 pixel shuffle,视觉 token 数减少 4 倍;
  • 支持最高 3584×3584 输入;
  • 轻量 MLP projector 将视觉特征映射到 LLM embedding space。

报告的消融显示,从头训练的 MoonViT-V2 相比 SigLIP 初始化的 MoonViT-3D 具有更低、更少尖峰的 gradient norm,同时视觉评测相当。该结论的适用范围限于 K3 的训练方案。

8. 架构是怎样确定的

公开证据可以支持三层结论:

  1. 前身实验:Kimi Linear 在相同训练 recipe 下比较 KDA–MLA hybrid 与 full MLA,报告 hybrid 在短上下文、长上下文和 RL scaling 中都有质量优势,并在 1M context 展示更低 KV 占用和更高 decode throughput。
  2. K3 scaling law:团队为新架构重新搜索 batch size、learning rate、tokens-per-parameter 和 model shape;cosine 与 WSD 各自寻优后再比较。
  3. 最终联合收益:K3 技术报告披露的口径是“架构、数据与训练 recipe 合计约 2.5× scaling efficiency”,模块级归因留给后续消融。

所以合理的表述是:K3 建立在小模型与缩放实验之上,2.5× 属于整体收益。

9. 训练系统

9.1 预训练 recipe

  • 文本、图像和视频从训练开始就在同一 next-token objective 下联合优化;
  • matrix parameters 使用 Per-Head Muon,attention 的 Q/K/V momentum 按 head 分块正交化;
  • cosine learning-rate decay,1% linear warmup,weight decay 0.1;
  • 预训练先使用 8K context,随后扩到 64K;
  • long-context cooldown 再按 256K → 1M 扩展。

K3 全 backbone 使用 NoPE,位置信息由 KDA 的卷积、递推门控和 decay 隐式提供,扩到 1M 时因此省去位置编码的重新标定。训练数据侧通过长文档/视频清洗、去重、感知哈希、质量过滤和合成长程依赖任务,把长程依赖压进训练信号。

9.2 3T MoE 并行与 MoonEP

报告公开的训练并行组合包括:

PP + virtual pipeline stages
+ EP
+ ZeRO-1 data parallelism
+ Pipeline ZeRO-2 gradient sharding
+ Context Parallelism

具体并行度属于内部配置。MoE 侧使用 MoonEP:根据当前 micro-batch 路由结果动态复制少量热点 experts,使每个 EP rank 精确接收相同的 sequence × top-k token 数。平衡后每层 shape 静态已知,host 逐层读取 expert token count 的同步随之省去。

MoonEP 还将 token 直接送到远端 expert-grouped buffer,路径上省去中间 copy;routed expert GEMM 使用 workload-aware 调度,共享 expert 放到独立 stream 与其他工作重叠。

9.3 KDA Context Parallelism

普通 linear attention 的 additive state 可以直接对 rank 局部结果求前缀和;KDA 的 token-dependent transition 会改变传入 state,各 rank 从零算出的状态因此需要先乘上累计 transition 再组合。

KDA Context Parallelism(KCP)让每个 rank 独立计算两项:

  1. 本段 token 对输入 state 的累计 transition;
  2. 从零状态出发生成的本地 state。

这些 rank-level updates 可结合,因而通过一次固定大小的 all-gather 和有序 prefix scan,精确恢复各 rank 的输入 state。KCP 同步的是固定大小 transition/state fragments;softmax CP 传输的 KV blocks 则随序列增长。

9.4 MXFP4 QAT 的准确边界

MXFP4 的生效区间是 post-training:从 SFT 开始贯穿全程,预训练仍走高精度。

模块部署/后训练精度
Routed expert weightsMXFP4,group size 32
Routed expert input activationsMXFP8
Attention projections更高精度
LatentMoE down/up projections更高精度
Shared experts更高精度
Router、LM Head、Vision更高精度

RL rollout 与训练共用同一量化方案,让 train 与 inference 的数值路径保持一致。发布配置的 ignore 规则同样把 attention、shared experts、非 routed-expert MLP、LM Head、vision tower 和 projector 留在高精度。

10. Agentic RL

K3 先用 SFT 建立 agent cold start,再按三个领域与三个 reasoning effort 训练九个专家策略:

general tasks × {low, high, max}
general agents × {low, high, max}
coding agents × {low, high, max}

随后用 Multi-Teacher On-Policy Distillation 合并回一个模型。长任务使用 partial rollout:一部分轨迹完成后先进入更新,其余轨迹暂停并在后续 iteration 恢复,更新节奏因此与长尾任务解耦。

1M agentic trajectory 的系统重点落在跨 iteration 的状态保存:

  • active decode blocks 留在 GPU;
  • GPU 驱逐的可复用 prefix 以 write-back 方式进入 CPU DRAM;
  • KDA states 与对应 MLA KV blocks 一起 offload/prefetch;
  • scheduler 根据 active/queued requests 和 KV utilization 动态限流;
  • AgentENV 用 microVM 保存工具环境,支持 pause/resume、fork 和增量 snapshot。

11. 推理系统:Prefill 与 Decode 分别做什么

11.1 Prefill

Prefill 处理本轮未命中的 prompt/视觉 tokens:

  1. MoonViT-V2 编码图像/视频并投影到共享 embedding;
  2. KDA 层生成 q/k/v、ShortConv state、decay 和 write gate;
  3. FlashKDA 在 chunk 内并行,在 chunk 间传播 recurrent state;
  4. MLA 层对完整可见 prefix 执行 global attention 并写入 MLA cache;
  5. 每层执行 AttnRes 与 Dense/Stable LatentMoE;
  6. 保存最终 KDA states、ShortConv states 和 MLA KV 供 decode 使用。

KDA kernel 的 chunk 是算子内部的并行单位,与 serving scheduler 的 chunked prefill 分属两个层面。超长 prefill 时纯 TP 只切 heads,递推链长度保持原样;K3 因此叠加 device 内与跨设备 context parallelism 来切 sequence。

11.2 Decode

Decode 每步只推进新 token:

  1. KDA 读取并原地更新固定 recurrent state;
  2. MLA 把新 latent KV 追加进 cache,并读取历史做 global attention;
  3. AttnRes 从缓存的 block representations 与当前 block partial sum 选择输入;
  4. Stable LatentMoE 为 token 选择 16 个 routed experts,加上 2 个 shared experts;
  5. LM Head 产生 logits,采样后进入下一步。

所以 K3 的 cache 是混合形态:69 个 KDA 层持有固定 state,24 个 MLA 层持有随上下文增长的 KV。

11.3 MTP / EAGLE-3 与 KDA 回滚

报告称 K3 预训练了一个与 backbone block 同结构的 MTP layer,post-training 时将它微调为 EAGLE-3-style draft model,训练时展开 7 steps。

投机验证给 KDA 带来一条额外约束:state 随每个 draft token 原地推进,reject 后需要重建,而 KV Cache 只需截断。生产方案只缓存体积更小的 projected inputs;验证结束后在片上 replay 被接受的 token,重建正确 state,再写回 verified/bonus token 状态。

发布的目标模型 config.jsonnum_nextn_predict_layers=0,即公开 target checkpoint 把 next-N layer 留在配置之外;报告中的 draft serving 路径应视为独立的 draft artifact 与系统能力,实际开启状态需另行确认。

12. 混合 Cache 与 Prefix Reuse

K3 prefix 只有在同一 token 边界同时具备 MLA KV 和全部 KDA state checkpoint 时才可复用。

12.1 统一 paged pool

生产系统把两种数据放进同一 paged block pool:

  • MLA pages:逐 token 增长;
  • KDA pages:每请求固定 state,heads 连续存放;
  • allocation、reference count、eviction 使用同一实现;
  • P/D 两端 TP 规模有差异时,在 transfer path 做 re-layout。

“统一 pool”统一的是生命周期与分配器,两种 payload 各自保留自己的形态。

12.2 hash 粒度与物理页解耦

KDA checkpoint 体积很大,保存粒度因此比 token block 粗。报告把物理页扩大到 1024–6144 tokens,把 prefix hash endpoint 保持在更细粒度,例如 512 tokens:

6144-token physical page
  └─ 12 × 512-token hash endpoints
       └─ 只在部分 endpoint 保存 KDA checkpoint

查找先匹配 MLA hash,再要求每个 KDA cache group 在同一边界都有 checkpoint;最终命中二者共同满足的最长边界。conversation-turn boundaries 是保留 KDA checkpoint 的自然位置。

并发下还必须保证:命中块先统一 pin;正在分配或复制中的块推迟到完成后才参与匹配;任一 KDA group 驱逐 checkpoint 时,其 sibling checkpoints 一起失效。

13. FlashKDA 与专用 Kernel

13.1 Training / Prefill kernel

公开的 FlashKDA 是 CUTLASS chunkwise kernel,面向 SM90+、CUDA 12.9+。K3 版本使用 16-token chunk:

  • 16-token 累计 decay 可安全落在 BF16 范围;
  • 16×1616\times16 inverse 可以用较便宜的 Neumann-series;
  • token-parallel K1 与 head-parallel recurrent K2 拆成两个 kernel,各自匹配自己的并行维度;
  • state 在片上以 BF16 保存,state update 使用 FP32 FMA;
  • K2 用寄存器内 transpose,减少 shared-memory round trip。

FlashKDA 仓库暴露的 state shape 是 [B, H, V, K],当前要求 K=V=128,与 K3 发布配置一致。

13.2 Decode kernel

生产 decode kernel 把 ShortConv、输入归一化、gate、KDA recurrence 和输出归一化放进一个 recurrent loop;投机解码还把 replay、bonus token 与下一 draft window 合并。优化目标是压低大 state 的 HBM 往返次数,token 维并行度维持原样。

13.3 AttnRes 与 MoE kernel

  • AttnRes Prefill:TP all-reduce 拆成 reduce-scatter + all-gather,在中间对 sequence-sharded hidden states 执行 intra-block kernel,让每个 TP rank 只持有自己分片的 block representations;
  • AttnRes Decode:inter-block pass 放 side stream,与主流独立工作重叠;intra-block merge、partial sum 和 RMSNorm 融进 TP all-reduce;
  • LatentMoE:down-projection 与 router 合成一个 GEMM;latent weights 跨 rank 切分,all-gather 融入 GEMM epilogue;小 batch expert decode 使用 token-centric weight streaming。

14. 官方参考实现与生产实现的边界

发布在 Hugging Face 的 modeling_kimi_linear.py 很适合核对控制流:

  • q_len > 1chunk_kda,cached single-token decode 调 fused_recurrent_kda
  • KimiDynamicCache 同时维护 KDA recurrent/conv states 与 attention cache;
  • layer 依据配置在 KimiDeltaAttentionKimiMLAAttention 间切换;
  • AttnRes 确实在 attention 前、MoE 前和最终输出处执行。

这份 Transformers 代码的定位是可读参考路径,与技术报告中的生产 serving engine 分属两条实现:参考 MLA path 先展开 head-specific K/V 再交给通用 cache,生产路径缓存 latent 表示并统一管理 KDA/MLA pages。显存与性能数字应以生产路径为准。

15. 目前能下的结论

  1. K3 的核心是 KDA state + 周期性 global MLA + depth attention + latent experts 的组合,单个 KDA 算子只是其中一环。
  2. KDA 把大多数层的历史从逐 token cache 变为固定状态,而每请求状态本身很大,系统优化重点也从“扫描长 KV”转向“少搬大 state”。
  3. Gated MLA 承担有限状态之外的全局内容检索,属于架构必需项。
  4. Stable LatentMoE 用 0.5× latent width 支撑 top-16/896 极稀疏路由;RMSNorm、SiTU-GLU、QB 分别控制尺度、激活和负载。
  5. K3 的 1M context 能力由 NoPE/KDA、渐进长上下文训练、KCP、混合 prefix cache 和 fleet scheduling 共同支撑,attention 公式只是其中一层。
  6. 公开资料足以建立结构和成本模型;生产 TP/EP 配置、端到端 TTFT/TPOT 以及各模块对 2.5× scaling efficiency 的独立贡献,需要进一步实测。

后续验证问题

  • 发布权重是否另有官方 EAGLE-3 draft artifact,其接受率和实际 speculative window 是多少?
  • 生产 MLA page 的真实 bytes/token、KDA checkpoint dtype 与每请求 resident state 是多少?
  • KDA/MLA cache group 如何映射到 TP、P/D 节点和跨节点 transfer heads?
  • FlashKDA、production recurrent decode kernel 与开源 vLLM/SGLang 路径之间有哪些功能和性能差距?
  • 在相同质量、硬件和并行配置下,K3 hybrid 相对 full MLA / DSA 的 FLOPs、HBM 和端到端收益各是多少?

这些问题适合进入下一阶段仿真与 Trace 验证;本文先冻结架构和执行语义。

相关页面

主要来源

修改历史2 次提交