向AI转型的程序员都关注公众号 机器学习AI算法工程
技术报告:
Kimi K3: Open Frontier Intelligence(k3_tech_report.pdf)
团队:Moonshot AI(月之暗面)
模型卡:https://huggingface.co/moonshotai/Kimi-K3
技术报告:https://github.com/MoonshotAI/Kimi-K3
官方博客:https://www.kimi.com/blog/kimi-k3
vLLM 部署:https://vllm.ai/blog/2026-07-27-k3
开源协议:Kimi K3 License(基于 MIT 修改的自定义许可证)
7 月 27 日晚,月之暗面在 Hugging Face 开放了 Kimi K3 的完整权重:总参数 2.8 万亿、激活 1040 亿,是迄今首个迈入 3 万亿参数级别的开源模型,原生支持视觉与 100 万 token 上下文。
一、为什么读 K3 的新闻容易误判
主流报道的叙事高度一致:规模(2.8T)、榜单(WebDev Arena 1679 Elo 登顶)、定位(媲美 Claude Fable 5 / GPT-5.6 Sol)。工程师真正要回答的三个问题是:它能跑在哪、质量是否真的全面超越闭源、开源到我能不能直接改商用。而这三点的答案,恰恰藏在标题之外的细节里。
- 「2.8T」不等于 2.8T×2 字节。
K3 的权重是原生 MXFP4(4-bit)训练出来的,实际存储约 1.4 TB;它之所以能撑起 1M 上下文,靠的也不是堆 HBM,而是 KDA 线性注意力把 KV 缓存压掉了最多 75%。
- 「登顶」是单榜,且不是全面超越。
官方技术报告自己写明「整体性能仍落后于 Claude Fable 5 和 GPT-5.6 Sol」。评测表的脚注还提示:不同模型用了不同的 agentic harness,跨模型分数并非同台竞技。
- 「开源」是修改版许可证,且部署门槛极高。
Kimi K3 License 并非标准 Apache/MIT 宽松协议;而权重落地的最小硬件是 8× NVIDIA B300(或 16× B200、8× AMD MI355X),「barely fit a single DGX B300」。 -
通俗解释:看 K3 ,要把「模型能力」和「你能不能真的用上」拆开。2.8T 是参数量的账,1.4TB 是存储的账,8×B300 是部署的账——三本账不一样。榜单登顶是某一类任务(前端代码)的账,不是全部能力的账。本文做的就是帮你把这几本账算清。
二、技术创新点
创新点 1:KDA 混合线性注意力 + 注意力残差,让 1M 上下文和 2.8T 规模在算力受限下可行
K3 的 93 层里混用了 69 个 KDA 层 + 24 个 Gated MLA 层(约 3:1)。KDA(Kimi Delta Attention)源自月之暗面此前开源的 Kimi Linear 架构,是把 Gated DeltaNet 的标量遗忘门升级为逐通道向量门控的线性注意力变体;并用 DPLR(对角加低秩)状态转移加定制分块并行,算子效率比通用 DPLR 高约 100%。MLA 层则负责高质量局部表示。约 3/4 的层是线性注意力(状态大小不随序列增长),约 1/4 是全 MLA,混合下来把长序列 KV / 显存占用降最多 75%,1M 上下文解码吞吐最高提升 6×。
另有 AttnRes(Attention Residuals):跨层选择性检索表示,而非均匀累加,缓解 93 层深度下的信息混合。模型还原生多模态,用 MoonViT-V2(401M)视觉编码器,同一模型理解文本、图像与视频,无需额外的视觉-语言适配器。
创新点 2:极致稀疏 MoE 的训练稳定三件套 + 原生 MXFP4 量化感知训练
K3 在 896 个路由专家中每 token 仅激活 16 个(外加 2 个共享专家),Latent MoE 维度 3584、每专家 3072。在 16/896 这种极端稀疏下,路由与优化是第一性问题,K3 用三件设计应对:
|
|
|
|
|---|---|---|
| Stable LatentMoE |
|
|
| Quantile Balancing |
|
|
| Per-Head Muon |
|
|
配合 SiTU(Sigmoid Tanh Unit)激活与 Gated MLA 改进激活控制与注意力选择性。最关键的一点:K3 从 SFT 阶段起就做 MXFP4 权重 / MXFP8 激活的量化感知训练(QAT),所以 4-bit 不是事后量化,而是训练出来的——这正是它能以约 1.4TB 落地、并能在 AMD MI355X 等非英伟达硬件上运行的前提。
创新点 3:开放的不只是权重——vLLM Day-0 支持 + 同期开源基础设施
发布当天,vLLM 即给出完整 recipes:TP8 B300 / MI355X、fastsafetensors 加载、prefix caching、tool-call / reasoning parser、DSpark 投机解码。同期开源的 MoonEP(大规模 MoE 专家并行 all-to-all 通信库)、FlashKDA(KDA 计算算子,官方称 H20 上 Prefill 提速 1.72–2.22×)、AgentEnv(与 KVCache.ai 合作的 Agent 沙箱,支持快照 / 恢复 / Fork)。对绝大多数跑不起 2.8T 的团队,这些基础设施与 vLLM 配方反而比权重本身更可复用。
三、技术原理
3.1 KDA 的数学形式
线性注意力把注意力写成一个不断修正的循环状态 S,而非对所有键值对打分。从 DeltaNet 到 Gated DeltaNet(GDN),再到 KDA 的演进如下(k、v、q 为键、值、查询,β 为每步学习率):
# DeltaNet:用 delta 规则在线修正记忆
S_t = (I - β_t k_t k_t^T) S_{t-1} + β_t k_t v_t^T
# Gated DeltaNet:加一个标量遗忘门 α_t
S_t = α_t (I - β_t k_t k_t^T) S_{t-1} + β_t k_t v_t^T
# Kimi Delta Attention:把标量门升级为逐通道对角门控 Diag(α_t)
S_t = (I - β_t k_t k_t^T) Diag(α_t) S_{t-1} + β_t k_t v_t^T
o_t = S_t^T q_t
GDN 的遗忘门是一个标量,对所有通道「一刀切」;KDA 给记忆的每个维度配一个独立的遗忘旋钮,编码关键信息的通道记忆更久,无关信号更快衰减。实现上用 DPLR 变体 + 分块并行(chunkwise):训练时可并行、推理时状态大小为 O(1),因此序列再长也不爆显存。
通俗解释:传统 Softmax 注意力像给每个词都发一份「完整通讯录」,词越多通讯录越贵(O(N²))。线性注意力像维护一本「不断修正的笔记本」,用固定大小的笔记(状态 S)记住关键信息,成本不随长度涨。KDA 的改进是:这本笔记的每一栏都有独立的「遗忘旋钮」——重要的栏记久一点,废话栏很快划掉,于是记忆又准又省。
3.2 为什么 3:1 混合能让 1M 上下文变「便宜」
多数层是线性注意力,其状态大小恒定、几乎不占用随长度线性增长的 KV 缓存;仅约 1/4 的 MLA 层保留高质量局部注意力。二者交错,使长上下文显存最多降 75%、1M 下解码吞吐最高 6×。代价是 KDA 给传统 prefix caching 带来新挑战——vLLM 为此贡献了「全注意力 KV + 递归 KDA 状态」的混合前缀缓存实现,且 K3 默认关闭 prefix caching,需显式开启。
3.3 算一笔 MXFP4 存储账
2.8T 参数 × 4 bit ÷ 8 = 约 1.4 TB (MXFP4 为 microscaling 块浮点,有效精度优于纯 4-bit)
对比 BF16:2.8T × 2 byte = 约 5.6 TB
约 1.4TB 正好压进 8× B300(合计约 1.5TB HBM)。注意:104B 激活参数 ≠ 104B 存储,存储由 2.8T×4bit 决定;激活 MXFP8。这也是「2.8T 模型」和「能装进 8 张卡」并不矛盾的原因。
四、技术成果:一份需要细读的评测表
下表选取技术报告评测中的代表性项目,覆盖推理、编程、agentic、视觉四类。每一行绿色高亮为该行最优值——它直观地说明:K3 不是对所有模型的全胜,而是在 agentic / 工具调用维度明显领先,在知识与办公维度仍落后于 Claude Fable 5。
|
|
|
|
|
|
|
|
|---|---|---|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
基于上表,有三个反直觉但重要的结论(这正是主流文章较少展开的部分):
- 它没「全面超越」闭源旗舰。
Fable 5 在 CritPt(28.6 vs 23.4)、HLE-Full、FrontierSWE(86.6 vs 81.2)、GDPval(1747 vs 1686)、OSWorld 2.0(66.1 vs 58.3)、OfficeQA(69.9 vs 63.3)等多项仍领先;官方也承认整体落后。K3 真正占优的是 agentic / 工具调用维度(MCPMark 94.5 vs 87.4、τ³-Banking 33.4 vs 26.8、BrowseComp 91.2、AutomationBench 30.8)以及部分编程与视觉任务。 - 评测脚注存在「harness 错配」。
K3 多用 KimiCode harness,其余模型用 Claude Code / Codex 等不同 harness 评估。跨模型的 agentic 分数并不是严格同台竞技,直接横向比较要打折。 - 「低分常是截断而非答错」。
K3 默认 max 思考、输出很长;若评测 max_tokens 给得小,答案会被截断导致分数虚低。vLLM 明确提示:要提高 reasoning effort 并放大 max_tokens 再评。
附注:WebDev Arena 1679 Elo 登顶、Artificial Analysis Intelligence Index v4.1 得分 57.1(全球第四)均为真实成绩,但属于「前端代码 / 综合智能」特定榜单,不代表全维度领先。引用时建议注明榜单与评估设置。
五、实战代码案例
5.1 硬件与前置
最小部署:8× NVIDIA B300(或 GB300 NVL72)、16× B200,或 8× AMD MI355X(ROCm 首日支持)。官方推荐用 Docker 镜像(依赖复杂,目前仅 Docker 可用)。
5.2 vLLM 启动(含 DSpark 投机解码)
# 基础启动:8× B300 / 8× MI355X
vllm serve moonshotai/Kimi-K3 \
--tensor-parallel-size 8 \
--trust-remote-code \
--load-format fastsafetensors \
--enable-prefix-caching \
--enable-auto-tool-choice \
--tool-call-parser kimi_k3 \
--reasoning-parser kimi_k3
# 追加 DSpark 投机解码:解码吞吐 111 → 331 tok/s(约 3.14×)
--speculative-config '{"model":"Inferact/Kimi-K3-DSpark","method":"dspark","num_speculative_tokens":7,"attention_backend":"FLASHINFER_MLA","draft_sample_method":"probabilistic","rejection_sample_method":"block"}'
性能参考(GB300 NVL72,batch=1):无投机 TP8 约 111 tok/s,开启 DSpark 后约 331 tok/s;TP16 可达 370 tok/s。KV cache 建议用 FP8(--kv-cache-dtype fp8),长上下文 Prefill 可开查询量化。
5.3 OpenAI 兼容调用
curl -X POST "http://localhost:8000/v1/chat/completions" \
-H "Content-Type: application/json" \
--data '{
"model": "moonshotai/Kimi-K3",
"messages": [ { "role": "user", "content": "用一句话描述这张图。" } ],
"reasoning_effort": "max"
}'
5.4 关键 gotcha:保留思考历史模式(preserved thinking history)
K3 在「保留思考历史」模式下训练,官方要求多轮 / 工具调用时,必须把模型返回的完整 assistant 消息(含 reasoning_content 与 tool_calls)原样回传,否则质量会明显不稳。这是很多教程漏掉、却直接影响效果的要点:
import openai
def chat_with_preserved_thinking(client, model_name):
messages = [
{"role": "user", "content": "告诉我三个随机数。"},
# 必须把上一次 assistant 的完整内容(含 reasoning_content)回传
{"role": "assistant",
"reasoning_content": "我先列出五个数:473, 921, 235, 215, 222,告诉你前三个。",
"content": "473, 921, 235"},
{"role": "user", "content": "你刚才还想到的另外两个数是什么?"}
]
resp = client.chat.completions.create(
model=model_name, messages=messages,
stream=False, max_tokens=4096, reasoning_effort="max",
)
return resp.choices[0].message.content
5.5 部署注意事项
- prefix caching 默认关闭
:K3 需显式传 --enable-prefix-caching,否则长上下文重复前缀不命中。 - tool-call 偶发空结果
:K3 偶尔会发出自身 parser 不认识的 tool-call 格式,生产环境应对 schema 校验、重试或回退。 - 许可证约束
:Kimi K3 License 是基于 MIT 修改的自定义协议,并非标准宽松许可;商用、再分发前务必阅读 LICENSE 具体条款。
机器学习算法AI大数据技术
搜索公众号添加: datanlp
长按图片,识别二维码
阅读过本文的人还看了以下文章:
【模型高效部署】tensorrtx 深度解读,yolov11高性能推理实战案例
整理开源的中文大语言模型,以规模较小、可私有化部署、训练成本较低的模型为主
基于40万表格数据集TableBank,用MaskRCNN做表格检测
《深度学习入门:基于Python的理论与实现》高清中文PDF+源码
2019最新《PyTorch自然语言处理》英、中文版PDF+源码
《21个项目玩转深度学习:基于TensorFlow的实践详解》完整版PDF+附书代码
不断更新资源
深度学习、机器学习、数据分析、python
搜索公众号添加: datayx

