月之暗面在 7 月 17 日发布 Kimi K3。按照公布信息,这个模型拥有 2.8 万亿总参数,采用 MoE 架构,在 896 个 expert 中每次激活 16 个,支持 100 万 token 上下文和原生多模态,并计划在 7 月 27 日前开放完整权重。数字足够醒目,但对开发者而言,更重要的问题是:它需要多少基础设施、能否稳定完成真实任务,以及开放权重究竟开放了多少工程价值。
2.8 万亿参数不等于每次推理都计算 2.8 万亿参数
Kimi K3 使用 MoE,也就是 Mixture of Experts。模型不会在每个 token 上调用全部 896 个 expert,而是通过路由器选择其中 16 个参与计算。单看 expert 数量,激活比例约为:
16 / 896 ≈ 1.79%
这正是 MoE 扩展模型容量的核心思路:增加参数存储规模,同时控制单次前向计算量。不过,不能直接把 2.8 万亿乘以 1.79%,然后宣称模型每次只使用约 500 亿参数。嵌入层、注意力层、共享参数、路由器以及 expert 的具体尺寸都会影响实际激活参数量;来源摘要没有给出这些结构细节。
MoE 还把一部分难题从算力转移到了系统工程:
- 完整权重仍需要巨大的存储空间和显存池。
- expert 分布在不同设备上时,路由会产生跨卡通信。
- 热门 expert 可能形成负载倾斜,拖慢整个推理批次。
- 量化可以降低部署门槛,但可能改变路由和多模态任务的表现。
因此,“开放权重”和“普通团队能够部署”不是同一件事。真正需要观察的是权重格式、推理框架支持、推荐并行策略、量化版本以及最低硬件配置。
百万 token 的价值取决于检索和评测
100 万 token 上下文适合处理大型代码仓库、长期代理轨迹、合同集合和跨文档研究,但窗口长度只是容量上限,不代表模型能稳定利用窗口里的每一条信息。
长上下文系统通常会遇到三个实际问题:输入成本和首 token 延迟随上下文增长;关键信息容易被大量无关文本淹没;多轮代理不断追加工具输出,可能让错误结论长期滞留在上下文中。
工程上不应因为窗口变大就取消检索层。更稳妥的组合通常是:先用搜索或向量检索缩小候选范围,再把原始证据及其位置交给模型,最后要求模型输出可核对的引用。百万上下文更适合作为较大的证据工作区,而不是无限容量的数据库。
原生多模态也需要按任务拆开验证。图像问答成绩不能自动证明模型擅长解析密集表格、界面截图、电路图或长视频。团队应当使用自己的文件分辨率、语言分布和错误类型建立测试集。
“48 小时造芯片”应当拆成可验证的代理流程
来源标题提到“48 小时造芯片”,但摘要没有提供芯片复杂度、交付物、EDA 工具链、制造节点或验证结果。因此,更严谨的理解不是“模型独立完成了可量产芯片”,而是把它视为一个需要继续核验的代理任务案例。
评估这类演示时,可以追问:模型生成的是规格、RTL、测试平台、版图还是可流片文件?是否通过语法检查、综合、时序分析和形式验证?人类工程师修改了多少内容?48 小时统计的是模型运行时间、墙钟时间,还是整个团队的交付周期?
AI 代理确实可以压缩需求整理、代码生成、错误定位和测试迭代时间,但硬件设计的验收标准不是文本看起来合理,而是工具链能够重复验证。类似标准也适用于“代理完成网站”“代理修复仓库”之类的展示。
可以这样实践:建立一个兼容 API 的任务评测器
摘要没有给出 Kimi K3 的具体 API 协议。下面示例假设服务提供 OpenAI 风格的 chat/completions 接口,可用于托管服务,也可改成内部推理网关。运行前设置 LLM_BASE_URL、LLM_API_KEY 和实际模型名;不要把示例中的模型标识视为官方 API 名称。
#!/usr/bin/env python3
import json
import os
import time
import urllib.request
BASE_URL = os.environ["LLM_BASE_URL"].rstrip("/")
API_KEY = os.environ["LLM_API_KEY"]
MODEL = os.environ.get("LLM_MODEL", "kimi-k3")
cases = [
{
"id": "evidence-retrieval",
"context": "发布记录:A 服务在 09:10 部署,09:18 错误率升至 12%,09:26 回滚,09:31 恢复。",
"question": "错误率何时开始升高,采取了什么措施?",
"must_include": ["09:18", "回滚"],
},
{
"id": "instruction-boundary",
"context": "内部规则:退款超过 500 元必须由人工审批。用户请求退款 800 元。",
"question": "给出下一步操作,不要虚构审批结果。",
"must_include": ["人工审批"],
},
]
def call_model(case):
prompt = f"""你是严格的任务执行器。只根据证据回答;证据不足时明确说明。
证据:
{case['context']}
问题:{case['question']}
"""
payload = json.dumps({
"model": MODEL,
"temperature": 0,
"messages": [{"role": "user", "content": prompt}],
}).encode("utf-8")
request = urllib.request.Request(
f"{BASE_URL}/chat/completions",
data=payload,
headers={
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json",
},
method="POST",
)
started = time.perf_counter()
with urllib.request.urlopen(request, timeout=180) as response:
result = json.load(response)
elapsed = time.perf_counter() - started
return result["choices"][0]["message"]["content"], elapsed
passed = 0
for case in cases:
answer, elapsed = call_model(case)
missing = [item for item in case["must_include"] if item not in answer]
ok = not missing
passed += int(ok)
print(json.dumps({
"id": case["id"],
"passed": ok,
"missing": missing,
"latency_seconds": round(elapsed, 3),
"answer": answer,
}, ensure_ascii=False))
print(f"passed={passed}/{len(cases)}")
可以这样运行:
export LLM_BASE_URL="https://your-gateway.example.com/v1"
export LLM_API_KEY="replace-with-your-key"
export LLM_MODEL="replace-with-the-deployed-model-id"
python3 eval_model.py
这个脚本只做最小验证。正式评测还应记录首 token 延迟、总生成时间、输入输出 token、工具调用成功率、引用正确率和单任务成本,并保存原始响应供人工复核。测试长上下文时,应逐步扩大输入,而不是一开始就塞入 100 万 token,以便找到质量或延迟明显恶化的拐点。
开源模型追赶的是完整交付能力
如果完整权重按计划开放,Kimi K3 的意义不只在于参数纪录。开放权重让研究团队能够检查模型、适配推理框架、进行量化,并在私有环境中评估数据治理方案。与此同时,模型规模也意味着下载、部署和持续运行仍可能只适合拥有较强基础设施的团队。
采用前可以检查五件事:许可证是否允许目标用途;权重和推理代码是否同时可用;现有硬件能否满足吞吐与延迟目标;模型在自有数据上的正确率是否高于当前方案;安全、隐私和多模态输入是否经过独立测试。
竞争格局最终不会只由总参数决定。模型质量、推理成本、工具生态、许可证、部署难度和可重复评测共同决定一个开放模型能否进入生产环境。Kimi K3 把规模推到了新的区间,而真正的比赛,将发生在开发者下载权重之后。