LLM 추론을 암호학적으로 증명하는 FlashProve (Provable Inference)
Progress on provable inference for large language models
TL;DR Highlight
zkSNARK로 400B 모델 응답을 증명했더니 GPU 시간이 70~95배 들었다
Who Should Read
LLM API를 라우터·서드파티 경유로 쓰면서 '정말 그 모델이 답했나'가 궁금한 백엔드 개발자
Core Mechanics
- 응답이 그 모델 것인지 확인할 방법이 없다
- 라우팅 서비스가 비용 때문에 다른 모델로 바꿔치기해도 출력만 봐서는 알 수 없다.
- 공격자가 토큰 스트림을 조작해도 마찬가지다.
- zkSNARK로 '이 가중치가 이 토큰을 냈다'를 증명한다
- 제공자가 모델 가중치에 대한 짧은 지문(commitment)을 먼저 공개한다.
- 이후 응답마다 증명 파일을 붙이면, 사용자는 가중치 없이 검증한다.
- 증명은 가중치를 드러내지 않지만 모델 구조 숨기기는 목표가 아니다.
- Llama 4 Maverick에서 H100 1장으로 초당 약 110토큰
- 대상은 400B 파라미터 MoE(전문가 혼합) 모델의 4비트 양자화 가중치다.
- 1,024토큰 요청당 증명 크기는 약 19MB(18.78MB)다.
- 24개 요청 배치 증명에 223초가 걸린다.
- 비용은 vLLM 대비 GPU 시간 약 72배, 최대 부하에서 약 94배
- vLLM(FP8, H100 8장)이 같은 24개 요청을 처리하는 시간과 GPU당으로 비교한 수치다.
- 검증은 24스레드 CPU에서 17초, 단일 스레드에서 21초다.
- 가중치 commitment는 약 6.5MB이고 약 1,600만 요청마다 다시 만들어야 한다.
- 정수 연산 기반이라 조건이 붙는다
- 공개 가중치의 정확한 정수 버전을 증명하며, 각 토큰이 그 모델의 greedy 선택임을 단언한다.
- 부동소수점 구현이나 샘플링 디코딩은 어느 위치에서 벗어날 수 있다고 원문이 밝힌다.
- 코드와 Lean 증명을 Apache 2.0으로 공개했다
- 증명기 1개와 검증기 2개(C++ 고속판, Lean 정확성 검증판)가 포함된다.
- Claude가 만든 최적화를 사람이 감사하도록 최상위 보안 보장 문장을 Lean으로 제공한다.
Community Reactions
- 다른 추론 제공자와 비교하라는 의견
- 오픈 웨이트 모델은 계산을 그냥 다시 돌리면 되어 훨씬 싸다는 의견이 있었다.
- 비공개 모델은 ZKP, 서명 응답, 여러 제공자 결과 비교 중 선택해야 한다는 의견이다.
- 양자화 바꿔치기를 못 잡을 수 있다는 지적
- 일부 호스트에서 모델 성능이 떨어지는 게 양자화 때문인지 궁금하다는 댓글이 있었다.
- 원문이 정수 버전 가중치와 greedy 선택만 증명한다고 밝혀서 '아니다'라는 결론이었다.
- 실용성에 회의적인 반응이 많았다
- 제공자를 못 믿으면 이미 끝이고, 모델 바꿔치기는 벤더 책임·인프라 보안 문제라는 의견이 있었다.
- 70~95배 GPU 비용이 정당화되느냐는 질문이 나왔다.
- 프롬프트 비밀 유지와 선행 연구 출처 문제
- 내부 프롬프트 일부를 숨기고 싶은 제공자는 증명을 내보내기 꺼릴 것이라는 의견이 있었다.
- 이 작업이 자신의 VerInf 연구를 충분히 인용하지 않았다는 작성자 주장이 있었다.
How to Apply
- 서드파티 라우터 응답에 모델 ID 로그부터 남기기
- 오늘 OpenRouter 같은 경유 호출에서 응답의 model 필드와 요청 모델을 비교하는 로깅을 붙여라.
- 불일치 건수를 하루 단위로 세어 두라.
- 같은 프롬프트로 모델 동일성 점검 스크립트 만들기
- 고정 프롬프트 20개를 temperature 0으로 주기적으로 돌려 호스트별 출력 차이를 기록하라.
- 차이가 커진 호스트는 양자화 의심 대상으로 표시하라.
- 평가·감사 파이프라인에 증명 요구 조항 넣기
- 외부 평가자나 감사 계약서에 '평가 대상 모델이 실제 서빙 모델과 같음을 보일 방법'을 명시하라.
- 지금은 FlashProve 비용이 크므로 증명은 감사용 샘플 요청에만 적용하도록 범위를 정하라.
Try It
# Claude나 ChatGPT에 붙여넣기 (원문 아이디어의 간이 버전: 증명 대신 모델 바꿔치기 점검 계획 설계)
나는 LLM API를 {{제공자/라우터 이름}} 경유로 쓰고 있다. 사용 모델은 {{모델명}}이다.
아래 조건으로 '요청한 모델이 실제로 답했는지' 점검하는 절차를 설계해 줘.
- 암호학적 증명은 못 쓴다. 출력 비교와 로그만 쓸 수 있다.
- 고정 프롬프트 20개, temperature 0, 하루 1회 실행.
- 응답의 model 필드, 지연시간, 출력 해시를 기록하는 파이썬 스크립트 포함.
마지막에 이 방법으로 잡을 수 없는 경우(양자화, 샘플링 등)를 따로 정리해 줘.
이어서 해 볼 것: 호스트를 2곳 이상 두고 같은 프롬프트의 출력 해시를 비교해 보기.Terminology
관련 논문
Gemini는 구독자 개인 계정의 대화 기록도 학습에 쓴다 (HN 댓글 기반)
Gemini 개인 계정은 구독해도 대화가 학습·사람 검토에 쓰일 수 있다
긴 컨텍스트는 필요 없다: 잦은 compaction과 선택적 읽기
컨텍스트를 16K~48K로 자주 압축했더니 정확도는 유지되고 비용은 2~8배 줄었다
JavaScript 프레임워크별 AI 에이전트 빌드 비용 벤치마크
같은 앱을 12개 프레임워크로 에이전트에 5번씩 짜게 했더니 비용이 최대 약 2배 차이
Claude Code가 백그라운드 에이전트 상태줄에 토큰을 쓰는 문제와 Bun preload 우회법
30초마다 에이전트 전체 대화를 보내던 상태줄 요약을 끄니 요청 19.7%가 사라졌다
GLM-5.3 Workers AI의 KV cache 교차 노출 사고와 SGLang 수정
컨텍스트 창보다 작은 KV 풀 때문에 긴 프롬프트 155건에 타인 데이터가 섞였다
Microsoft Decision-1: Qwen3.5-9B 기반 결정 점수 전용 모델
글 대신 선택지별 확률만 내놓는 9B 모델, 라우팅·분류용으로 공개
Cerebras가 조 단위 파라미터 모델을 웨이퍼 여러 장에 올리는 방법
Kimi K3(3T)를 웨이퍼 59장 파이프라인에 올려 초당 1000~2000+ 토큰을 낸다
AI 이미지 생성 실전 가이드: diffusion부터 에이전트 연동까지
이미지 API를 직접 써 보니 캔버스 단위 과금과 카메라 묘사 프롬프트가 핵심이었다