a16z: 제로 지식 증명을 통해 온체인 머신러닝 알고리즘을 어떻게 검증할 수 있을까?
원문 제목:Checks and balances: Machine learning and zero-knowledge proofs
원문 저자:Elena Burger ,a16z
편집:DeFi之道
지난 몇 년 동안 블록체인에서 제로 지식 증명은 주로 두 가지 주요 목적을 위해 사용되었습니다: (1) 체인 외부에서 거래를 처리하고 메인넷에서 결과를 검증하여 계산이 제한된 네트워크의 규모를 확장하는 것; (2) 거래를 숨겨 사용자 프라이버시를 보호하는 것으로, 오직 해독 키를 가진 사람만이 볼 수 있습니다. 블록체인 맥락에서 이러한 특성은 분명히 바람직합니다: 탈중앙화 네트워크(예: 이더리움)는 검증자의 처리 능력, 대역폭 및 지연에 대해 감당할 수 없는 요구를 제기하지 않고는 처리량이나 블록 크기를 늘릴 수 없습니다(따라서 유효성 롤업이 필요합니다), 모든 거래는 누구에게나 보이므로(따라서 체인 상 프라이버시 솔루션이 필요합니다).
하지만 제로 지식 증명은 세 번째 기능에도 유용합니다: 모든 유형의 계산(체인 외부에서 인스턴스화된 EVM의 계산뿐만 아니라)이 올바르게 실행되었는지를 효율적으로 검증하는 것입니다. 이는 블록체인 외부의 분야에도 큰 영향을 미칩니다.
현재 제로 지식 증명을 활용하여 계산 능력을 간결하게 검증하는 시스템의 발전은 사용자가 각 디지털 제품에서 블록체인이 보장하는 것과 동일한 수준의 신뢰할 수 없고 검증 가능한 것을 요구할 수 있게 합니다, 특히 머신 러닝 모델에서. 블록체인 계산에 대한 높은 수요는 제로 지식 증명 연구를 자극하여 메모리 사용량이 적고 증명 및 검증 시간이 더 빠른 현대 증명 시스템을 창출했습니다. ------ 이제는 체인 상에서 일부 소형 머신 러닝 알고리즘을 검증할 수 있게 되었습니다.
지금까지 우리는 매우 강력한 머신 러닝 제품과 상호작용할 수 있는 잠재력을 경험했을 것입니다. 며칠 전, 저는 GPT-4의 도움으로 저를 계속 이길 수 있는 AI를 만들었습니다. 이는 지난 수십 년 동안 머신 러닝이 이룬 모든 발전의 시적인 축소판처럼 느껴졌습니다: IBM의 개발자들은 Deep Blue를 만드는 데 12년을 보냈고, 이는 32 노드 IBM RS/6000 SP 컴퓨터에서 실행되며 매초 거의 2억 개의 체스 수를 평가할 수 있는 모델로, 1997년 체스 챔피언 가리 카스파로프를 이겼습니다. 그에 비해, 저는 몇 시간 만에 ------ 제 쪽에서 최소한의 코딩만으로 ------ 저를 이길 수 있는 프로그램을 만들었습니다.
확실히, 제가 만든 AI가 체스에서 가리 카스파로프를 이길 수 있을지 의문이지만, 그것이 핵심은 아닙니다. 핵심은 GPT-4를 다루는 누구나 비슷한 경험을 할 수 있다는 것입니다: 아주 적은 노력으로 자신의 능력에 가까운 또는 그 이상의 것을 창조할 수 있습니다. 우리는 모두 IBM의 연구원입니다; 우리는 모두 가리 카스파로프입니다.
분명히, 이는 흥미롭고도 두렵습니다. 암호화폐 산업에서 일하는 사람에게 자연스러운 반응(머신 러닝이 할 수 있는 것에 감탄한 후)은 잠재적인 집중화 경로를 고려하고 이러한 경로를 어떻게 탈중앙화할 수 있을지를 생각하는 것입니다. 현재의 모델은 방대한 공개 텍스트와 데이터를 흡수하여 만들어졌지만, 현재는 소수의 사람만이 이러한 모델을 통제하고 소유하고 있습니다. 더 구체적으로 말하자면, 문제는 "인공지능이 막대한 가치를 지니는가"가 아니라 "우리가 이러한 시스템을 어떻게 구축하여 상호작용하는 모든 사람이 경제적 이익을 얻고, 그들이 원하는 경우 데이터가 프라이버시를 존중하는 방식으로 사용되도록 보장할 수 있을까"입니다.
최근에는 Chat-GPT와 같은 주요 인공지능 프로젝트의 발전을 일시 중지하거나 늦추자는 목소리가 있었습니다. 진전을 막는 것은 해결책이 아닐 수 있습니다: 더 나은 방법은 오픈 소스 모델을 추진하고, 모델 제공자가 자신의 가중치나 데이터 프라이버시를 보호하고 싶어하는 경우 제로 지식 증명을 사용하여 이를 보호하는 것입니다. 이러한 증명은 체인 상에서 완전히 감사할 수 있습니다. 현재, 개인 모델 가중치와 데이터에 대한 후자의 사용 사례는 체인 상에서 구현할 수 없지만, 제로 지식 증명 시스템의 발전은 미래에 이를 실현할 것입니다.
검증 가능하고 소유할 수 있는 머신 러닝
제가 Chat-GPT로 구축한 체스 AI는 현재로서는 상대적으로 무해해 보입니다: 출력이 상대적으로 일관된 프로그램으로, 가치 있는 지식 재산권을 침해하거나 프라이버시를 침해하는 데이터를 사용하지 않습니다. 하지만 우리가 API 뒤에서 실행되는 모델이 실제로 실행된 모델인지 확인하고 싶을 때는 어떻게 될까요? 또는 인증된 데이터를 체인 상의 모델에 입력하고, 데이터가 실제로 합법적인 출처에서 왔는지 확인하고 싶다면요? 제출된 데이터의 "사람"이 실제로 사람인지, 아니면 제 네트워크에 비잔틴 공격을 시도하는 로봇인지 확인하고 싶다면요? 제로 지식 증명과 임의 프로그램을 간결하게 표현하고 검증하는 능력이 해결책이 될 수 있습니다.
현재 체인 상 머신 러닝 맥락에서 제로 지식 증명의 주요 용도는 올바른 계산을 검증하는 것입니다. 다시 말해, 머신 러닝 맥락에서 제로 지식 증명과 더 구체적인 SNARK(간결한 비대화형 지식 증명)의 가장 유용한 점은 그 간결성 특성에 있습니다. 이는 제로 지식 증명이 증명자(및 그가 처리하는 데이터)를 엿보는 자로부터 보호하기 때문입니다. 완전 동형 암호화(FHE), 기능 암호화 또는 신뢰 실행 환경(TEE)과 같은 프라이버시를 강화하는 기술은 신뢰할 수 없는 증명자가 개인 입력 데이터에서 계산을 실행하도록 하는 데 더 적합합니다(이러한 기술에 대한 심층적인 논의는 본문 범위를 넘어섭니다).
한 걸음 물러서서 제로 지식으로 표현할 수 있는 머신 러닝 응용 프로그램 유형을 높은 수준에서 이해해 봅시다(제로 지식에 대한 더 깊은 이해를 원하신다면 제로 지식 증명 알고리즘 및 하드웨어 개선에 대한 우리의 글을 참조하시고, Justin Thaler의 SNARK 성능 연구를 보시거나 우리의 제로 지식 교과서를 확인해 보세요). 제로 지식 증명은 일반적으로 프로그램을 산술 회로로 표현합니다: 이러한 회로를 사용하여 증명자는 공개 및 개인 입력에서 증명을 생성하고, 검증자는 수학적 계산을 통해 이 진술의 출력이 올바른지 확인합니다 ------ 개인 입력에 대한 어떤 정보도 얻지 않고.
우리는 여전히 체인 상에서 제로 지식 증명을 사용하여 계산을 검증하는 매우 초기 단계에 있지만, 알고리즘의 개선은 실행 가능한 범위를 확장하고 있습니다. 다음은 머신 러닝에서 제로 지식 증명을 적용하는 다섯 가지 방법입니다.
1. 모델 진위: 특정 엔티티가 실행했다고 주장하는 머신 러닝 모델이 실제로 실행된 모델인지 확인하고 싶습니다. 예를 들어, 특정 모델이 API 뒤에 있을 경우, 특정 모델을 제공하는 엔티티는 여러 버전을 가질 수 있습니다. 예를 들어, 더 저렴하고 정확도가 낮은 버전과 더 비싸고 성능이 높은 버전이 있을 수 있습니다. 증명이 없으면, 실제로 더 비싼 버전을 지불했을 때 제공자가 더 저렴한 모델을 제공했는지 알 수 없습니다(예: 제공자가 서버 비용을 절감하고 이윤을 높이기를 원할 수 있습니다).
이를 위해 각 모델 인스턴스에 대해 개별 증명을 제공해야 합니다. 실제적인 방법은 Dan Boneh, Wilson Nguyen 및 Alex Ozdemir의 기능 약속 프레임워크를 사용하는 것입니다. 이는 SNARK 기반의 제로 지식 약속方案로, 모델 소유자가 모델을 약속하고 사용자가 해당 모델에 데이터를 입력할 수 있으며, 실행된 약속 모델의 검증을 받을 수 있게 합니다. Risc Zero(일반적인 STARK 기반 가상 머신)를 기반으로 한 일부 응용 프로그램도 이를 구현했습니다. Daniel Kang, Tatsunori Hashimoto, Ion Stoica 및 Yi Sun의 다른 연구는 ImageNet 데이터 세트에서 92%의 정확도로 유효한 추론을 검증할 수 있음을 보여주었습니다(이는 최고 성능의 비제로 지식 검증 ImageNet 모델과 동등합니다).
하지만 단순히 제출된 모델이 실행되었다는 증명을 받는 것만으로는 충분하지 않을 수 있습니다. 하나의 모델이 주어진 프로그램을 정확하게 표현하지 못할 수 있으므로, 제출된 모델을 제3자가 감사하기를 원할 것입니다. 기능 약속은 증명자가 약속된 모델을 사용했음을 증명할 수 있게 하지만, 약속된 모델의 어떤 정보도 보장하지는 않습니다. 만약 우리가 제로 지식 증명이 훈련 증명에서 충분히 잘 작동하도록 할 수 있다면(아래 예시 #4를 참조), 우리는 이러한 보증을 얻기 시작할 수 있을 것입니다.
2. 모델 완전성: 동일한 머신 러닝 알고리즘이 서로 다른 사용자 데이터에서 동일한 방식으로 실행되도록 보장하고 싶습니다. 이는 신용 평가 결정 및 대출 신청과 같이 임의의 편향을 적용하고 싶지 않은 분야에서 매우 유용합니다. 이를 위해 기능 약속을 사용할 수도 있습니다. 이를 위해 모델과 그 매개변수를 약속하고 사람들이 데이터를 제출할 수 있도록 해야 합니다. 출력은 해당 모델이 각 사용자 데이터에 대해 약속된 매개변수로 실행되었는지를 검증합니다. 또는 모델과 그 매개변수를 공개하고 사용자가 자신의(인증된) 데이터에 적절한 모델과 매개변수를 적용했음을 스스로 증명할 수 있도록 할 수 있습니다. 이는 의료 분야에서 특히 유용할 수 있습니다. 법률에 따라 환자에 대한 특정 정보는 비밀로 유지해야 합니다. 미래에는 완전히 비공식적인 실시간 사용자 데이터에서 학습하고 개선할 수 있는 의료 진단 시스템을 구현할 수 있습니다.
3. 인증: 외부에서 검증된 출처(예: 디지털 서명을 생성할 수 있는 디지털 플랫폼이나 하드웨어 장치)에서 오는 인증을 체인 상에서 실행되는 모델이나 기타 스마트 계약에 통합하고 싶습니다. 이를 위해 제로 지식 증명을 사용하여 서명을 검증하고 증명을 프로그램의 입력으로 사용할 것입니다. Anna Rose와 Tarun Chitra는 최근 Daniel Kang과 Yi Sun을 초대하여 이 분야의 최신 발전을 논의한 제로 지식 팟캐스트 에피소드를 진행했습니다.
구체적으로, Daniel과 Yi는 최근 인증된 센서를 가진 카메라가 촬영한 이미지가 자르기, 크기 조정 또는 제한된 가리기와 같은 변환을 거쳤는지를 검증하는 방법을 탐구하는 연구를 발표했습니다. 이는 이미지가 깊은 위조 없이 합법적으로 편집되었음을 증명하고 싶을 때 매우 유용합니다. Dan Boneh와 Trisha Datta도 제로 지식 증명을 사용하여 이미지의 출처를 검증하는 유사한 연구를 진행했습니다.
하지만 더 넓게 말하자면, 디지털 인증을 받은 모든 정보는 이러한 검증 형태의 후보가 됩니다: Jason Morton은 EZKL 라이브러리를 개발 중이며(다음 섹션에서 더 많은 소개가 있을 것입니다), 그는 이 방법을 "블록체인에 시각을 부여하다"라고 부릅니다. 서명된 모든 엔드포인트(예: Cloudflare의 SXG 서비스, 제3자 공증인)는 검증 가능한 디지털 서명을 생성하며, 이는 신뢰할 수 있는 출처에서의 출처와 진위를 증명하는 데 매우 유용할 수 있습니다.
4. 분산 추론 또는 훈련: 머신 러닝 추론 또는 훈련을 분산 방식으로 수행하고 사람들이 공공 모델에 데이터를 제출할 수 있도록 하고 싶습니다. 이를 위해 기존 모델을 체인 상에 배포하거나 완전히 새로운 네트워크를 설계하고 제로 지식 증명을 사용하여 모델을 압축할 수 있습니다. Jason Morton의 EZKL 라이브러리는 ONNX 및 JSON 파일을 수집하고 이를 ZK-SNARK 회로로 변환하는 방법을 만들고 있습니다. 최근 ETH Denver에서의 시연은 이 기술이 이미지 인식 기반의 체인 상 보물찾기를 생성하는 데 사용될 수 있음을 보여주었습니다. 게임 제작자는 사진을 업로드하고 이미지의 증명을 생성하며, 플레이어는 이미지를 업로드합니다; 검증자는 사용자가 업로드한 이미지가 제작자가 생성한 증명과 충분히 일치하는지 확인합니다. EZKL은 현재 최대 1억 개의 매개변수를 검증할 수 있는 모델을 지원하며, 이는 체인 상에서 ImageNet 크기의 모델(이 모델은 6000만 개의 매개변수를 가집니다)을 검증하는 데 사용할 수 있습니다.
Modulus Labs와 같은 다른 팀은 체인 상 추론을 위한 다양한 증명 시스템을 벤치마킹하고 있습니다. Modulus의 벤치마킹은 최대 1800만 개의 매개변수를 포함합니다. 훈련 측면에서 Gensyn은 사용자가 공공 데이터를 입력하고 분산 노드 네트워크를 통해 모델 훈련을 수행하면서 훈련의 정확성을 검증할 수 있는 분산 컴퓨팅 시스템을 구축하고 있습니다.
5. 사람 증명: 누군가가 독특한 개인임을 검증하고 싶지만 그들의 프라이버시를 해치고 싶지 않습니다. 이를 위해 생체 인식 스캔 또는 암호화된 정부 ID 제출 방법과 같은 검증 방법을 생성할 것입니다. 그런 다음 제로 지식 증명을 사용하여 누군가가 이미 검증되었는지를 확인하되, 그 사람의 신원에 대한 어떤 정보도 유출하지 않습니다. 그 신원이 완전히 식별 가능한 경우든, 공키와 같은 가명일 경우든 말입니다.
Worldcoin은 사용자에게 독특한 홍채 코드를 생성하여 공격에 대한 저항성을 보장하는 사람 증명 프로토콜을 통해 이를 실현하고 있습니다. 핵심은 WorldID를 생성하기 위한 개인 키(및 Worldcoin 사용자에게 생성된 암호화 지갑의 다른 개인 키)가 프로젝트의 눈 스캐너에서 로컬로 생성된 홍채 코드와 완전히 분리되어 있다는 것입니다. 이러한 분리는 생체 인식 식별자를 특정 개인에게 귀속될 수 있는 모든 형태의 사용자 키와 완전히 분리합니다. Worldcoin은 또한 애플리케이션이 SDK를 삽입할 수 있도록 하여 사용자가 WorldID로 로그인할 수 있게 하고, 애플리케이션이 사용자가 WorldID를 소유하고 있는지를 확인하도록 하여 제로 지식 증명을 통해 프라이버시를 보호하지만 개별 사용자를 추적할 수 없도록 합니다(자세한 내용은 이 블로그 게시물을 참조하세요).
이 예시는 제로 지식 증명의 프라이버시 보호 특성을 사용하여 더 약하고 악의적인 인공지능에 맞서는 형태로, 이는 위의 다른 예시(예: 자신이 로봇이 아닌 진짜 인간임을 증명하면서 자신의 정보에 대한 어떤 것도 유출하지 않는 것)와는 크게 다릅니다.
모델 아키텍처와 도전 과제
SNARKs(간결 비대화형 지식 증명)의 증명 시스템 구현에서의 돌파구는 많은 머신 러닝 모델을 체인 상에 올리는 주요 동력이 되었습니다. 일부 팀은 기존 아키텍처(Plonk, Plonky2, Air 등)에서 맞춤형 회로를 제작하고 있습니다. 맞춤형 회로 측면에서 Halo 2는 Daniel Kang과 Jason Morton의 EZKL 프로젝트에서 널리 사용되고 있는 백엔드입니다. Halo 2의 증명자 시간은 거의 선형이며, 증명 크기는 일반적으로 몇 킬로바이트에 불과하고, 검증자 시간은 일정합니다. 아마도 더 중요한 것은 Halo 2가 강력한 개발자 도구를 갖추고 있어 개발자들이 선호하는 SNARK 백엔드가 되었다는 것입니다. Risc Zero와 같은 다른 팀은 범용 VM 전략을 추구하고 있습니다. 또 다른 팀은 Justin Thaler의 초고효율 증명 시스템을 기반으로 합산 검사 프로토콜을 사용하여 맞춤형 프레임워크를 만들고 있습니다.
증명 생성 및 검증자 시간은 증명을 생성하고 검사하는 하드웨어 및 증명을 생성하는 회로 크기에 따라 절대적으로 달라집니다. 하지만 여기서 주목해야 할 핵심 사항은, 대표하는 프로그램이 무엇이든 간에 증명의 크기는 항상 상대적으로 작기 때문에 증명을 검증하는 검증자의 부담이 제한된다는 것입니다. 그러나 여기에는 몇 가지 미세한 차이가 있습니다: Plonky2와 같은 FRI 기반 약속方案을 사용하는 증명 시스템의 경우, 증명 크기가 증가할 수 있습니다. (최종적으로 Plonk 또는 Groth16과 같은 쌍 기반 SNARK 포장을 사용하지 않는 한, 이러한 증명은 증명된 진술의 복잡성에 따라 증가하지 않습니다.)
머신 러닝 모델에 대한 통찰력은, 모델을 정확하게 표현하는 증명 시스템이 설계되면 실제 출력 검증 비용이 매우 저렴해질 것이라는 점입니다. 개발자가 가장 중요하게 고려해야 할 것은 증명자 시간과 메모리입니다: 상대적으로 빠르게 증명할 수 있는 방식으로 모델을 표현하고, 증명 크기가 이상적으로 몇 킬로바이트 정도여야 합니다. 제로 지식 하에서 머신 러닝 모델의 올바른 실행을 증명하려면 모델 아키텍처(층, 노드 및 활성화 함수), 매개변수, 제약 조건 및 행렬 곱셈 연산을 회로로 인코딩하고 표현해야 합니다. 이는 이러한 속성을 유한체에서 실행할 수 있는 산술 연산으로 분해하는 것을 포함합니다.
이 분야는 아직 초기 단계에 있습니다. 모델을 회로로 변환하는 과정에서 정확성과 충실도가 영향을 받을 수 있습니다. 모델이 산술 회로로 표현될 때, 앞서 언급한 모델 매개변수, 제약 조건 및 행렬 곱셈 연산은 근사화 및 단순화가 필요할 수 있습니다. 산술 연산을 증명의 유한체 요소로 인코딩할 때 일부 정밀도가 손실될 수 있습니다(또는 이러한 최적화를 수행하지 않으면 현재의 제로 지식 프레임워크에서 증명 생성 비용이 감당할 수 없게 될 것입니다). 또한 머신 러닝 모델의 매개변수와 활성화는 일반적으로 32비트로 인코딩되어 정밀도를 높이지만, 오늘날의 제로 지식 증명은 필요한 산술 회로 형식에서 32비트 부동 소수점 연산을 표현할 수 없으며, 이는 막대한 비용을 초래합니다. 따라서 개발자는 32비트 정수가 8비트 정밀도로 변환된 양자화된 머신 러닝 모델을 사용하는 것을 선택할 수 있습니다. 이러한 유형의 모델은 제로 지식 증명으로 표현하기에 유리하지만, 검증된 모델은 더 높은 품질의 초기 모델에 대한 대략적인 근사일 수 있습니다.
이 단계에서, 이는 실제로 치열한 경쟁의 게임입니다. 제로 지식 증명이 더욱 최적화됨에 따라 머신 러닝 모델은 점점 더 복잡해지고 있습니다. 이미 몇 가지 최적화된 유망한 분야가 있습니다: 증명 재귀는 증명이 다음 증명의 입력으로 사용될 수 있도록 하여 전체 증명 크기를 줄이는 방식으로 증명 압축을 가능하게 합니다. 또한 Linear A의 Apache Tensor Virtual Machine(TVM) 분기와 같은 새로운 프레임워크가 등장하고 있으며, 이 프레임워크는 부동 소수점을 제로 지식 친화적인 정수 표현으로 변환하는 변환기를 출시했습니다. 마지막으로, 우리는 a16z crypto가 SNARKs에서 32비트 정수를 표현하는 것을 더욱 합리적으로 만들 미래의 작업에 대해 낙관적입니다.
"규모"의 두 가지 정의 제로 지식 증명은 압축을 통해 규모를 실현합니다: SNARKs는 매우 복잡한 시스템(예: 가상 머신 또는 머신 러닝 모델)의 수학적 표현을 가능하게 하여 이를 검증하는 비용이 이를 실행하는 비용보다 낮게 만듭니다. 반면에 머신 러닝은 확장을 통해 규모를 실현합니다: 오늘날의 모델은 더 많은 데이터, 매개변수 및 훈련 및 추론 과정에 참여하는 GPU/TPU와 함께 개선됩니다. 중앙 집중식 회사는 거의 무제한의 규모로 서버를 운영할 수 있습니다: API 호출에 대한 월 요금을 부과하고 운영 비용을 지불합니다.
블록체인 네트워크의 경제 현실은 거의 정반대입니다: 개발자는 자신의 코드를 최적화하여 체인 상에서 실행할 수 있도록 장려받고 있으며, 이는 실행 가능하고 저렴해야 합니다. 이러한 비대칭은 큰 이점을 제공합니다: 이는 증명 시스템의 효율성을 높여야 하는 환경을 창출합니다. 우리는 머신 러닝에서 블록체인이 제공하는 것과 동일한 이점, 즉 검증 가능한 소유권과 공유된 진정한 개념을 요구해야 합니다.
비록 블록체인이 zk-SNARKs 최적화를 촉진하지만, 계산과 관련된 모든 분야는 혜택을 받을 것입니다.
감사합니다: Justin Thaler, Dan Boneh, Guy Wuollet, Sam Ragsdale, Ali Yahya, Chris Dixon, Eddy Lazzarin, Tim Roughgarden, Robert Hackett, Tim Sullivan, Jason Morton, Peiyuan Liao, Tarun Chitra, Brian Retford, Daniel Kang, Yi Sun, Anna Rose, Modulus Labs, DC Builder.