Anthropic FlashProve:面向400B参数MoE模型的开源可证明推理
摘要
Anthropic的FlashProve能够以密码学方式证明某个响应是由特定的400B参数混合专家模型生成的,在单个H100 GPU上以超过110 tokens/s的速度生成约19 MB的证明;在CPU上验证仅需数秒,从而在不暴露模型权重的情况下实现可信的AI推理。
FlashProve的成果
FlashProve使用零知识简洁论证知识(zkSNARK)实现了可证明推理(PI)。它允许模型提供方承诺一组具体的权重,然后为每个生成的token附加一个简短证明,使任何仅持有公开承诺的验证者都能确认该token来自被承诺的模型。
关键保证:
- 完备性 – 诚实证明者的证明总能通过验证。
- 可靠性 – 为虚假陈述伪造证明将破坏标准密码学假设。
- 零知识 – 证明不泄露任何关于模型权重的信息(架构仍然可见)。
- 简洁性 – 1,024个token的请求产生约19 MB的证明;在24核CPU上验证约需17秒。
性能数据
| 组件 | 硬件 | 吞吐量 | 证明大小 |
|---|---|---|---|
| 证明者(在线) | 1 × NVIDIA H100 + 24个CPU核心 | 110 tokens/s(24个请求约223秒) | 每1,024个token批次18.78 MB |
| 验证者 | 24核CPU(无GPU) | – | 每个证明17秒(24线程) |
| 离线承诺 | 1 × H100 | 39分钟(每个模型一次) | 总计6.5 MB |
与在八块H100上使用vLLM的标准推理相比,FlashProve的在线阶段消耗的GPU时间多70–95倍,但开销远低于之前的开源zkML系统(其速度范围为0.001至0.05 tokens/s)。商业项目如Attestable报告31B密集模型的速度为53–77 tokens/s,但FlashProve是首个在400B MoE模型上达到>100 tokens/s的开源原型。
系统架构
离线阶段
- 模型承诺 – 证明者计算精确整数量化权重(4位)的密码学指纹并发布(约6.5 MB)。该承诺在约1600万次推理请求内有效,之后需要新的承诺。
在线阶段
- 请求 – 验证者发送提示并接收模型的输出。
- 证明生成 – 证明者运行模型(预填充风格),同时构建一个zkSNARK证明,表明被承诺的权重产生了精确的贪心token序列。
- 验证 – 验证者根据公开承诺、提示和输出检查证明。不泄露任何权重或架构细节。
技术核心
FlashProve的zkSNARK遵循标准的交互式预言机证明 → 基于哈希的SNARK流程,采用:
- 带线性约束的代码邻近测试
- 查找参数
- 后量子安全哈希函数
该证明系统针对MoE推理进行了定制:每个token实际激活的约170亿参数才参与密码学工作,从而产生与激活专家数量线性相关的成本,而非全模型成本。
形式化验证与信任
Anthropic提供:
- Lean规范,涵盖协议及其三个顶层安全属性(完备性、可靠性、零知识)。
- Lean验证器(速度慢但经过机器检查),与实践中使用的快速C++验证器可证明等价。
- 交互式可视化工具,用于浏览Lean定理。
作者承认两个信任差距:
- 快速C++代码未经形式化验证;预期与Lean规范一致,但可能存在偏差。
- 证明者实现未经形式化验证(运行Lean证明者不可行)。因此需要对可执行代码进行审计。
Anthropic强调的应用场景
- 监管节奏 – 监管机构可以请求证明批次,以确认提供方的硬件专用于推理而非隐藏训练。
- 篡改检测 – 被攻破的服务器无法为未经授权的权重集伪造有效证明。
- 文本溯源 – 用户可以验证某个声明(例如“此代码已由前沿模型审计”)是否由确切使用模型的证明支持。
- 模型批准执行 – 当局可以要求证明仅提供经批准的模型。
社区反应(Hacker News评论)
- @neuwirth 指出FlashProve建立在早期的VerInf项目之上,并提到归属有限。
- @vessenes 称赞性能飞跃,但警告证明生成仍带来90–100倍的计算开销;他们还提出了证明隐藏提示部分保持私密这一开放问题。
- @nemo1618 认为对于开放权重模型,可证明推理是平凡的(重新运行模型),强调ZKP主要对封闭权重服务有意义。
- @ajb 质疑实际效用,认为证明仅确认模型未被替换为更便宜的模型,而非答案可信。
- @grey-area 和 @thereader12 表示怀疑该技术是否服务于最终用户,或仅用于内部合规或监管捕获。
- @fscaramuzza 和 @ronfriedhaber 注意到Attestable的并行工作,其报告了密集模型的可比token每秒速率。
- @wcoenen 询问系统能否检测量化与全精度部署;答案是FlashProve证明权重的精确整数版本,因此浮点或采样解码可能导致偏差并使证明无效。
- @jmort 提出软件ZK证明与机密计算硬件认证之间的权衡问题,指出前者避免暴露模型内部。
总体而言,社区认可技术突破,但强调实际采用将取决于用例相关性、证明大小、延迟以及与现有AI服务管道的集成。
局限性
- 证明范围 – 目前仅限于贪心解码下的整数量化模型;随机采样或浮点推理不在覆盖范围内。
- 上下文长度 – 证明支持最多1,024个token,远短于许多聊天应用中使用的数千token窗口。
- 架构暴露 – 系统隐藏权重但不隐藏MoE架构;密集模型需要不同的构造。
- 侧信道泄漏 – 证明生成期间的时序或内存访问模式理论上可能泄漏权重信息;这不在范围内。
- 代码验证差距 – 快速C++验证器未经形式化验证,证明者缺乏形式化保证。
如何开始
Anthropic在Apache 2.0许可下发布以下内容:
- 技术报告 – 详细设计和性能分析。
- 协议规范(PDF)– 证明系统的正式描述。
- 可执行代码 – 证明者、快速C++验证器和Lean验证器。
- Lean证明 – 安全属性的机器检查语句。
- 交互式可视化工具 – 用于探索Lean定理的HTML工具。
所有工件可在GitHub仓库anthropics/FlashProve获取。
底线: FlashProve表明,基于zkSNARK的前沿规模MoE模型可证明推理现已实用,在单个H100 GPU上实现>100 tokens/s,证明小于20 MB,在CPU上数秒内验证。虽然仍是研究原型且存在显著局限性,但开源发布为构建可信AI服务、监管工具以及未来零知识机器学习学术工作提供了具体基础。