Brain on Blockchain: ZKML
Disclaimer: 서울대학교 블록체인 학회 디사이퍼(Decipher)에서 ZKML 을 주제로 Weekly Session에서 발표한 내용을 바탕으로 합니다. 본 아티클은 블록체인에 머신러닝을 도입하는데 필요한 ZKML(Zero-Knowledge Machine Learing)에 대해 소개합니다. 블록체인에 ZKML이 필요한 이유와 대표 사례, 그리고 실제 구현을 위한 방법론에 대해 살펴봅니다.
Author
문상원, 진수민 of Decipher
Seoul Nat’l Univ. Blockchain Academy Decipher(@decipher-media)
Reviewed By 디사이퍼 미디어팀
목차
- Introduction
- Basic concept of ZKML
- Usecases of ZKML
- How to Implement ZKML
- Problems & Solutions in ZKML
- Current Works
- Wrap-up
1. Introduction
MIT 슬로언 경영대학원 교수이자 ‘스타트업 바이블’의 저자인 빌 올렛 교수는, 혁신을 발명과 상업화의 곱으로 정의하며, 상업화의 중요성을 강조하였다(Innovation = Invention X Commercialization). 즉, 혁신적인 기술이란 단순히 새로운 기술을 만들어내는 것에서 그치는 것이 아니라 실질적인 가치를 창출하는 것이다. 상업화에 실패하면 혁신도 제로(0)라고 할 수 있다. 블록체인은 탈중앙성, 확장성, 보안성 등을 강화하기 위한 기술적 논의와 발전이 꾸준하게 이루어지고 있는 동시에, 진정한 가치를 제공할 수 있는 쓰임과 대중화가 여전히 큰 과제로 남아있다. 서비스와 유저가 제한적인 초기 시장이며, 이 시장을 선도하고 수익 창출 가능한 Killer App의 등장을 학수고대하고 있다.
최근 블록체인과 AI의 융합이 하나의 내러티브로 주목을 받고 있는데, 블록체인과 AI의 시너지는 블록체인 기술의 상업화를 가속할 수 있는 요인으로 볼 수 있다. AI 기술로 기존의 다양한 Vertical 산업이 혁신하듯이, 블록체인을 근간으로 하는 Web3 영역에서도 사용자 경험을 개선하고, 서비스와 BM을 강화하는 중요 요소로 작용할 수 있기 때문이다. Andreessen Horowitz와 Multicoin Capital 등 업계 유명 VC도 블록체인과 AI의 교차점에 주목하고 있으며 이를 통해 다양한 산업 문제를 해결할 수 있을 것으로 전망하고 있다.
AI는 블록체인이 의사결정할 수 있게끔 하는 ‘Brain’
AI 모델은 스마트컨트랙트의 자동화를 통해 효율적인 실행을 할 수 있을 뿐 아니라, 실시간으로 온체인 데이터 기반의 의사결정을 가능하게 한다. 특정 조건이 충족될 경우 스마트 컨트랙트가 실행된다거나, 학습된 데이터와 알고리즘을 통해 어떠한 이벤트를 예측하고 선제적인 대응을 할 수도 있다. 또한, 블록체인은 탈중앙화된 데이터 저장소이기에 여기에 담기는 데이터는 AI의 재료로써 활용 가치도 증가할 것이다. 온체인 트랜잭션, dAPP의 유저 활동, 스마트 컨트랙트 실행 기록 등이 포함되며, 이 데이터의 양은 유저가 많아지고 시장이 성숙할수록 증가한다. 현재는 주로 트레이딩을 중심으로 한 온체인 데이터 분석이 활발하지만, 추후에는 이 방대한 양의 데이터들을 재료로 하는 AI 모델의 활용도 증가할 것이다. 예를 들면 유저의 선호도와 행동 패턴을 분석한 개인화된 NFT 추천 알고리즘 등이 있다. AI 모델은 블록체인에 스스로 실행하고 의사결정이 가능한 ‘Brain’을 심어주는 것이라고 볼 수 있다.
AI모델을 신뢰할 수 있는가?
블록체인 업계에서도 활발하게 쓰이는 대표 SNS인 X(구 트위터)는 알고리즘 논란이 지속되어 왔다. 일론 머스크를 팔로우하지도 않았는데 그의 트윗이 자주 노출된다거나, 정치적 여론이 조작된다는 의심이 불거졌다. 이에 일론머스크는 트위터 알고리즘 공개를 선언한 후 2023년 3월에 이를 실제로 공개하였다. 그런데 X에서 공개한 알고리즘은 과연 신뢰할 수 있을까? X는 Privacy 및 보안 이슈 때문에 모델의 중요한 요소인 학습 데이터와 가중치(Weight) 등은 공개하지 않았으며, 사용자는 본인의 피드에 왜 이 트윗이 추천되는 지를 정확히 확인하기는 어렵다. 설령 모델을 투명하게 공개한다고 하더라도 실제로 이 알고리즘이 실행되는 게 맞는지 의심할 여지도 있다. 이 예시와 같이 기존 AI 모델이 사용자 입장에서 어떠한 검열이나 편향이 없다는 것을 투명하게 확인하려면 Privacy 침해 문제와 중앙화로 인한 신뢰성 이슈가 존재한다.
이러한 특성을 가진 AI 모델을 블록체인에 도입하는 경우에도 Privacy 문제와 신뢰성에 대한 문제를 고민해야 한다. 블록체인 상에서 AI 모델을 활용할 때 민감한 개인 데이터나 모델의 가중치 등 중요한 정보가 온체인 상에 노출될 수 있으며, 오프체인의 AI 모델을 쓰는 경우에는 정해진 모델을 사용하여 결과가 올바르게 계산되었다는 신뢰도를 확보해야 한다. 이를 위해 일부 정보를 공개하지 않고도 검증 가능한 영지식 증명을 이용해 Privacy를 해치지 않고 AI 모델의 신뢰도를 확보하는 ZKML에 대해 살펴보겠다.
2. Basic concept of ZKML
ZKML은 Zero-knowledge Proof(영지식 증명)과 Machine Learning(기계학습)이 결합된 단어로, 영지식 증명을 활용하여 블록체인에 ML모델을 도입하는 방법론으로 볼 수 있다. 즉, 블록체인과 실세계 데이터 간의 상호작용을 가능하게 하는 역할로 이해할 수 있다. 영지식 증명과 머신러닝 각각 광범위한 내용이며, 이 두 개념을 상세히 다루기보다는 간략하게 개념을 파악하고 ZKML이 필요한 이유와 효과를 중심으로 살펴보겠다.
Zero-knowledge Proof (ZKP)
영지식 증명이란, 알고 있는 것이 없는 상태에서 상대를 검증하는 방법으로 어떤 진술이 사실이라는 점을 제외한 추가 정보를 제공하지 않고 주어진 진술이 사실임을 입증할 수 있는 암호화 메커니즘이다. 무언가를 주장하는 Prover와 이를 검증하는 Verifier의 역할이 존재한다.
Machine Learning (ML)
머신러닝은 AI의 하위 개념으로, 데이터를 기반으로 컴퓨터가 패턴을 스스로 학습하여 결과를 추론하는 것이다. 일반적으로 학습 데이터가 많고 모델이 커질수록 성능이 높아진다. 심층신경망 형태와 같은 딥러닝 방식의 모델로 점점 복잡해지고 커지면서, 데이터가 어떻게 처리되는지 알기 어렵고 결과를 해석할 수도 없다. 머신러닝의 모델에 인풋 X에 대한 결과 Y를 얻는다고 할 때, 정확도는 매우 높을 수 있으나 왜 Y라는 결과를 주는지는 알기 어렵다. 이러한 이유로 머신러닝 모델은 일종의 ‘Black-box’라 불린다.
ZKML은 영지식 증명을 기반으로 하여 ML모델의 Input 데이터나 모델의 가중치를 공개하지 않고도 모델 연산이 올바르게 되었음을 검증할 수 있다. 기존의 ML모델은 Input 데이터 x, 모델 가중치 w 가 주어지면 해당 연산을 수행하여 결과값을 제시한다. ZKML은 공개된 데이터 x를 Input으로 하여 가중치를 숨긴 모델을 실행하였을 때 모델에 대한 결과값뿐만 아니라 이 계산에 대한 Proof를 생성하며, Verifier가 주어진 Proof를 검증하는 방식이다. 이 연산에 대한 Proof를 생성하는 다양한 방식의 시스템이 존재하며 이는 6장에서 좀 더 상세히 다룰 예정이다.
블록체인에 ML 모델을 도입하기 위해 왜 영지식 증명이 필요할까? 이는 크게 Verification과 Privacy 관점으로 생각해 볼 수 있다.
Verification
Verification 은 블록체인과 머신러닝의 비용적인 부분과도 밀접한 관련이 있다. 앞서 다룬 내용과 같이 머신러닝 모델은 초대형 언어모델, Multi-modal 등 점점 복잡한 모델 구조와 다양한 Input을 처리할 수 있는 방향으로 발전하고 있다. 모델의 사이즈가 크고 연산량이 많기 때문에, 블록체인에서는 이 연산을 직접 실행하는 것이 어렵고 큰 비용이 들 수밖에 없다. 대표적인 ML 모델의 예제인 소규모 MNIST 모델은 손글씨로 쓰인 숫자 0~9에 해당하는 이미지 데이터를 학습시켜 알맞은 숫자로 분류하는 것이 목적이다. 이 간단한 모델을 학습시키는데 일반 랩탑에서는 평균 8분 정도 소요되는 반면, 이더리움에서는 최대 80일, 약 3,200만 달러가 소요된다고 한다. chatGPT 등 초대형 언어모델에서도 알 수 있듯이 머신러닝은 자본 집약적인 기술이며, 블록체인 역시 ‘비싼’ 기술이다. 이러한 이유로 ML 모델을 블록체인에서 실제로 연산하기는 어렵기 때문에, 오프체인에 있는 ML 모델을 통해 나온 결과값이 정확하게 계산되었음을 검증해 주는 역할이 필요하다.
또한, 어떤 출력값이 특정 모델을 실행한 결과임이 맞다는 것을 증명하는 역할도 필요하다. 이는 AI 모델의 유료화에도 직접적인 영향을 받을 것으로 보인다. 모델의 학습 비용이 증가하였고 이는 개인이나 소규모의 조직이 감당할 수 있는 수준을 넘어섰다. 이에 따라 막대한 자본을 들여 고성능 AI 모델을 개발한 소수의 중앙화된 업체들이 ML모델을 API로 제공하기 시작하였으며, 우리는 유료로 ML 모델을 사용하고 있다. 당연히 성능이 좋은 모델일수록 높은 비용을 지불해야 할 것이다. 그러나 앞에서도 다루었듯이 ML모델은 마치 Black box와 같기에 비싸고 성능이 좋은 모델을 구매하더라도 실제로 그 모델을 통해 결과가 나온다는 것을 보장할 수 없으며, API를 제공하는 업체들은 이를 이용하여 악의적인 행위를 저지를 수도 있다.
쉬운 예시로, X-ray 이미지를 보고 질병 여부를 판별하는 모델이 있다고 해보자. Model Consumer가 고성능 모델을 구매하고 X-ray 이미지를 제출하였으나, Model Provider는 Model Consumer가 구매한 모델이 아니라 성능이 낮은 모델을 실행하여 고성능 모델의 결과(Disease)와는 다른 오답(No disease)을 결과로 제시하였다. 그러나 Model Consumer는 이 과정에서 Model Provider가 다른 모델을 실행하였음을 알 수가 없다. 영지식 증명을 통해, Model Consumer는 Model Provider가 제공하는 모델의 가중치를 모르더라도 모델의 정확도를 검증한 후 사용할 수 있다.
Privacy
영지식 증명의 중요한 역할 중 하나는 특정 정보를 숨긴 채 연산이 맞다는 것을 검증함으로써 Privacy를 보호할 수 있다는 것이다. 머신러닝에서 Privacy 문제는 Data와 Model 관점에서 바라볼 수 있다. 먼저, 사용자의 민감한 개인 정보는 제3자에게 공개하지 않아야 한다는 점이다. 예를 들어 홍채나 지문, 얼굴 등 생체 정보를 통한 신원 인증, 혹은 의료 데이터는 블록체인 상에 공개되어서는 안 될 민감 정보이다. 영지식 증명을 이용하면 중요한 Input 데이터를 온체인에 공개하지 않으면서도 모델의 실행 결과를 사용할 수 있다. 또한, 민감한 데이터로 학습된 모델이 온체인에 공개될 경우에 학습 데이터가 노출될 수 있는 문제도 해결할 수 있다.
Data 뿐 아니라 모델도 보호받아야 하는 자산이 되었으며, 모델 아키텍쳐나 Weight 등 AI 모델의 구성 요소를 온체인 상에 공개하기 어려울 수 있다. OpenAI 뿐 아니라 많은 AI Tech. 기업들이 더 이상 모델을 오픈소스로 공개하지 않고 유료로 제공하고 있다. 머신러닝 모델 경진 플랫폼인 Kaggle에서도 모델의 Privacy 문제를 생각해 볼 수 있다. Kaggle에서는 특정 기업이 제시한 문제를 해결하기 위해 주어진 데이터를 학습시켜 모델을 개발하며, 순위권에 들지 못하더라도 본인이 개발한 모델을 공개해야 한다. 영지식 증명을 이용하면 모델을 공개하지 않고도 해당 모델의 성능을 검증할 수 있다.
3. Usecases
ZKML에 대한 연구가 활발하게 이뤄지며 이를 활용한 온체인 AI 트레이딩 봇, ML모델 바운티 플랫폼, 온체인 게임 등의 사례들도 제시되고 있다. 이 중 Verification과 Privacy 측면에서 대표적인 예시들을 살펴보고자 한다.
[Verification] EIP-7007: An ERC-721 extension interface for ZKML based AIGC-NFTs.
‘23년 5월에 이더리움에 최초로 ZKML 관련하여 제안된 EIP로, 생성형 AI로 만들어진 NFT가 특정 ML 모델과 프롬프트를 활용했음을 검증할 수 있다. ML 모델로부터 원하는 결과물을 얻기 위해서는 모델의 Input인 프롬프트를 알맞게 작성하는 것이 중요한 역량이며 고품질의 프롬프트는 프롬프트 마켓플레이스를 통해 거래할 만큼 IP와 같이 자산으로서의 가치가 있다. 이 표준을 이용하면 특정 모델로부터 생성된 NFT이며 유저가 작성한 프롬프트로 생성한 컨텐츠에 대해 오너십을 증명할 수 있다. 대략적인 프로세스는 다음과 같다.
- 모델 오너는 Pre-trained model, Verifier contract, AIGC_NFT스마트 컨트랙트를 Deploy
- 유저가 ML모델에 Input으로 사용할 프롬프트를 제출하면 Meta data인 ‘AIGC’ 파일 생성
- Prover가 AIGC 파일을 증명하여 ZK Proof 발행
- AIGC NFT 스마트 컨트랙트 호출 시 prompt, AIGC File, Proof 제출하여 Verify 하고 NFT 민팅
- → <prompt, aigc> 쌍에 대한 NFT를 발행
[Privacy] Worldcoin : Proof of Personhood Protocol
Worldcoin은 실제 사람임을 증명하는 홍채 기반의 온체인 신원 시스템이다. 홍채는 사람마다 형태가 다르기 때문에 신원을 정확히 구별 가능한 중요한 개인 정보이다. 그렇기 때문에 홍채 인식 장비인 Orb 에서만 홍채 데이터를 처리하고 ML모델을 실행한다. 이 ML모델은 가짜 판별, 눈/얼굴 인식 등을 거쳐 홍채 이미지를 만들고 홍채 코드를 계산하며, 스캔한 홍채 이미지는 개인 정보 보호를 위해 즉시 삭제한다. 홍채 코드만을 남긴 뒤 이 홍채코드가 기존 데이터에 등록되어 있지 않고 고유한 존재임을 인증하는 방식이다. 그러나 아직까지는 홍채 이미지를 생성하는 ML모델이 모든 사람의 홍채를 인식할 수 있는 수준은 아니기 때문에 지속적으로 모델을 발전시키고 있다. 추후에는 Orb를 통해 스캔한 홍채 이미지를 암호화하여 사용자 휴대폰에 저장하고, ML 모델이 업데이트되어도 사용자가 다시 Orb 장비로 인증할 필요 없이 업데이트된 모델을 실행하여 새로운 홍채 코드와 ZK Proof를 생성할 수 있도록 적용할 예정이다.
4. How to Implement ZKML
여기서부터는 ZKML, 그중에서도 추론 ZKML의 기본적인 과정을 살펴보고 이를 통해 ZKML의 Challenge들과 Solution들을 정리해 보도록 하겠다. 이해를 돕기 위해 ZK-SNARK 기준으로 설명하며 ZK와 ML에 대한 사전지식이 없는 독자를 고려해 어느 정도 추상화되었음을 고려 바란다.
ZKML의 기본적인 process는 ML의 연산(추론)을 ZK로 증명하는 것이다. ML의 추론은 학습을 통해 만들어진 모델이 새로운 입력 데이터에 대해 예측을 수행하는 과정이며 입력 데이터 in과 학습된 파라미터(weight, bias) p를 모델 구조 M에 따라 수행하는 연산 M(in, p) = output 이다. ZK의 증명은 공개정보 x와 비공개정보 w를 가지고 특정 연산 F(x,w) = true임을 증명하는 것이다. 위에서 언급한 ZKML의 두 가지 경우에 적용해 보면
- 비공개 입력, 공개 모델(Data Privacy) : Worldcoin 예시와 같이 사용자의 데이터를 감추면서 ML연산의 결과를 증명한다. 공개정보 x는 학습된 파라미터, 출력 데이터이며 비공개정보 w는 입력 데이터이다.
- 공개 입력, 비공개 모델(Model Privacy) : 트위터 예시와 같이 모델의 IP를 보호하기 위해 가중치 및 편향을 숨기면서 사용자에게 생성된 추론이 해당 모델로부터 연산되었다는 것을 증명한다. 공개정보 x는 입력데이터, 출력 데이터이며 비공개정보 w는 학습된 파라미터이다.
- 추가로 모델 추론과 직접적인 관계가 있는 것은 아니지만 특정 모델이 바뀌지 않았다는 것을 증명하기 위해 공개정보에 모델 검증 값을 추가하여(Parameter의 Hash값 등을 사용) 모델 변화를 감시할 수 있다.
Model Privacy를 기준으로 ZKML의 전체적인 과정을 정리하면 다음과 같다.
- 학습시킨 모델을 제공하려는 모델제공자(Model Provider)와 이를 사용하려고 하는 사용자(Model Consumer)가 있다.
- 모델제공자는 좋은 모델을 만들기 위해 양질의 데이터셋을 구축하고 최적화된 하이퍼파라미터로 모델을 오랜 시간 동안 학습시키며 많은 시간과 비용을 투자했을 것이다. 이렇게 학습된 파라미터(가중치, 편향) p는 모델제공자의 자산이며 이를 노출하지 않고 서비스를 제공하려 한다.
- 사용자는 이렇게 학습된 모델을 사용하고 싶고 출력데이터가 해당 모델을 제대로 사용해서 나온 것인지 확인하고 싶다.
- 모델제공자는 출력데이터가 해당 파라미터를 사용한 연산의 결과라는 ZK 증명을 사용자에게 제공하여 두 관계자의 목적을 달성할 수 있다.
이를 단계별로 정리하면
- Model Provider는 모델을 학습시켜 서비스에 제공할 파라미터 p를 정한다.
- Model Provider는 Model Consumer에게 성능 및 출력데이터를 증명하고자 모델의 연산을 산술 회로식들로 변환한다. (아래 3번, 6번에서 각각 사용)
- Model Provider는 모델 진위성 검증을 위한 파라미터의 Hash 값 C를 게시한다. 여기에 더해 모델의 성능(loss 및 accuracy 등)을 증명할 수 있다. 증명 생성 시 공개정보 x는 테스트셋, 성능값, 파라미터 Hash 값 C이며 비공개정보 w는 학습된 파라미터 p이다.
- Model Consumer가 해당 모델을 확인하고 처리하고 싶은 자신의 입력데이터를 Model Provider에게 보낸다.
- Model Provider는 받은 입력데이터와 자신의 파라미터를 이용, 모델 구조에 따라 연산하여 출력데이터 output을 얻는다(추론).
- 이 연산 결과가 참이리는 증명을 생성한다. 증명 생성 시 공개정보 x는 입력데이터, 출력데이터 output 그리고 파라미터 Hash값 C이며 비공개정보 w는 학습된 파라미터 p이다.
- Model Consumer는 결과값 output과 증명 prf를 받는다.
- Model Consumer는 증명 prf를 검증자(스마트 컨트랙트 등)를 통해 증명이 올바른지 조회할 수 있다.
즉, ZKML의 기본적인 원리는 ML모델의 연산 과정을 산술 회로식으로 변환하고 변환된 식에 따라 input과 parameter를 이용한 연산이 해당 output을 도출한다는 증명을 생성하고 검증하는 것이다. (연산의 결과가 피연산자의 값에 대한 올바른 출력값인지 확인하는 것)
아래는 ZK-SNARK 증명을 생성할 때 산술 회로식으로 변환할 수 있는 회로(circuit)를 작성할 수 있는 circom이라는 언어를 통해 간단한 Model Privacy 한 3x2 Dense layer를 작성한 예시이다.
pragma circom 2.1.6;
include "https://github.com/socathie/circomlib-ml/blob/master/circuits/circomlib-matrix/matMul.circom";
template Dense (nInputs,nOutputs) {
signal input in[nInputs];
signal input weights[nInputs][nOutputs];
signal input bias[nOutputs];
signal output out[nOutputs];
component dot[nOutputs];
for (var i=0; i<nOutputs; i++) {
dot[i] = matMul(1,nInputs,1);
for (var j=0; j<nInputs; j++) {
dot[i].a[0][j] <== in[j];
dot[i].b[j][0] <== weights[j][i];
}
out[i] <== dot[i].out[0][0] + bias[i];
}
}
component main { public [ in ] } = Dense(3, 2);
3x2 Dense layer는 3개의 입력을 받아 2개의 출력을 내는 layer이기 때문에 in[3] * w[3][2] + b[2] = out[2] 의 행렬 연산으로 표현할 수 있으며 위 코드는 해당 연산 과정을 표현한 것이다.
component main { public [ in ] } = Dense(3, 2);
circom은 회로의 입력을 기본적으로 비공개정보로 취급한다. Model Privacy 모델은 학습된 파라미터(w,b)는 비공개정보인 반면 입력 데이터는 공개정보이기 때문에 public [ in ] 으로 작성하였다. 위 회로를 사용하여 어떤 input을 넣었을 때 비공개정보인 w와 b를 가지고 연산을 한 결과가 out이라는 증명을 생성할 수 있다.
- 위에서 사용한 circomlib-ml은 ML의 기본적인 template들을 circom으로 작성한 Library이다. Dense layer외에도 Conv2D, ArgMax, ReLU 등이 구현되어 있으며 이를 이용한 MNIST 예측 Example도 살펴볼 수 있다.
5. Problems & Solutions in ZKML
위에서 살펴본 구현 예시는 ML연산을 산술 회로로 변환하는 간단한 예시일 뿐, 실제로 ML연산을 ZK 증명으로 만들어내는 것은 쉬운 일이 아니다. 이는 ML 연산 특성상 ZK Proof System으로 표현하기 어렵고 근래의 ML은 큰 Parameter와 복잡한 구조로 엄청난 연산량을 요구하기 때문이다.
대부분의 ML모델에서 가중치와 편향은 32bit 부동소수점으로 표현하여 연산한다. 이는 부동소수점이 정밀한 소수점 표현이 가능하고 아주 작은 수와 아주 큰 수를 표현할 수 있기 때문이다. 반면 ZKP는 일반적으로 32bit 부동소수점 연산에 최적화되어 있지 않다. 뿐만 아니라 증명 생성 시간과 메모리 사용량이 회로 크기에 따라 커지기 때문에 두 가지 사항을 고려하여 ML모델을 최적화시키는 것이 필요하다.
32bit 부동 소수점 연산을 8bit 정수로 변환하는 등의 양자화(Quantization)를 통해 모델을 축소시켜 연산 과정을 더 빠르게 만들 수 있다. 하지만 이 과정에서 정밀도(Precision)가 희생되고 컴퓨터 연산 비용이 발생하기 때문에 이를 고려한 적절한 양자화가 필요하다.
ZK는 증명 생성 시 높은 연산량을 요구하는 비싼 연산 도구이다. 양자화를 통해 모델을 축소화시킨다고 하더라도 ML의 연산을 ZK로 만들어내는데 많은 연산 비용이 발생한다. 그러므로 ZKML은 행렬 곱셈 등 ML 연산에 특화된 효율적인 증명시스템이 필요하며 수학적 연산 게이트의 한계로 산술 회로식으로 구현하기 어려운 비선형성(Relu, Sigmoid 등의 활성화 함수)을 구현할 수 있어야 한다. 증명 크기는 상대적으로 작아서 검증자(Verifier)는 부담이 적지만 문제는 증명 생성 시간과 메모리 사용으로 비교적 적은 메모리로 빠르게 증명할 수 있는 방식이 필요하다.
6. Current Works
2021년에 0xPARC팀이 소규모 MINIST 이미지 분류 모델의 ZKML 구현을 보여준 ZK-MINIST 데모에서 불과 1년도 채 되지 않아 Daniel Kang의 Scaling up Trustless DNN Inference with Zero-Knowledge Proofs 논문을 통해 ImageNet 규모의 모델에 대해 동일한 작업을 처리할 수 있음을 보여줬다. 2022년 4월, 이 ImageNet 규모의 모델은 79% 정확도에서 92% 정확도로 개선되었으며 아직은 증명 생성 시간이 900초(86.3% Accuracy 기준) 정도로 느리지만 GPT-2, BERT와 같은 규모의 네트워크도 처리할 수 있음을 시사했다.
2023년 1월에는 Modulus Lab에서 ZK Proof System에 따른 벤치마크를 시행하고 분석한 논문 Cost of Intelligence를 발표했다. 이 논문은 증명 생성에 걸리는 시간과 Prover의 최대 메모리 소비량을 구체적으로 측정하였고 대표적인 딥러닝 네트워크 VGG-16이나 ResNet-50보다 합곱연산이 더 많은(약 500k ~ 18M 이상의 파라미터를 사용, 최대 500 FC layers, 275M ~ 22B FLOPs) 연산을 시행했다.
여기서는 R1CS proof system(Groth16, Gemini), STARK proof system(Winterfall), Plonkish proof system(Halo2, Plonky2), GKR-based proof system(zkCNN)을 테스트했으며 파라미터 개수와 Layer 깊이에 따라 각 System의 증명 시간과 메모리 소비량을 비교하였다.
증명 시간과 관련해서 재귀적 증명을 사용하는 Plonky2가 우수한 결과를 보여줬지만 같은 plonkish system인 Halo2보다 심한 경우 2배에 달하는 메모리를 소비하는 것을 볼 수 있다.
- Plonky2는 FRI-based polynomial commitments와 Goldilocks Field를 사용한다. Goldilocks Field는 64bit의 더 작은 체(Field)를 사용함으로써 CPU에서 효율적인 연산이 가능하며 256bit Field인 KZG Commitments를 사용하는 system보다 증명 속도를 40배 단축시킬 수 있다.
- 뿐만 아니라 FRI를 PLONK와 결합 시 더 많은 와이어로 커스텀 게이트를 작성할 수 있어 효율적인 재귀에 최적화된 회로를 작성할 수 있다.
증명 시간과 메모리 사용 모두 고려해 보았을 때, 최적화된 구현 없이도 대규모 모델을 처리하는 데는 GKR 기반 zkCNN이 가장 적합한 것으로 보이는데 이는
- Convolution이 다항식의 곱셈으로 표현될 수 있다는 점을 이용, 이는 Fast Fourier Transform으로 가속화될 수 있는데
- 크기 N인 벡터에 대해 증명을 생성하는 데 추가 시간이 O(N)인 Fast Fourier Transform(FFT)을 위한 효율적인 sumcheck을 적용한 덕분이다.
7. Wrap-up
AI는 블록체인 기반의 서비스와 BM을 강화할 수 있는 필수 요소로서, 기술의 ‘Commercialization’을 앞당기는 촉진제 역할을 할 것으로 기대된다. 스마트 컨트랙트를 자동화하고 데이터 기반의 의사결정을 할 수 있도록 하는 블록체인의 ‘Brain’이라고도 할 수 있다. 다만, AI/ML모델을 블록체인에 도입하기 위해서는 Verification과 Privacy 문제 해결이 필수적이며 이를 위한 솔루션으로 영지식 증명이 제시되었다. ZKML의 구현체는 초기 Demo가 나온 지 1년 채 안 되어 괄목할 만한 성능 향상을 보이고 있으며, 보다 실용적인 ZKML에 도달하려면 양자화를 통한 적절한 모델 축소와 모델 연산에 최적화된 Proof System이 필요하다. Modulus Labs의 벤치마크 결과를 보면 Plony2, zkCNN가 다른 proof system 대비 우수한 성능을 보여줌을 확인할 수 있으며 이를 통해 대규모 모델 구현에 대한 접근법을 탐색해 볼 수 있다. 가야 할 길은 멀지만, ZKML을 통해 복잡하고 연산 비용이 많이 드는 AI 모델을 수학적으로 표현하고 검증하여 점차 비용을 낮추는 방향으로 진화하고 있다. 이러한 지속적인 개선은 데이터 환경 재편의 열쇠가 될 것이며 AI에 대한 개인 정보 보호 중심적이고 신뢰성 및 책임감 있는 접근 방식을 보여줄 것이다.
References
- https://github.com/worldcoin/awesome-zkml
- https://worldcoin.org/blog/engineering/intro-to-zkml
- https://worldcoin.org/blog/developers/privacy-deep-dive
- https://mirror.xyz/sevenxventures.eth/3USbrj7kcK7lyq_7upA4iyWV5pWMII7KrM40z5zpEXo
- https://bwetzel.medium.com/zero-knowledge-machine-learning-zkml-projects-exploring-the-space-fc9d5f04fb65
- https://struckcapital.com/decentralized-zero-knowledge-machine-learning-implications-and-opportunities/
- https://blog.twitter.com/engineering/en_us/topics/open-source/2023/twitter-recommendation-algorithm
- https://drive.google.com/file/d/1tylpowpaqcOhKQtYolPlqvx6R2Gv4IzE/view
- https://arxiv.org/abs/2210.08674
- https://eprint.iacr.org/2021/673
- https://a16zcrypto.com/posts/article/checks-and-balances-machine-learning-and-zero-knowledge-proofs/
- https://mirror.xyz/privacy-scaling-explorations.eth/K88lOS4XegJGzMoav9K5bLuT9Zhn3Hz2KkhB3ITq-m8
- https://mirror.xyz/1kx.eth/q0s9RCH43JCDq8Z2w2Zo6S5SYcFt9ZQaRITzR4G7a_k?ref=blog.spectral.finance
- https://medium.com/@danieldkang/tensorplonk-a-gpu-for-zkml-delivering-1-000x-speedups-d1ab0ad27e1c
- https://0xparc.org/blog/zk-mnist
- https://hackmd.io/@cathie/zkml
- https://medium.com/@danieldkang/trustless-verification-of-machine-learning-6f648fd8ba88