昊梵体育网

Meta的Zhuokai Zhao解析Kimi K3 技术报告:--------

Meta的Zhuokai Zhao解析Kimi K3 技术报告:----------------Kimi K3 技术报告里有大量有趣的内容——下面是我认为要么从未见过、要么确实值得获得更多关注的五个算法侧技术。

1/ 他们开源了模型,却保留了推测解码的草稿模型,这本身可能就是他们的一项实际服务优势。

先给不太熟悉这项技术的读者简单介绍一下:推测解码会将一个大型目标模型与一个小型草稿模型配对。草稿模型低成本地提前提出多个 token,目标模型则通过一次前向传播统一验证这些 token。加速效果取决于接受率,也就是目标模型同意草稿模型提议的频率。

K3 在预训练阶段加入了 MTP(multi-token prediction,多 token 预测)层,采用的是 DeepSeek-V3 风格:在主干网络顶部额外增加一层,用来预测比主 next-token head 更靠后一个位置的 token。从结构上看,这一层与普通的主干网络 block 完全相同。因此,可以把它理解成第 94 层:从预训练第一天起,它就使用完整的预训练语料进行训练,只是预测目标整体向后平移了一位。

后训练完成后,他们冻结目标模型,并将这个 MTP 层微调成 EAGLE-3 风格的草稿模型。EAGLE 系列方法将草稿模型设计成单个解码器层,让它读取目标模型的内部隐藏特征,而不只是读取已经生成的 token 序列。正是对目标模型特征的条件化,使得单层草稿模型仍然能够保持较高准确率。

微调过程也被设计成与实际推理完全一致。推理时,草稿模型会连续提出多个 token,因此从第二个 token 开始,它依赖的是自己之前未经验证的猜测,而不是目标模型已经确认的结果。他们在训练中通过将草稿模型展开 7 步来复现这种条件:第一步使用目标模型的特征,之后每一步都使用草稿模型前面步骤自身生成的输出。

还有两个值得注意的设计选择。

首先,草稿模型会读取目标模型低层、中层和高层的特征,也就是第 1 个、第 4 个以及最后一个 AttnRes block 的输出。它们会被拼接起来,再经过一个初始化为 [0 0 I] 的融合矩阵:低层和中层特征的权重为零,高层特征使用单位映射。因此在初始化时,草稿模型看到的正好是 MTP 层预训练时使用的高层特征;在微调过程中,它才会逐渐学会融合另外两种特征。

其次,他们没有采用通常的 KL surrogate,而是直接最小化接受率本身的负对数。接受率就是整个词表上 min(p,q) 的求和,其中 p 和 q 分别是目标模型与草稿模型的分布。原因在于,对于容量受限的草稿模型,最小化 KL 并不能保证最大化接受率。所有训练都使用了与其服务栈相同的 MXFP4/MXFP8 QAT。

这次发布本身是不对称的:完整的目标模型权重已经放在 HuggingFace 上,但草稿模型——据我了解,包括它微调之前所源自的 MTP 层——并没有公开。这个 MTP 层曾与主干网络一起使用完整的预训练语料进行训练,而外部机构无法获得这些数据。因此,官方服务可以在完全相同的开放权重上获得更快、更低成本的推理。

这是我最近见过的开放权重模型公司中最聪明的商业决策。

2/ 带有部分 rollout 的同步 RL。

同步 RL 必须等待一个 batch 中的所有 rollout 完成后才能更新。由于不同 rollout 的长度可能差异极大,等待所有 rollout 结束会浪费大量算力。

异步 RL 将 actor 与 learner 解耦,因此效率高得多,但 actor 使用的权重会逐渐过时;一个很长的 rollout 可能会比当前策略落后多个 learner step。

K3 采用了一种折中方案:当一部分轨迹完成后,生成就会立即暂停,优化过程马上开始,类似异步 RL。但尚未完成的轨迹会被暂停、排队,并在下一轮迭代开始时使用刚刚更新后的策略继续执行。

换句话说,一条长度达 100 万 token 的轨迹,实际上可能会跨越多个不同的策略版本,像接力一样完成。

本质上,他们用数据陈旧性换取了模型陈旧性:原本应该是同策略的轨迹中,包含了由旧策略生成的 off-policy 前缀。与此同时,他们通过逐 token 的正则化来缓解这一问题,将每次更新限制在当前策略附近的局部区域内。

这是一个在理论上很令人愉悦的权衡。

之所以能在 100 万上下文长度下实现这一点,关键还在于环境侧。暂停模型的 rollout 很容易,但要在一条轨迹中途暂停一个正在运行的 agent 沙盒则困难得多。他们的 microVM 运行时可以在 133 毫秒内对环境进行 checkpoint,并在 49 毫秒内恢复;暂停状态下的沙盒不会消耗 CPU 和内存。

3/ 用多教师同策略蒸馏完成模型合并。

RL 之后,他们拥有 9 个专家模型:三个领域——通用、agent、编程——与三种推理力度——低、高、最高——组合而成。随后,他们通过多教师 OPD(on-policy distillation,同策略蒸馏)将这些模型合并成一个统一模型。

这个想法本身并不新。报告引用的技术脉络与 Thinking Machines 关于 OPD 的文章、MiMo-V2-Flash 以及 DeepSeek-V4 相同。

不过,其中有三个细节很突出。

第一,这是零压缩蒸馏。教师模型和学生模型使用相同的 2.8T 架构;OPD 纯粹是将 9 个 RL 策略折叠进一个模型的机制,而不是把一个大型教师模型压缩成较小学生模型的方法。

第二,OPD 信号被实现成逐 token 的 RL reward:也就是教师模型与学生模型对每个生成 token 的概率之比取对数后再进行裁剪。

因此,蒸馏并不是一条独立的流水线,而是同一个 RL trainer 在使用另一种 reward。学生模型生成自己的同策略 rollout,教师模型沿途为每个 token 打分;前面提到的所有机制——部分 rollout、可暂停的沙盒、逐 token 正则化——都可以直接复用。这正是它能够蒸馏百万 token 级 agent 轨迹的原因。

第三,这是一个负面结果。每一步,学生模型只需从自己的分布中采样一个 token,而 OPD reward 只查看这个 token:教师模型对它的 log-prob。也就是说,每一步只需要一个数。

他们尝试过更细粒度的 top-k 目标,让学生模型在每一步匹配教师模型对候选 token 的更多分布信息,但无论是收敛速度还是最终性能,都没有看到优势。

所以他们最终认为,不需要完整 logits。

4/ RL harness 是随机化的。

他们将统一的 agent harness 表示成一种抽象,其中包含共享的工具接口、系统提示词、上下文管理策略、技能、记忆和子 agent,并可以基于同一抽象实例化 Kimi Code、Claude Code、Codex、OpenClaw、Hermes,或者完全全新的 harness。

在 RL 过程中,不同任务组会动态重新组合 harness 配置,因此模型不会过拟合到某一种工具 schema 或交互协议。

这意味着,harness 泛化能力是一种经过训练的属性,而不是自然涌现出来的属性。如果你曾经在不同 agent scaffold 上评测开放模型,并好奇为什么有些模型迁移得很好,而另一些模型会迅速崩溃,这可能就是其中一个重要原因。

这也符合 Kimi 作为开放权重公司的定位。封闭实验室通常会将模型与 harness 一起发布,并控制整个技术栈;而开放模型会被放进用户已经在使用的各种 scaffold 中——Claude Code、Codex、OpenClaw,或者某个定制的内部 agent。因此,对于开放权重模型来说,harness 鲁棒性更加重要。

有趣的是,他们自己的内部编程 benchmark 甚至显示,K3 在 Claude Code 下的得分略高于在自家 Kimi Code 下的得分。

5/ 每一层全局注意力层都使用 NoPE。

K3 中全部 24 个 Gated MLA 层都完全不使用位置编码。位置信息和近期性信息全部由 KDA 层的门控与衰减机制承担;主干网络中每 1 个 MLA 层对应 3 个 KDA 层。MLA 层则专门负责基于内容的全局检索。

这一设计的收益在上下文扩展时体现得非常明显:K3 在预训练期间将上下文长度从 8K 扩展到 64K,又在 cooldown 阶段从 256K 扩展到 1M,而且完全没有修改位置编码——不需要重新调整 RoPE base,也不需要 YaRN。

混合线性注意力通常被描述为这类架构中的效率组件;但在这里,线性注意力层还承担了位置编码的全部功能。

说实话,这还只是冰山一角。基础设施部分——MoonEP、分位数均衡、KDA 感知的前缀缓存——每一项都值得单独写一篇文章。

整份报告确实非常值得一读。

How I AI