원작자: Zhiyong Fang
코끼리를 어떻게 먹나요? 한 입씩 먹어요.
최근 몇 년 동안 머신러닝 모델은 놀라운 속도로 비약적인 발전을 이루었습니다. 모델의 기능이 향상됨에 따라 복잡성 또한 동시에 증가했습니다. 오늘날의 고급 모델은 수백만 개 또는 수십억 개의 매개변수를 포함하는 경우가 많습니다. 이러한 규모의 과제를 해결하기 위해 다양한 영지식 증명 시스템이 등장했으며, 이 시스템들은 증명 시간, 검증 시간, 그리고 증명 크기 간의 역동적인 균형을 이루기 위해 끊임없이 노력합니다.
표 1: 모델 매개변수 크기의 기하급수적 증가
영지식 증명 분야의 현재 연구 대부분은 증명 시스템 자체의 최적화에 초점을 맞추고 있지만, 핵심적인 측면이 간과되는 경우가 많습니다. 바로 대규모 모델을 증명을 위해 더 작고 관리하기 쉬운 하위 모듈로 적절하게 분할하는 방법입니다. 이것이 왜 그렇게 중요한지 궁금하실 수 있습니다.
자세히 설명하자면:
현대 머신러닝 모델의 매개변수 수는 수십억 개에 달하는데, 이는 암호화 처리 없이도 이미 엄청난 양의 메모리 리소스를 차지합니다. 영지식증명(ZKP)의 맥락에서 이러한 문제는 더욱 심각해집니다.
각 부동 소수점 매개변수는 대수체의 원소로 변환되어야 하며, 이 변환 과정 자체로 인해 메모리 사용량이 약 5배에서 10배까지 증가합니다. 또한, 대수체에서 부동 소수점 연산을 정확하게 시뮬레이션하려면 일반적으로 약 5배에 달하는 추가적인 연산 오버헤드가 필요합니다.
일반적으로 모델의 전체 메모리 사용량은 원래 크기의 25배에서 50배까지 증가할 수 있습니다. 예를 들어, 10억 개의 32비트 부동 소수점 매개변수를 가진 모델은 변환된 매개변수를 저장하는 데만 100GB에서 200GB의 메모리가 필요할 수 있습니다. 중간 계산값과 증명 시스템 자체의 오버헤드를 고려하면 전체 메모리 사용량은 TB 수준을 쉽게 초과합니다.
Groth 16이나 Plonk와 같은 현재의 주류 증명 시스템은 일반적으로 최적화되지 않은 구현에서 모든 관련 데이터가 동시에 메모리에 로드될 수 있다고 가정합니다. 이러한 가정은 기술적으로 실현 가능하지만, 실제 하드웨어 조건에서는 매우 어렵고 사용 가능한 증명 컴퓨팅 리소스가 크게 제한됩니다.
다면체의 해: zkCuda
zkCuda란 무엇인가요?
zkCUDA 기술 문서 에 명시된 대로:
Polyhedra의 zkCUDA는 고성능 회로 개발을 위한 영지식 컴퓨팅 환경으로, 증명 생성 효율성을 향상시키도록 설계되었습니다. zkCUDA는 회로 표현력을 저하시키지 않으면서도 기본 증명기와 하드웨어 병렬 기능을 최대한 활용하여 빠른 영지식 증명 생성을 달성합니다.
zkCUDA 언어는 구문과 의미 측면에서 CUDA와 매우 유사하며, 이미 CUDA 경험이 있는 개발자에게 매우 친화적입니다. 기본 구현은 Rust로 되어 있어 보안과 성능을 모두 보장합니다.
zkCUDA를 사용하면 개발자는 다음을 수행할 수 있습니다.
고성능 ZK 회로를 빠르게 구축하세요.
MPI를 지원하는 GPU나 클러스터 환경 등의 분산 하드웨어 리소스를 효율적으로 스케줄링하고 활용하여 대규모 병렬 컴퓨팅을 구현합니다.
왜 zkCUDA인가?
zkCuda는 GPU 컴퓨팅에서 영감을 받은 고성능 제로 지식 컴퓨팅 프레임워크입니다. 대규모 머신 러닝 모델을 더 작고 관리하기 쉬운 컴퓨팅 단위(커널)로 분할하고, CUDA와 유사한 프런트엔드 언어를 통해 효율적인 제어를 구현할 수 있습니다. 이러한 설계는 다음과 같은 주요 이점을 제공합니다.
1. 정확한 매칭을 위한 검증 시스템 선택
zkCUDA는 각 컴퓨팅 커널에 대한 세밀한 분석을 지원하고 이를 가장 적합한 영지식 증명 시스템과 매칭합니다. 예를 들면 다음과 같습니다.
고도로 병렬적인 컴퓨팅 작업의 경우, 구조적 병렬 처리를 잘하는 GKR과 같은 프로토콜을 사용할 수 있습니다.
규모가 작거나 구조가 불규칙한 작업의 경우 컴팩트한 컴퓨팅 시나리오에서 오버헤드가 낮은 Groth 16과 같은 증명 시스템을 사용하는 것이 더 적합합니다.
zkCUDA는 백엔드 선택을 사용자 정의함으로써 다양한 ZK 프로토콜의 성능 이점을 극대화할 수 있습니다.
2. 더욱 스마트한 리소스 스케줄링 및 병렬 최적화
다양한 증명 커널은 CPU, 메모리, I/O에 대한 리소스 요구 사항이 크게 다릅니다. zkCUDA는 각 작업의 리소스 소비를 정확하게 평가하고 이를 지능적으로 스케줄링하여 전체 처리량을 극대화할 수 있습니다.
더 중요한 점은 zkCUDA가 CPU, GPU, FPGA 등 이기종 컴퓨팅 플랫폼 간의 작업 분산을 지원하여 하드웨어 리소스를 최적으로 활용하고 시스템 수준 성능을 크게 향상시킨다는 것입니다.
zkCuda는 GKR 프로토콜에 자연스럽게 적합합니다.
zkCuda는 다양한 제로 지식 증명 시스템과 호환되는 일반 컴퓨팅 프레임워크로 설계되었지만, GKR(Goldwasser-Kalai-Rothblum) 프로토콜과 자연스럽게 높은 수준의 아키텍처 호환성을 갖추고 있습니다.
아키텍처 설계 측면에서 zkCUDA는 다양한 하위 컴퓨팅 커널을 연결하는 다항식 커밋 메커니즘을 도입하여 모든 하위 컴퓨팅이 일관된 공유 데이터를 기반으로 실행되도록 보장합니다. 이 메커니즘은 시스템 무결성을 유지하는 데 필수적이지만, 상당한 컴퓨팅 비용을 발생시킵니다.
이와 대조적으로, GKR 프로토콜은 더욱 효율적인 대안 경로를 제공합니다. 각 커널이 내부 제약 조건을 완전히 증명해야 하는 기존의 영지식 시스템과 달리, GKR은 계산 정확성 검증을 커널 출력에서 입력까지 재귀적으로 추적할 수 있도록 합니다. 이 메커니즘은 각 모듈에서 검증을 완전히 확장하는 대신 커널 간에 정확성을 전달할 수 있도록 합니다. 핵심 아이디어는 머신러닝의 경사 역전파와 유사하며, 계산 그래프를 통해 정확성 주장을 추적하고 전송합니다.
이러한 증명 경사를 여러 경로로 병합하는 것은 다소 복잡하지만, 바로 이 메커니즘이 zkCUDA와 GKR 간의 긴밀한 협업의 기반을 형성합니다. zkCUDA는 머신러닝 학습 과정의 구조적 특성을 조정함으로써 대규모 모델 시나리오에서 더욱 긴밀한 시스템 통합과 효율적인 영지식 증명 생성을 달성할 것으로 예상됩니다.
예비 결과 및 향후 방향
우리는 zkCuda 프레임워크의 초기 개발을 완료하였고 Keccak 및 SHA-256과 같은 암호화 해시 함수와 소규모 머신 러닝 모델을 포함한 다양한 시나리오에서 성공적으로 테스트했습니다.
앞으로 메모리 효율적인 스케줄링 및 그래프 수준 최적화와 같은 최신 머신러닝 학습에 여러 가지 성숙한 엔지니어링 기술을 도입하고자 합니다. 이러한 전략을 영지식 증명 생성 프로세스에 통합하면 시스템의 성능 경계와 적응 유연성이 크게 향상될 것으로 기대합니다.
이는 단지 시작점일 뿐입니다. zkCuda는 효율적이고, 확장성이 뛰어나며, 적응성이 뛰어난 보편적인 증명 프레임워크를 향해 계속 나아갈 것입니다.