Kimi K3彻底开源了量子位

7/28/2026

Kimi K3开源日来了。

深夜,月之暗面开源了K3的模型权重和技术报告:

2.8万亿参数MoE模型,具备原生视觉理解能力,支持100万token上下文窗口。

第三方评测里,K3挤进全球前五。并在WebDev Arena上排名第一,成为首个登顶该榜单的开源模型。

而且K3表现接近Claude Fable 5,但单任务成本只有后者的几分之一,相比下来便宜得多。

这份成绩单背后,是架构、训练和Infra综合发力的结果。

这次,月之暗面把它们全都公布了出来。

跑分接近顶尖,价格便宜一个量级

先来看看K3的性能表现。

技术报告里显示,K3综合表现接近Claude Fable 5和GPT-5.6 Sol,持续领先其余开源与闭源模型。

第三方评测给出了类似的结论。

在Artificial Analysis的Intelligence Index v4.1榜单上,K3从580个模型里排名第四,拿到57.1分。

在WebDev Arena上,K3排名第一,拿到1678 Elo,超过Claude Fable 5的1634分,是第一个登顶这个榜单的开源模型。

在Vals AI的GDP加权行业基准套件上,K3排名第二,39个模型里拿到74.7%的分数,仅次于Claude Fable 5。

进一步拉开差距的,是价格。

在BrowseComp上,K3拿到91.2%的最高分,每个任务只花2.03美元,是GPT-5.6 Sol价格的一半。

在GDPval-AA v2这项测试上,K3的成本比GPT-5.6 Sol低13%,和Claude Fable 5相比,更是不到四成。

技术细节大量公开

K3的参数规模是K2的将近3倍,训练效率却提升了约2.5倍,这主要归功于两处架构改动。

首先是注意力机制。

全局注意力处理长序列时,计算量随长度的平方往上涨,序列越长,机器越吃力。

K3把KDA这种更省算力的长序列注意力,和负责关联完整上下文的Gated MLA按3比1的比例混着用。

层与层之间,K3也换了传递方法。

传统的残差连接,是把前一层的输出原封不动地叠加到当前层,像接力棒一样一层传一层,越往后传,前面层的细节被压得越扁。

K3改用Attention Residuals,让每一层都做一次小小的“回头看”,从前面所有层的输出里,挑一遍对当前层真正有用的部分再往下算。

另一处改动,是专家路由。

K3模型里预先放了896个专家网络,每个token算的时候只会用到其中16个,这一层结构在K3里叫Stable LatentMoE。

专家一多,忙的忙死、闲的闲死,是MoE常见的病,K3的解法是Quantile Balancing。

每训练一步,系统会看这一批token里每个专家原本能拿到多少、该拿到多少,把落后的专家分数悄悄往上调一点,让它更容易在下一步被选中,专家之间忙闲的差距很快被拉平。

架构改完,训练配方也跟着调,batch size、学习率、tokens-per-parameter比例全部重新找过一遍最优值。

除了这两处,K3的架构还有一个特点,原生多模态。

文本、图像、视频,K3用同一个backbone处理,不需要额外的模态对齐阶段。

视觉编码器MoonViT-V2是从零开始训练的,用的是next-token prediction。

这跟K2.5不一样,K2.5的视觉编码器沿用了业内常见做法,先用SigLIP做对比预训练再接入模型。

团队测试发现,给LLM接一个已经预训练好的视觉编码器,联合训练时容易不稳定,用SigLIP初始化的编码器,梯度范数会持续偏高,还经常出现尖峰。

换成从零训练的MoonViT-V2之后,梯度稳定了很多,视觉方面的评测成绩,跟SigLIP初始化的基线打平。

架构定型之后,后训练走三步。

Kimi团队先用监督微调练出一个具备agent能力的冷启动模型,再分通用推理、通用agent、编程agent三个方向,各自配上低中高三档推理强度,练出9个专家模型。

最后一步,团队用Multi-Teacher On-Policy Distillation把9个专家的本事揉进同一个模型。

具体来说,他们的做法是让这个统一模型在对应场景下模仿专家的输出,模仿得越像,拿到的奖励越高。

针对适配的Infra

K3支持100万token的上下文,这个数字要真正撑得住,不是预训练阶段调好参数就完事了。

从训练时的并行策略,到推理服务时怎么复用之前算过的内容,再到整个集群怎么调度这些请求,每一层都有专门的工程要做。

第一层,是训练时怎么把超长序列拆到多台设备上并行处理。

KDA的递归状态不是简单的加法,某一段的最终状态,由这段自己产生的部分和上一段传进来的部分共同决定,不能像普通线性注意力那样,各段各自从零算完再直接加总。

K3的做法是KDA Context Parallelism,把每一段的影响拆成两部分——这一段如果从零开始算会产生什么状态,以及外部状态传进来之后这段会怎么处理它。

这两部分都能在本地独立算完,所有rank做一次数据交换,就能精确还原出每个rank真正的起始状态。

第二层,是推理服务时怎么复用已经算过的内容。

K3是KDA和MLA的混合架构,两种缓存完全不是一回事。

MLA的KV缓存随对话长度增长,按token分页管理,KDA的递归状态是每个请求固定大小的一份,只能在稀疏的几个点上保存快照。

传统的前缀缓存按几千token一个物理块做匹配,粒度太粗,短一点的请求根本碰不上缓存。

K3把两种粒度拆开处理,前缀匹配用512 token一个的细粒度哈希块在物理块内部找。

KDA的状态快照只在这些细粒度边界里挑一部分稀疏地存,命中的时候,取同时满足两个条件里最长的那个边界,就能不重新计算前面已经算过的部分。

第三层,是整个集群怎么应对成千上万个长短不一的请求。

Scroll for more