Kimi K3:架构、训练与百万 Token Agentic RL 技术解读

用直白的方式解释 Kimi K3 的 KDA、Block AttnRes、LatentMoE、1M 上下文与九策略强化学习,并区分论文结论和外部实测。
Author

Brench

Published

August 1, 2026

Modified

August 22, 2026

Kimi K3 Open Frontier Intelligence 技术报告标题和 Kimi Team 作者署名

Kimi K3 技术报告标题、报告副标题与作者团队。

来源:Kimi K3 技术报告,第 1 页。

摘要与核心判断

Kimi K3 最醒目的数字是 2.8T 总参数、104.2B 激活参数和 1M token 上下文。论文的重点在四条信息通路。KDA 把很长的历史压进一个持续更新的记忆状态;Gated MLA 定期直接检索历史 token;Block AttnRes 让当前层选择前面哪些层的信息;Stable LatentMoE 先压缩特征,再交给 896 个专家处理。MoonViT-V2 还让图片、视频和文本从预训练开始就进入同一个模型。目标很明确:模型要能训练、能部署,也要能处理更长的输入和更复杂的工具调用轨迹。

先把全文反复出现的术语说清楚:

术语 直白解释
token 模型处理文本、图片或视频时使用的基本单位。一个汉字不一定只对应一个 token。
KDA Kimi Delta Attention。它不保存所有历史 token 的键和值,而是把历史更新到固定大小的矩阵记忆中。
MLA Multi-head Latent Attention,多头潜在注意力。它把每个 token 的键和值压缩后再缓存,仍能按内容回看历史。
AttnRes Attention Residuals,注意力残差。它让一层按权重读取更早的层,而不是把所有前层结果等量相加。
MoE Mixture of Experts,混合专家模型。每个 token 只调用少量专家,因此总参数可以很大,单次计算不必用完所有参数。
latent 压缩后的内部特征。它不是新的数据类型,只是维度更低的向量表示。
rollout 模型在强化学习环境里完成一次任务的完整过程,可能包含推理、工具调用、观察结果和继续行动。
compaction 上下文压缩。系统总结或删除旧内容,减少无关网页、重复日志和工具噪声占用窗口。

我的判断有四点:

  1. K3 的提升来自整套设计配合,不能只归功于某个模块。报告中的“2.5× 扩展效率”比较了 K2 和 K3 的整套架构、数据与训练方案。论文没有足够的消融实验,无法算出 KDA、AttnRes 或 LatentMoE 各自贡献了多少。
  2. 1M 是最大窗口,不等于每项任务都能有效使用一百万个 token。BrowseComp 的主结果使用了 300K 上下文压缩;直接使用完整 1M 窗口时,分数反而略低。
  3. 后训练的重点是把三类任务、三档推理预算得到的九个策略合回一个模型,而不是简单增加一轮通用强化学习。
  4. K3 开放了模型权重,但没有公开完整训练语料、数据流水线、训练环境和集群系统,所以不能把它写成“完整开源、可以原样复现”。

本文不调用 Kimi K3 API,也不把公开基准分数当成亲自复现。下文只讨论公开材料能支持的内容:模块怎样工作、它解决什么问题、数字采用什么口径,以及哪些结论仍只是官方报告的结果。

1. 证据边界:开放权重、可复现性与官方主张

本文先看论文和官方仓库,再用独立材料交叉检查。KDA 的细节来自 Kimi Linear,深度方向的设计参考 Attention Residuals 原论文,LatentMoE 的动机参考 NVIDIA 论文,推理缓存和吞吐参考 vLLM 工程报告。Artificial Analysis 的数据会变化,本文只把截图当作 2026 年 8 月 1 日当天的外部记录,不用它证明长期排名。

官方仓库发布了模型权重、配置和推理入口,但许可证不是 Apache-2.0 或 MIT。Kimi K3 License 允许使用、修改、分发、微调和创建衍生作品,同时对规模化商业使用设置条件:模型即服务(Model-as-a-Service)业务的关联主体若任意连续 12 个月总收入超过 2000 万美元,商业使用前需要另签协议;月活超过 1 亿或月收入超过 2000 万美元的商业产品还承担显著展示“Kimi K3”的义务,内部使用与官方或认证渠道另有豁免。准确说法是“开放权重并附自定义许可”,不能称为不带条件的“完整开源”。

复现边界还要说得更清楚。报告公开了上下文训练课程、视觉塔、优化器、专家负载平衡、九策略强化学习、量化训练和长轨迹系统,但没有公开原始语料、完整过滤规则、全部合成任务、奖励环境、硬件连接方式和训练日志。外部团队可以测试权重、重写算子、测量推理性能,也可以用小模型验证某个模块。可是这些工作仍无法重建完整的 2.8T 训练过程。

“用了某个机制”和“这个机制贡献了多少”是两件事。配置与代码能确认模型有 69 层 KDA、24 层 MLA,也能确认推理框架实现了对应算子。但它们不能回答:如果换掉 KDA,主模型分数会下降多少?论文的小模型消融只能说明方向,不能直接换算成 2.8T 模型上的收益。因此,本文会明确区分配置事实、论文实验结果和作者判断,不补写论文没有给出的因果比例。

知乎和腾讯云社区的文章主要用来观察常见说法。Kimi 官方知乎文章采用官方发布口径,知乎实测回答记录用户侧体验,腾讯云社区文章做了快速归纳。这些二手内容不能替代技术报告。尤其不能把“窗口上限是 1M”直接写成“模型一定能有效推理一百万 token”,也不能把 2.5× 全部归给一个新模块。

2. 从 K2 到 K3:总参数很大,每个 token 实际算多少

K3 有 93 层,隐藏维度仍是 7168。其中 69 层使用 KDA,24 层使用 MLA。每层有 896 个“路由专家”,也就是由路由器按 token 选择的专家;每个 token 只调用其中 16 个。模型还保留 2 个“共享专家”,它们会处理每个 token。总参数从 K2 的 1.04T 增到 2.78T,实际参与一次前向计算的激活参数从 32.6B 增到 104.2B。2.78T 表示模型能容纳多少专家知识,104.2B 更接近单个 token 的计算量。不过,GPU 之间的通信、专家路由、权重读取和缓存开销不能由“激活参数”这一个数字说明。

Kimi K3 论文 Figure 2,总体架构包含 Stable LatentMoE、KDA、Gated MLA、Attention Residuals 和 MoonViT-V2

Kimi K3 总体架构:Stable LatentMoE、KDA、3:1 混合注意力、Block AttnRes 与原生视觉路径。

来源:Kimi K3 技术报告,Figure 2,第 3 页。

论文从序列、深度和宽度三个维度解释架构,视觉是第四条输入路径。可以把它们理解成四个问题:一个 token 怎样读取历史?当前层怎样读取前面的层?一个 token 要交给哪些专家处理?图片怎样转换成能与文本一起训练的 token?KDA/MLA、AttnRes、LatentMoE 和 MoonViT-V2 分别回答这四个问题。它们最终汇入同一个模型骨干,并不是四套独立模型。

Figure 2 最容易误读的地方,是把四条信息通路画在了同一张图里。黑线表示当前模块内的顺序计算与普通残差路径;右侧酒红色长线表示跨深度保留的 embedding 和前面块输出。圆圈中的 \(w\) 是当前模块学习的伪查询,红色 \(\alpha\) 是它对这些深度来源算出的 Softmax 权重。图左下 KDA 内部的 \(\alpha\) 则是沿 token 序列更新状态时的逐通道保留率,虽然符号相同,含义和归一化方式完全不同。

右侧的 也不是把整个 93 层网络只画成四层,而是在描述一个重复单元:连续三次执行“KDA + Stable LatentMoE”,再执行一次“Gated MLA + Stable LatentMoE”。69 层 KDA 与 24 层 Gated MLA 可以精确还原为:

\[ 23\times \left( 3\,\mathrm{KDA}+1\,\mathrm{Gated\ MLA} \right) +1\,\mathrm{Gated\ MLA} =69\,\mathrm{KDA}+24\,\mathrm{Gated\ MLA} =93\ \text{层}. \]

最后额外的 Gated MLA 不再接另一个 3:1 单元;它保证主干顶端的最后一次序列混合是全局 token-to-token 注意力。这里的 93 指注意力层数,每个注意力层后面都配有 channel-mixing 子层;Figure 2 用 Stable LatentMoE 展示主要重复路径。

自制 Kimi K3 信息流图,序列维使用 3 KDA 加 1 MLA,深度维使用 Block AttnRes,宽度维使用 Stable LatentMoE,模态维使用 MoonViT-V2

自制的 K3 四维信息流图:序列、深度、宽度与模态汇入同一 2.8T MoE 骨干。

依据 K3 报告 §2 与 Figure 2。

这套划分也说明 2.5× 应该怎样理解。K3 的曲线相对 K2 左移约 2.5×,表示在作者的验证损失拟合中,达到相同损失所需的训练计算量更少。这里比较的是整套训练方案。K3 同时改了架构、数据混合、视觉训练、优化器和稳定性方法,所以这张曲线不能证明“KDA 单独把训练效率提高了 2.5×”。

一次前向计算大致按下面的方向流动。MoonViT-V2 先把图像变成视觉 token,并与文本 token 一起进入模型;KDA 或 MLA 混合序列信息;AttnRes 选择要读取的深度历史;Stable LatentMoE 再调用少量专家处理特征。真实实现会把归一化、残差和并行计算交错起来,但风险相同:前面一处数值异常,会继续传给后面的专家路由和注意力层。K3 在多个位置加入归一化、软封顶和裁剪,就是为了阻止误差逐层放大。

3. KDA 与 Gated MLA:为什么要按 3:1 混用

这一节聚焦 K3 中一层 KDA 的输入、状态编辑和输出;KDA 的递推谱系、WY/UT 分块推导、消融与公开实现可继续阅读站内的 Kimi Linear 与 KDA 专题笔记

3.1 从“不断累加”到“按地址改写”

最朴素的线性注意力把每个 key–value 外积直接加进固定大小的状态:

\[ S_t=S_{t-1}+k_tv_t^{\top}, \qquad o_t=S_t^{\top}q_t. \]

它不需要保存每个历史 token 的 K/V,但相似的 key 会反复写入同一方向;新内容只能叠加,不能显式覆盖旧内容。Delta rule 把状态看成一个从 key 空间到 value 空间的在线关联记忆。它先问“旧状态在当前 key 上会预测什么”,再只写入预测误差:

\[ \widehat{v}_t=S_{t-1}^{\top}k_t, \qquad S_t = S_{t-1} +\beta_tk_t\left(v_t-\widehat{v}_t\right)^{\top}. \]

如果旧状态已经在 \(k_t\) 方向给出接近 \(v_t\) 的结果,本次更新很小;如果预测错误,更新就沿 \(k_t\) 方向改写这条关联。KDA 又在改写前加入逐 key 通道的遗忘。对一个注意力头,\(S_t\in\mathbb{R}^{d_k\times d_v}\),完整递推为:

\[ S_t = \left(I - \beta_t k_t k_t^{\top}\right)\mathrm{Diag}(\alpha_t)S_{t-1} + \beta_t k_t v_t^{\top}, \qquad \widetilde{o}_t = S_t^{\top}q_t. \]

因为 \(\mathrm{Diag}(\alpha_t)\) 从左侧乘状态,它缩放的是 \(S_{t-1}\) 的行,也就是每个 key 通道对应的记忆,而不是 value 维的列。KDA 相比 Gated DeltaNet 的关键变化,正是把整头共享的标量遗忘率改成 \(\alpha_t\in(0,1)^{d_k}\):同一个头里的不同 key 方向可以学习不同时间尺度。固定形状只表示状态内存不随序列长度增长,不表示历史被无损保存;相似 key 仍可能发生碰撞,长期内容也会被衰减或覆盖。

3.2 单个 token 的输入、状态与输出

解码时,一层 KDA 的接口不只有“输入一个 token,输出一个 token”。它还读取并更新每个头的递归状态,以及这一层 q/k/v 路径所需的短卷积缓存:

\[ \left( x_t,\, S_{t-1},\, C_{t-1}^{\mathrm{conv}} \right) \xrightarrow{\mathrm{KDA}} \left( y_t,\, S_t,\, C_t^{\mathrm{conv}} \right). \]

\(x_t\in\mathbb{R}^{d}\) 是 AttnRes 为当前 KDA 子层组合出的隐藏表示;\(S_{t-1}\) 保存压缩的长程关联,\(C_{t-1}^{\mathrm{conv}}\) 保存 ShortConv 所需的少量近期 token。\(y_t\in\mathbb{R}^{d}\) 回到主干残差流,\(S_t\) 和新的卷积缓存则留给下一个 token,不直接暴露给后续 MoE。

Figure 2 左下的五条输入分支对应 \(q\)\(k\)\(v\)\(\alpha\)\(\beta\)。对第 \(h\) 个头,它们由当前隐藏状态 \(x_t\) 生成:

\[ q_t^h,k_t^h = \mathrm{L2Norm}\!\left( \mathrm{Swish}\!\left( \mathrm{ShortConv}\!\left(W_{q/k}^h x_t\right) \right) \right), \qquad v_t^h = \mathrm{Swish}\!\left( \mathrm{ShortConv}\!\left(W_v^h x_t\right) \right), \]

\[ \beta_t^h=\mathrm{Sigmoid}\!\left(W_\beta^h x_t\right), \qquad z_t^h=W_{\alpha\uparrow}^hW_{\alpha\downarrow}x_t+b_\alpha^h. \]

公式把卷积简写在当前 \(x_t\) 上;实际解码时 ShortConv 还读取 \(C_{t-1}^{\mathrm{conv}}\),所以 \(q\)\(k\)\(v\) 带有一个很小的局部感受野。L2Norm 控制 \(q\)\(k\) 的尺度,使向量方向主要承担“读地址”和“写地址”的角色,而不让 key 范数再次充当隐式写入强度。\(z_t^h\) 不是保留率本身,它还要经过后文的 lower-bounded mapping 才得到 \(\alpha_t^h\)

把原始递推重新整理,就能清楚看到单步状态编辑和读出顺序:

\[ \overline{S}_t = \mathrm{Diag}(\alpha_t)S_{t-1}, \qquad \widehat{v}_t = \overline{S}_t^{\top}k_t, \]

\[ S_t = \overline{S}_t +\beta_tk_t\left(v_t-\widehat{v}_t\right)^{\top}, \qquad \widetilde{o}_t = S_t^{\top}q_t. \]

也就是:先按 key 通道衰减旧状态;再用 \(k_t\) 读取当前地址上的旧预测;然后把 \(v_t-\widehat{v}_t\) 作为误差写回;最后用 \(q_t\) 从更新后的 \(S_t\) 读取输出。因为读出发生在更新之后,\(\widetilde{o}_t\) 包含当前 token 刚写入的信息。\(\beta_t\) 是一次“编辑”的强度,同一个标量同时控制旧预测的擦除和新误差的写入,并不是两个独立门。

KDA 单 token 输入输出流,先用 alpha 对 key 通道衰减,再由 beta 和 key 定向改写状态,最后由 query 从更新状态读出

KDA 单步状态编辑中的通道衰减、定向擦除、关联写入与查询读出。

来源:Kimi Linear 的 KDA 递推;参见站内 Kimi Linear 与 KDA 专题笔记

各输入信号的职责可以压缩成一张表:

信号 直观角色 作用位置
\(q_t\) 读地址 从更新后的 \(S_t\) 读取 value 表示。
\(k_t\) 编辑地址 决定擦除和写回发生在哪个 key 方向。
\(v_t\) 目标内容 给出当前地址希望保存的 value。
\(\alpha_t\) 记忆寿命 按 key 通道衰减旧状态的行。
\(\beta_t\) 编辑强度 同时缩放定向擦除和误差写入。
\(\mathrm{Sigmoid}(W_gx_t)\) 输出曝光门 决定读出的哪些通道进入主干残差流。

K3 把 Kimi Linear 的低秩输出门改成输入相关的全秩通道门:

\[ y_t = W_o\!\left[ \mathrm{Sigmoid}\!\left(W_gx_t\right) \odot \mathrm{RMSNorm}\!\left(\widetilde{o}_t\right) \right]. \]

RMSNorm 先稳定各头的递归读出,门控再让当前 token 决定哪些输出通道进入后续计算,\(W_o\) 最后把多头结果映射回模型维度。\(\alpha_t\)\(\beta_t\) 与 output gate 分别控制“旧记忆保留多久”“本次状态改写多强”和“多少读出暴露给残差流”,三者不能互换。

放回 Figure 2 的整层路径看,AttnRes 先从 embedding、已完成块和当前块部分和中组合出 \(x_t\);KDA 产生可见输出 \(y_t\) 并把隐藏状态推进到 \(S_t\)\(y_t\) 被加入当前 AttnRes block 的部分和。随后 Stable LatentMoE 子层会再次通过自己的 AttnRes 输入选择接收表示,完成 channel mixing。序列状态 \(S_t\) 不会作为 7168 维 token 表示直接传给 MoE。

3.3 递归解码、分块预填充与周期性全局检索

K3 没有把全部注意力层都换成 KDA。每个重复单元使用 3 层 KDA 和 1 层 Gated MLA,主干末尾再加一层 MLA。KDA 适合用固定状态长期积累信息;MLA 则把每个 token 的键值表示压缩为 \(c_t=W_cx_t\),推理时缓存 \(c_t\),注意力计算时再上投影为各头的 content key 和 value。缓存仍随 token 数线性增长,却保留全局、按内容直接检索历史位置的能力。Gated MLA 的输出同样经过输入相关的全秩通道门:

\[ y_t = W_o\!\left[ \mathrm{Sigmoid}\!\left(W_gx_t\right) \odot \widetilde{o}_t \right]. \]

所有 MLA 层都使用 NoPE,查询和键不显式加入位置编码。论文给出的分工是:相邻 KDA 层提供对位置和近因敏感的序列混合,MLA 提供不受固定状态容量限制的全局内容交互。这个 3:1 结构是在缓存成本与精确检索之间取折中,并不表示线性注意力已经完全取代 Softmax 注意力。

解码时,KDA 按上面的递推接口逐 token 更新,单层需要长期保留的是固定形状的 \(S_t\) 和很小的卷积缓存。训练和长提示词预填充时,它不会真的串行循环百万次,而是采用“块内并行、块间传状态”的 WY/UT 组织:

\[ \left( X_{[c]},\, S_{[c]}^{\mathrm{in}} \right) \longrightarrow \left( Y_{[c]},\, S_{[c]}^{\mathrm{out}} \right), \qquad S_{[c+1]}^{\mathrm{in}}=S_{[c]}^{\mathrm{out}}. \]

一个 chunk 内的多个 token 被改写为矩阵乘法并行处理,chunk 边界才传递递归状态。两种执行路径实现的是同一个因果状态更新,但浮点运算结合顺序不同,低精度下不要求位级一致。K3 的难点在累计衰减:如果连续很多步的保留系数都接近零,块算法所需的倒数会变得非常大,超出低精度浮点数的安全范围。下界衰减正是用来限制这个数值范围。

Kimi K3 Figure 3,对比 Kimi Linear 的负 Softplus 衰减与 K3 的下界衰减,以及对角 tile 的 Tensor Core 计算

K3 论文中的 lower-bounded decay:将对数衰减限制在有限区间,使对角 tile 也能使用 Tensor Core。

来源:Kimi K3 技术报告,Figure 3,第 5 页。

KDA 的关键工程改动是“带下界的衰减”(lower-bounded decay)。\(g_t^h\) 是对数形式的衰减值,K3 把它限制在 \(g_{\min}\) 和 0 之间:

\[ g_t^h = g_{\min}\,\mathrm{Sigmoid}\!\left(e^{A^h}z_t^h\right) \in (g_{\min},0)^{d_k}, \qquad \alpha_t^h = \exp(g_t^h) \in (e^{g_{\min}},1)^{d_k}, \qquad g_{\min}=-5. \]

这里 \(g_{\min}=-5\),所以每一步的保留比例 \(\alpha_t^h\) 不会小于 \(e^{-5}\)。当一个二级计算块包含 16 个位置时,累计对数衰减位于 \((-80,0)\),倒数仍在 BF16 可表示的范围内。过去需要单独处理的对角计算块,现在也能交给 Tensor Core(张量核心)做密集矩阵乘法。这个设计先限制数值范围,再换取更规则、更快的 GPU 计算,而不只是让模型“记得更久”。

自制 KDA 与 MLA 混合缓存图,展示 3 比 1 层模式、固定形状递归状态和随 token 线性增长的 MLA latent cache

自制的 3 KDA + 1 Gated MLA 混合记忆图:KDA 状态大小近似不随上下文增长,MLA latent cache 按 token 增长。

依据 K3 报告 §2.1 与 vLLM K3 工程报告

4. Block AttnRes:让深层网络有选择地读取前层

标准的预归一化 Transformer(PreNorm Transformer)会把每一层的输出直接加回残差流,默认权重都是 1。层数很深时,后面的层只看到许多输出的总和,早期某一层的独特信息可能被冲淡。Attention Residuals(AttnRes,注意力残差)改成按权重读取前层:每一层学习一个伪查询向量 \(w_l\),用它判断之前哪些层更值得读取,再组合出当前层的输入。

\[ h_l=h_{l-1}+f_l(h_{l-1}) =h_0+\sum_{i=1}^{l}f_i(h_{i-1}). \]

上式说明标准残差把所有历史层贡献都用系数 1 写进同一个状态。AttnRes 不再固定等权累加,而是把“网络深度”看成一个可检索维度:

\[ \phi(q,k)=\exp\!\left(q^{\top}\mathrm{RMSNorm}(k)\right), \qquad \alpha_{i\to l}=\frac{\phi(w_l,v_i)}{\sum_{j=0}^{l-1}\phi(w_l,v_j)}, \qquad h_l=\sum_{i=0}^{l-1}\alpha_{i\to l}v_i. \]

这不是沿 token 序列做注意力,而是沿网络深度做注意力。查询向量由每一层自己学习,不直接依赖当前 token;键和值来自同一个 token 在不同层的表示,因此不同 token 得到的深度权重仍可能不同。完整版本 Full AttnRes 要保存所有前层输出。训练时还要做激活重计算和流水线并行,保存与传输这些状态的成本会随层数增加。

Attention Residuals Figure 1,比较标准残差、对所有前层做注意力的 Full AttnRes 和按块汇总的 Block AttnRes

Attention Residuals 原论文 Figure 1:标准残差、Full AttnRes 与 Block AttnRes。

来源:Attention Residuals,Figure 1,第 1 页。

Block AttnRes 用“分块摘要”降低成本。块内仍做普通残差相加,跨块只保存一个汇总表示。K3 按 12 层为上限切成 8 个主干块:前 7 个块各 12 层,最后一个是不完整的 9 层块;再把输入 embedding 作为第 9 个深度来源。Figure 2 右侧红线画的正是 embedding、已完成块和当前块部分和之间的选择。这样做会失去逐层选择的细度,但长期保存和跨流水线阶段传输的状态从 \(L\) 个层输出降到 \(N\) 个块输出。它更像深度方向的分块索引:它改变一层从哪里取信息,不改变 token 之间的因果顺序。

伪查询向量不依赖当前层刚算出的结果,所以一组层的深度权重可以提前批量计算,不必逐层等待。当前块已经得到的部分和会作为临时值,与前面块的摘要一起被选择。这样既压缩了长期深度历史,又保留了当前块内部的更新。代价也很直接:某一块中的早期层如果产生了独特特征,块结束后只剩汇总结果,后面的层不能再单独找到它。

论文的扩展实验和消融表明,AttnRes 在小模型与 Kimi Linear 规模上改善了验证损失和梯度分布。但 K3 主模型没有给出足够细的同预算、逐模块对照。每块 12 层也不是理论最优值。流水线怎样切分、是否重计算激活、机器之间怎样连接,都会影响合适的块大小。

5. Stable LatentMoE:先降维,再调用专家

LatentMoE 先把 token 的 7168 维特征压缩到 3584 维,再让专家在这个低维空间中计算,最后投影回 7168 维。这里的潜在空间(latent space)就是压缩后的内部特征空间。专家并行时,GPU 之间需要做全互联通信(all-to-all),也就是互相交换被路由到不同专家的 token。维度减半后,专家权重读取和通信量大约按 \(d/\ell\) 缩小,节省的预算可以换成更多专家。K3 使用 896 个路由专家,每个 token 选择 16 个,路由选择比例约为 \(16/896\approx1.79\%\);另有 2 个始终参与计算的全宽共享专家,因此 1.79% 不能直接当作整层的总激活比例。

Figure 2 左上的两条分支不能混为一条。Router 根据完整隐藏状态 \(x\) 计算选择分数;另一条 Linear 才执行 \(z=W_\downarrow x\),被选中的路由专家接收的是 3584 维 \(z\)。两个共享专家直接处理完整的 7168 维 \(x\),不经过这次降维。最后,路由分支先聚合、归一化、升维,再与共享分支相加。

Kimi K3 Figure 4,对比 GLU、SwiGLU 和 SiTU-GLU 的 gate、up 分支与标量响应

Stable LatentMoE 使用 SiTU-GLU 限制 gate 与 up 分支的乘积幅值。

来源:Kimi K3 技术报告,Figure 4,第 7 页。

NVIDIA LatentMoE Figure 1,标准 MoE 在主维度路由,LatentMoE 先下投影,在更多低维专家中计算后再上投影

NVIDIA LatentMoE 原论文中的标准 MoE 与 latent 路径对比。

来源:LatentMoE,Figure 1,第 2 页。

K3 对标准 LatentMoE 做了稳定化。设 \(T_k(x)\) 为被选中的专家集合、\(p_i\) 为路由权重,routed 分支先聚合再归一化;完整输出为:

\[ u=\sum_{i\in T_k(x)}p_i E_i^{\mathrm{routed}}(W_{\downarrow}x), \qquad y=\sum_{j=1}^{N_s}E_j^{\mathrm{shared}}(x) +W_{\uparrow}\mathrm{RMSNorm}(u), \qquad N_s=2. \]

公式先对被选中的专家输出加权求和,得到 \(u\);RMSNorm 把 \(u\) 的尺度重新归一化,再投影回主干宽度。这样,不同专家组合产生的数值大小不会直接冲击后续层。SiTU-GLU 还对门控分支和上投影分支做 tanh 软封顶,使两者乘积的绝对值不超过 100。RMSNorm 管住多个专家合并后的尺度,SiTU-GLU 管住单个专家内部的激活峰值。专家数量增加之后,稳定性问题也随之放大,因此这两项设计和专家容量同样重要。

\[ \mathrm{SiTU\text{-}GLU}(x) = \left[ \beta_1\tanh\!\left(\frac{W_gx}{\beta_1}\right) \odot \mathrm{Sigmoid}(W_gx) \right] \odot \left[ \beta_2\tanh\!\left(\frac{W_ux}{\beta_2}\right) \right], \qquad (\beta_1,\beta_2)=(4,25). \]

在接近原点的常用区间,它尽量保留 SwiGLU 的响应;输入很大时,两个线性因子分别渐近于 \(\beta_1\)\(\beta_2\),所以标量乘积的绝对值被限制在 \(\beta_1\beta_2=100\)。这是软封顶,不是超过阈值后突然截断。

降维不是免费的。如果 3584 维不足以保留任务所需的特征,信息会在进入专家前丢失;如果压缩后的维度太大,通信和权重读取又省不了多少。K3 取主干维度的一半,再把省下的预算用于更多专家和 top-16 路由。评估这种设计时,至少要同时看验证损失、各专家收到的 token 数、GPU 互传时间和小批量推理延迟,不能只看理论计算量。

Quantile Balancing(QB,分位数负载平衡)负责避免少数专家过载。传统的无辅助损失方法用固定步长调整专家偏置:步长小,平衡得慢;步长大,负载会来回振荡。QB 先找出每个 token 进入 top-k 的分数门槛 \(\alpha_i^{(t)}\),再为每个专家计算一个分位数阈值,使它大约接收目标数量 \(q=mk/n\) 的 token:

\[ \widehat{b}_j^{(t+1)} \leftarrow -\mathrm{quantile}_{1-k/n}\!\left(s_{:,j}-\alpha^{(t)}\right), \qquad b^{(t+1)} \leftarrow \widehat{b}^{(t+1)}-\mathrm{mean}\!\left(\widehat{b}^{(t+1)}\right)\mathbf{1}. \]

实际训练不会收集数百万 token 对 896 个专家的全部分数差。每个 GPU 进程只累计一份直方图,在训练步结束时用 all-reduce 汇总整数计数,再读取全局分位点。这里的 bias 是路由偏置,只决定下一步把 token 发给哪个专家,不改变专家输出的最终混合权重;推理时它保持不变。这样,负载平衡不再通过额外损失干扰主任务梯度,而是成为一项独立的路由校准。

直方图会带来近似误差,精度由区间宽度控制。报告为每个专家使用固定数量的区间,并动态调整统计范围。通信量只随专家数和区间数变化,不随 token 总数增长,因此比传输原始分数差便宜得多。它也有局限:如果一个训练步的数据分布突然变化,新的偏置要到下一步才生效。减去所有偏置的均值可以防止整体漂移,却不能解决某个数据领域长期偏爱少数专家的问题;后者仍要靠数据混合和专家容量处理。

Kimi K3 Figure 5,八个 token、四个专家的 Quantile Balancing 示例,从负载 4 3 1 0 调整为 2 2 2 2

Quantile Balancing 从不均匀 Top-k 路由中估计每个专家的分位阈值。

来源:Kimi K3 技术报告,Figure 5,第 8 页。

6. 原生视觉、Per-Head Muon 与 2.5× scaling

K3 所说的“原生视觉”,是指文本、图片和视频从预训练开始就共同做下一 token 预测。它不是先训练纯语言模型,再在后面接一个视觉编码器。MoonViT-V2 有 401M 参数、27 层,把图像切成 \(14\times14\) 的小块,并用 12 个注意力头处理,再通过轻量 MLP projector 接入 7168 维的共享表示。图像和视频共用视觉编码器参数;视频注意力分解为空间帧内注意力与时间帧间注意力,并用时间池化继续压缩 token。进入 projector 前,\(2\times2\) pixel shuffle 还会把视觉 token 数降为原来的四分之一,使最高 \(3584\times3584\) 像素的输入仍能放进长上下文。报告显示,从零训练的 MoonViT-V2 相比用 SigLIP 初始化的 MoonViT-3D,梯度更低、尖峰更少,视觉评测接近。这个结果只适用于论文设置,不能推成“预训练视觉编码器普遍没有用”。

Kimi K3 Figure 6,MoonViT-V2 from scratch 与 MoonViT-3D SigLIP 初始化的视觉塔梯度曲线

MoonViT-V2 与 SigLIP 初始化基线的视觉塔梯度范数。

来源:Kimi K3 技术报告,Figure 6,第 9 页。

优化器方面,Per-Head Muon 会把注意力矩阵按“头”切开,分别更新,而不是把整块大矩阵一起正交化。不同注意力头负责不同特征子空间,分开处理可以减少头与头之间的尺度干扰。K3 还沿用 K2 的权重裁剪、1% 线性预热、余弦学习率和 0.1 权重衰减。论文没有证明一个新优化器就解决了全部稳定性问题。Per-Head Muon、带下界的衰减、RMSNorm、SiTU-GLU、QB 和权重裁剪共同发挥作用。

原生视觉的价值更多体现在交互过程。网页开发和视频编辑会反复把代码、渲染截图和修改意见放回同一上下文。共享骨干减少了语言模型与视觉模型之间的交接,但视觉编码器仍会受到分辨率、视频采帧和投影压缩的限制。“放在同一上下文”不表示像素细节能无损保留。梯度曲线只能说明训练过程较稳定,不能替代文字识别、小目标、长视频时序和视觉工具误差等专项测试。

Kimi K3 Figure 7,K2 与 K3 验证损失相对训练 FLOPs 的拟合曲线,标注 2.5 倍

K2 与 K3 的 scaling-law 拟合曲线,报告给出约 2.5× 整体 scaling efficiency。

来源:Kimi K3 技术报告,Figure 7,第 11 页。

Kimi K3 Table 1,比较 K2 与 K3 的 61 对 93 层、1.04T 对 2.78T 参数、32.6B 对 104.2B 激活参数及其他配置

K2 与 K3 架构口径表:层数、参数、专家、注意力、上下文和视觉塔。

来源:Kimi K3 技术报告,Table 1,第 11 页。

图 7 要和表 1 一起读。K3 的总参数增加 167%,激活参数增加 220%,层数增加 52%,训练窗口从 128K 扩到 1M,还加入视觉训练。2.5× 曲线比较的是达到相同验证损失所需的训练计算量,不是推理延迟、显存占用或每次请求成本。它能支持“K3 整套方案在作者设置下训练效率更高”,不能证明“K3 服务一定比 K2 便宜”。

7. 1M 上下文:窗口很长,不等于模型用得好

K3 使用 NoPE,也就是不加入显式位置编码。token 的先后顺序由 KDA 的因果递归、衰减、短卷积,以及 MLA 的因果遮罩体现。扩展窗口时,它不需要重新缩放或插值 RoPE。可是,去掉位置编码的外推限制,不代表模型自动学会从一百万 token 中找到证据。训练数据还要包含真正需要远距离取证的任务。为此,团队清理长文档和视频中的重复、损坏、截断、二进制内容与无效日志,并增加稀缺长样本的比例;他们还重排、拼接多模态文档和子任务,制造跨很远位置才能完成的训练样本。

自制 Kimi K3 上下文训练课程图,依次显示 8K、64K、256K 和 1048576 token,并强调有效上下文取决于数据和任务

自制的 K3 上下文课程:预训练从 8K 到 64K,cooldown 再扩到 256K 和 1M。

依据 K3 报告 §3.4。

上下文训练分四段:先从 8K 扩到 64K,在训练收尾(cooldown)阶段再扩到 256K 和 1M。超长序列只占后期一部分预算,比从头到尾都用 1M 训练便宜,也让模型逐步适应长距离依赖。代价是 1M 样本的更新次数较少,模型对不同位置、任务和模态的利用能力可能不均匀。

需要区分三个概念:标称窗口是配置允许的最大长度,可运行窗口是系统实际上能装下的长度,有效窗口是模型真正能利用的长度。BrowseComp 主结果为 91.2,使用了 300K 上下文压缩;不压缩原始轨迹、直接使用完整 1M 窗口时,分数是 90.4。差距虽然不大,却说明窗口更长不一定分数更高。压缩可能误删信息,也可能清掉无关网页、重复观察和工具噪声。在智能体搜索中,压缩策略本身就是推理系统的一部分。评测不能只做“在长文本里找一根针”,还要改变证据位置、干扰信息密度、跨段组合难度和工具日志长度。

百万 token 也会放大错误。一次错误网页抓取、无效终端输出或重复截图如果不被压缩,会一直占用后续注意力和缓存。模型在第十万个 token 处制定了错误计划,也可能把错误状态带到后面的步骤。上下文管理因此同时负责节省窗口、清理噪声和纠正状态。论文报告了原始 1M 与压缩结果,但仍缺少按轨迹长度、证据距离分组的结果,也没有给出压缩误删率。

8. 后训练:九个策略怎样合成一个模型

后训练先做 SFT,也就是用带标准答案或示范轨迹的数据做监督微调。报告称,这些长轨迹由早期 Kimi 领域模型生成,再经过多阶段验证和人工参与标注,最后用 XTML 对话模板统一格式。随后进入强化学习(RL)。任务分成编程、通用和智能体三个领域,每个领域再训练 low、high、max 三档推理预算,共得到九个教师策略。三档预算不是简单的提示词标签。训练会先估计问题需要多少 token,记为 \(b_0(x)\);如果轨迹超过 \(\tau b_0(x)\),任务奖励会被覆盖。逐步减小 \(\tau\),就能训练出更短、更节省预算的策略。

Kimi K3 Figure 8,编码、工具使用、网页开发、搜索、专业工作流、办公交付、图表理解和视觉谜题的 RL 分数与平均步数曲线

RL FLOPs 增加时,多类任务的分数与平均 assistant steps 共同变化。

来源:Kimi K3 技术报告,Figure 8,第 13 页。

图 8 显示,随着强化学习计算量增加,多项任务的分数和平均工具调用步数总体上升。这说明模型学会了执行更长的交互,但不能反过来证明“步骤越多,分数越高”。两条曲线都随训练变化,而且有些阶段并不单调。论文用 token 预算和冗长度控制,限制无意义的长回答。对没有明确自动答案的任务,Agentic GRM 会充当评分模型:它先阅读结果,生成评分标准,再逐项打分并记录依据。只要奖励来自另一个模型,评分标准和长度惩罚就可能被策略利用,这仍是需要警惕的偏差来源。

自制 Kimi K3 后训练流程,SFT 后形成 coding、general、agent 三个域各 low high max 的九个策略,经 MOPD 蒸馏为统一模型

自制的 K3 后训练图:SFT 分化为三域三档 effort 的九个策略,再经 MOPD 合并。

依据 K3 报告 §4.1。

可以把 MOPD 理解为“多教师在线策略蒸馏”。学生模型先按自己的当前策略生成 token,这叫 on-policy,即训练数据来自学生此刻真正会访问的轨迹。随后,系统用对应领域和推理预算的教师模型给每个 token 一个稠密奖励。对领域 \(d\)、预算档位 \(e\) 和当前 token \(y_t\),奖励由教师与学生概率之比的对数计算,并做上下限裁剪:

\[ r_{\mathrm{opd}}^{d}\!\left(y_t\mid e,x,y_{\lt t}\right) = \mathrm{clip}\!\left( \mathrm{sg}\!\left[ \log\frac{\pi_{\mathrm{teacher}}^{(d,e)}\!\left(y_t\mid x,y_{\lt t}\right)} {\pi_{\theta}\!\left(y_t\mid e,x,y_{\lt t}\right)} \right], -R_{\max},R_{\max} \right). \]

\(\mathrm{sg}\) 表示停止梯度,教师模型只提供分数,不参与反向传播。裁剪会限制奖励大小,避免学生偶然生成一个低概率 token 时得到极端优势值。传统离线蒸馏先收集教师的完整轨迹,再让学生模仿;MOPD 则在学生真正访问到的上下文前缀上评分,更容易与“从中间继续生成”的 partial rollout 配合。代价是训练时仍要调用九个教师中的对应模型,还要维护策略版本、缓存和长轨迹状态。报告还提到,更细的 top-k 概率蒸馏没有明显优势。这说明更复杂的蒸馏目标不一定更好。

九个策略把任务能力和推理预算分开训练。编程、通用、智能体使用不同奖励;low、high、max 决定可用 token 数。只训练一个 max 策略,再用提示词要求它简短,模型未必真的会在预算内尽早结束。分档强化学习让每个教师在自己的预算约束下学习行为。MOPD 要保留这九种行为,而不是简单平均九个输出。论文没有给出完整的遗忘对照,因此还不能确定统一学生模型是否会在少数长尾任务上低于专用教师。

K3 在后训练阶段就考虑部署精度。占参数内存最多的路由专家权重使用 MXFP4,激活值使用 MXFP8;注意力投影、潜在空间投影、共享专家和路由器保留更高精度。QAT 是量化感知训练,即训练时就模拟低精度误差。它覆盖 SFT 和强化学习,生成轨迹与训练也使用相同量化方案,以减少训练和推理之间的差异。预训练中的 MTP 多 token 预测层被改成 EAGLE-3 风格的草稿模型,用于推测解码。可见,后训练同时处理能力、推理预算和服务精度,而不是模型训练结束后再临时压缩。

9. 智能体环境:如何保存和恢复超长轨迹

Agentic RL 是面向智能体任务的强化学习:模型不只回答一次,还要反复调用搜索、终端、浏览器或编辑器,并根据结果继续行动。这类训练的瓶颈很快会从损失函数转向运行环境。K3 的任务包括搜索、软件工程、GPU 内核、网页开发、办公交付、视觉反馈和长期助手工作流。任务合成系统先用知识图谱展开领域和概念,再组合相关关键词、检索公开材料,并选择任务类型生成题目。知识图谱能增加冷门主题覆盖,减少生成器反复出相似题目。风险也很明确:图谱可能有偏差,检索材料可能有许可问题,合成题和验证器也可能出错。

Kimi K3 Figure 9,分层知识图谱采样关键词,检索论文博客代码,再选择编码、知识或视觉任务进行合成

知识图谱引导的任务合成:概念采样、材料检索和任务生成。

来源:Kimi K3 技术报告,Figure 9,第 15 页。

系统需要长期保存百万 token 轨迹的环境状态。AgentENV 使用 microVM,也就是轻量虚拟机,隔离不同任务。checkpoint 是保存当前环境快照,耗时中位数约 133 ms;resume 是从快照恢复,约 49 ms。系统还允许分配的虚拟内存超过实际物理内存,最高把可承载环境数提高 6.5×。训练期间累计启动了 51,219,741 个 sandbox(隔离沙箱)。这个数字说明系统运行规模很大,但不代表有 5120 万个互不重复的高质量任务;同一环境可能被重试、恢复或多条轨迹复用。

Partial rollout 指从轨迹中间继续生成,避免每次策略更新都丢掉尚未完成的长任务。外部 KV pool 把注意力缓存放到独立存储中,不再绑定某个推理工作进程。自动限流会根据训练和轨迹生成的压力调整并发量。没有这些机制,GPU 会等待浏览器、编译器和网络,模型版本一更新,未完成环境也容易丢失。许多算法论文只写一句“异步生成轨迹”,K3 则把状态保存、恢复和调度单独展开。这部分对自建智能体强化学习系统很有参考价值。

持久环境还要求版本严格一致。恢复沙箱时,文件系统、进程、浏览器页面和凭据必须与对应的上下文前缀匹配。如果恢复了 KV 缓存,却接上另一个环境状态,轨迹看起来能继续,实际结果却无法验证。轨迹跨过一次策略更新后,还要决定旧策略生成的前缀能否继续使用、奖励应该归给哪个版本。报告公开了快照、调度和隔离方案,但没有给出全部故障率与重放一致性统计。对自建 Agent RL 的团队,这些工程问题往往比选择 PPO 或其他策略目标更影响训练能否稳定运行。

Kimi K3 Figure 12,一个 6144 token 物理块含十二个 512 token hash block,并在 2560 token 边界恢复 KDA checkpoint

KDA checkpoint 与 MLA hash block 分离后的细粒度 prefix cache。

来源:Kimi K3 技术报告,Figure 12,第 23 页。

KDA 和 MLA 保存历史的方式不同,因此前缀缓存也要保存两种状态。MLA 为每个 token 保存压缩后的键和值,可以按较小的哈希块复用;KDA 为每个序列、每一层保存一个较大的递归状态,只能在少数边界做快照。K3 把一个 6144-token 物理块拆成十二个 512-token 哈希块。若前 2560 个 token 命中缓存,系统会复用前五个 MLA 块,同时恢复 2560 位置对应的 KDA 状态,再从这里继续预填充。只有 MLA 命中而没有 KDA 快照,模型状态仍不完整。

vLLM K3 工程图,左侧是每层每序列 KDA fp32 recurrent state,右侧是随 1M token 增长的 bf16 MLA latent cache

vLLM 对 K3 混合缓存的解释:KDA 固定状态与 MLA 逐 token latent 共用一个逻辑 prefix。

来源:vLLM《Serving Kimi K3 at Frontier Scale》,访问于 2026-08-01。

vLLM 在 16× GB300 NVL72 的指定系统上报告约 118 token/s,未使用推测解码;启用 DSpark 后约 370 token/s。推测解码会先让较小的草稿模型猜多个 token,再由主模型批量验证。这个结果说明公开权重能够在主流推理框架上高性能部署,也说明草稿模型明显影响速度。但这不是单卡数据,不能脱离整套 16 节点系统、并行策略、量化方式、请求长度和软件版本直接套到其他硬件。相比单个速度数字,缓存图更有参考价值,因为它解释了传统分页 KV 缓存为何不能直接管理 KDA 的递归状态。

10. 评测、成本和工程案例应该怎样读

K3 报告覆盖编程、智能体搜索、知识工作、视觉、数学和一般推理。主表通常使用最高推理预算,把采样温度设为 1,并为部分模型启用供应商推荐的 agent harness。这里的 harness 是评测执行框架,它规定模型能使用哪些工具、怎样重试和何时结束。不同模型还可能采用不同的失败回退、上下文管理和安全过滤。网络安全过滤会改变拒答率;浏览器、终端、网页解析器和超时设置会改变智能体基准成绩;Kimi Code Bench 2.0 和部分专业工作流又是团队自建或内部任务。因此,不能把所有分数简单拼成一个“智力排名”。

Kimi K3 Figure 13,四个任务的每题美元成本与分数或 Elo 散点图,Kimi K3 用星号表示

四组 score–cost 曲线:Kimi Code Bench 2.0、BrowseComp、GDPval-AA v2 与 AA-Briefcase。

来源:Kimi K3 技术报告,Figure 13,第 32 页。成本按论文当时列出的 API 价格估算。

图 13 同时画出任务成绩和每题推理成本,比单独排列分数更接近实际使用。不过,横轴根据论文采用的 API 价格和 token 消耗计算,并不是购买、运行硬件的全部成本。不同评测框架的工具调用、上下文压缩和失败重试也会改变费用,API 价格还会变化。图中 K3 在部分任务上有较好的分数与成本组合,只能说明它在当时协议和价格下有竞争力,不能推出所有业务都更便宜。

low、high、max 三档会同时改变生成长度、工具调用步数、重试次数和超时率,并非只是在“多花钱换高分”。少数特别长或反复失败的轨迹会形成长尾,平均每题成本容易把它们隐藏起来。智能体产品还需要关心 P95 延迟,也就是 95% 请求能在多长时间内完成,以及失败后能否人工接管、能否从中间恢复。论文已经用曲线展示分数和成本,但仍缺少逐题 token、工具错误和置信区间。

论文末尾展示了 GPU 编译器、I–Love–Q、AI 芯片研究站点、引力波分析和视频编辑等长任务,其中包含两小时生成数千行代码、数千次检索和多个子智能体并发执行。这些案例由模型团队挑选,没有对照组、失败样本分布和独立复现日志,证据更接近工程演示。它们能说明系统做过这类任务,不能用来估计普通用户一次运行的成功率或能节省多少工时。

Artificial Analysis Kimi K3 max 页面在 2026 年 8 月 1 日显示 Intelligence Index 57、速度约 35.9 token 每秒、输入 3 美元输出 15 美元和 1M context

Artificial Analysis 在 2026 年 8 月 1 日公布的 Kimi K3 intelligence、速度、价格和窗口口径。

来源:Artificial Analysis Kimi K3 页面,访问于 2026-08-01。排名、速度、价格与样本数均会动态变化。

这张外部快照显示:综合智能指数(Intelligence Index)为 57,输出速度约 35.9 token/s,输入和输出价格分别为每百万 token 3 美元和 15 美元,页面还标出 1M 窗口和 2.8T/104B 参数。它与论文成本图不是同一项实验。提供商、系统负载、采样设置、测试集版本和平台聚合规则都可能不同。截图只记录访问当天页面显示的结果,不能给 K3 做长期定级。

11. 阅读判断、局限与结论

K3 最有说服力的地方,是把模型结构和系统限制写在同一份报告中。带下界的衰减直接服务于 Tensor Core 计算;Block AttnRes 的块级表示减少流水线通信;LatentMoE 的低维专家减少 GPU 互传和权重读取;QB 用直方图汇总近千个专家的负载;KDA 快照与 MLA 哈希块分离,解决混合前缀缓存。许多论文把计算核、缓存和环境当作实现细节,K3 则明确说明:这些细节会决定模型能不能稳定训练和部署。

我仍对三个结论保持谨慎。第一,2.5× 没有按模块做同数据、同计算量的完整分解,因此只能看成系统级结果。第二,1M 缺少覆盖多类任务、证据位置和干扰比例的独立有效上下文评测。第三,九策略 MOPD 没有给出足够的教师与学生、离线蒸馏和单策略强化学习对照。开放权重会让前两项更容易被外部测试,但第三项依赖未公开的训练环境和教师策略,复核门槛仍然很高。

如果只看“接近 3T 参数的开放权重模型”,K3 很容易被理解成一次规模升级。更准确的说法是:它把百万 token 的模型训练、智能体轨迹和服务状态放进同一套设计。架构先提供长窗口,训练数据教模型使用长距离信息,强化学习让模型在长任务中真正消耗这些窗口,缓存与沙箱再控制系统成本。少了其中任何一环,1M 都可能只剩配置文件里的一个数字。

我的最终判断是:K3 的研究价值不只来自综合榜单,而在于它给出了一组可以分别验证的设计。KDA 的数值范围、AttnRes 的深度选择、LatentMoE 的稳定化、MOPD 的九策略合并和混合缓存,都能被单独实现和测量。权重开放之后,最能改变判断的证据会来自第三方长上下文任务、相同硬件上的服务测试、小规模训练复现和失败案例,而不是更多发布分数。

参考资料