量子位 2小时前
Kimi K3开源彻底了!权重、技术报告和训练Infra应开尽开
index.html
../../../zaker_core/zaker_tpl_static/wap/tpl_keji1.html

 

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

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

一个 100 万 token 的编程请求,前缀命中和不命中,算力开销能差出几个数量级,所以 K3 按 session 的缓存位置把请求路由到本来就存着这份缓存的集群。

这些工程细节,撑住了 K3 从训练到线上服务的全过程。

同时在 Infra 方面,Kimi 还单独开源了MoonEP、FlashKDA、AgentENV三项关键技术。

MoonEP 管通信,FlashKDA 管算子,AgentENV 管试错环境,三样东西各自突破训练链路里的一个具体瓶颈。

MoonEP

MoonEP 是 K3 用来管专家并行通信的库。

K3 有 896 个路由专家,训练时 token 不会平均分给每个专家。

某些专家被挑中得特别频繁,某些几乎没人理,专家并行训练时,收到 token 多的那个 rank 就成了全队的瓶颈,其他 rank 都得等它算完。

MoonEP 的解法,是提前在每个 rank 上留出几个 " 冗余专家 " 的位置。

训练时,系统实时统计当前这批 token 的路由情况,把可能超载的专家复制一份,放到冗余位置上,提前预取好参数。

技术报告证明了一件事,每个 rank 最多只需要 E 除以 R 个冗余专家名额,E 是专家总数,R 是并行的 rank 数,就一定能找到让所有 rank 负载完全相等的分配方案。

负载能被拉平之后,通信这一步也跟着简化,token 直接送到目标位置,不用先搬进中转缓冲区再搬一次。

而且每一层要处理的数据形状,在训练开始前就是已知的,不用每层都停下来跟 host 同步。

不用等最忙的那个专家,也不用临时猜数据形状,这是 MoonEP 能把训练效率提上来的原因。

FlashKDA

FlashKDA,是 Kimi 实现的 Kimi Delta Attention 高性能算子。

K3 的 KDA 注意力算起来块内并行、块间串行,块内部的计算可以一起算,但块跟块之间的状态必须按顺序传递。

如果老老实实按顺序算完一块、传完状态、再算下一块,GPU 大部分时间在等,利用率上不去。

它用 CUTLASS 把这两件事叠在一起做,块内计算交给一组线程处理,跨块的状态传递交给另一组独立调度,两条流水线各跑各的,不用互相等。

效果直接体现在速度上,在 H20 上,相比 flash-linear-attention 的基线实现,FlashKDA 的 prefill 速度快了 1.72 到 2.22 倍。

现在它已经是 flash-linear-attention 的一个可选后端,社区可以直接调用。

AgentENV

AgentENV 是 K3 用来生成大规模、可复用沙箱环境的系统,由月之暗面与 KVCache.ai 合作开发。

K3 的强化学习训练,需要模型在近似真实的环境里反复试错,读文件、跑代码、调用各种工具,出错了就吃教训,重来。

这类环境最早用容器方案搭建,但团队发现,agent 的操作方式不按常理出牌,试出过好几次内核 panic 和死锁,容器这层隔离不够结实。

于是,AgentENV 把环境换成了 Firecracker microVM,隔离级别更接近一台真正的虚拟机,agent 可以在里面挂载磁盘、跑容器,甚至开一台新的虚拟机,也不容易把宿主环境搞崩。

沙箱的启停速度也做了针对性优化,checkpoint 只保存上次存档之后被改动过的内存页,延迟压到 133 毫秒,resume 压到 49 毫秒。

等模型推理结果的时候,沙箱可以直接暂停,几乎不占内存和 CPU,这段等待时间往往能占到沙箱生命周期的 98%。

需要评分判断的时候,可以从已有沙箱的精确状态分叉出一个新的,原来那个继续跑,互不干扰。

镜像的分发和启动,则是靠 OverlayBD 格式配合自定义的 ublk driver、存储层共享和 P2P 传输。

这种方案做到了秒级以内启动,再配上写时复制内存和页缓存优化,同一批物理内存能撑起的沙箱数量,最多能到 6.5 倍。

K3 训练和评估期间,这套系统一共创建了 51219741 个沙箱,跨越 1505678 个镜像。

月之暗面交棒用户

开源日这天,Kimi 的架构、训练方法,还有 MoonEP、FlashKDA、AgentENV,月之暗面把它们全都公布了出来。

为什么这样做,在技术报告最后一部分,月之暗面给了一句解释——

坚信开放权重模型的价值,能降低获取智能的门槛,推动创新,也把数据的控制权、隐私和所有权更多地留给用户。

现在技术已经公开,接下来,就交给使用的人。

参考链接:

https://mp.weixin.qq.com/s/tryHe81IyM6nr0fBPDz72g

一键三连「点赞」「转发」「小心心」

欢迎在评论区留下你的想法!

—    —

点亮星标

科技前沿进展每日见

评论
大家都在看