赵晨阳
Thank you. 我接触到的美国 Frontier Labs 里的一些普通员工,确实有部分人会认为,开放权重模型能力上涨,对于 Frontier Labs 的估值有潜在影响。
比如未来很多公司可能会使用 coding agent,但他们不愿意把自己的数据发送给 Anthropic 或 OpenAI 这样的第三方。那如果有一个很强的开放权重模型,或者经过一些针对公司自身场景的微调后,能力能够达到这些公司的需求,同时公司又具备部署开放权重模型的条件,不需要把数据发给第三方,而是直接交给自己部署好的模型,那么他们确实可能会转向使用开放权重模型。这一点有可能冲击闭源模型的营收。
赵晨阳
比较好玩的是,我觉得这个世界上不存在“老老实实做 Transformer”这回事。比如这次的 K3,注意力是线性注意力 KDA 加上全局注意力 gated MLA 的混合,残差被改成了深度方向上的一次 attention,而 FFN 则是压缩空间里的稀疏专家,甚至连位置编码都几乎被删掉了。
这几年的开源模型几乎把每一种可能的部件组合都尝试过。我可以称其为某种意义上的“忒修斯之船”:船板换过了,甲板换过了,龙骨甚至都换过了,但是这艘船的船名没有变。Attention 机制就是我认为的 AI 研究领域的忒修斯之船。
我觉得这次 K3 带给我,以及带给很多人的启发,可能就是我们其实并不需要把 full attention 和 linear attention 理解成二选一的关系。Hybrid architecture 确实是一个很有前景的方向。
权重是一次训练的产物,但是环境能够反复复用,并且产生出下一代权重的流水线。我们得到了 K3 的权重,但是全世界仍旧没有得到如何造出下一代智能模型的那条流水线。
本期是技术解读系列的新一期,会放在“模型力与美”这个合集中。我们邀请了 Radix Ark 创始成员赵晨阳和华盛顿大学博士生曾志远,分别从 infra 与算法两条线拆解 K3:它真的比肩 GPT-5 吗?3T 开放权重、混合注意力和智能体训练环境意味着什么?开源模型真正开放了什么,又保留了什么?
在进入具体的技术报告解读之前,我们也聊了 K3 如今在美国 AI 界和更广泛投资市场中引起的巨大关注,以及与 K3 直接相关的开源大辩论。下面我们正式进入节目。
程曼祺
今天《晚点聊》邀请了两位嘉宾,我们一起来聊一聊 K3。7 月 27 日,K3 刚刚分享了一份 47 页的详细技术报告。
两位嘉宾中,一位是陈阳,也就是赵晨阳,是《晚点聊》的老朋友。他在第 163 期 DeepSeek V4 解读中担任过嘉宾,是 SGLang 开源框架社区的核心贡献者,也是基于 SGLang 成立的创业公司 Radix Ark 的创始成员。陈阳会主要从 infra 的角度来分享,陈阳你可以和我们的听友简单打个招呼,再介绍一下自己。
赵晨阳
我是赵晨阳,非常感谢《晚点》的邀请,可以来跟大家分享一些 K3 推理方面的细节。
我目前就职于一家叫 Radix Ark 的人工智能基建公司,我们也戏称自己的公司为“基数方舟”。其中“基数”,或者说 Radix 一词,其实比较生僻,但是这个词源自目前大语言模型推理领域的一项关键技术,叫 radix tree,这也是我们公司维护的核心项目 SGLang 的起点。
在接下来的播客当中,我也会分享到一些和前缀缓存有关的内容。我们可以看到,K3 相比于之前的模型,比如 DeepSeek V4,在前缀缓存上有一些有趣的变化。
在加入 Radix Ark 之前,我本科就读于清华大学计算机系,之后在加州大学洛杉矶分校攻读博士但中途离开。之前我也参加过《晚点》组织的技术播客,上次分享的是我们开源团队在 DeepSeek V4 模型上的推理加速和强化学习两部分内容。
这一次,正如我所预见的,K3 再次作为中国的顶尖模型引爆了整个硅谷,在海外引发了巨大的反响。所以这次我还是希望从我个人的角度,给大家做一些工程上的分析,也会分享 Kimi 团队、我们公司、AMD、AI 等开源团队一同打造的一些有趣技术。
程曼祺
好的,这次还有一位新的嘉宾、新朋友曾志远。他现在正在华盛顿大学读博士二年级,本科期间也就读于清华大学。志远会主要从算法的角度来分享,和我们一起解读 K3。志远,你也可以和我们的听友简单介绍一下自己。
曾志远
大家好,我是曾志远。本科就读于清华大学计算机系,而且很巧合,我和今天的另外一位嘉宾赵晨阳是本科同系、同届的同学。
我现在在 University of Washington,也就是华盛顿大学读二年级的 CS PhD。我一直主要在学术界做语言模型后训练和评测相关的研究工作。这其实也是我第一次作为嘉宾参加播客,很荣幸可以在《晚点聊》分享我对于 Kimi K3 这样一个出色、惊艳的国产模型的一些理解和想法。
程曼祺
在具体聊 K3 的技术细节之前,我们可以先照例聊一些相对宏观的问题,这样大家也好进入状态。两位可以先讲讲自己使用 K3 的情况,有什么有意思的地方可以分享吗?你们自己使用的感受是怎样的?
曾志远
1. K3 Reaches Frontier Level
我自己一直可以使用能够报销的 Claude Code,所以不太在乎成本。但是 K3 发布之后,我听到身边很多人的评价,确实可以说是好评如潮,所以我自己也试用了一下,简单跑了一些 case。
我个人的感觉是,在大部分场景下,它和 Claude Opus 4.8 的体感相当,甚至可以说更好,尤其是在长程任务上的效果。说白了,就是让模型在一个 agent 框架下长时间持续运行,去完成一个特别复杂的任务,不跑偏,最后能够给用户交付一个满意、相对来说比较满意的结果。我体感上觉得它做得相当不错。
如果非要说有什么美中不足的地方,一方面可能确实有些慢。比如它在做一些相对小的、我希望得到更及时反馈的任务时,对急性子不太友好。当然,考虑到 Kimi 目前有限的计算资源,这也可以理解。
另一点是,我注意到 K3 的技术报告里其实也提到了,在做刚才说的那类长程任务时,因为任务比较复杂,一开始的 prompt 可能没办法面面俱到。任务太复杂了,我自己一开始也想不清楚每一个细节。
那在一些我没有想清楚的地方,K3 会替我做一些决定。但更理想的方式可能是和我做一些探讨,毕竟它替我做的决定不一定是最理想的。我的感受主要就是这些。
程曼祺
那陈阳,你使用的感受是什么?你觉得好用的地方和想提升的地方是什么?
赵晨阳
我有一个比较有趣的角度。K3 发布的时候,我朋友圈里有很多 Kimi 团队的朋友分享了一个非常神奇的网站,叫 Kimi 4399,里面是很多用 K3 生成的小游戏集合,非常有小时候的味道。
我和志远都是 00 后,基本上在我们小学的时候,国内有两个非常主要的小游戏平台,甚至还是用 Flash 的,叫 4399 和 7K7K。Flash 已经停运很长一段时间了,到了今年,我们看到 Kimi 团队用 K3 复刻了这样一个小游戏平台,甚至许多童年小游戏的优化和体验都比小时候流畅非常多。我觉得这是一件很别出心裁的事情。
我们自己团队也用 K3 做了一款小游戏,类似于 Google Chrome 在网络没有连接时会有一个小火龙跳仙人掌的游戏,不过这个小游戏的主角是我们团队的 SGLang Girl,最终达到了 423 tokens/s,大概代表我们团队在那一刻的一个优化终点。当然,到了现在,或者这个播客被听众朋友们听到的时候,这个性能可能已经有更大的提升。
程曼祺
你们那个 SGLang Girl 挺可爱的。我上次去不是拿了一个冰箱贴吗?我现在还贴在家里。也非常欢迎你参加更多活动。
大家普遍的一个反馈是,K3 的前端能力特别好。你刚才提到 Kimi 4399 这个复现小游戏的网站,我觉得也和它的能力有关。Kimi 在 Frontier Code Arena 上一度拿到了第一,超过了当时排名第一的 Claude 4.1。
你可以讲讲吗?它在某项能力上有特长,这种前沿模型之间的差异,一般是什么原因造成的?是数据,还是什么?
赵晨阳
我觉得最直接的答案确实是数据。我们可以回到模型构建过程中的一些流程来看。现在模型训练团队一般会针对不同的细分垂直领域,先建立或者补齐相应的 evaluation,也就是评测,然后围绕这些 evaluation,在 pre-training、mid-training、SFT,以及强化学习,也就是 RL 等不同阶段,有针对性地补齐训练数据和任务。
所以一般来说,我们会觉得一个模型最后在某个非常特定的垂直方向特别突出,很大程度上有一个很重要的原因,就是它在这个方向上的评测和数据做得非常好。
如果我们去读 K3 公开发布的技术报告,其实也可以找到很多痕迹。比如他们在 evaluation 上专门做了 Kimi WebDevBench,它就是专门针对这一类相关问题做的评测。
他们还提到,在 pre-training 阶段大幅扩充了代码和渲染结果相配对的多模态数据,在 post-training 阶段又专门加入了 web development 任务。
还有一点,K3 是原生多模态的,所以它在训练过程中,尤其是在强化学习过程中,可以直接提升这样一种能力:先写代码,写完代码之后看前端渲染出来的 screenshot 怎么样,然后再去改代码。
技术报告里也提到了这项能力,描述是维持一个 loop,也就是让模型在代码和视觉反馈之间持续迭代。
程曼祺
除了你们自己的体感,以及和周围人的交流,大家还有什么对 K3 有意思的评价吗?
曾志远
我周围很多做大模型算法的朋友,其实会关注模型发布之后技术报告里的细节,尤其是各种 recipe 的细节。
我觉得最近技术报告有一个趋势,在 K3 的报告里也有所体现:现在这些报告对于 architecture、pre-training 的细节描述越来越多、越来越清晰,但是对于 post-training 部分的细节给得越来越少了。
这其实也说明,架构和 scaling pre-training 本身的重要性丝毫没有下降,甚至可以说越来越重要。
程曼祺
Post-training 的细节变少,是因为大家本身做得少了,还是因为这个领域大家不想分享太多?
曾志远
我其实也不知道是为什么。
程曼祺
2. The Open Weight Safety Debate
这一次 K3 发布的声势很大,也引起了资本市场的变动,包括美国现在也开始了关于开源的大辩论。我可以先简单讲一下这件事。
大概在 7 月 24 日,有 50 多家公司联名签署了一封公开信,主题是“开放权重与美国的 AI 领导力”。开放权重,大概就是开源大模型的意思。
赵晨阳所在的公司 Radix Ark 也签名了。这 50 多家公司里还有英伟达、微软等,包括黄仁勋,他还专门注册了 Twitter 来转发这封公开信。OpenAI 和 xAI 也都表示支持,但是没有签名。亚马逊和 Anthropic 没有在这件事上发声。
后来 Anthropic 应该就是这周写了一篇文章,由 Dario Amodei 亲自撰写,叫《On Open Models》。文章说,他们不反对开源模型,但是认为某些国家,尤其是中国的开源模型,还是应该受到一定限制。他还专门提到了大规模蒸馏这件事。
可以先讲讲,为什么这次 K3 带来的震动至少在我看来这么大,甚至让部分人感到比较惶恐?
赵晨阳
我觉得用“恐慌”这个词形容这次 K3 在国内外引发的讨论,是比较合理的。K3 的确让我在海内外都见到了巨大的讨论,乃至争执。
这段时间我刷到过非常多的论战。有些论战在讨论开源与否,但我觉得许多研究者真正关心的其实是安全:开源更安全,还是闭源更安全?
我可以举一个具体的例子。前几天,OpenAI 的新模型在评测中发生了很严重的越狱事件。不严谨地说,它直接尝试攻击 Hugging Face 的服务器,以获得评测问题的答案,称得上是为了考试作弊而不择手段地偷盗试卷。
这说明,即便我们试图让模型在追求目标时保持公正和正义,模型其实也会主动寻找规则的漏洞,甚至通过破坏服务器这样的手段来实现目标。
反过来,我这几天也读过 Anthropic 那篇文章的原文。总体来说,他们的主张是:足够强大的模型,不管开源还是闭源,只要提供给公众,就应该经过更严格的安全审查。我自己觉得,他们担心的事情其实非常真切,某种程度上来说,这已经是一个非常恐怖的现象了。
现在这些强大的语言模型,某种程度上是强大的武器。如果被人恶意利用,会有非常恐怖的破坏力。今天即便我们主观上引导一个模型形成正直、向上的世界观,模型都有可能违背人类的意愿去攻击 Hugging Face 的服务器。
那么,真的遇到别有居心的不法分子,他们可能会想办法绕开模型的安全防控,真正利用模型去挖漏洞、攻击我们的网络系统。对于人类而言,这是一种巨大的风险。
我们是否要将这些最强大的模型所具有的能力永远掌握在少数人手中?还是说,因为已经有了大量尖端武器在流通,我们务必要向全人类共享更多的武器?
很遗憾,我不清楚这个问题有没有答案。但是我迫切认为,这是一个需要全社会共同讨论的治理问题,甚至需要某种程度上类似核不扩散条约一样的国际治理框架。
程曼祺
其实你们公司是支持开源模型的,对吗?
赵晨阳
我认为大多数人倾向于在有限度管理的情况下,持续分享领先的前沿智能模型。但我个人不是很赞同把所有事情都开放出去。
程曼祺
3. Open Models Threaten Frontier Labs
这次 K3 引起这么多关注和开源讨论,本质上还是因为它让人看到,开源其实更加逼近闭源了。然后有一种解读是,这会大幅冲击 Frontier Labs,也就是 OpenAI 和 Anthropic 现在的估值。
你们在硅谷、在美国,有感受到这种讨论吗?
赵晨阳
就我接触到的美国 Frontier Labs 里的普通员工而言,确实有部分人会认为,开放权重模型能力上涨,对于 Frontier Labs 的估值有潜在影响。
一个可能的考量点是,未来很多公司会使用模型,比如 coding agent,但他们可能不愿意把自己的数据发给 Anthropic 或 OpenAI 这样的第三方。
如果有一个很强的开放权重模型,或者稍微经过一些针对公司自身场景的微调后,能力能够达到这些公司的需求,同时这些公司又具备部署开放权重模型的条件,不需要把数据发给第三方,而是可以直接交给自己部署好的模型,那么他们确实可能会转向使用开放权重模型。这一点有可能冲击闭源模型的营收。
程曼祺
其实现在已经看到一些趋势了。我们二季度的季报也讨论了这个问题。比如在美国,Fireworks 这样的公司会给一些企业客户部署开源模型,供企业自己使用。
甚至在计算资源上,美国有些大客户也会倾向于不把模型部署在云上,而是自建一些算力,因为在某些场景下,自建算力的成本测算其实更划算。
4. Transformer Keeps Reinventing Itself
除了对 Frontier Labs 的冲击之外,另一种解读是,K3 这一类开源模型因为仍然是 Transformer 模型,也会冲击 AI 领域的“新范式”。所谓新范式,核心机会点在于探索当前主流方向之外的新方向,看能不能找到通向 AGI 的更好方法。
你觉得 K3 的效果会动摇一些人的观念吗?是不是老老实实做一个 Transformer,实际上上升空间还挺大?
赵晨阳
比较好玩的是,我觉得这个世界上不存在“老老实实做 Transformer”这回事。
比如这次的 K3,注意力是线性注意力 KDA 加上全局注意力 gated MLA 的混合,残差被改成了深度方向上的一次 attention,而 FFN 则是压缩空间里的稀疏专家,甚至连位置编码都几乎被删掉了。
这些设计完全不是 2017 年原装 Transformer 的零件。与其说 Transformer 还有空间,不如说 attention 机制是某种接口。它只是规定我们用一个个可微模块,反复混合序列上的信息。
至于我们拿什么算子、如何混合、残差如何连接、FFN 的形状是什么,这些部件的可组合性远比我们想象得好。
这几年的开源模型几乎把每一种可能的部件组合都尝试过了。我可以称其为某种意义上的忒修斯之船:船板换过了,甲板换过了,龙骨甚至都换过了,但是船名没有变。Attention 机制就是我认为的 AI 研究领域的忒修斯之船。
至于 attention 还有多少寿命,以及现在这些新架构会对研究产生什么影响,我觉得可好可坏。
坏消息是,有些研究者可能有一种愿景,希望用其他架构推倒重来,重新讲述整个 Transformer 的故事。我觉得这个愿景可能很难实现。
但从另一个角度来说,优秀组件试图登上忒修斯之船的速度前所未有地快。比如 KDA,从《Kimi Linear》这篇论文到 2.8T 的主流模型,只用了不到一年的时间。
所以如果你的天才之举是对的,你不需要等待一个新的范式,就会有人来收留它。
程曼祺
5. Models Enter Recursive Improvement
现在还有一个比较多的讨论。最近像 GPT-5、Opus 5、K3 这样的进展,给外界传递了一个信号,好像到了一个模型可以自己变得更好的临界点。
模型可以蒸馏一个更好的模型,或者自己蒸馏自己,学到一些高质量的数据,就可以让模型变得更好。有人会觉得,在 Opus 4.8 前后就过了这个临界点。
曾志远
我个人理解,这个问题并不是说存在一个非常神奇的临界点,模型能力突然跨过了这个临界点,而是现在整个模型开发流程已经进入了正反馈阶段。
比如模型可以自己生产数据,或者更严格、更广义地说,参与生产数据,然后让下一代模型变得更好。
具体来说,在一个模型训练团队里,构建高质量数据本来就会涉及各种各样的工作流。随着模型变强,越来越多的具体工作可以交给 agent,尤其是 coding agent。
比如做检索、合成训练任务的一整套 pipeline;生成数据样本,再筛选数据样本的一套 pipeline;搭建强化学习环境;运行评测;分析失败 case,等等。
这个变化不是从 0 突然跳到 1,而是模型团队交给 agent 做的比例随着模型能力提升不断提高。不严谨地说,可能一开始是 50%,后来是 70%、90%、95%,当然这些数字只是我随便举的例子。
还有一点是,有些 pipeline 一开始需要人类逐步拆分,随着模型能力提升,慢慢就可以完整交给模型来做。人类介入的力度也会越来越粗,从定义每一步怎么做,逐渐变成只需要定义更上层、更整体的目标和约束,再加上我们自己的验收方案、验收标准。
尤其是你可以想象,假如我们是 Anthropic 或 OpenAI,内部的研究者也需要使用世界上最强的模型来完成自己的工作流。对我们来说,这些模型可能是开放权重的;对他们来说,则是他们可以直接接触到的模型。
所以自然而然,这条路径中模型参与工作的程度会不断提高。
程曼祺
陈阳有什么补充吗?K3 的技术报告里写过一点:K3 早期 serving 使用的 kernel,甚至可以拿 checkpoint 直接去做 kernel 开发。
赵晨阳
对。早期 checkpoint,就是模型没有完整训练完、只训练到中间阶段的版本,已经能够做这件事了。
而且,早期 checkpoint 用来做 kernel 开发,也会让后面的 checkpoint 训练得更快,这件事非常有意思。
我们在 infra 领域把这个东西叫作 KDA。不过这里的 KDA 不是 Kimi Delta Attention,而是 Kernel Development Agents。
K3 的技术报告重点讲了,如何让 K3 去完成 kernel 优化任务。他们甚至提到了环境设置:任务包括单算子优化和巨型算子融合,覆盖 CUDA、Triton、ThunderKittens、TileLang 等流派,也覆盖 BF16、FP8 和 FP4。
他们设计 reward 的时候有两层,我觉得这个设计非常科学。首先,每个 kernel 都会提供一个 PyTorch vanilla 版本。这个版本一方面作为性能底线,另一方面也作为正确性基准。
如果 KDA 优化出来的 kernel 数值超出一定误差,就会直接被打 0 分。接下来,他们会找专家写一些高性能 kernel,然后比较 K3 模型写出的 kernel 和专家实现之间的分数。
K3 写出的 kernel 越接近硬件的物理上限,reward 就越高。他们也做了一些作弊检测,比如惩罚恶意的 CUDA Graph 重放,也会惩罚我们称为“打表”的输入输出缓存等投机取巧的方法。
所以 K3 最后做 kernel development 的效果非常惊艳。K3 报告里说,Kimi 的早期 checkpoint 已经在承担大量 kernel 优化工作。
kernel 优化其实也是我们最近一直在尝试的事情。首先,SGLang 团队有非常顶尖的 kernel 工程师,我自己认为,他可能是这个世界上最懂 kernel 的那一批人。他非常理解 kernel,也有非常好的 kernel context,现在只需要一个很强大的 AI,来放大他对 kernel 的理解。
他自己在大规模使用 AI 做 kernel 的自主优化,可以说某种程度上,这就是 kernel 领域的 RSI。
当然,kernel 是一个非常具体的事情。为了让 RSI 成立,需要很多前提条件。首先,它的 reward 要准确且便宜。kernel 就有很好的特点:性能和正确性都很好验证;在成本方面,基本上让硬件运行一次就行,不太需要人工成本。
另外,kernel 的作弊方式也比较有限。恰恰因为 kernel 满足便宜、可验证、难以作弊这 3 个条件,所以有了很好的 reward boundary。我们可以让 kernel development agents 在这个 boundary 下很好地自我提升。
所以在有验证器的领域,我认为 RSI 这个 loop 已经在高速运作了。这并不是说模型开始自我进化。我觉得“自我进化”这个词很大,但是在某一个领域、在有限且清晰的边界下完成不断提升,这一定可以实现,而且正在发生。
至于整体上的 ASI,我觉得这还是一个非常久远的挑战。这也体现了我的一个观点:我觉得 ASI 缺乏的真的不完全是模型,而是 evaluation,是 harness。不管怎么叫,我很想把这个东西叫作 Eval。
我在读 PhD 期间,一个很大的研究兴趣就是如何有效评估模型的能力。这也是为什么在 2025 年,大家都在用力猛冲数学和 coding,因为数学和 coding 相对而言更好评估。
比如,假设《晚点》的新闻报道希望让 agent 去写,这个评估其实很主观,因为一篇新闻报道的好坏,需要我认为很有水平的记者才能够评估得很好。
但是 coding 至少在那个时候,比如让模型去做 LeetCode,还是很好评估的。不过随着 coding 使用的组件不断演进,以前可能是做一道 LeetCode 题,现在可能是让模型给一个硕大无比的代码仓库增加新 feature,这件事其实也很难评估。
所以我觉得,现在 coding 的进步会放缓一些。
程曼祺
6. K3 Trades Speed For Capability
前面讲了大家对 K3 的一些比较好的反馈,也可以讲一下集中的吐槽。
一个是这次大家注意到,K3 并不像之前很多中国模型那样走极致性价比路线,所以有人会觉得它比较贵。当然,这也不算缺点,而是一个特点。
另一方面,前面也提到,它目前的使用体感确实比较慢。这也导致一些下游公司,比如应用公司,没有很快把它放进自己的产品里。
这个问题我想请陈阳来分享一下:这个“慢”是什么原因导致的?比较流行的说法是,他们的算力比较紧张。
赵晨阳
很遗憾,在一些模型开放的初期,由于推理,也就是 serving stack 的优化需要一些时间,模型可能会陷入又贵又慢的尴尬境地。
不过就我自己的体感而言,我觉得 K3 的价格和速度都处在合理区间,甚至在价格上称得上优秀。相比同期的其他模型,由于架构上的突破,它的速度还没有达到超越其他模型的状态,但是仍然处在合理且可以优化的范围。
我们可以先说“贵”这个问题。在我们比较在乎的 agent 场景下,成本有两种衡量方式:第一是价格上标出的每百万 token 单价;第二是完成任务的总成本。
坦诚来说,如果需要使用 K3,显然是要完成一些非常高难度的任务。这种情况下,完成单个任务的总成本才是有意义的成本口径。
在长程任务里,不同模型完成同一个任务时消耗的 token 数量,差距其实非常大,远远大于单价之间的差异。一个单价比较便宜的模型,可能会绕一倍甚至 10 倍的弯路,这样肯定会让单价更便宜的模型变得更贵。
我看过 K3 的技术报告,他们分享了一些比较有趣的成本结果。比如在 Kimi CodeBench 2.0,也就是他们自己内部的一套 coding benchmark 上,K3 的分数比最强的那些模型低 4.0 分,但是成本只有对方的 38%。
K3 在 high effort 档位上,已经追平了其他头部模型 maximum effort 档位的分数,而成本还是只有大概 30%。
还有一个 benchmark 叫 BrowseComp。K3 在这个 benchmark 上拿到了非常好的分数,而且单个任务的成本也相当低,可能仍然是其他公司模型的 30% 到 50% 这个区间。
当然,“贵”肯定是对于消费者而言的。对于有些公司来说,如果公司自己有计算资源,可能会选择自己部署和 serving,这个成本就非常难衡量了。存储、电力、水冷等成本,其实都很难纳入考量。
所以仅仅从官方 API 来看,我认为 K3 的性价比是非常好的。
曾志远
我补充一下。K3 官方定价是,输入每百万 token 在缓存命中的情况下是 0.3 美元,未命中的情况下是 3 美元,输出是 15 美元。
这确实比之前的中国模型贵了很多。作为对比,DeepSeek V4 输入每百万 token 在缓存命中的情况下是 0.04 美元,未命中是 0.44 美元,输出是 0.87 美元。
我知道很多应用里跑得最多的应该还是 V4。当然,刚才陈阳也说了,这不是只看标价,而是要看完成任务的总体消耗。
程曼祺
可能还有一个角度:人类对智能上限的需求是无穷大的。现在这些应用还没有足够大的想象空间,需要使用 K3 这种规模的强大模型。
还有一个点,可以讨论一下“慢”的问题。就我的从业经验而言,模型发布后第一时间能够提供的速度,反映的应该是这个模型的架构有多新、serving stack 有多难。
至于架构本身有多慢,这件事其实不本质。对于 Kimi 或 DeepSeek 这样的顶尖模型团队而言,他们的架构设计早就充分考虑了 serving 和 training 的效率。后续一段时间,这部分成本一定可以通过工程优化打下来。
赵晨阳
在推理领域,我们一般把用户体验分成 3 个指标。
第一个是首 token 延迟,也就是发送请求之后,多久能收到第一句话的返回。第二个是单个用户的 decode 速度,也就是已经开始收到模型回复之后,两个词之间的间隔有多大。第三个是队列等待时间,因为显然并不是只有一个人在使用模型,Kimi 后台可能同时收到成千上万的请求,整个队列的流通速度是怎样的。
这 3 个指标的成因并不完全相同。我可以分享两点,这也可以解答我觉得 Kimi 现在算力大概是什么状况。
首先讨论首 token 延迟。这主要是一个前缀复用问题,不算严格意义上的算力问题。刚才曼琪也提到,现在模型的价格通常会区分前缀命中和未命中。
语言模型推理中一个非常普遍的技术叫前缀复用。我可以举两个例子:A 用户发给 Kimi,“今天你去超市买香蕉吗?”B 用户发,“今天你去超市买酸奶吗?”这两句话其实有公共前缀,“今天你去超市买”这几个字就是两个请求的前缀。
在现在的大语言模型推理范式下,这个前缀可以被复用,公共前缀不需要在每次推理过程中重复计算。
K3 的报告中也体现了他们对于前缀复用的看法。一个典型的 coding 场景可能带有 40 万 token 的前缀,是很多用户会共同使用的。真正需要计算的增量部分,每次可能只有 4,000 个 token。
用户提交的新请求在前缀命中和不命中的情况下,所需要的计算量会差出很多个数量级,这也会体现在成本、用户返回速度以及首 token 延迟上。
基本来说,前缀复用是决定首 token 延迟最重要的因素,绝对算力反而是次要的。
程曼祺
7. Prefix Caching Gets Complicated
当然,另一个角度是,为了支撑 K3 上百万的夸张上下文长度,它选择的 hybrid 架构也让前缀复用的难度有所提高。
赵晨阳
传统意义上的 KV cache,术语叫 append-only,换句话说就是只增不减。前面的前缀算完之后就不会再变了,这个前缀不可能被其他请求改写。
但是 Kimi 采用的 Kimi Delta Attention,也就是 KDA 架构,简单来说,会在前缀树上驻留一块针对每个 token 反复覆盖读写的固定大小缓存。它不再是在以往的前缀树上继续向后添加。
举个比方,通常的前缀树可能是一本只往后写的笔记本。你每次从后往前撕一页给别人,然后继续写,相对比较简单。
但是 K3 的 attention 架构可能更像一块反复擦写的白板。你要改写前面的内容,难度就很大。
K3 自己的报告里也讲了一些相关内容,包括把前缀的哈希粒度和物理块的分配粒度做一定程度的解耦,试图让哈希值落在 512 个 token 这样的小块上,但是 KDA 的 checkpoint 会落在哈希端点的稀疏子集上。
这听上去非常 technical。我们团队也会借鉴并做一些其他优化。在 SGLang 里,我们会想办法让这块反复读写的状态能够安全地跨请求共享。
举个例子,第一个请求正在读取一块前缀,第二个请求会稍微改写那个前缀。如果这时有第三个请求想读取这块将被改写的前缀,就会涉及一些安全性问题。
你不可能在别人读取时直接把这块内容改掉,否则读出来的内容会崩溃。最糟糕的情况是,你不可能边写边读,因为这样可能前一半是正确的,后一半就是错误的。
这里会有很多技术上的考量。具体来说,我们会使用一些很有意思的词,比如 copy-on-write、snapshot 和 donate,这些词都来自操作系统中的原语。
这部分优化很深入。对这方面感兴趣的朋友,可以参考我们 SGLang 团队的技术博客。
程曼祺
8. Open Source Hides Its Moat
回到开源这件事本身,包括最近美国关于是否要限制开源的讨论。从技术上来说,开源之后的模型是怎么样的?它能被限制吗?
赵晨阳
这绝对是不可逆的,有点类似于大家读《三体》时的情节:地球坐标一旦被广播出去,就不可能收回,你没有任何方式销毁已经公布出去的物理信息。
开源也是一样。权重一旦发布,就是一串可以被批量复制的文件。而且开源不只是下载一份权重这么简单。社区可能会做大量镜像,有些公司拿去做量化,有些公司拿去做微调,微调之后衍生版本的数量会指数级增长。
所以“下架”对于已经开源出去的模型根本不成立。
另一个角度是政策层面:开源模型该不该受到限制?正如我说的,我对于未来开源模型的走向很迷茫。现在已经有大量公开的强大模型在流通了。
程曼祺
你觉得再往下,开源模型逼近闭源的时刻,会不会有人在模型强到一定程度之后走向闭源?
赵晨阳
这个开源接近闭源的时刻,我个人感觉其实很模糊。开源接近闭源,我们要怎么衡量这件事?
模型只是整个 AI 生态链的一小部分。事实上,模型产业的上游可能有数据、硬件,下游还有分发渠道,以及推理服务等环节。
我的一个观察是,模型本身在 AI 产业链上的比重正在下降。这次 K3 的开源也让我们看到,K3 开放了权重,包括 MoonEP、Flash-KDA、AgentEvo 这些基础设施也开源了,之前做的 MuonClip 也开源了。
但是他们的 RL environment 没有开源。他们在报告中提到过一个用于自我演化的知识图谱任务系统,这个也没有开源。包括他们说 K3 是一个 expert merge,对吧?那些原始专家的 checkpoint 也没有开放。
这些不开放本身并不存在问题,因为现在行业内的开源公司也很少会真正开源 RL environment,这些东西开放出来可能也有很多安全风险。
但我觉得,没开放的部分才是这些公司的深层护城河,而这个护城河很大一部分来自环境。权重是一次训练的产物,但是环境是能够反复复用、产生出下一代权重的流水线。
我们得到了 K3 的权重,全世界都可以得到这一代模型的智能,但是全世界仍旧没有得到如何造出下一代智能模型的那条流水线。
开放权重只是缩小了顶尖闭源模型和开源模型之间的能力差距,但我们并不确定,顶尖开源模型和顶尖闭源模型之间的迭代速度会不会缩小。
比如,假设国内模型大概需要 6 个月发布一个新版本,但 OpenAI 可能 3 个月就发布一个。当然,我其实不太确定现在国内模型的开放速度是什么样。
模型迭代的循环需要环境、验证和算力,这 3 样东西已经超出了权重。如果这些东西全部达到完全开放的状态,我觉得开源超过闭源就是必然。
但很遗憾,现在还不是这个样子。
当然,我们公司主要维护的开源推理引擎也是为开源模型服务的,所以我们当然希望开源模型越多越好。这是我的一些观点。
程曼祺
开源是否逼近闭源,本身这个结论就是要打问号的。
开源一直以来被认为有一个弊端:用户部署你的模型之后,比如自己部署而不是使用官方 API,你就无法拿到用户数据。而在闭源生态里,OpenAI 和 Anthropic 可以通过 API,以及他们自己拥有大量用户的应用,获得真实环境、真实场景中真实用户的高质量 prompt。
总结而言,你们心中的 K3 是一个怎样的成果?
曾志远
我个人觉得,从公开发布的模型来看,K3 作为首个达到 3T 级别的开放权重模型,毫不夸张地说,是一个里程碑级别的成果。
从历史发展的角度看,开放权重模型的规模从数百 B 级别,到后来 1T 以上,再到今天的 3T 级别,确实是非常振奋人心的进展。我个人非常期待看到开放权重模型继续向上 scaling。
K3 发布之后,我看到 Kimi 联创周星宇在朋友圈分享的一条转发语,写的是:“Have faith in scaling and RL。”
程曼祺
9. Inside The K3 Architecture
下面我们来聊 K3 具体技术报告里的细节技术改进。这份报告是 7 月 27 日刚刚发布的。可以先说一下,K3 在架构上的整体思路是什么,亮点是什么?
曾志远
我自己理解,K3 架构的整体思路,是同时把语言模型处理信息时,信息在不同方向上的流动做得更加高效。
比如在序列方向上,它使用 KDA 和 gated MLA 的 hybrid attention 结构,也就是混合注意力结构。在大部分层里,它用更低的成本处理上下文,同时周期性地保留全局 attention。
在深度方向上,它使用 Attention Residuals 这样的技术,让后面的层可以选择性地读取前面层的表示。
如果让我挑一个比较关注的亮点,我觉得 NoPE 是很有意思的技术。具体来说,K3 没有使用显式的位置编码,也就是 positional encoding。
至少从公开的技术报告来看,像同期的 DeepSeek V4、GLM 5.2,包括 MiniMax M3,后面这些模型其实都还保留了 partial RoPE,所以这个选择比较特别。
当然,模型不用位置编码,并不代表它不知道 token 的先后顺序。具体来说,在 KDA,也就是 Kimi Delta Attention 中,它在更新 recurrent state 时,以及其中的 gating 和 decay 机制,本身就对顺序敏感,已经隐式编码了 position 和 recency 等信息。
这里还需要提到一点:现在训练长上下文模型,比如达到百万级上下文的模型,一个常见做法叫 progressive context extension。K3 其实也是这么做的。
具体来说,pre-training 时我们可能先训练 8K,再扩展到 64K,后面的阶段逐渐扩展到 256K,最后达到 1M 级别。
NoPE,也就是不使用显式位置编码,直接的好处是,我们在扩展 context 时,位置编码这一层少了一个需要单独处理的环节。比如使用 RoPE 的话,可能要重新调整 RoPE 的 base,或者做 RoPE interpolation。
NoPE 也不是 K3 首创的,Kimi Linear 其实已经采用过。K3 比较 impressive 的一点,是把整套设计 scale 到了 3T 的级别,并且成功支持了百万上下文。
程曼祺
Kimi Linear 是去年下半年发布的参数量比较小的模型。我觉得它当时是在尝试一些 K3 里可能会用到的新技术,包括 KDA,也就是前面提到的 Kimi Delta Attention,以及 Kimi 的线性注意力和全局注意力混合方式,K3 里也都用了,这些技术也是在 Kimi Linear 里提出来的。
其实 RoPE 最开始是苏建林提出的,这一点也很有意思。就像我们之前聊 V4 时,后来 V4 没有使用 MLA,这也是 DeepSeek 给业界的一个重要贡献。
苏建林也是 Kimi 的核心研究员之一。这次 K3 还是一个 MoE,也就是混合专家模型。其中一个重要问题就是路由专家的分配。这次 K3 提出了 Quantile Balancing,也就是分位数路由均衡。
志远可以来说一说,它解决了什么问题?Kimi 自己说,它解决了 MoE 模型在大规模训练时容易崩溃的问题。也可以讲讲为什么以前的方法比较容易崩,这个改进是 K3 能够训练到接近 3T 的关键之一吗?
曾志远
它可能会崩溃的这个问题,我觉得本质上是专家负载均衡,也就是 expert load balancing。
具体来说,MoE 这样的混合专家模型中,每个 token 每次只会选择一部分 routed experts 激活。我们希望从全局来看,各个专家被选中的频率大致相当。
否则,一些专家如果得不到足够的 token 和梯度,训练就不充分,无法充分发挥这些专家参数的容量。另外,如果有些专家收到的 token 太多,对 inference 也不是特别友好。
针对这个问题,早期一个普遍做法是在 MoE 模型训练的 loss function 里加入 auxiliary load balancing loss。核心思想是用额外的 loss term,鼓励不同专家的选中频率更加均匀。
这个方法整体来说比较有效,但是加入 balancing loss 之后,就需要在模型质量和负载均衡效果之间做权衡。如果存在这样的权衡,它经常可能成为训练不稳定的罪魁祸首。
DeepSeek V3 的一个重要改进,是把上面这种通过添加 loss 来做专家负载均衡的方法,替换成了 bias update。
具体来说,我们选择 expert 时,是通过一个神经网络,也就是 router,给每个专家打 routing score,再根据分数选择 expert。我们给 routing score 加上一个 bias,然后在训练过程中观察:如果某个专家过热,就把它的 bias 调低;如果过冷,也就是接收到的 token 太少,就把 bias 调高。
这个 bias 只影响选择专家的机制,所以不需要额外的 loss 去改变训练目标。
但是 V4 这类方法对 bias 的更新是固定步长的。也就是说,每次给 bias 加上或减去一个常数。每一步我们只知道某个专家是更频繁地被选中,也就是过热,还是过冷,然后按照固定步长向上或向下调整。
所以这里仍然需要调节步长这个超参数。
这次 K3 提出的 quantile balancing,实际上会直接应用 router 分数的分布,估计应该做多少调整。
比如在 K3 里,大概是每个 token 从 896 个 routed experts 中选择 16 个。我们先看当前 token 加上当前 bias 之后,排在第 17 名的分数。这个分数可以被当作进入前 16 名的门槛,分数最高的 16 个就是最终被选中的专家。
对于某个专家,我们可以观察它在整个 batch 中距离每个 token 门槛还差多少。直观地想,如果我们给一个专家的 routing 分数加的 bias 越大,它能够跨过门槛的 token 就越多。
所以,我们可以根据这些差值的分布,直接计算出一个新的 bias,使得相对于当前这批 token 的门槛,大概有 16/896,也就是相当于均衡比例的 token 会选择这个专家。
这个新的 bias 在当前 step 计算,然后从下一个 step 开始使用。这样就不需要像 DeepSeek 的做法那样,设定一个固定的更新步长。
对于 K3 来说,主体专家接近 1,000 个,每次又只选择 16 个,确实是非常极端的稀疏。可以猜想,要稳定、有效、快速地保持负载均衡,会变得更加困难。
所以我个人猜想,这确实应该是 K3 能够成功 scale 到 3T 级别的一个重要因素。
程曼祺
是不是在 V4 里,路由的改进更多是知道一个专家的性质,比如判断它是过冷还是过热,但没有那么精细到量?而 K3 的改进是更精细地量化,知道它过热到什么程度,或者过冷到什么程度?
曾志远
对,我觉得这两个设计的思路不太一样。DeepSeek 当时的思路更像逐步调整,到了 K3,它更像是直接使用 history information,估计当前 bias 多少比较合理,下一步直接加上这个 bias,不再一步一步地调整。
我个人觉得两种方式各有优劣。最后说白了,还是看实验跑出来哪个效果好,就使用哪个。
程曼祺
接下来讨论一下具体模块。你会发现,这些模块和我们当时讨论 V4 时也有相似之处,包括注意力、残差、优化器等。我们可以先从注意力开始。
前面已经多次提到,这次 K3 使用了 KDA,也就是 Kimi 之前提出的一种新的注意力方式。V4 是 3 种注意力的混合,总体是稀疏注意力优化的方向。K3 使用的 KDA,也就是 Kimi Delta Attention,是线性注意力和全局注意力的混合。
之前在第 143 期节目里,我们也和 DeltaNet 的核心作者之一杨颂林专门聊过线性注意力模型。大家如果想了解背景,也可以去听之前的节目。
K3 这次直接在这么大的规模上使用线性注意力,应该是一个比较大、也比较激进的改进。它的好处是效率提升很明显,但一般来说,大家会认为线性注意力在效果和性能上可能有一些损失。
志远你可以讲讲,K3 这次使用的 KDA 是什么样的改进?它给业界的启发是什么?它如何平衡以前大家认为的线性注意力弊端?
曾志远
我个人觉得这是一个比较大的进展。
K3 的路线是让大部分层使用更高效的 linear attention,也就是 KDA,同时周期性地保留 gated MLA。gated MLA 用来提供对所有历史 token 的直接、全局的 attention。
最后,它相当于把接近四分之三的 attention layer 都替换成了 KDA,也就是一种 linear attention 的实现,同时做出了一个 frontier-level 的模型。
这套混合架构此前其实已经在 Kimi Linear 中验证过,但当时模型总参数大概只有 48B、50B 这个级别。K3 相当于直接把它放大到了接近 3T,总参数规模放大了大约 60 倍,这是一个非常大的进展。
比如此前的 Qwen 3.5 是大概 400B 的模型,也同样采用了 3 层 gated DeltaNet 再配 1 层 gated MLA,也就是 3:1 的设计。
K3 进一步把这种以 linear attention 为主、周期性保留 global attention 的 hybrid attention 架构,直接 scale 到了接近 3T 的规模。
这里值得一提的是,DeepSeek V4 走的是另一条路线。它没有使用 linear attention,而是在 softmax attention,也就是传统 attention 的框架内,通过 KV compression 和 sparse attention 这样的 hybrid 方式提升上下文效率。这是两条不太一样的路线。
所以我觉得,这次 K3 带给我以及很多人的启发,可能就是我们不需要把 full attention 和 linear attention 理解成二选一的关系。Hybrid architecture 确实是一个很有前景的方向。
简单来说,不同的 attention 可以承担不同功能。大部分层追求效率,少部分层保留一个高容量的全局 attention,保留 global interaction。
K3 已经有效证明了,这套方案完全可以 scale 到接近 3T 这样非常 frontier 的规模。
程曼祺
我想补充问一下,它现在 3:1 的混合比例,也就是 3 层线性注意力混 1 层全局注意力,是怎么决定的?
去年我和颂林聊线性注意力时,因为实际上大家使用的线性注意力一般都要混合全局注意力,他当时跟我说,怎么混主要是靠经验、靠实验。那现在有更多理论方法或者总结出来的规律,来指导怎么混合吗?
曾志远
从公开资料来看,这个比例的决定本质上应该还是 empirical,也就是靠实验。
之前 Kimi Linear 专门在一个 16 层的小模型上,也就是前面提到的 48B 模型上,比较了不同的配比。他们当时的结论是 3:1 在测试集,也就是验证集上的效果最好,perplexity 指标最好。
1:1 的效果基本一样,但是 full attention 更多,推理成本也就更高。所以 K3 基本沿用了 3:1 的比例,最后再额外加一层 gated MLA,保证整个模型的最后一层一定是 global attention。
程曼祺
你说 1:1 的效果一样,是说效果一样好?
曾志远
对,效果比较接近,但是因为 full attention 更多,所以效率更低。
K3 的报告并没有说,他们在接近 3T 的规模上重新扫描过各种比例,毕竟可以想象,这肯定非常贵。
一般来说,在模型训练团队里,这种特别昂贵的 ablation study,尤其是 architecture ablation study,都会先在小模型上做,然后再沿着 scaling law 去验证整套 architecture 和 recipe 能不能稳定放大。
K3 确实也做了一些整体的 study,但主要验证的是整套 K3 recipe,而不是把每个细节单独拆出来。
所以,3:1 到了 3T 不一定百分之百是最优解,但是作为整体设计的一部分,从结果看,它已经非常成功地 scale 上去了。
程曼祺
接下来的问题是,K3 是一个百万上下文模型,上下文非常长。在这么长的上下文里,它是怎么解决以前线性注意力可能存在的遗忘问题的?
曾志远
这是一个很好的问题。我们先把“遗忘”说得更准确一点。
Linear attention 在设计上一般被认为存在 trade-off:它会把任意长度的历史压缩进一个固定大小的 recurrent state。比如在 K3 的 KDA 层里,好处是 cache 和每一步的计算不会随着上下文长度持续增长;代价是不同信息会在有限状态中互相干扰。
特别早的、特别细节的信息可能会被覆盖。问题的根源在于,这种 compression 使用的是固定 state,本身存在容量瓶颈。
当然,KDA 作为 linear attention 的一个 variant,也使用了一些技术把这件事做得更聪明。比如 delta rule、channel-wise forget gate 等。
简单来说,它每次可能先看 memory 已经预测出了什么,然后只写入预测时产生的偏差;同时,不同 channel 可以学到不同的保留时间。
除此之外,K3 还给每一步的 retention factor 加了一个 lower bound。技术报告中有一些相关分析,感兴趣的朋友可以自己看。直觉上,这可以限制过于激进的顺序遗忘。
但前面说了这么多 KDA 的聪明设计,我觉得它们更多是管理有限 memory 的手段,并不会从根本上消除容量瓶颈。说白了,经过多步累积之后,信息还是会衰减。
所以我个人感觉,K3 解决百万上下文级别遗忘问题的真正答案,还是 hybrid 结构。
就像前面说的,每 3 层 KDA 会加入 1 层 gated MLA,最后一层也一定是 MLA。MLA 是 global attention,会保留和所有历史 token 的 global interaction。
模型并不需要让 KDA 把百万级别的每一个 token 细节都压缩到 recurrent state 里,因为这本来就很困难。MLA 提供了 global interaction,这应该是缓解遗忘非常关键的一点。
程曼祺
其实比较早的时候,MiniMax 的 M1,在 2025 年年初,也做过这种混合方式,后来又换回了 full attention。思路是一样的,但是效果不一样。
我个人觉得,很多时候做这些事情的 bug 主要还在 execution,也就是执行层面。有东西能做,不代表一定能做好;做不好也不代表这条技术路线本身没有意义。可能是具体实现时,数据不一样、infra 不一样,很多小细节不同,最后的效果就会非常不一样。
注意力结构的变化也会带来 infra 上的变化。陈阳,正好可以 call back 一下。我们上次讨论 V4 的时候,也讨论了稀疏注意力和线性注意力这两种改进方式。
你当时提到,线性注意力的理论优势可能还要等几代真实的大模型验证。现在可以说,K3 已经验证了线性注意力的一些理论优势吗?包括这种新的注意力结构,会给 infra 带来哪些影响和变化?
赵晨阳
我觉得我之前的判断还是很有道理的。我可以诚实地更新一下判断,也欢迎大家再听一遍之前《晚点聊》讨论 DeepSeek V4 的那一期节目。
我当时提到两件事:第一,线性注意力的理论优势需要几代真实的大模型来验证;第二,稀疏路线在工程上更可控,和现有的 KV Cache、Prefix Cache 等基础设施兼容性更好。
首先,K3 对线性注意力路线的验证,实际上每次有新的大模型发布,我的朋友圈都会围绕线性注意力还是稀疏注意力吵成一片。我觉得非常有意思,无论是做 infra 还是做算法,可能都有这种感受。
K3 毫无疑问是对线性注意力的一个有效证明。它是一个 2.8T 的主线模型,而且使用 NoPE。K3 的 MLA 层完全不用额外加入位置编码,位置信息全靠 KDA 的递推、门控和衰减来提供。
这样它扩展到百万 token 时,不太需要重新调整类似 RoPE 的频率、底座等,也不需要像 YaRN 一样专门做插值,外推起来非常自然、流畅。这个设计和效果当然非常好。
然后,关于我说稀疏注意力在工程上更轻松,这个看法也没错。
这段时间,我们 SGLang 团队也花了很大精力,尝试把线性注意力需要的 recurrent state 纳入已有的 prefix cache 体系中,让 K3 这种 hybrid KDA-MLA 模型的前缀复用能够达到和全注意力模型一样的通用性。
长期来看,线性注意力和稀疏注意力兼容性差这件事,可以逐渐被工程弥补。当然代价是,我们的抽象会比以前复杂一些。
另一个角度是,线性和稀疏也不是一个二分问题。K3 选择了 3:1 的混合,每个 block 是 3 层 KDA 加 1 层 gated MLA,overall backbone 最后还会额外有一层 MLA。
线性部分靠 KDA 提供位置敏感的序列信息,全局部分靠 MLA 提供不受限的内容交互。这个模型也体现了这种异构设计的强大。
所以我没有说哪一种一定会胜出。我更愿意相信,任何能够在百万上下文水平上,把 KV cache 的传输成本、prefill 的一次性成本,以及 routing 成本压下来的架构,大概率都是异构的。
而异构的模型架构,对于 SGLang 推理框架来说,需要持续维护多种形态和生命周期的 attention 抽象架构。这是一个巨大的工程考验,也是我们团队工程能力的体现。
程曼祺
我觉得挺好的。事情越难,工程工作就越多,你们做的工作越多,价值也越多。希望如此。
KDA 是线性注意力和全局注意力的混合方式,理论上加入线性注意力之后效率会提升。这个也可以讲讲,比如你们在做适配时,观察到它的效率提升有哪些?是不是比较惊人?
赵晨阳
K3 自己的技术报告里提到,在百万 token 上下文场景下实现了 6.3 倍的 decode 加速。
不过严格来说,6.3 倍这个数字不是 K3 报告里的严谨值,而是更早的《Kimi Linear》论文中的数据。不严谨地说,在同样的模型规模下,以线性注意力为主的混合架构,相比传统全注意力架构,在百万 token 的上下文量级上,生成 token 的速度是全注意力架构的 6.3 倍。
6.3 倍是一个非常可观、甚至令人惊讶的数字。
我可以简单解释一下。模型的 decode 阶段,每吐出一个 token,都必须把整个请求的全部历史上下文读一遍。全注意力架构的历史是整个 KV Cache,它会随着上下文长度线性变长。
百万 token 的 KV Cache 长度,近乎是一万个 token 的 100 倍。上下文越长,后面的 token 开销越大。
线性注意力则试图把请求的历史信息压缩到一个固定的 recurrent state 中。百万 token 和 1,000 token 的线性注意力 recurrent state 几乎一样大。
我也分享一些 SGLang 团队为 K3 设计的推理栈实际数字,给大家提供直观体验。
K3 是 69 层 KDA,后面应该是 24 层 MLA。69 层 KDA 给一个请求分配的历史信息大小基本固定在 54MB,不论上下文长短。
这 24 层 MLA 是全局注意力,会为每个 token 额外分配 27KB。所以,一个百万上下文长度的请求,在 MLA 上的开销大概是 27GB。
听上去是 54MB 加上 27GB 的组合,但如果前面 69 层也是全注意力,那就不是 54MB,而是额外的几十 GB。
KDA 和 MLA 的组合节省下来的存储大小,会进一步反映到 KV Cache 的搬运成本上,某种程度上让整个推理速度快 6.3 倍。
程曼祺
最后一个问题,什么情况下这 6.3 倍的提升体现得最明显?
赵晨阳
毫无疑问,是长程的 agent coding。如果每一个 agent coding 请求都消耗上百 GB 的 KV Cache,最强大的 HBM 缓存也撑不住几十个请求。
程曼祺
除了 KDA 这个新的注意力机制之外,这次 K3 的另一个新东西是 Attention Residuals。这也是他们之前发布的成果,今年春天发布时,马斯克还转发过。
我觉得它用到 K3 上的速度非常快。
赵晨阳
我补充一点。我了解到,在做 Attention Residuals 时,差不多正好是 K3 定版的同期。所以当时要不要直接把这个东西放到 K3 上,还是放到下一代模型,内部其实有过一些讨论。
后来杨志林拍板,直接把它放到了 K3 上。它是一个非常快进入主线模型的成果。
程曼祺
我们上次讨论 V4 的 MHC 时,也讨论到 Kimi 的 Attention Residuals 和它有一些异曲同工之处,想追求的效果是一致的。
先请志远给大家简单介绍一下,Attention Residuals 是什么?它的作用是什么?它在模型里的哪一个模块或者哪一层发挥作用?
曾志远
Attention Residuals 主要解决的是模型从浅到深方向的信息流问题。
最早、最标准的 residual connection 展开之后,当前 layer 看到的内容,本质上是 embedding 加上此前所有更浅层 layer 的 output,而且每一项的权重本质上都是固定为 1 后直接相加。
随着模型越来越深,residual stream 的大小会不断增长。这会导致什么问题?每次新来一个 layer,新写进去的信息会逐渐被稀释。
同时,对于后面更深的 layer 来说,它没有一个直接机制去选择自己更需要前面的哪一层,或者哪些层的 representation。
Attention Residuals 的想法非常直观:把正常的 attention 旋转 90 度。
正常的 attention 是在 token 之间计算匹配分数,然后进行选择。Attention Residuals 则是在 layer 之间做选择。
每一层都有一个可以学习的 pseudo query,这个 query 在所有 token 之间共享。它会和当前 token 在不同深度上的 representation 做匹配,然后通过 softmax 等机制,决定应该从哪些更浅、更靠前的层读取信息。
虽然 query 本身是固定参数,但不同 token 在各层的 representation 不一样,所以最终 attention 的权重仍然会随着 token 内容变化。
这就是 Attention Residuals 的基本原理。
程曼祺
之前 V4 那期节目也聊到过 MHC 和 Attention Residuals,它们想追求的效果是相似的。刚才你也提到,K3 的整体思路是让信息在不同方向上的流动都更有效率,Attention Residuals 解决的就是层之间的信息流动。
回到这两种方法上,志远你觉得它们的潜力有什么区别?哪一种更高?
曾志远
它们肯定都是想解决同一个大的问题:标准 residual connection 在深度方向上的信息流过于单一。
当然,两种方法的思路非常不一样。这里可以宏观、直接地说一下。
MHC 的做法大概是维护多条并行的 residual stream,而不是原来的一条。每一层先动态地把这些 stream 混合成这一层的输入,再把这一层的输出分发回不同的 stream。
这里还有一些实现上的设计细节。比如它们会对 residual mixing 加上一些约束,保证信息和 gradient 在模型变深之后,不会被无限放大。
而 Attention Residuals 更像是每一层提供一个历史目录,让模型可以直接找到前面某个阶段产生的信息,再选择性地调回来使用。
如果只讨论架构的表达能力,只看理论上的上界,那么 full attention 的上限更高是合理的。毕竟,MHC 最终还是把所有历史信息递归地压缩在固定数量的 residual streams 里。
Full attention 的 residuals,则有点像在每个 token 上,对所有比当前层更浅的层的输出,形成一个深度方向的下三角 attention map。
我做一个很不恰当但比较形象的比喻:在层的深度方向上,一个更像 recurrent model,一个更像 softmax attention。
MHC 的信息需要通过有限大小的 state 一层层传递,有点像 linear attention;Attention Residuals 则可以直接跨层读取。所以从表达力角度来说,Attention Residuals 的覆盖范围肯定更高。
程曼祺
你刚才的比喻,意思是从层的角度,一个是 RNN,一个是 Transformer,对吗?
曾志远
对。或者说,linear attention 其实也是 RNN 的一种变体。
但如果讨论最终的实际效果,我觉得还是要看具体实现的细节。
比如 K3 用的也不是刚才说的那种完全 global、所有层之间都能互相 attention 的结构,而是一种叫 block attention 的技术,并不是理论上表达能力最完整的 full attention edges。
它会先把层分成很多 block,先汇总每一个 block 内各层的输出,然后在 block 和 block 之间做 attention。
程曼祺
我想到这个有点像稀疏注意力。
曾志远
Yeah, in some sense, yes.
曾志远
对。再比如,attention edges 需要保留更多历史 representation,这也会带来一些 inference memory 和 communication 的成本。然后,MHC 其实也有一些自己在 inference 上的问题,所以我觉得最终效果肯定要看具体的 situation。
当然,目前可以确定的是,K3 和 V4 已经分别证明了这两种路线都可以 scale 到非常 frontier 的级别。未来到底哪一种路线更有潜力,或者能做到更好的效果,我觉得还是很值得期待的。
程曼祺
我觉得前面讨论很多东西,都是对比着来看的,包括线性注意力和稀疏注意力。你能看到一个趋势,好像是“条条大路通罗马”:大家可能有不同的实现方式,但看到的问题是相似的,行业里要解决的瓶颈也是相似的。
下一个话题是优化器和 V4。和 V4 一样,这次 K3 里用的也是 Muon 优化器。Muon 之所以能够被比较规模化地使用,本身也是 Kimi 更早时候的一个成果——MuonClip。他们也把这个成果贡献给了业界,现在基本上已经是比较主流的一种优化器方法。
这次在 K3 里,他们自己又有进一步的改进,提出了 Per-Head Muon。这个想请志远再帮大家讲一讲:一个是优化器为什么比较重要,它核心解决模型的什么问题;另一个是 K3 这次使用的 Per-Head Muon,相比之前 K2 已经在用的 Muon,具体有哪些改进?
曾志远
优化器相当于模型训练,不止是语言模型训练,而是深度学习模型训练里非常重要的一个组件。它要解决的核心问题,说白了就是:我们现在有一个模型,在训练过程中,一个 batch 算出梯度之后,怎么把这些梯度转换成一次非常稳定、有效,而且从长远来看比较好的参数更新。
比如我们在训练一个模型时,会涉及一个 loss function,这其实就是我们要优化的东西。梯度告诉你局部大概要往哪里走,而优化器会决定最终采用什么方向、走多大一步,以及怎么利用历史梯度去降低噪声,处理不同方向的尺度差异和各种冲突。
一个好的优化器,通常意味着在相同的训练计算量下,我们可以收敛得更快,最终 loss 更低。另外还有一个很重要的指标,就是稳定性。我们不希望训练过程中出现太多不稳定的 spike。
Muon 的核心是,我们在拿 momentum,也就是动量,去更新参数之前,先对它做一个近似的正交化。Momentum 是一些优化器根据梯度和历史梯度算出来的信息。这样做的好处是,我们可以让更新不要只集中在少数几个比较 dominant 的方向上。
问题在于,正常的 Muon 考虑的是以前的多头注意力。它在存储上虽然是一个大的投影矩阵,但在整个算法的计算逻辑上,对于模型架构来说,每个 head 其实是比较独立的。这意味着,如果把所有 head 放在一起正交化,它们的 gradient 和 momentum 信息之间可能会产生一些冲突。
比如,有的 scale 更大的 head 可能会主导整个矩阵的更新方向,而那些比较小的注意力头,就没有办法得到充分的 normalization。Per-Head Muon 的核心思想就是,对每一个注意力头单独做一次 normalization。这样不同的 head 在做更新时,大小和 scale 就会更加均衡。
K3 的技术报告里也专门提到,他们发现 Per-Head Muon 在自己的 setup 下,可以让训练 dynamics 更加平衡,很好地改善大规模训练的稳定性。
程曼祺
相比 MuonClip,也就是 Kimi 自己之前提出的那个改进,新的 Per-Head Muon 实现起来难度会更大吗?我想知道它未来有没有可能在业界扩散。MuonClip 在业界已经有不少扩散,很多其他团队也会使用。
曾志远
从实现难度角度来说,Per-Head Muon 算法上其实比较直接。我们可以直接把参数 reshape 成很多注意力头对应的 block,然后做一些并行处理。
实现的难点可能在于,大规模训练里,Q、K、V 经常会被融合以及切分。这就导致优化器的 state 会分散在不同 GPU 的 rank 上。所以我们必须保证每个注意力头在算法计算上的逻辑边界不会被打散,同时还要能够非常高效地重建完整的 block。
此外,还要把大量这种小矩阵合并执行,再一起做计算,避免带来很大的通信开销和 kernel launch 的问题。所以我觉得 K3 也在技术报告里提到,他们为 Muon 做了一些专门的处理,比如把通信和正交化计算做了一些 pipeline。
程曼祺
关于优化器,我还有一个小问题。构造新的优化器、改进优化器这件事,AI 可不可以自己来做?
上次我们聊到,Muon 最开始是个人开发者 Carol Jordan 提出来的。后来我了解到,Muon 其实是在 Jordan 做的一个开源项目 NanoGPT Speedrun 里诞生的。这个项目简单来说,就是让所有人去训练一个比较小的模型,完成一个标准任务,然后大家比速度,看谁能在最短时间内做完。
最近有一家新公司 RC,Tim Shi 和田渊栋他们的那家公司,在 6 月的时候做了一次尝试:用系统自动化地运行这个 Speedrun。在此之前的两年多时间里,Speedrun 一直是社区里的研究者人工完成的。
所以我有一个小的脑洞:优化器是不是未来也可以由 AI 自己来写,然后自己制造出新的优化器?
曾志远
这确实是一个非常重要的未来方向。事实上,我觉得社区里已经有一些早期尝试了。
优化器研究天然非常适合 auto research,因为它的 pipeline 整体来说比较结构化。我们会先提出一个新的优化器方案,然后写代码、跑实验,再去看 loss、稳定性和曲线,这个过程俗称 A/B testing,最后再根据结果做改进。
你会发现,这里的研究目标比较明确,最终指标也非常清晰。满足这两个性质的问题,自然会越来越多地交给 AI agent 来做。
程曼祺
这也呼应了我们前面讨论的:K3 的开发使用了一些早期 checkpoint 版本。刚才陈阳也说过,他觉得这类问题有几个特点:第一,目标比较明确;第二,结果比较好验证;第三,不太容易被 hack,作弊空间比较少。像这种问题都挺适合 AI 自己来跑的。
所以,一个是优化器本身的改进 AI 可以自己做;另一个就是你刚才说的,预测不同改进哪些更容易规模化,这件事 AI 也有可能自己来做。
曾志远
对,或者说,AI 也可以研究怎么设计一个比较小规模的场景,使得小规模场景下得到的结果是比较 make sense 的。这里的 make sense,意味着它在更大的 scale 下仍然是对的,或者说比较 transferable。
程曼祺
这个方法其实不只可以用于优化器的改进。AI 训练里的很多部件,基本上都是先在小规模上试,然后再 scale,对吧?
曾志远
对,包括前面提到的各种模型架构改进,以及各种强化学习算法的调整。我觉得这些都是很关键的问题:怎么在小规模实验下,让大规模实验的结果更加 predictable。
这是模型开发很核心的能力,而且做得好可以节省很多资源。
程曼祺
我想了解一下,据你所知,业界有谁初步掌握了这种能力吗?
曾志远
我觉得不是业界有谁初步掌握了这个能力,而是大家都有这样的能力,只是有的人做得更好,有的人在某些领域做得更好,有的人在另一些领域相对弱一些。
程曼祺
谁在这方面做得比较强?
曾志远
我觉得还是美国的 frontier labs 更强吧,他们这方面应该做得非常好:一方面,自己的资源更多;另一方面,关于如何做小规模验证的各种流程和基础设施也更成熟。
程曼祺
之前一直有一种观点,有的人会认为,美国的 frontier labs 算力资源多很多,可能比中国的一些公司多 1 到 2 个数量级,所以很多比较细的改进对他们来说不一定那么必要。
比如你刚才说的,如何更高效率地使用算力。反而是中国因为大家比较缺算力,所以在前面做实验时会非常谨慎,也会找各种各样的方法,想知道怎么在有限算力下达到更好的效果。你觉得这种观察成立吗?
曾志远
这个说法一方面是有道理的。比如可以看到 DeepSeek 里面有很多工程上的优化,确实把效率压到了极致。
但另一方面,我觉得也不要小瞧 frontier labs 做各种优化的能力。他们其实也很有东西,不管是各种小优化,还是怎么在小规模上做好,然后 generalize 到大规模。
程曼祺
我有一个对 SRP [?] 的观察想和你讨论一下。你周围的交流里会不会有这种感受:有人会说,SRP [?] 在架构这一层做的花活没有那么多,重点更多放在数据和 infra 上?
曾志远
根据各种 gossip,确实是这样。他们基本相信 doing the basic things right,就是把最简单的事情做到极致的正确,然后有效 scaling,让事情 work。
程曼祺
10. Post Training Goes Modular
我们来讨论后训练这一部分。虽然前面聊到,K3 的后训练细节并没有披露太多,但这次在技术报告里可以看到一个有意思的设计:他们先训练 9 个领域的专家模型,然后通过 MOPD,也就是 Multi-Teacher On-Policy Distillation,把它们合并成一个模型。
这个也许可以翻译成“多教师在线蒸馏”。志远可以分享一下,为什么不直接联合训练一个模型,而是要先分后合?
曾志远
Multi-Teacher On-Policy Distillation 这个 recipe,最近一年已经快速成为一条非常常见的 post-training recipe。一般大家也不会专门写一篇文章去讲,对吧?
程曼祺
是的,尤其 MOPD 不太像一个研究问题。为什么像 Attention Residuals 这样的东西,Kimi 会专门写一篇文章,而 MOPD 可能没有任何公司会专门写文章讨论?
曾志远
我觉得这个问题问得非常好。一个东西能不能写成文章,一个很重要的问题是,你能不能把它 frame 成一个比较 clean 的 research problem。
比如 Attention Residuals 就可以有一个很 clean 的研究问题,指标很明确,要对比的对象也非常明确。但像 MOPD,如果不做 MOPD,要对比的其他方案就特别麻烦。MOPD 更像是直接避免了一条很麻烦的路径,不需要再关心怎么把那条麻烦的路径调清楚,所以它相对来说不是那么干净的一个研究问题 setup。
程曼祺
我在想它相关的一些影响。比如 Attention Residuals 写成一篇文章,有 3 个一作,对这些作者来说,肯定会带来职业 credit 的增加。
但业界也有很多大家都在使用的方法,好像并不知道最开始是谁想出来的。
曾志远
其实在美国这边,不同 frontier labs 之间,如果有人提出一个很好的想法,小圈子内部基本都知道是谁提出的,所以不会影响他们自己的 credit,包括更直白一点的身价。这些消息在圈子里流传得很快,只是不会在公开网络上传播。
程曼祺
所以它有点像是圈子内都知道,但外面的人不太知道。你可以继续说这个东西最近半年到一年已经变得很主流了。
曾志远
它最近一年已经快速成为一条非常常见的 post-training recipe。公开采用这条路线的,还包括 DeepSeek V4、NVIDIA 的一款 Nemotron 模型,以及这次的 K3。
这里使用 MOPD,一个很重要的原因是想把不同领域的研发过程解耦,方便一个很大的模型团队下面,各个小团队之间进行合作。
比如 general reasoning、coding agent、general agent 等等,它们不只是 data 不一样,也包括 environment、奖励策略、rollout 的过程、使用的 harness,甚至算法 recipe,都可能非常不一样。
Coding agent 里,infra 可能也会有一些区别,因为 coding agent 的 infra 可能有自己的挑战。如果把所有东西都放进一次 joint RL,把所有内容混在一起做大的 RL run,那么不同 domain、不同 reward,以及各种训练设置就会全部耦合在一起。
这样一来,模型合并时技术压力会非常大。因为这些东西可能在各自团队里已经 work 了,但最后合并时还要考虑怎么把它们合起来再 work,而且各自的 setup 都非常不一样,压力就会特别大。
如果使用 MOPD 这个 recipe,就可以先分别训练各个领域的专家模型。每个小团队最后交付给合并团队的成果,就是自己领域的小专家模型,而不用把前面那些复杂的 recipe、infra、environment 全部交付出去。
每个小团队只需要专注于把自己领域的模型训练到最好,最后合并时再使用 MOPD。这样大家就不需要为了方便最后的 joint training,提前强行统一所有 recipe 和 infra,也不需要每次迭代时同时协调所有领域。
这样既能让各个团队的迭代变得非常快,最后合并时也不需要花特别大的力气去协调各个方面。
程曼祺
所以以前也是分开训练,只是合并的方式不太一样。以前是更完整的合并,要带着各种训练设置一起合。现在则是每个专家模型训练完之后,最后只合并结果。
曾志远
以前的 RL training 还没有那么麻烦。比如最早的时候,我们不需要做 agentic RL,环境可能也相对统一,大家只需要把数据贡献出来,直接合并就可以。
但现在各种领域都有自己的 recipe,复杂程度高了很多,所以只合模型会方便很多。
程曼祺
直觉上,它好像和预训练的趋势有些相反。预训练是在同一个模式里,吃非常多元的数据,放在一个过程中训练。
曾志远
对。
程曼祺
而按你刚才的描述,之前后训练要处理的任务比较单一、比较简单时,大家其实是在一起训练的。现在则好像在走向“分”的过程,比如 K3 这次就有 9 个分开的领域。
你觉得为什么会这样?更远一点来说,后训练阶段有没有必要重新变成一个合的过程?那样的话潜力会更高吗?
曾志远
合起来还是用 MOPD,哪个潜力更高,现在还不好说。有很多研究认为,做 MOPD 可能比直接做 joint RL 效果更好之类的,但这种结果必须看非常具体的实验 setup,才能判断到底有多 generalized。
目前做 MOPD,主要还是因为这样最方便。你不用像刚才说的那样,每个团队有自己的方案之后还要再合方案,而是只需要合最后的模型。说白了,合 recipe 很麻烦,但用 MOPD 合模型就很简单,大家只要专心把自己的模型做好就行。
程曼祺
MOPD 里最后一个 D 是什么?
曾志远
D 代表 distillation,也就是蒸馏。正好可以说一下,蒸馏本来是什么意思,以及业界现在关于蒸馏有很多讨论,它从技术上来说到底是怎么回事?
从技术最原始的定义来说,蒸馏一直都是把 teacher model,也就是教师模型的能力传递给 student model,也就是学生模型。它最经典的用法是压缩模型:先训练一个很大的教师模型,再把能力蒸馏到一个更小的学生模型里,这样学生模型的使用成本可能更低。
比如技术报告里就说,他们会做 strong-to-weak distillation:先获得一个强大的模型,然后用它帮助训练小模型。
从技术角度来说,它一直都是教师模型把能力传递给学生模型,但我们还要看它的目的是什么。在 MOPD 里,目的不是压缩模型,而是刚才说的模型合并:我们先从同一个 foundation model 出发,训练出不同 domain、不同 reasoning effort 的教师模型,最后再把它们的能力传回一个统一的学生模型。
另一方面,还要看蒸馏具体怎么实现。从算法角度来说,on-policy distillation 的做法是让学生模型自己生成一条轨迹,然后教师模型对这条轨迹打分,提供一种比较稠密的奖励信号,再用这个奖励信号提升学生模型。
另一种更常见、也更传统的蒸馏模式,就是麦琪刚才提到的、普通大众在社交媒体上讨论的那种蒸馏。教师模型先预先生成一批固定答案,学生模型直接在这些固定的离线数据上做模仿学习,学习教师模型在给定输入下的输出。
程曼祺
MOPD 使用的 on-policy distillation,和我们平时讨论的语境里更常提到的那种 off-policy distillation,区别是什么?
曾志远
更多还是算法层面的区别。On-policy 的情况下,学生模型是被训练的模型,在训练过程中由学生模型自己生成轨迹,所以我们说它是 on-policy。
Off-policy 的情况下,相对于学生模型来说,教师模型生成的轨迹就是 off-policy,因为这条轨迹不是学生模型自己生成的。
程曼祺
哪一种学习效率会更高?
曾志远
不同场景下有不同的经验性结果。比如在做模型合并时,确实是 on-policy distillation 比 off-policy 更好。
但如果只有教师模型的输出,拿不到它的权重或者 logits,就没法让教师模型对轨迹进行细粒度打分。这种情况下只能做 off-policy distillation,相当于教师模型只能提供最终输出。
程曼祺
假如 Anthropic 自己有自己的模型权重,从技术效果上来说,你觉得它大概率会是 on-policy 还是 off-policy?这里自己生成自己的目的,是为了变成一个更强的模型,大家说的“左脚踩右脚,然后自己原地飞升”?
曾志远
这个目前还是大家的愿景,还没有真正做到。我个人理解,主要还是看有没有 external,也就是外在的监督信号。
我觉得在没有一个本质上很强、而且能够 scalable 的外在监督信号的情况下,很难提升一个模型。最后使用的技术名字里可能带着 distillation,但它肯定需要找到一种很 scalable 的方式,稳定地把外在监督信号打进这个过程。
程曼祺
11. Agents Redefine AI Infrastructure
最后在 infra 层面上,请陈阳来分享一下,你觉得 K3 做 infra 改进的整体思路是什么?这次你们也是第一时间做了适配,适配时有什么有意思的发现吗?
赵晨阳
具体来说,我可以分享一下 KDA 架构给投机采样带来的挑战。
投机采样简单来说,就是通过一个小模型快速猜测出一批 token,然后让真正采用的大模型一口气验证这些 token 是否正确。验证完成后,这批被猜测出来的 token 里可能只有前几个会被大模型接受,所以大模型在验证这批 token 之前的状态需要保留。
因为如果猜测不对,大模型要能够随时回退到猜测之前的状态。对于普通 attention 来说问题不大,就像把书的后几页撕掉,然后继续从笔记本靠后的一页开始写。
但是 KDA 的架构设计需要对每个 token 的递进状态进行原地重写。为了能够回退到大模型验证之前的状态,我们必须想办法把之前的递进状态存档。
一个比较朴素的存档方法是每走一步就把整个递进状态做一个快照。但对于完整的 69 层 KDA 来说,保留完整存档的开销非常大。我们最后的做法是不存状态,只存每一步状态的极小投影,大概只有 1 KB 左右。
需要回退时,就从上一个 checkpoint 出发,照着这些输入,把被接受的几个 token 的存档重放一遍。这很像我看小表弟学习象棋的过程:象棋玩家为了复盘棋局,会用一些简单的记号记录每一步棋子的移动,这样就不用每一步都给整个棋盘做一次完整快照。
为了支持 KDA 的投机采样,我们实现了类似的思路:记录棋子的移动,而不是记录整个棋盘。
比较有趣的是,我们后来观察到 Kimi K3 的技术报告里也独立提出了类似的设计。当然,我们并没有提前为这部分设计做过任何讨论。可以很荣幸地说,顶尖工程团队在这些工程问题上的解法都有异曲同工之妙。
这次 K3 还开源了他们的一个 agent 环境,叫 Agent Eve。你前面也说到,一般权重只是一次训练的产物,而环境能够反复复用,产生下一代权重,所以环境是更重要的护城河。你也可以讲讲,这次从 Agent Eve 里看到的一些有意思的思路是什么?
Agent Eve 是一个最朴实无华的名字,但我觉得还是比较有新意。一般而言,研究者为了模型安全,会主动限制模型的能力。大多数情况下,我们会通过更好的隔离方案尽可能锁死模型,让它少做一些越狱之类的操作。
但是 K3 的训练团队选择通过更好的隔离方式,尽可能放宽模型的能力边界,也就是说模型受到的限制更小。我相信他们自己也比较 believe,以后模型应该拿到更高的系统权限,可能是这个样子。
往往我们认为 agent 越强,它的探索就会越激进。早期的时候,大概在 Kimi K1 或者 K2 时,他们会选择用容器 runtime 来完成这种沙盒。但那种情况下很容易出现所谓的 OS panic 和内存死锁。
他们没有选择让 agent 持续运行容器,或者换用别的虚拟机,而是干脆换了技术路线,把隔离做得更好,用 Firecracker 来运行 microVM。这其实是比较工程化的做法,但我觉得一句话的 take-away 是:他们选择赋予模型更高的权限,并且为这些权限做出更好的技术隔离。
程曼祺
这个技术隔离是隔离什么和什么?
赵晨阳
简单来说,就是希望一个 agent 把一个沙盒弄崩溃之后,不会影响其他沙盒的运行。
程曼祺
这是一个安全方面的考虑,对吧?沙盒做得更安全,模型的安全限制就可以放低。
赵晨阳
对。第二点是持久化 root 和沙盒,这其实解决的是一个很经典的问题,也就是 agent 的长尾问题。
这是 Kimi 很厉害的地方。在 Agent RL 领域,有一个经久不衰的做法叫 partial rollout。简单来说,一条采样轨迹可能有上千次工具调用,得到上百万个 token。
假设一次采样 16 个 request,这 16 个 request 里可能有 1~2 条特别长。比如它调用一个外卖接口,但外卖的 mock 接口返回不稳定,可能过了 1 分钟才返回。这种情况下,会极大地阻塞整个 batch 的运行。
在 Kimi K1.5 的论文里,他们提出了 partial rollout:不必等待所有轨迹都结束,等到一定比例的轨迹完成之后,就把已经结束的轨迹用于训练;没有完全结束的轨迹则缓存起来,在下一轮继续完成。
这个做法背后有很深厚的统计学观察:通过提高采样总数,或者只选择不属于长尾的那部分 request 使用,可以加速采样过程。
这也带来了一些强化学习理论上的挑战。一方面,从系统设计上,模型历史采样信息需要尽可能保存。比如模型上次采样的 KV cache,需要写下来,避免下次重新采样时进行一次特别长的 long prefill。
另一方面,还有强化学习侧的数据过时问题,术语叫 off-policy-ness。这样采样出来的轨迹可能有一个问题:轨迹的前一部分是上一个版本 checkpoint 采样出来的,余下部分才是当前版本 checkpoint 采样出来的。这样一条采样序列就不是严格的 on-policy,或者说不是严格在线的。
K3 采用了 proximal 正则的方式,把策略更新约束在一个局部范围内,从而部分容忍这样的 off-policy-ness。这是一个很经典的做法:用算法上的宽容换取 infra 上的自由,而且对 infra 的提速非常好。
最后一点,我觉得体现了 Kimi 团队的一个设计哲学:让 RL 环境和推理时 agent 运行的环境尽可能一致。
K3 的训练管道把 agent 的 harness 表示成一组可以配置、可以组合的模块,类似工具接口、system prompt、上下文管理策略、skills 和 memory。他们用各种复杂策略组合出不同主流 agent 的 harness。
这种组合也避免了模型在训练过程中 overfit 到某一个 harness 上。比如,训练模型在美团上订外卖,结果发现用户想用饿了么就不会了。这对人类而言非常愚蠢,但对训练不佳的模型而言,很容易出现这样的问题。
很显然,这种策略组合能够很好地缓解“学会了美团就不会饿了么”的问题。从 infra 角度来说,我很认同他们这个方向。
程曼祺
环境正确,意味着我们对 harness 的要求会逐渐提高。更广泛地说,我们希望 harness 能够自由地和各种 agent workflow 组合,这和我们在 serving 侧的想法也是一样的。
不要为了每一个模型去做很多策略,而是要尽可能把这些状态组织成树状结构。它的整个思路就是:模型训练出来之后,在更上面一层的 harness 层,不管是什么类型的 harness,都能比较好地调用它,适配更多不同类型的框架。
理论上是这个样子,但效果肯定不会那么完美。随着我们越来越多地使用 harness,对 harness 泛化性的要求也必然会越来越强。
你觉得 frontier model 有这个需要吗?比如 SRP [?] 或者 OpenAI,它们自己训练的模型,可能只会在自己的 harness 框架里使用。
赵晨阳
这必然是需要的。换句话来说,即便是 Claude Code 这样的平台,它能接入的组件也非常多。Claude Code 可以直接接 Slack、Gmail,还可以接 Calendar,这也是某种程度上的 harness。
何况刚才提到的美团和饿了么切换问题,对 Anthropic 来说,可能就是使用 Gmail 还是 Outlook。这两个事情听上去也非常类似,但如果不做精心设计,模型的 overfitting 会非常令人尴尬。
程曼祺
除了你刚才说的、你自己最在意的进展,也就是 Agent Env 这个强化学习环境之外,其他一些改进,包括 Flash KDA 和量化感知训练,也可以展开讲讲。它们在 infra 上带来了哪些变化?
陈阳
我们回到这两种 attention 的区别。Softmax attention 的 kernel 主要是在和带宽做斗争,而线性注意力的 kernel,严格来说,更多是在和串行依赖关系做斗争。
具体来说,KDA 在 chunk 内部做并行,在 chunk 之间做串行,以此让 recurrent state 一个 chunk 接一个 chunk 地向前传递。最 naïve 的写法是每算完一个 chunk 就传一次状态,这会导致计算资源大面积空转。
Flash KDA 是 Kimi 团队基于 CUTLASS 写的一个 chunk-wise kernel,尝试把 chunk 内计算和跨 chunk 的状态传输重叠起来,术语上叫 overlapping。这是 Flash KDA 的第一层。
此外,Softmax Attention 的 kernel 对 KV cache 的关注不会特别强,因为 kernel 对 KV cache 只读不改。但 KDA 的 kernel 可能会覆盖已有状态,所以 kernel 设计还需要考虑更完整的生命周期:什么时候做持久化,写到哪一个 chunk 的 slot 里,以及怎么保证其他 request 正在读取的缓存不会被冲掉。
可以说,KDA 的 kernel 难度更高,也模糊了我们原本认为的 kernel 和缓存管理之间的界限。
另一个角度是 Kimi 的拿手技能,也就是 QAT,Quantization-Aware Training。可以看到,K3 和 DeepSeek V4 同时都在采用 FP4 精度训练。DeepSeek V4 的具体做法之前我们已经讨论过,这里可以更多讲 K3。
K3 从 SFT 开始就做 QAT。直观的好处是,模型有更多时间适应量化噪声。他们也着重强调,RL 采样阶段和 training 阶段采用的是同一套量化方案,尽可能减少训练和推理不一致带来的磨损。
这也可以从 RL 的角度来理解。我们刚才提到过一个术语叫 off-policy-ness。直观来说,RL 的策略梯度优化能够成立,有一个前提:我们正在优化的,应该就是产生这些数据的策略。
训练时我们会采集许多序列,然后拿去优化模型。我们希望这些序列是正在优化的那个模型产生的,而不是 t-1 或 t-2 的 checkpoint,最好是 t-0 checkpoint 产生的数据。
但 t-0、t-1、t-2 有时并不是刻意造成的。比如训推不一致:训练时量化可能是 BF16,推理时采用 NVFP4,这就会导致两个策略存在区别。这也是一种 off-policy-ness。
一旦训练和采样过程对同一个 checkpoint 使用的精度不一致,模型给出 token 的概率就会有细微区别,这就变成了不严谨的梯度计算。而且这种不严谨的梯度计算对于 MoE 来说,可能导致灾难性的崩溃。
所以,K3 的训练哲学仍然贯彻了 RL 和 infra 领域一贯的认识:为了让我们训练到的模型就是要优化的那个模型,一定要让训练和推理阶段尽可能契合,采用尽可能相似的配置。
程曼祺
这件事在实现上难吗?现在主流公司都能做到尽可能使用一样的配置,还是说仍然需要很多努力?它是不是也能反映一家公司的 infra 水平?
陈阳
我可以说,这件事非常难。对很多公司而言,需要单独维护一套硕大的 infra,甚至需要 kernel team,才能够把这件事做好。就这一点来说,我觉得 Kimi 的技术非常领先。
程曼祺
你之前说 DeepSeek 是 infra 领域的巨鲸。类比一下,你觉得 Kimi 在什么段位?
陈阳
我不希望做一个分出高下的比较,但坦诚来说,我觉得国内公司的 infra 真的很强。某种意义上,我们叫作“用 infra 换算力”,这真的非常不容易。
程曼祺
最后这一部分我想补充一个问题。我看 K3 在技术报告里写到,K3 优化测试里使用了 authoritative vendor,有可能是国内芯片公司给这个 authoritative vendor 的 GPU 写了 kernel。
那是不是有可能,利用 K3 这个模型,也能加速 K3 自己向国产芯片的适配?
陈阳
我觉得这点应该比较明确。当然,我们不能确定最终交付到生产环境的这些 kernel,是不是 K3 写的,但 K3 至少从性能和正确性上来说是非常能打的。
另外一个角度是,这一次我们也看到,由于现在模型生态发展得非常快,以前有一段时间,国产芯片同行想在模型发布当天 support 这些新的 AI 模型,还是有一定难度的。
但最近我们看到,类似摩尔线程也通过 MUSA stack 这样的生态,在模型发布后的很短时间内成功 support 了 Kimi K3,而且也达到了很好的效果。我不记得是不是当日,但一定是在极短的时间内。
可以想见,kernel development agents 真的是一件非常伟大的事情。我觉得它对整个芯片产业都有非常本质的推动。
程曼祺
你觉得这件事会怎么影响英伟达的统治地位?会到那个程度吗?
陈阳
这是一个我无法判断的事情。
程曼祺
你这是无法判断,还是不想说?
陈阳
我无法判断。
程曼祺
这个我们可以讨论一下。理论上来说,CUDA 生态建立在比较丰富的 kernel 之上,这肯定是很重要的一部分,而且它的通用性也比较好。
赵晨阳
我有很多好朋友在 AMD 做 AMD 版本的 CUTLASS,所以他们高度依赖这些 kernel development agents。我也有在 NVIDIA 的好朋友,他们在 NVIDIA 写下一代 DSL,同样大量依赖 kernel development agents。
这提供了一个视角:kernel development agents 这个东西,英伟达之外的厂商可以用,英伟达自己也可以用,因为它自己也需要不断迭代。
但很遗憾,现在这些模型优化 CUDA 可能很厉害,可是假设以后有 Tensor Core Gen 5,现在是 Tensor Core Gen 4,那么 kernel development agents 还得花一段时间才能泛化到新的硬件上去。
这也是一个很好的问题:kernel development agents 的发展,之后会怎么影响芯片领域的竞争。
我很难说 Kimi Delta Attention 和 Kernel Development Agents 哪一个更伟大,我觉得这两个事情都很牛。
程曼祺
我们最后可以稍微延展讨论一下 K3 对业界的一些影响。有一些随便拍脑袋的问题:你们认为下一个开源最强模型什么时候会出现,可能来自哪个公司?
陈阳
我之前看到 Kimi 团队发布过一个说法,他们的模型在以“日”为单位进行智力迭代。这个时代智力前沿的加速度没有降低,反而我觉得是人类的想象力降低了,因为现在除了 coding 之外,我还见不到下一个爆炸点。
程曼祺
Kimi K3.8 Preview 发布的时候也说,他们会一日更新。
下一个问题前面稍微讨论过:你们觉得今年内,在还剩 5 个多月的时间里,我们有可能见证开源超过闭源吗?
曾志远
我个人觉得这有一定难度。一般来说,大家会认为 OpenAI 和 Anthropic 内部最强的模型,会比它们现在放出来的模型还要强半代,甚至 1 代。
现在最强的开源模型,基本目标是追平已经发布的最强闭源模型,或者说闭权重模型。但之后这些公司可能还会放出它们内部已经有的、比现在闭权重模型更强半代甚至 1 代的模型。
到那个时候,开权重模型可能还需要一段时间去追。所以我觉得,至少未来 5 个月内,这个趋势应该不会有很明显的变化。
程曼祺
其实开权重模型这边,基本上已经把目前最强的也放出来了。这里还是有一个代差。你的意思是,要找一个好的时机来放?
曾志远
对。
程曼祺
最后一个问题,是一个相对宏观的趋势问题。最近梁文峰说,下一代模型的标志是能够持续学习。你们自己会怎么看?下一代模型要实现什么能力?
曾志远
关于持续学习,我的观点不是希望模型的智力不断提升,而是希望一个模型能够持续地对各种系统进行有效优化。
程曼祺
但这个“各种系统”应该专指 KDA 吧?比如现在让 KDA 去优化 CUTLASS,它可以优化得很好;但等下一代 DSL 出来之后,KDA 能不能做得好?
陈阳
目前来看还不太行。这反过来暴露出现在模型的泛化性没有想象中那么好,因为 kernel 绝对是一个最好验证的领域了。
程曼祺
对,哪怕是这样,它的泛化也还需要一定的训练。从这点来看,我觉得实现 RSI,也就是递归式自我改进,还是有一些距离的。
曾志远
我不去评价下一代模型的核心能力是不是必须具备持续学习,这个观点本身是否正确。但如果我们假设这个观点是正确的,我觉得现在有一个很大的问题:我们还没有很好的方式去评测或者 measure 这个 progress。
现在的模型持续学习能力大概到了什么层次?它肯定不是一个 0 或者 1,不是“不会持续学习”或者“会持续学习”,而是 0 到 1 之间的某一个状态。
我觉得现在还缺少一个衡量目前进展的好方法。如果认可这个观点,我们应该先把衡量进展的方式明确做出来,通过各种比较完备的 evaluation 和评测,把这个问题解决,再讨论现在的模型距离目标还剩多少。
程曼祺
总体来说,你们觉得模型接下来的进展会一路这样斜线上去,还是仍然会出现平台期?
曾志远
我个人猜测还是会有一个个平台期。其实有平台期也意味着有突破,对吧?你有一个突破,可能就上一个台阶。
程曼祺
但这个突破不见得是大家想象中那种特别巨大的范式性突破。
志远
我觉得可能更多是在执行层面把一些问题顺顺,在这些问题上取得突破,然后让平台期整体提升。
其实说实话,我个人觉得最近半年没有什么特别本质的平台性突破,只是在一个平台上做得更高一点。
程曼祺
当然确实更高了一点,带给普通用户的体验已经很不一样了。