Anthropic FlashProve:以每秒 110 个 token 的速度进行 zkSNARK 可证明推理

Anthropic 发布了 FlashProve,这是一个用于可证明推理的开源研究原型,它使用 zkSNARK 来证明特定的已提交模型生成了给定的输出。在 Llama 4 Maverick(一个 400B 参数的混合专家模型)上,Anthropic 报告称在单块 H100 GPU 上每秒可生成约 110 个 token 的证明,证明大小约为 19 MB,且可在 CPU 上于几秒内完成验证。这一结果之所以重要,是因为它使模型身份和输出来源的加密证明变得足够实用,从而可以用于研究路由完整性、篡改检测、审计工具和 AI 节奏控制,尽管 Anthropic 明确将其定位为中间研究进展,而非一个完整的系统。

Anthropic 发布了什么

Anthropic 随研究文章一同发布了五个工件:博客文章本身、技术报告、协议描述、可执行代码和 Lean 证明。代码包括一个证明器、一个快速的 C++ 验证器以及一个可证明正确的 Lean 验证器。Lean 材料包括顶级数学陈述的证明,以及用于辅助审计的 Lean 定理交互式可视化工具。Anthropic 在 Apache 2.0 许可下发布了代码、Lean 证明和文档。

该文章将 FlashProve 描述为一种开源的高性能可证明推理原型。Anthropic 表示其目标有二:加速并促进可证明推理的发展,并证明零知识简洁论证对于该问题是实用的。Anthropic 还指出,该文章分享的是中间进展,而非一个已完成的研究议程,并邀请其他人利用这项工作进行改进。

为什么可证明推理很重要

可证明推理解决了简单的信任鸿沟:当今查询模型的用户无法检查响应是否来自开发者声称的特定模型。响应可能来自路由服务秘密替换的更廉价模型,或者来自篡改了 token 流的攻击者。仅凭输出质量来判断是不可靠的。

zkSNARK(零知识简洁知识论证)允许证明者通过简短的证书让验证者确信计算已正确执行。该证书是零知识的,因为它除了计算的正确性外不泄露任何信息;它是简洁的,因为验证比证明要快得多。对于可证明推理,模型提供者提交一组权重,然后证明每个响应都是由该已提交模型生成的。该证明不会泄露关于权重的任何信息,且验证者不需要权重或提供者的硬件。

Anthropic 将其动机归纳为四个信任挑战。

挑战 1:控制 AI 发展节奏

一些旨在监管和控制 AI 发展节奏的提案依赖于监控硬件及其使用方式。提供者可能被要求将硬件专门用于推理,而不是训练强大的新模型。提供者可能会试图通过提供更廉价的模型或意外使用计算资源来作弊,从而腾出资源用于训练。

有了 zkSNARK,监管机构可以要求提供涵盖一段时间内所服务推理请求的证书。证书必须显示请求是由声称的模型生成的。恶意提供者除非其硬件确实在服务正确的模型,否则无法满足该请求。监管机构可以在无需提供者硬件设置的情况下检查这些声明,而提供者也能获得监管机构不会获知专有模型信息的保证。Anthropic 指出了一个重要的局限性:这验证了硬件正在进行推理,但不能确定该硬件没有在后台进行训练。

挑战 2:篡改检测

随着模型变得越来越有价值,推理服务器成为了目标。攻击者或流氓代理可能会破坏服务器以窃取权重、提供恶意响应或隐藏在真实响应中。对手不一定是外部的。一个更先进的模型可以在未经授权的较弱模型位置运行,并伪装成较弱模型以规避分类器和监控。

有了 zkSNARK,提供者可以要求对每个响应进行有效证明。该证明绑定到权重的特定承诺,因此它证明了是已提交的模型生成了响应,而不仅仅是某个模型。破坏服务器的攻击者或替换自身的模型必须为预期的权重生成有效证明才能避免被检测,而他们无法做到这一点。用户也可以接收这些证明,因为它们不会泄露内部信息且检查成本低廉。

Anthropic 将此与其《前沿安全路线图》(Frontier Safety Roadmap)联系起来,在该路线图中,它设定了一个公开目标,即在 2026 年 9 月 30 日之前开发出一种可证明推理原型,能够可靠地签署 AI 模型输出,使其可归因于一组特定的模型权重。Anthropic 表示,它通过一个单独但相关的项目实现了该目标,该项目签署推理流量并在受信任的服务器上重新计算推理;FlashProve 通过不同的方法追求相同的目标。

挑战 3:文本来源

开发者可能声称某个软件库已由前沿网络安全模型扫描过漏洞,或者某家公司可能声称某项商业计划已由适当的模型批准。用户可能没有资源或权限来运行该模型,而发布聊天记录无法提供绝对保证,因为记录可以用更廉价或降级的模型伪造。

有了 zkSNARK,提供者可以附加一个证明,表明输出是在给定输入上由声称的模型生成的。简洁性让用户无需专用硬件即可快速检查证书,而零知识则向提供者保证用户不会获知关于专有权重的任何信息。Anthropic 给出了一个“失败证明”(Proof-of-Failure)的例子:在发布代码之前,模型提供者可以向开发者提供一个证明,证明提供者在特定模型上花费了至少一定数量的 token,但没有达到特定结果,例如在尝试了至少 100 万个 token 后在补丁中没有发现任何错误。

挑战 4:模型批准

监管可能要求提供者仅服务被批准为安全的模型。提供者可能有动机规避这一点,因为风险模型可能在性能上优于竞争对手或服务成本更低。监管机构需要一种方法来确保仅服务已批准的模型。

有了 zkSNARK,监管机构可以要求提供者在响应中附加一个强制使用已批准模型的证明。该证明将每个请求绑定到所使用的模型,因此如果提供者使用未经批准的模型,它将无法通过验证。监管机构可以以轻量级的方式检查这一点,而无需重新执行每个请求。

Anthropic 将这种纯软件的加密方法与可信执行环境(TEE)进行了对比,后者是依赖制造商生产防篡改硬件的基于硬件的解决方案。Anthropic 表示,可信硬件和密码学是具有不同保证和权衡的互补方法,两者都将发挥作用。

FlashProve 的工作原理

FlashProve 是一个用于大型混合专家语言模型可证明推理的系统。它涉及两方:作为证明者的模型提供者和作为验证者的用户。该协议有两个阶段。

在离线阶段,证明者发布对模型权重的承诺。该承诺是一个简短的指纹,它锁定了权重的确切选择,同时权重保持隐藏。随后的推理声明将根据该承诺进行检查。

在在线阶段,证明者接收请求(即提示词和相应的输出 token),并生成一个证明文件,证明以下陈述:已提交的模型在评估时生成了这些输出 token。任何持有承诺、提示词和回复的人都可以在没有权重且计算量有限的情况下检查该证明。

该证明系统具有四个相关属性。完备性意味着诚实证明者的证明会被验证者接受。可靠性意味着实际上不可能对虚假陈述产生有效证明,因此验证者不必信任证明者。零知识意味着验证者对权重、中间计算值或每一层运行了哪些专家一无所知;不包括权重的模型架构并未隐藏。简洁性意味着证明很小且易于检查:被证明的计算是一个 400B 参数模型(量化版本约为 232 GB)在 H100 GPU 上的运行,而验证者接收到一个约 19 MB 的证明文件,在 24 核 CPU 上只需几秒钟即可检查。

在 Llama 4 Maverick 上的性能

Anthropic 在 Llama 4 Maverick 上评估了一个实现,这是一个 400B 参数的混合专家模型,每个 token 使用约 17B 参数,并使用了公开可用的 4-bit 权重。每个验证者请求是一个 1,024 个 token 的窗口,每个证明检查一个 token。证明者在配备单块 H100 和 24 个 CPU 核的服务器上运行;验证者在 CPU 上运行。

离线阶段每个模型运行一次,耗时约 39 分钟。由于技术报告中讨论的技术原因,生成的承诺可用于约 1600 万个请求,之后提供者必须再次提交。在线阶段在 24 个请求的批次上,证明者耗时约 223 秒,即每秒 110 个 token,每个证明为 18.78 MB。

验证者不需要 GPU,且只能访问权重的承诺。客户端下载承诺(总共约 6.5 MB),然后为每个请求下载一个证明。在 24 个线程上检查一个证明需要 17 秒,在单个线程上需要 21 秒,这包括了离线阶段的检查。

Anthropic 将此与使用 vLLM(一种广泛使用的推理引擎)进行的普通推理进行了比较,该推理在八块 H100 上使用了相同模型的 FP8 版本。每个 GPU 证明 24 个请求的批次所需的时间大约是 vLLM 同时处理相同 24 个请求所需时间的 72 倍(各次运行范围在 66 到 77 之间),当 vLLM 以 Anthropic 尝试的最高负载运行时,时间大约是其 94 倍。

使 FlashProve 实用的工程选择

FlashProve 使用了几项架构决策来保持证明成本可控。证明者的工作量与实际运行的专家成正比。在混合专家模型中,一个 token 使用 400B 参数中的约 17B,因此证明者每个 token 的工作量与这 17B 成正比,而不是所有参数,同时证明仍然隐藏了选择了哪些专家。

请求在事后分批证明。证明者像预填充(prefill)一样,在一次并行传递中读取完成的文本,并为每个批次打开一次权重承诺,而不是每个请求一次。

该系统旨在适配单块 GPU。每一层的模型权重被分成段,并一次证明一层的一个段。权重保存在普通内存中并进行流式传输,因此单块 80 GB GPU 及其旁边约 290 GB 的主机内存就足够了。

Anthropic 还区分了在线证明(in-line proving)和事后证明(post-hoc proving)。在线证明与推理同时进行,预计速度极快,但可能会为了效率而牺牲安全性。事后证明在事后针对 token 的子集进行,允许速度较慢而不必进行那种权衡。FlashProve 遵循事后方法。Anthropic 指出了事后方法的局限性:重新计算增加了复杂性、获取流量保证的延迟以及固有的非确定性。

加密构造

FlashProve 使用了部署在点对点系统(如以太坊的二层网络)中的那种 zkSNARK。Anthropic 表示,该 zkSNARK 遵循一种成熟的配方:一种称为交互式预言机证明(IOP)的底层信息论对象,通过哈希函数编译成加密证明,这甚至提供了后量子安全性。IOP 由最先进的构建块组装而成,包括基于编码理论和复杂性理论技术的带有线性约束和查找参数的代码邻近度测试。Anthropic 将这些部分组合成一个用于推理的定制 IOP 描述为一项精细的任务,并指出了技术报告以获取详细信息。

使用 Lean 进行形式化验证

Anthropic 通过形式化验证来解决对加密代码的信任问题。团队使用 Lean 证明助手来指定协议和所需的安全性属性,并以机器可检查的形式证明这些属性。三个顶级属性是完备性、可靠性和零知识。这些属性是在随机预言机模型中陈述的,这是一种分析依赖哈希函数的加密协议的信息论方法。

Anthropic 确定了两个剩余的信任鸿沟。首先,必须对形式化陈述进行审计,以确保它们符合其意图。这必须手动完成,尽管 Anthropic 表示这比审计证明要轻松得多,并提供了一个交互式可视化工具来辅助。其次,必须对可执行代码进行审计,以确保它符合已证明安全属性的形式化定义协议。

审计方法因属性而异。可靠性仅取决于验证者,因此 Anthropic 在 C++ 验证器之外提供了一个可执行的 Lean 验证器。Lean 验证器运行速度较慢,但 Lean 证明了它只接受可靠性定理中验证者所接受的内容。C++ 验证器是日常工具:它没有形式化保证,但在 Anthropic 的测试中,它在每个证明上都与 Lean 验证器一致。完备性假设证明者和验证者是诚实的,因此 Lean 验证器让团队通过标准软件测试获得信心,即诚实的证明者会产生接受的证明。零知识仅取决于证明者,但证明者很昂贵,运行 Lean 证明者是不切实际的。Anthropic 没有提供相关设施,并期望任何想要隐藏权重的证明者都有足够的资源进行仔细的代理或人工安全审计,以确保与 Lean 证明者等效。

Anthropic 还表示,Claude 在用于推理的 zkSNARK 上取得了改进,并构建了一个比现有开源系统快得多的系统。文章指出,Claude 擅长优化,但经常做出难以评估的决策,特别是在大型复杂系统中,Anthropic 通过在 Lean 中为声称的安全保证提供顶级可审计陈述来应对这一点。

FlashProve 与先前工作的比较

Anthropic 将 FlashProve 置于俗称 zkML 的工作系列中。早期的系统规模很小:2017 年的 SafetyNets 验证了一个两层卷积层的 MNIST CNN 和一个小型全连接语音模型;2021 年的 zkCNN 达到了 VGG-16,具有 15M 参数,每个证明耗时 88.3 秒;2022 年的 Kang 等人证明了全分辨率 ImageNet 上的 MobileNet v2。

随后是 Transformer 证明。ZKML 的 GPT-2 每个 token 耗时约 159 秒,参数为 117M,大约每秒 0.006 个 token。Modulus Labs 的 1.5B 参数 GPT-2 XL 需要超过 90 小时。2024 年的 zkLLM 在 GPU 上用约 15 分钟证明了 2,048 个 token 输入上的 LLaMA-2-13B,Anthropic 将其描述为每个新 token 每秒约 0.001 个 token,或在批处理中每秒约 2.5 个 token。2025 年,zkGPT 将 GPT-2 缩短至 21.8 秒,每秒约 0.05 个 token;zkPyTorch 在一个 CPU 核上以每秒约 150 秒的速度证明了 Llama-3 8B,每秒约 0.007 个 token;ZKTorch 在约 20 分钟内证明了 GPT-J 6B,每秒约 0.001 个 token。VerInf 证明了 Llama 4 Maverick(即 FlashProve 针对的同一个 400B 参数混合专家模型),每秒约 0.02 个 token。DeepProve(Anthropic 称其为当前经同行评审的最先进技术)通过单次前向传递认证整个生成的序列,在单台机器上达到每秒约 2.9 个 token(GPT-2)和 1.4 个 token(Gemma 3),分布式环境下达到每秒 31 个 token。

Anthropic 还提到了商业努力。Attestable 报告称在单块 H100 上以每秒 53 到 77 个 token 的速度证明了 Gemma 4 31B;在撰写本文时,Attestable 尚未发布相应的开源库。

Anthropic 强调了进展的规模。2024 年,zkLLM 在单块 A100 上以每秒约 2.5 个 token 的速度证明了一个 13B 模型。Anthropic 所知的 Llama 4 Maverick 的唯一早期证明 VerInf 报告称在 DGX Spark 上 1,000 个 token 耗时 14.3 小时,且证明大小为 93.6 GB,验证耗时近一天。FlashProve 在单块 H100 上以每秒 110 个 token 的速度证明了同一个模型,证明大小为 19 MB,且可在几秒内验证。Anthropic 认为这一进展应该可以转移到更多的模型和架构上,使计算开销比原生计算高出约两个数量级(在其测量中约为 70 到 95 倍),远低于之前的预期。

Anthropic 记录的局限性

Anthropic 列出了几个技术局限性。首先,快速可执行代码没有形式化保证。Anthropic 提供了协议的 Lean 实现,包括一个可执行的慢速 Lean 验证器,以及在 Lean 中证明的安全属性。论文和快速可执行代码是从 Lean 协议派生出来的,但 Anthropic 不保证这三者(即 Lean、论文和代码)完全匹配。

其次,证明是关于贪婪解码下的整数模型。Anthropic 证明了已发布权重的精确整数版本,证明断言每个被检查的 token 都是该模型的贪婪选择。来自浮点实现或采样解码的回复可能会在某个位置偏离,不再完全匹配已证明的计算。整数版本通常被预期并在经验上测试为在通用浮点推理的某个小误差范围内,即使考虑到浮点计算的非确定性,尽管这不涵盖对抗性设计的提示词。

第三,隐藏架构不是目标。该系统假设所服务的模型使用混合专家架构,其中每个 Transformer 层的全连接块被多个专家子网络取代,且路由器每个 token 仅激活一小部分专家;FlashProve 使用 MoE 结构以获得效率提升。其他架构(如密集模型)被广泛使用,其描述可能包含提供者想要保密的知识产权。Anthropic 指出,人们可以设想一个系统,通过隐藏承诺同时提交权重和架构来隐藏架构,验证者检查已提交的可执行文件在已提交模型上的执行情况。

第四,侧信道攻击不在范围内。该协议保证证明本身不会泄露关于已提交模型权重的任何信息,但测量证明生成时间等侧信道可能会泄露关于权重的潜在信息。Anthropic 认为这超出了本次发布的范围。

第五,该系统目前证明上下文长度不超过 1,024 个 token 的推理。Anthropic 指出,与聊天设置中积累的上下文相比,这很短,并表示理想情况是将上下文长度增加到前沿模型的完整上下文窗口,这些模型通常具有数十万到数百万个 token 的上下文窗口。

发布意味着什么

FlashProve 是一个研究原型,而不是生产级的可证明推理服务。其意义在于,它展示了一种纯软件的加密方法,其规模和速度在以前对于开放系统来说是遥不可及的。Anthropic 报告称,在 400B 参数的混合专家模型上,每秒可处理 110 个 token,证明大小为 19 MB,验证时间为秒级,而之前的开放结果要慢几个数量级,或者仅限于小得多的模型。

此次发布还展示了一种使 AI 生成的加密系统更具可审计性的模式:在 Lean 中对顶级安全陈述使用形式化验证,同时提供快速验证器和可证明正确的验证器,并记录形式化陈述、论文和可执行代码之间剩余的差距。Anthropic 明确表示,快速 C++ 验证器没有形式化保证,且 Lean、论文和代码可能无法完全匹配,因此形式化验证减少了但并未消除信任假设。

对于 AI 治理,文章认为可证明推理可以支持节奏控制、篡改检测、文本来源和模型批准。它还明确指出了局限性:证明可以显示硬件服务了声称的模型,但不能证明同一硬件没有在后台进行训练;证明隐藏了权重但没有隐藏架构;当前系统处理的上下文不超过 1,024 个 token。这些局限性定义了一个有前途的原型与可部署的合规或安全机制之间的差距。

Sources