Progress on provable inference for large language models
TL;DR Highlight
Proving 400B model outputs with zkSNARKs works, at 70-95x the GPU time of plain vLLM
Who Should Read
A backend developer calling LLM APIs through routers or third parties who wonders whether the requested model really answered
Core Mechanics
- You can't tell which model answered
- A routing service can silently swap in a cheaper model to save cost.
- An attacker tampering with the token stream is equally undetectable from output alone.
- zkSNARK proves these weights produced these tokens
- The provider first publishes a short commitment (fingerprint) to the weights.
- Each response then carries a proof that the user verifies without the weights.
- Weights stay hidden, but hiding the architecture is not a goal.
- About 110 tokens/s on one H100 for Llama 4 Maverick
- The target is a 400B-parameter MoE with 4-bit quantized weights.
- Proof size is about 19 MB (18.78 MB) per 1,024-token request.
- Proving a batch of 24 requests takes 223 seconds.
- Costs 72x vLLM GPU time, 94x at peak load
- Comparison is per GPU against vLLM (FP8, eight H100s) processing the same 24 requests.
- Verification takes 17s on 24 CPU threads and 21s on one thread.
- The commitment is about 6.5 MB and must be redone after about 16 million requests.
- Integer arithmetic comes with conditions
- It proves an exact integer version of the published weights, asserting each token is the model's greedy choice.
- The post states floating-point implementations or sampled decoding could depart at some position.
- Code and Lean proofs released under Apache 2.0
- It includes one prover and two verifiers: a fast C++ one and a provably correct Lean one.
- Top-level security statements are in Lean so humans can audit Claude's optimizations.
Community Reactions
- Compare providers instead, some argued
- For open-weight models, simply redoing the computation is far cheaper, one commenter said.
- For closed models, the choice is ZKPs, signed responses, or comparing multiple providers.
- Quantization swaps may slip through
- A commenter asked whether this catches hosts quietly running quantized models.
- Given the post proves only the integer version and greedy choice, the answer appeared to be no.
- Many were skeptical about practicality
- Some said model substitution is vendor accountability and token tampering is infra security.
- Others questioned whether 70-95x GPU cost is justified.
- Prompt secrecy and attribution concerns
- One commenter said providers wanting to hide parts of the system prompt may not ship such proofs.
- Another claimed the work builds on their VerInf project with little attribution.
How to Apply
- Log the model ID on third-party router calls
- Today, compare the response's model field with the requested model on routed calls.
- Count mismatches per day.
- Build a model-consistency check script
- Run 20 fixed prompts at temperature 0 on a schedule and record outputs per host.
- Flag hosts whose outputs drift as quantization suspects.
- Add model-verification clauses to eval and audit contracts
- Require external evaluators to specify how they confirm the evaluated model is the served one.
- Limit proofs to sampled audit requests given FlashProve's cost.
Try It
# Paste into Claude or ChatGPT (simplified version of the idea: design a model-substitution check instead of a proof)
I use LLM APIs via {{provider/router name}}. The model I use is {{model name}}.
Design a procedure to check that the requested model actually answered.
- No cryptographic proofs; only output comparison and logs.
- 20 fixed prompts, temperature 0, run once a day.
- Include a Python script that records the response model field, latency, and output hash.
At the end, list cases this approach cannot catch (quantization, sampling, etc.).
Next step: use two or more hosts and compare output hashes for the same prompts.Terminology
Related Papers
Tell HN: Gemini trains on chat history, even for subscribers (personal accounts)
Gemini personal accounts may train on and human-review chats, even for paying subscribers
You don't need long context
Compacting context to 16K–48K kept accuracy while cutting estimated costs 2–8x
The AI cost of JavaScript frameworks
Building the same app with 12 JS frameworks via agents, 5 runs each, showed up to ~2x cost differences.
Claude Code regularly sends each background agent’s transcript to its model
Disabling Claude Code's 30-second agent status summaries removed 19.7% of API requests in one team's telemetry
Cross-request KV cache exposure in the GLM-5.3 Workers AI model (155 responses)
A KV pool smaller than the context window leaked other customers' data into 155 long-prompt responses.
Microsoft Decision-1: 9B Qwen Model Launch Explained
Microsoft's 9B Qwen-based model returns only per-option probabilities for routing and classification.
Cerebras Deploys Trillion-Parameter AI Models
Cerebras fits Kimi K3 (3T) across 59 wafers in a pipeline, serving 1000-2000+ tokens per second
A practical guide to AI image generation, from diffusion to agents
Testing image APIs showed you pay per canvas, and camera-style prompts beat describing the view