这条回复真是那个模型写的吗:FlashProve 给 AI 输出配了一张可验证的收据

作者:陈一帆

Anthropic 在 11 月 2 日开源 FlashProve,用 zkSNARK 把每条回复绑定到一组被承诺的权重上,普通 CPU 就能核验,不用拿到权重。它同时暴露了一串边界:只覆盖贪心解码和 1024 token 上下文,证明成本是同规模推理的 72~94 倍,而且证明的是“出自这份权重”,不是“这份权重没被动过”。

Anthropic Releases FlashProve for Cryptographic AI Inference Proofs

先说清楚发生了什么

11 月 2 日,Anthropic 在 GitHub 上开源了 FlashProve,Apache 2.0,版本号 0.16.0。仓库最上面贴着一行标签:研究产物,不维护,不接受贡献 。这句话得放在最前面,因为它决定了后面所有数字该怎么读——这是一个能跑通真实大模型的实验品,不是等着上线的产品。

它想解决的问题很日常:你调一个 API,回复很漂亮。但漂亮不能告诉你这是哪个模型生成的。中间可能有一层路由,把请求转给更便宜的系统;评测的时候,被测方可能拿到的是另一个模型;也可能有人在返回的路上把 token 改了 。

要自己核实,就得把模型重跑一遍。可权重是私有的,硬件也不便宜。这条路对普通用户基本是关着的 。

三步:封条、收据、验章

FlashProve 用的是 zkSNARK,纯软件实现,不依赖可信硬件那一套 。流程拆成三段:

  1. 承诺(Commit):服务商先发布一个很短的“承诺 ID”,绑定唯一一组权重,权重本身仍然保密。
  2. 证明(Prove):对每一次完整的问答,GPU 生成一份证明,声称这些输出 token 就是那组被承诺权重的输出。
  3. 验证(Verify):手里有承诺、提示和回复的人,用普通 CPU 跑 cp_verify 就能验,既不需要权重,也不需要 GPU 。

打个比方:它给你的不是菜谱,而是一张写着编号的封条。你拿着封条编号和端上来的菜,可以核对这道菜确实出自那本被封存的菜谱,但你看不到菜谱内容。零知识的意思就是,验证过程里权重和中间计算值都不会漏出去 。

工程上有个关键取巧:Maverick 是 MoE 结构,总参数约 4000 亿,但每个 token 只激活约 170 亿。证明的工作量按激活部分算,同时还能把“这次激活了哪些专家”藏起来 。这是它能塞进单张卡的原因。

那些具体数字,以及一个口径问题

110 tokens/s 这个数被反复引用,需要说清楚它到底指什么。仓库写的是“每批 24 个请求时,prefill 约 110 tokens/s” ;Unite.AI 的报道写成了“证明生成速度 110 tokens/s” 。两种说法不等价,采信仓库口径更稳。至于 decode 阶段的证明速度,本轮资料里没有数。

其余数字:单张 80GB H100,配约 290GB 主机内存;24 个请求一批约 223 秒,每条请求的证明约 18.78MB;离线承诺阶段约 39 分钟 。验证端下载约 6.5MB 的承诺文件,24 线程 17 秒、单线程 21 秒,包含离线阶段的检查 。仓库自带的示例证明检查 2 秒内就能出结果,但那是合成权重的小模型,只说明验证器能跑通,不代表真实模型的情况 。所以“CPU 几秒验证”这个说法得打个折:真实场景更接近 20 秒上下。

成本也得摆出来:和 8 张 H100 跑 vLLM FP8 推理相比,同样的批,证明消耗的每 GPU 时间约 72 倍,在最高负载下约 94 倍 。这东西不是免费挂上去的。

它保证什么,不保证什么

The DeepSeek Harness desktop app with its sidebar listing Plugins, Automation and workspace sessions beside an introduction chat
Anthropic Releases FlashProve for Cryptographic AI Inference Proofs
Anthropic Releases FlashProve for Cryptographic AI Inference Proofs

这部分最容易读错。

保证的是:Lean 4 里对完备性、可靠性和零知识做了形式化,一份假证明被接受的概率约为 q/2^124 + 2^-101 。而日常使用的那个快的 C++ 验证器本身没有形式化保证,只是和 Lean 验证器做过对测 。

不保证的是:覆盖范围是整数化权重下的贪心解码;浮点推理和采样解码会偏离被证明的那段计算;上下文上限 1024 token;时序等侧信道、针对性的对抗提示都不在保证内;没有独立安全审计 。

还有一个更根本的边界,很容易被“偷换便宜模型会被当场验出”这类说法盖过去。FlashProve 证明的是“这条回复出自被承诺的那组权重”,不是“那组权重没有被改过”。有人换了权重,他大可以重新发布一个新的承诺 ID,照样能通过验证。仓库文档专门提醒:承诺 ID 必须从你信任的第三方那里拿,绝不能来自被验证的那台服务器,也不能来自跟证明一起发过来的文件 。这句话是整套东西的信任根,也是它最不自动的地方。

另外,它也证明不了“同一块硬件没有同时在训练别的模型”。Anthropic 自己点出了这个限制,所以拿它去证明算力用途合规,能力是有限的 。

为什么“验证”忽然成了新问题

把 M014 那份研究放在旁边看,会更容易理解这件事的时机。

The Decoder 报道的 MIT 团队工作叫 Weight-Space Programming:利用 GPT-6 Astra 直接读写原始权重的能力,去改别的模型。最实用的一组实验里,Qwen3.5-0.8B 只改了 0.016% 的权重,MATH-500 从 7.9% 提到 48.1%,指令遵循从 21% 到 62%,陷入思考循环的比例从 93% 降到 33% 。对照的 Gemma 3 270M 因为本来不太循环,测不出提升;在 Breakout 上,Astra 直接写出来的权重平均 517 分,常规训练 1 亿轮的基线是 25 分,另两个游戏又落后于训练最久的版本 。研究者自己的解释是,他们怀疑拆掉了 Qwen 里抑制已有能力的一道堵塞,而模型本来不具备的技能,没法靠这种方式凭空加上 。Schmidhuber 在 X 上说这是“旧闻”,引了自己 1990 年代的工作;Khattab 回应说论文里引了,新意在今天的大模型能在人类语言和数值权重之间来回翻译 。

需要标注的是:这些数字都来自 The Decoder 的转述,原始论文和实验日志本轮没有读到,Astra 与 OpenAI 的官方口径也没有核对。

这两件事没有因果关系,别硬接成一条宏大叙事。但它们指向同一件事的两面:权重比过去更容易被针对性改动、被局部微调、被“拆堵塞”,那么“我收到的这条回复出自哪份权重”就不再是个哲学问题,而是采购、评测、监管都会问的问题。FlashProve 给出的是一种回答方式:把回复和一份具体的权重绑在一起,让第三方在不看权重的前提下核对。

顺带一个值得玩味的细节:项目文档记录,几乎全部代码、Lean 证明和文档,以及所报告的测试,都是 AI 系统在人类指导下完成的 。用 AI 写出来的验证工具去验证 AI 的输出,这个环能不能闭上,现在没人敢打包票。

我的判断

值得看重的是方向。过去我们判断一个模型服务,靠的是“输出看起来对不对”,那是间接证据;密码学证明把问题换成了“这段输出是不是这份权重的函数”,这是直接证据。对独立评测、对“我买到的究竟是不是那个模型”这类需求,这是质的不同。

但也要清楚它现在站在哪里:不维护的研究原型、1024 token 上下文、只覆盖贪心解码、证明成本 72~94 倍、没有独立审计、承诺 ID 的获取仍然是个靠人的信任环节。它不是“从今天起偷换模型就藏不住了”,而是“这条路第一次被走到能在真实大模型上跑、能在普通 CPU 上验”的程度。

真正的转折点会落在两个数上:证明成本能压到什么水平;承诺的发布和核验能不能进入现有的采购与审计流程,而不是停在文档里那句“请相信这个 ID”。

转载说明

本文根据以下公开资料整理,原文及配图出处见下方。

0
游速速·AI研究员发布在 # Software and AI · softwareintegration 圈 · 1 小时前

评论

还没有评论,来抢沙发。

游速速 · 游戏 / 软件 / AI / 硬件一站式下载站
当前页面:帖子详情