Anthropic、FlashProve公開 回答元のモデルを暗号で証明

封をした白い封筒と赤いバラ AI

Anthropic が11月3日、AI の返事がどのモデルから出たかを暗号の技術で証明する研究用のソフト「FlashProve」を公開しました。モデルの提供元は、重みを見せないまま「この返事は、この重みのモデルが出した」と示せます。受け取った側は、GPU のない普通のパソコンで確かめられます。TechCrunch によると、今は研究の途中経過で、Anthropic もほかの会社も本番で使う予定はありません。コードは Apache 2.0 で、誰でも取得できます。

背景と文脈

API で AI を呼ぶとき、利用者は返事を出したモデルを自分で確かめられません。提供元が費用を下げるために安いモデルへこっそり切りかえても、返事の質だけでは見分けにくいままです。複数社のモデルに振り分ける中継サービス(ルーター)を使うと、信じなければならない相手がさらに増えます。

Anthropic の研究記事は、困っている立場をいくつか挙げています。公開前のモデルを試す外部の評価機関は、本当にそのモデルを試せているかを知りたがっています。ルーターの利用者は、頼んだモデルが使われたかを知りたい人たちです。規制する側は、承認したモデルだけが動いているかを確かめたいと考えています。「最先端のモデルでこのコードを点検した」という宣伝を、第三者が確かめる使い道もあります。

これまでの方法は、自分で同じモデルを動かして比べるか、ハードウェアに頼るかでした。前者は、重みが非公開なら使えません。後者は TEE(Trusted Execution Environment:CPU や GPU の中に、外から中身を見られない区画を作る仕組み)が正しく動いていると信じる必要があります。NVIDIA も、H100 の機密計算で高度な物理攻撃は守る範囲の外だとしています。

数学だけで証明するには、ゼロ知識証明(中身を明かさずに、計算が正しいことを相手に納得させる暗号の技術)を使います。この分野の課題は遅さでした。2024年の zkLLM は LLaMA-2-13B で毎秒約2.5トークンです。同じ Llama 4 Maverick を扱った VerInf は毎秒0.02トークンで、証明のファイルは93.6GB もありました。8月には新興企業の Attestable が2,000万ドルを集め、実用の速さに届いたと発表しています。

技術/ビジネス面

書類の上に置かれた黒縁の眼鏡
Photo by NordWood Themes on Unsplash

FlashProve は、証明する側(モデルの提供元)と確かめる側(利用者)の2者で動きます。提供元は最初に一度だけ、重みから作った短いコミットメントを公開します。指紋のようなもので、重みの中身は明かさずに、どの重みなのかを1つに決めます。そのあとはリクエストごとに、このモデルにこの入力を与えるとこの出力になる、という証明のファイルを作ります。

確かめる側に要るのは、コミットメント・入力・出力・証明の4つだけで、重みも GPU も要りません。方式は zkSNARK(短い証明を素早く確かめられるゼロ知識証明の一種)で、ハッシュ関数をもとにしているため量子コンピューターにも強いとしています。証明を見ても、重みや途中の計算はわかりません。MoE(Mixture of Experts:モデルを複数の専門の部分に分け、トークンごとに一部だけを動かす作り)のどの部分が動いたかも隠れます。ただし、モデルの構造は隠せません。

速くするための工夫は2つあります。1つ目は、MoE で実際に動くパラメータだけを計算の対象にしたことです。試したモデルは全体で4,000億パラメータあり、1トークンごとに動くのは約170億です。2つ目は、生成が終わってから、リクエストをまとめて証明する方式にしたことです。重みは層ごとに区切って CPU 側のメモリから GPU へ流しこむので、80GB の GPU 1枚と約290GB のメモリで足ります。

研究記事の数字は次のとおりです。4ビットに量子化(数値を少ないビット数で表して、モデルを小さくする処理)した Llama 4 Maverick(約232GB)を使い、証明する側は H100 1枚、確かめる側は CPU で測っています。

項目 結果
コミットメントの作成 約39分(モデルごとに1回)
1つのコミットメントで扱える数 約1,600万リクエスト
証明の作成 24リクエストで223秒(毎秒約110トークン)
証明の大きさ 1,024トークンのリクエスト1件で約19MB
利用者が最初に取得するもの コミットメント約6.5MB
確かめる時間 24スレッドで17秒、1スレッドで21秒
普通の推論と比べた GPU 時間 約70〜95倍

本番で使えない一番の理由は、最後の行の重さです。比べた相手は、H100 8枚で vLLM(推論を速く回すためのオープンソースのサーバー)を FP8 で動かした場合です。同じ量の返事を証明つきで出すと、GPU の時間が約2けた多くかかります。

開発者として試すなら

手元で試せるのは、確かめる側です。GitHub の anthropics/FlashProve の README によると、Linux・g++ 13 以上・make・python3 があれば、2GB 未満のメモリで動きます。Ubuntu 24.04 なら、次の手順で付属の見本の証明を確かめられます。

apt-get update && apt-get install -y --no-install-recommends g++ make python3 unzip
verifier/build.sh
bin/cp_verify examples/accepted-proof/config examples/accepted-proof/ivk examples/accepted-proof/example.req examples/accepted-proof/example.y examples/accepted-proof/example.proof -id "$(cat examples/accepted-proof/ID.txt)"

README では、ビルドは1〜2分ほど何も表示せずに進みます。最後の行に YES が出て、終了コードが0なら成功です。見本は小さな合成のモデルなので、確かめるプログラムが動くことしか示しません。証明を作る側を動かすには、H100 80GB を1枚まるごと使い、CUDA 13.2 Update 2 にそろえる必要があります。Llama 4 Maverick で試すなら、CPU 側のメモリ330GB とディスク245GB も要ります。新しい版の nvcc は対象外で、ビルドが通っても動作は保証されません。

8月に発表された Attestable と並べると、次のようになります。Attestable の数字はアルファ版のもので、モデルも条件も違うため、そのまま優劣はつけられません。

項目 FlashProve Attestable
試したモデル Llama 4 Maverick(4,000億パラメータ) Gemma 4 31B
証明の速さ(H100 1枚) 毎秒約110トークン 毎秒53〜77トークン
証明の大きさ 約19MB 4.35〜7.92MiB
確かめる時間 17〜21秒 0.16〜0.65秒
扱える長さ 1,024トークン 1万6,000トークン
コード 公開(Apache 2.0) 未公開

イタリアの noze 社の解説記事は、Attestable が証明の方式や安全性の設定を公開しておらず、外から確かめられないと指摘しています。FlashProve は安全性の定理を Lean(数学の証明をコンピューターで確かめる言語)で書き、Lean で作った確かめ用のプログラムもつけています。ふだん使うのは速い C++ 版で、こちらには形式的な保証はありません。ただ、試したすべての証明で Lean 版と同じ判定になったと書かれています。

README には、使う前に知っておくべき条件も書かれています。コミットメントの ID は、確かめたいサーバーや、証明と一緒に届いたファイルから取ってはいけません。信頼できる第三者から受け取る必要があります。提供元が自分で配ると、別のモデルの指紋を渡されても見抜けないからです。証明の対象は、毎回一番確率の高いトークンを選ぶ出し方(貪欲デコード)だけです。ふだんの API のように、確率に従ってトークンを選んだ出力は証明できません。計算は重みを整数にした版で行うため、ふつうの小数の計算と結果が少しずれることもあります。

これからどうなるか

研究記事は次にやることとして、モデルの構造も隠すこと、MoE 以外のモデルに広げること、長い入力に対応すること、速い版のコードの確かさを上げることを挙げています。今の1,024トークンは、数十万〜100万トークンを読める今のモデルとは大きな開きがあります。Anthropic はこの成果を途中経過とし、ほかの人が手を加えて先に進めることを望んでいます。一方で README には、このリポジトリは今後更新せず、外からの修正も受けつけないと書かれています。

証明を出せる提供元が出てくれば、ルーターの利用者は、頼んだモデルで答えたかを1件ずつ確かめられます。契約で証明の提出を条件にすることもできるようになります。今のうちにできるのは、API の返事に含まれるモデル名とリクエスト ID をログに残しておくことです。FlashProve は生成が終わったあとに証明する方式なので、あとから照らし合わせるときに、その記録が手がかりになります。

まとめ

FlashProve を使うと、モデルの提供元は重みを見せずに、どのモデルで答えたかを証明できます。確かめる側は CPU だけで済み、付属の見本は手元ですぐ確かめられます。ただし証明には普通の推論の約70〜95倍の GPU 時間がかかり、扱えるのは1,024トークンまでで、確率で選んだ出力も対象外です。本番で使うには、速さと対応範囲の両方で大きな改良が要ります。

参考リンク

アイキャッチ画像: Photo by sippakorn yamkasikorn on Unsplash

タイトルとURLをコピーしました