Kimi K3: A Claude clone or something else?

TL;DR · AI 摘要
Kimi K3: Claude Clone or a New Kind of Model? Published on July 26, 2026 14 min read Kimi K3: A Claude clone or somethin...
核心要点
- 主题聚焦:Kimi K3: A Claude clone or something else?
- 来源:CoreWeave,建议结合原文判断细节。
- AI 分析暂不可用,本条为保底评分与摘要。
Kimi K3:是Claude的克隆模型还是全新类型的模型?
发布日期:
2026年7月26日
阅读时间:14分钟
Kimi K3:是Claude的克隆模型还是其他类型?
作者:
Tarun Jain
已复制
图片版权:CoreWeave
最初发布于CoreWeave的Weights & Biases博客,发布日期为2026年7月26日。
2026年7月16日,Moonshot AI发布了Kimi K3,这是一个拥有2.8万亿参数的开源权重模型,数天内成为年度最受争议的发布。Kimi K3是首个达到2.8万亿参数的开源模型。需求超出了Moonshot的计算能力,公司在发布48小时后暂停了新订阅。7月22日,白宫科技政策办公室主任在X上发帖称,他的办公室掌握信息显示,Moonshot通过专为内部平台构建的系统,轮换访问方式以规避检测,将Anthropic的Fable模型蒸馏后构建了K3。财政部长Scott Bessent暗示了制裁的可能性。Moonshot对此予以否认。
随后,Moonshot采取了一个改变论点方向的行动:按计划发布了权重,并发布了一份涵盖架构、预训练、后训练、基础设施和评估的完整技术报告。报告本身并不能证明来源,但若实验室想隐藏外部教师数据,就不会记录这些信息。然而,这份报告是一个庞大、具体且可证伪的证据,其中包含了一个后训练流程,解释了K3大部分能力跃升的原因,而无需提及Claude。仔细阅读后,它还解释了为什么K3有时会让人感觉像Claude。
关于Kimi K3的已知信息
架构解析:Kimi-K3技术报告
Kimi K3是一个原生多模态专家混合模型,总参数量为2.8万亿,每token激活1042亿参数,包含93层,词汇量为16万,上下文窗口最多可达100万token。三个架构理念支撑了其设计:
- 混合注意力机制。每个模块堆叠三个Kimi Delta注意力(KDA)层,随后接一个门控MLA层,以3:1的比例贯穿整个主干,最终通过一个门控MLA层确保最后一层执行全局注意力。KDA通过通道级遗忘门扩展了delta规则递归。与早期Kimi线性公式相比,K3的改进在于使用了缩放的sigmoid函数,将对数衰减的下限固定,使倒数重缩放因子保持在BF16动态范围内,使每个因果瓦片都能作为密集的Tensor Core矩阵乘法运行。这消除了之前块内瓶颈的position-pair对角路径。
- 注意力残差。与深度方向上将所有内容累积到一个隐藏状态不同,每一层会对嵌入和前一模块输出应用可学习的伪查询,使该层能够选择性地从早期表示中检索信息。完整形式的计算复杂度为O(L²d),在层数少于100时是可接受的,但O(Ld)的内存消耗则不可接受,因此K3使用了Block AttnRes:8个12层的模块,将内存和跨阶段通信降至O(Nd)。
- 稳定的潜在空间专家混合(LatentMoE)。路由专家在压缩的潜在空间中运行,而两个全宽共享专家处理通用转换,这使得896个路由专家在每个token激活16个(稀疏度56)成为可能。在该稀疏度下会出现两种失效模式,报告中对此进行了说明:路由分支中的激活值爆炸,通过在上投影前添加RMSNorm以及一种新的激活函数SiTU-GLU(可平滑限制门控单元的两个分支)来解决;以及在近一千个专家之间进行负载均衡,通过分位数平衡(Quantile Balancing)实现,该方法根据目标负载设置每个专家的偏置,而非使用固定步长进行调整。
由于模型支持1M上下文,也需要研究位置编码。K3对所有MLA层均不使用位置编码,而是让KDA递归隐式传递位置信息,这意味着模型在无需RoPE缩放或YaRN插值的情况下即可扩展到1M token。上下文长度通过四阶段课程逐步增长:预训练期间从8K到64K,冷却期间从256K到1M。
对于计划部署模型权重的用户,还有两个细节需要关注:
- 量化感知训练从SFT阶段开始,使用MXFP4专家权重和MXFP8激活值,且在RL阶段的推理和训练共享相同的量化方案,消除了训练-推理不匹配问题。
- 视觉塔MoonViT-V2是一个27层、约0.4B参数的编码器,从头开始通过下一个token预测进行训练,而非像SigLIP那样从对比预训练检查点初始化。
Kimi-K3基准测试与定价
K3在K3技术报告展示的12个基准测试中,有4个排名第一:ProgramBench得分为77.8,SWE-Marathon得分为42.0,BrowseComp得分为91.2,AutomationBench得分为30.8。它在Terminal-Bench 2.1上以88.3分排名第二,在FrontierSWE上以81.2分排名第二,在Kimi Code Bench 2.0上以72.9分排名第二,在JobBench上以54.3分排名第二,在CharXiv上以91.3分排名第二。K3还在Zerobench上与GPT-5.5并列,得分为41.0。
K3的弱项体现在DeepSWE和GDPval-AA v2:在DeepSWE中,其67.5分落后于GPT-5.6 Sol的73.0分和Fable 5的70.0分;在GDPval-AA v2中,其1668 Elo分落后于Fable 5的1747分和GPT-5.6 Sol的1736分。总体趋势明确:K3并非在所有类别中都占据主导地位,但在编程、浏览、自动化和视觉代理评估中始终位居前列。所有结果均使用各模型的最大或高推理努力值。
基准测试详情:Kimi-K3技术报告
成本方面差距出现反转,但有一个例外。在Moonshot内部的Kimi Code Bench 2.0测试中,K3以38%的成本仅比Fable 5低4.0分;在高努力值下,其表现与Claude Opus 4.8的最大努力值相当,成本仅为后者的三分之一。在BrowseComp测试中,K3以每任务2.03美元的费用获得最高分,仅为GPT-5.6 Sol的一半,且在最大努力值下比Claude模型低一个数量级。API定价为:每百万次缓存命中输入令牌0.30美元,缓存未命中3.00美元,输出15.00美元。
使用ChatGPT生成的图像(来自模型定价文档)
以K2系列为参考基准
K3更广泛的能效和更强的代理性能使其相比K2.7实现了显著突破。架构层面,K2.7本质上仍是K2模型,保留了相同的61层MoE主干、384个路由专家、MLA注意力、SwiGLU激活函数以及128K上下文窗口。K3在发布不到一个月后,进行了彻底重构:93层结构、896个路由专家、混合KDA和MLA注意力、SiTU GLU激活函数以及支持100万token上下文。
编码轨迹是最清晰的对比,因为Moonshot始终对其模型进行一致的基准测试。K2.7 Code在Kim Code Bench v2上比K2.6提升了21.8%,在Program Bench上提升11.0%,在MLS Bench Lite上提升31.5%,同时将推理token减少了30%。即便如此,它仍落后于GPT 5.5,得分为62.0对比69.0。K3在Claude Code下达到73.7,在Kimi Code下达到72.9,从追赶GPT 5.5转变为仅落后于Claude Fable 5。由于Harness和基准版本存在差异,这种对比具有方向性。
就推理能力而言,K2.7强制要求必须进行思考,移除了K2.5和K2.6中可用的即时模式。K3在此基础上进一步优化,通过在长会话中保留推理历史,并在训练阶段分别训练低、高和最大推理专家,再通过后训练将它们合并为单一模型。最大的突破体现在Agenting执行方面。K2.7在MCP Atlas和MCP Mark Verified等代理基准测试中相比K2.6提升了约10%。K3则大幅缩小了剩余差距:在Moonshot的黑箱系统复制基准测试中,K2.6得分为0.560,GPT 5.5为0.893,Claude Opus 4.8为0.918,而K3达到1.000,完全解决了任务。
理解模型蒸馏
模型蒸馏本质上是一个模型从另一个模型学习,而非仅从原始数据中学习。这个简单概念在实践中至少分化出三种方法,而K3的争议完全取决于具体采用的是哪一种方法。
HuggingFace - 关于知识蒸馏你需要知道的一切
经典知识蒸馏始于一个简单观察:训练好的模型所知道的远不止其答案所显示的内容。让一个强语言模型完成"The capital of France is"(法国的首都是)这个句子时,它会回答"Paris"(巴黎)。但事实上,它并非简单选择"Paris"。它会权衡词汇表中每个token,生成完整的概率分布:"Paris"概率最高,"located"(位于)次之,"the"(定冠词)更弱,"banana"(香蕉)几乎为零。这个分布是模型对问题所有认知的快照,包括哪些错误答案接近正确,哪些完全荒谬。
经典蒸馏的核心思想是让小型学生模型学习完整分布,而非仅学习最终答案。形式上,学生模型在每个token位置最小化其预测分布与教师模型之间的KL散度。与常规训练的差异显而易见。硬标签是一个one-hot向量:所有质量集中在"Paris",其他位置为零,因此梯度只提示"提升这个token"。教师模型的分布是密集的:提升"Paris",保持"located"适度合理,压制"banana",所有信息通过单一信号传递。这种关系结构正是教师模型智能的关键,而one-hot标签恰恰丢弃了这部分信息。
有一个实际的难点需要处理:自信的教师模型几乎将所有质量集中在top token上,因此近似正确答案的次要选项概率极低,对损失的贡献微乎其微。解决方法是温度缩放:在训练时用温度T>1除以logits后再应用softmax。这会同时平滑两个分布,并通过放大尾部使近似正确答案携带有意义的梯度。推理时温度恢复为1,学生模型正常运行。如果执行得当,学生模型的性能将超越其参数规模,因为它继承了教师模型的判断力,而这种判断力往往存在于那些近似正确答案中。
现在问题来了,这对K3的故事至关重要:上述描述适用于经典的logit蒸馏方法,该方法需要教师模型的完整输出分布,通常通过其原始logits获得。商业API返回生成的文本和最多一小部分top-k的log概率,从不提供完整的分布,因此通过API对封闭模型(如Claude Fable 5)进行经典logit蒸馏在实践中不可行。
K3是否从Claude中进行了蒸馏?
指控的证据分为三个等级,但只有一个是被记录的。
证据分为三个等级,但只有一个是被记录的。2026年2月,Anthropic发表研究,指控DeepSeek、Moonshot和MiniMax大规模提取Claude模型:通过约24,000个欺诈账户进行了1600万次交互,其中Moonshot的340万次交互针对代理推理、编程、计算机使用和视觉任务,随后还有一阶段针对推理轨迹的提取。虽然指控内容严重,但发生在K3之前数月,且未与K3的训练数据产生任何关联。针对K3的政府指控仍未得到证实,未发布任何日志或文件,Moonshot也已否认。最薄弱的证据是K3在截图中自称Claude,这只能证明Claude文本存在于某个网络规模的语料库中,包括早于K3的公开Fable轨迹数据集,仅此而已。
技术报告从三个方面反驳了该指控。教师链是内部端到端的:来自先前Kimi模型的SFT轨迹、九位RL专家、MOPD整合,没有任何步骤需要外部教师。Claude风格的行为有非蒸馏的解释:Moonshot的RL环境实现了Claude Code、Codex、OpenClaw和Hermes的接口,而在一个Claude-Code形状的接口中训练的模型会自然习得Claude-Code风格的惯例。时间线也存在矛盾:Fable 5在6月9日至12日以及7月1日公开,而K3在7月16日发布,其测试报告在Fable公开之前就已进行,且K3在SWE-Marathon(+7)、BrowseComp(+3.2)和WebDev Arena(+44 Elo)基准测试中击败了其所谓教师模型,而学生模型通常难以在教师模型的主场取得优势。
综合来看,结论比双方预期的都更有限。由于日历安排和架构与Anthropic毫无关联,从Fable 5进行完整蒸馏已被排除。但后训练污染仍存在可能性:报告未公布任何数据来源,其内部教师声明无法从外部验证,2月时期的材料可能已影响到早期Kimi检查点,进而影响K3的SFT合成。变化在于现在问题可以被验证,权重已公开,K3的输出分布可直接与Claude进行对比。
在此之前,Nathan Lambert的分析依然成立:如果对抗蒸馏有所贡献,其影响范围相对有限。他的论点基于能力而非来源:在他看来,那些因蒸馏恐慌而认为中国实验室只能通过IP盗窃生产优质模型的观察者,将面临认知冲击,因为Moonshot正以比OpenAI和Anthropic少几个数量级的资本,解决同样的扩展问题。
使用W&B Weave对Claude Fable和Kimi K3进行基准测试
在本教程中,我们将使用 OpenAI 的 HumanEval 数据集,这是一组 164 个 Python 问题。每个提示都是包含文档字符串的函数签名,每个项目都附带标准的隐藏测试用例。我们通过几个问题对两个模型进行相同提示的测试,执行代码并对比测试结果,让 W&B Weave 处理追踪、评分和并排比较。
每次生成的代码、通过/失败状态以及延迟都会记录在 Weave 控制面板中。
步骤 0:前提条件与安装
在运行任何操作之前,您需要三个 API 密钥:用于生成模型的 Kimi 密钥、用于 Claude Fable 5 的 Anthropic 密钥,以及用于将追踪和表格存储到指定位置的 Weights & Biases 密钥。
获取用于 K3 的 Kimi API 密钥:
- 访问 https://platform.kimi.ai/
- 注册账户
- 在控制台页面选择 API 密钥
- 创建新密钥并复制
获取 Weights & Biases 密钥:
- 访问 https://wandb.ai/ 注册免费账户
- 前往 https://wandb.ai/authorize 或在用户设置中打开 API 密钥
- 创建密钥并立即复制
获取用于 Claude Fable 5 的 Anthropic API 密钥:
- 访问 https://platform.claude.com/
- 在控制台页面选择 API 密钥,命名后复制
将密钥导出到环境变量或保存到 .env 文件中,避免敏感信息出现在脚本或 Weave 追踪中。关于安装,我们将使用 OpenAI SDK 与 Kimi K3 进行推理,因为 Moonshot 提供的是兼容 OpenAI 的接口而非定制接口。
pip install openai weave anthropic步骤 1:导入与凭证设置
需要三个密钥:Moonshot(用于 K3)、Anthropic(用于 Fable 5)、Weights & Biases(用于 Weave 日志)。Moonshot 限制组织并发数为 3,而 Weave 默认并行度会超出该限制并导致 429 错误,因此在任何操作前需设置 WEAVE_PARALLELISM。
import os
import json, re, subprocess, sys, tempfile, time
from pathlib import Path
import weave
from anthropic import AsyncAnthropic
from openai import AsyncOpenAI
os.environ["MOONSHOT_API_KEY"] = ""
os.environ["WANDB_API_KEY"] = ""
os.environ["ANTHROPIC_API_KEY"] = ""
os.environ["WEAVE_PARALLELISM"] = "2"步骤 2:Fable 与 Kimi LLM 推理函数
首先定义两个模型共用的系统提示,采样设置采用各厂商文档中记载的最大值:K3 的最大推理努力度(其唯一可配置层级),以及 Anthropic 推荐用于编码任务的 Fable 5 的 xhigh 努力度自适应思考模式。两个模型返回相同字典结构,因此评分器无需区分模型来源。
SYSTEM = (
"完成 Python 函数。以单个代码块形式回复,包含完整的函数实现,不添加其他内容。"
)
kimi_client = AsyncOpenAI(api_key=os.getenv(
"MOONSHOT_API_KEY"
),
base_url=
"https://api.moonshot.ai/v1"
)
claude_client = AsyncAnthropic()
@weave.op()
async
def kimi_k3(prompt: str) -> dict:
t0 = time.monotonic()
res =
await
kimi_client.chat.completions.create(
model=
"kimi-k3"
,
messages=[{
"role"
:
"system"
,
"content"
: SYSTEM},
{
"role"
:
"user"
,
"content"
: prompt}],
temperature=
1.0
, reasoning_effort=
"max"
, max_tokens=
1024
)
return
{
"code"
: extract_code(res.choices[
0
].message.content),
"latency_s"
: round(time.monotonic() - t0,
2
),
"output_tokens"
: res.usage.completion_tokens}
@weave.op()
async
def claude_fable_5(prompt: str) -> dict:
t0 = time.monotonic()
res =
await
claude_client.messages.create(
model=
"claude-fable-5"
, max_tokens=
1024
, system=SYSTEM,
thinking={
"type"
:
"adaptive"
},
output_config={
"effort"
:
"xhigh"
},
messages=[{
"role"
:
"user"
,
"content"
: prompt}]
)
text =
""
.join(b.text
for
b
in
res.content
if
b.type ==
"text"
)
return
{
"code"
: extract_code(text),
"latency_s"
: round(time.monotonic() - t0,
2
),
"output_tokens"
: res.usage.output_tokens}第 3 步:提取和评分器追踪
模型会用 markdown 栏杆包裹代码,因此 extract_code 会提取最后一个代码块。执行评分器实际完成主要工作:它按照官方 HumanEval 测试套件的方式重建程序,当模型仅回复函数体时,会在前面添加提示,然后通过子进程运行测试并设置超时。
延迟评分器会显示速度和 token 数量,而 pass_rate 会从评估摘要中读取 pass@1 指标,当所有生成结果都失败时会降级为错误信息而非崩溃。
def extract_code(text):
blocks = re.findall(r
"```(?:python)?\n(.*?)```"
, text or
""
, re.DOTALL)
return
blocks[-
1
].strip()
if
blocks
else
(text or
""
).strip()
@weave.op()
def latency_scorer(output: dict) -> dict:
return
{
"latency_s"
: output[
"latency_s"
],
"output_tokens"
: output[
"output_tokens"
]}
@weave.op()
def execution_scorer(prompt: str,
test
: str,
entry_point
: str,
output
: dict) -> dict:
code = output[
"code"
]
if
f
"def {entry_point}"
not
in
code:
code = prompt + code
program = f
"{code}\n\n{test}\n\ncheck({entry_point})\n"
with
tempfile.TemporaryDirectory()
as
td:
f = Path(td) /
"sol.py"
f.write_text(program)
try
:
p = subprocess.run([sys.executable, str(f)], capture_output=True,
text=True, timeout=
20
, cwd=td)
return
{
"passed"
: p.returncode ==
0
,
"stderr"
: p.stderr[-
300
:]}
except subprocess.TimeoutExpired:
return
{
"passed"
: False,
"stderr"
:
"TIMEOUT"
}
@weave.op()
def pass_rate(model: str,
summary
: dict) -> dict:
""
"pass@1 = 通过隐藏测试的生成比例。
如果所有生成都出错,评分摘要会返回 null。"
""
passed = ((summary or {}).get(
"execution_scorer"
) or {}).get(
"passed"
) or {}
return
{
"model"
: model,
"pass_at_1"
: passed.get(
"true_fraction"
),
"n_passed"
: passed.get(
"true_count"
),
"error"
: None
if
passed
else
"所有生成失败 - 请查看上方的 API 错误信息"
}第 4 步:初始化 Weave 项目并加载数据
每条数据包含 task_id、prompt、entry_point、canonical_solution 和 test。我们保留其中四个字段:task_id、prompt、test 和 entry_point。初始化 Weave 项目后,加载前几个问题以测试基准。
> 下载数据:https://github.com/openai/human-eval/raw/master/data/HumanEval.jsonl.gz
数据包含164个带有Python问题描述的提示。
weave.init( "kimi-k3" ) rows = [json.loads(l) for l in Path( "HumanEval.jsonl" ).read_text().splitlines() if l.strip()] dataset = [{ "task_id" : r[ "task_id" ], "prompt" : r[ "prompt" ], "test" : r[ "test" ], "entry_point" : r[ "entry_point" ]} for r in rows] print(f "{len(dataset)} problems loaded" ) # output: 164 problems loaded
### 第5步:运行评估
一个Evaluation对象同时服务于两个模型,这保证了比较的公正性:相同的问题和相同的评分器。创建Evaluation对象是设置评估配置的第一步。一个Evaluation包含示例数据、评分逻辑和可选的预处理。之后你可以用它来运行一个或多个评估。
评估帮助你将变更与一致的示例集进行对比,并在影响用户之前检测回归。在这里,Kimi K3和Claude Fable 5基于上述追踪创建了两个实验,通过这个追踪,我们可以使用仪表板中的Evals部分,用几个图表比较结果,如下图所示:
evaluation = weave.Evaluation(dataset=dataset, scorers=[execution_scorer, latency_scorer]) for fn in (kimi_k3, claude_fable_5): print( "evaluating" , fn.name) summary = await evaluation.evaluate(fn) print(pass_rate(fn.name, summary))
比较Kimi K3和Claude Fable 5追踪的评估结果。Fable 5通过了93.3%,K3通过了90.2%,在164个问题中存在5个差距,同时K3每个问题耗时18.62秒,而Fable耗时5.19秒,输出token数量为461.6对比252.6。
人类评估通过率结果:Claude Fable 5 vs Kimi K3
概览:Fable 5解决了164个问题中的153个,K3解决了148个,存在5个问题的差距(93.3% vs 90.2%),同时K3每个问题耗时18.62秒,而Fable耗时5.19秒,输出token数量为461.6对比252.6。在这个视图中值得注意的一个细节:模型延迟(5.1914 / 18.6251)和评分器延迟(5.1907 / 18.6244)的差异在毫秒级以内。
Claude Fable和Kimi K3实验的Evals概览指标
在Weave中,你可以打开任意单个追踪查看完整的函数级分析:模型调用、提取的代码以及每个评分器的结果并排显示。这使得可以直观检查特定示例通过或失败的确切原因,而不是从聚合数据中推测。
## 这对开放模型生态系统意味着什么
K3在代码方面属于前沿水平,在视觉和前端工作方面领先,在最难的长期仓库任务方面落后于Fable 5,在成本方面则远超。在检查下,它不像Claude的克隆模型。其失败模式是独特的:过度主动、对思考历史处理的敏感性、更高的运行间方差,这些都不是Fable的特征。现在,基于模型输出的教师-学生训练已成为整个领域的重要基础设施。K3自己的报告比任何论点都更清晰地说明了这一点:其后训练是一个九教师蒸馏流水线,已公开发布,并附有奖励方程。实验室常规实践是从自己的更大检查点进行蒸馏。
开放前沿的差距如今已以周为单位衡量。K3的演化历程在三份技术报告中均有记录,其架构新颖到目前为止无人提出它与Anthropic的设计存在相似性,其能力跃迁可清晰分解为规模扩展、注意力机制重构和强化学习计算三个维度,且其权重已发布在Hugging Face平台,任何人都可以直接通过实测验证蒸馏假设,而非仅限于争论。在有人完成相关验证之前,评估K3的正确方式与评估任何模型的方式一致:对其进行监控,运行在自己的任务场景中,并分析执行轨迹。
## 资源
- Kimi K3技术报告:https://arxiv.org/pdf/2607.24653
- Kimi K3技术博客:https://www.kimi.com/blog/kimi-k3
- 神经网络知识蒸馏:https://arxiv.org/pdf/1503.02531
- Simon Willison关于Kimi K3的博客:https://simonwillison.net/2026/Jul/16/kimi-k3/
- Nathan Lambert的Interconnects AI电子报:https://www.interconnects.ai/p/kimi-k3-the-open-weights-escalation
深入观察Kimi K3的架构、基准性能及其与Claude的相似性报告,审视现有证据如何揭示该模型的真实独特性。
分享本文:
/think