FlashProve:どのモデルが回答したかをAnthropicが証明
AnthropicのFlashProveは証明可能な推論のオープンソース試作。重みを明かさずに、回答を生成したモデルをzkSNARKで証明します。
この記事の他の言語版:العربيةDeutschEnglishEspañolFrançaisItalianoPolski简体中文
AnthropicのFrontier Red Teamは11月2日、FlashProveを公開しました。いわゆる「証明可能な推論(provable inference)」のオープンな試作です。モデル提供者はこれを使って、ある回答が事前に宣言した特定の重みから生成されたことを、重みそのものを明かさずに暗号学的に証明できます。コードはApache 2.0ライセンスでGitHubにあります。
FlashProveはどんな問題を解決するのか?
APIでモデルに問い合わせるとき、料金を払っているそのモデルが本当に答えたのかを確かめる手段はありません。著者たちは、「for cost reasons」でこっそりモデルを差し替える仲介サービスや、安価な版や劣化版を提供してログを偽造しかねない提供者を例に挙げています。
FlashProveの答えはzkSNARK、つまり短いゼロ知識証明です。仕組みは2段階です。
- モデルごとに1回、提供者は重みへのコミットメントを公開します。重みを明かさずに、提供者を1組の重みに結びつける短い「指紋」です。
- リクエストごとに、サーバーはその宣言済みモデルがまさにそのトークンを生成したという証明を作ります。この証明は重みにアクセスしなくても、普通のCPUで誰でも検証できます。
この証明にはいくつかの性質があります。正直な証明は必ず通り、偽の証明を作ることは事実上不可能で、重みや中間値は隠されたまま、そして証明自体は小さく安価に検証できます。
FlashProveはどれくらい速いのか?
ここからが面白いところです。チームは完全版のLlama 4 Maverickで実証しました。4ビット重みの、パラメータ4,000億、トークンあたり約170億がアクティブなMoE(mixture-of-experts)モデルです。記事によると:
- 証明器(prover)に必要なのはH100 1基とCPU 24コアで、重みは約290GBのホストメモリからストリーミングします。
- 前処理フェーズは約39分かかり、モデルごとに1回だけ実行します。
- 24リクエストのバッチで約223秒、つまり毎秒約110トークンで、証明1つのサイズは18.78MBです。
- 証明の検証は24スレッドで17秒(1スレッドで21秒)、GPUは不要です。
オーバーヘッドはまだ大きく、証明にはvLLMで同じ24リクエストを処理する約72倍の時間がかかります(実行によって66〜77倍)。比較として著者たちは、毎秒1トークンに満たない速度だったり、GPT-2規模のモデルでしか動かなかったりした過去のオープンな研究を挙げています。
Claudeはどこに関わっているのか?
研究そのものです。著者たちによると、Claudeは推論向けzkSNARKの改良を生み出し、プロトコル仕様も書きました。ただしチームは、Claudeは「often makes decisions that are hard to evaluate」と指摘しており、そのためセキュリティ上の性質はLeanで記述・証明されています。リポジトリには証明器、C++の高速な検証器、そしてLeanで書かれた形式検証済みの2つ目の検証器などが含まれ、著者たちによると両者はテストしたすべての証明で一致しています。Claudeが形式証明をどうこなすかについては、123のオープンソースライブラリの形式検証の記事で書きました。
著者にはAnthropic、EPFL、MIT、StarkWare、Succinctの研究者が名を連ねています。
注意すべき点は?
第一に、これは研究用の試作です。記事にはFlashProveをClaudeモデルやAnthropicの本番環境で使うという話は一切なく、リポジトリはメンテナンス対象外とされ、変更も受け付けていません。
第二に、著者たち自身が挙げている制約です。証明が対象とするのは重みの整数版と貪欲デコーディング(greedy decoding)なので、サンプリングを使った回答は異なる場合があります。コンテキストは1024トークンまでで、モデルのアーキテクチャは隠されず、設計はMoEモデルを前提としています。高速な実行コードについての形式的な保証もありません。
第三に、遅延です。FlashProveは推論の後にバッチで証明するため、回答と同時に証明を受け取ることはできません。
何に役立つのか?
著者たちは、乗っ取られたサーバーや差し替えられたモデルの検出、あるテキストをどのモデルが書いたかの確認、承認済みモデルだけが提供されているかの監視などを挙げています。面白いのは「Proof-of-Failure」というアイデアです。提供者が特定モデルのトークンを少なくとも一定量消費しても結果に至らなかったことの証明で、たとえば100万トークン以上使ってもパッチにバグが見つからなかったことを示せます。
これはテキストに統計的な印を付け、検出に秘密鍵を必要とするClaudeの電子透かしとは異なるアプローチです。FlashProveは誰でも検証できる数学的な証明を提供します。チームは今後、アーキテクチャの詳細を隠すことと、1024トークンの制限をコンテキストウィンドウ全体に広げることを計画しています。
よくある質問
FlashProveとは?
Anthropicによる証明可能な推論のオープンな試作です。暗号学的な証明システム(zkSNARK)で、ある回答が宣言済みの特定モデルによって生成されたことを、その重みを明かさずに検証できます。
FlashProveはClaudeで使える?
Anthropicの記事ではそのような話は出ていません。チームはオープンなLlama 4 Maverickでテストしており、プロジェクト自体も研究用の試作です。
FlashProveの証明を自分で検証できる?
はい。READMEによると、サンプル証明の検証はLinux上のg++ 13で、2GB未満のRAM、GPUなしで実行できます。完全なモデルの証明を生成するには、80GBのH100と数百GBのRAMが必要です。
FlashProveのライセンスは?
Apache 2.0です。モデルの重みは含まれておらず、Llama 4ライセンスのもとでHugging Faceからダウンロードする必要があります。