블록체인과 머신러닝은 분명 공통점이 많습니다.
해시브 쿠레시 글
딥타이드 테크플로우에 의해 컴파일됨
Llama2-70B와 같은 대규모 언어 모델을 실행하려고 합니다. 이 정도 크기의 모델에는 140GB 이상의 메모리가 필요하므로 가정용 컴퓨터에서는 원래 모델을 실행할 수 없습니다. 그렇다면 어떤 옵션이 있을까요? 클라우드 서비스 제공업체를 이용할 수도 있지만, 이러한 워크로드를 처리하고 모든 사용 데이터를 수집하는 중앙 집중식 단일 회사를 신뢰하기는 어려울 수 있습니다. 그렇다면 단일 제공업체에 의존하지 않고도 머신 러닝 모델을 실행할 수 있는 분산형 추론이 필요합니다.
신뢰 문제
탈중앙화된 네트워크에서는 단순히 모델을 실행하고 그 결과를 신뢰하는 것만으로는 충분하지 않습니다. 네트워크에 Llama2-70B를 사용해 거버넌스 딜레마를 분석해 달라고 요청했는데, 네트워크가 실제로는 Llama2-13B를 사용해 더 나쁜 분석을 내놓고 차액을 챙기지 않았다는 것을 어떻게 알 수 있을까요?
중앙화된 세계에서는 OpenAI와 같은 회사가 평판이 걸려 있기 때문에 정직하다고 믿을 수 있습니다(그리고 어느 정도는 LLM의 품질이 스스로를 대변합니다). 하지만 탈중앙화된 세계에서는 정직성이 기본이 아니라 검증이 필요합니다.
바로 이 부분에서 검증 가능한 추론이 중요한 역할을 합니다. 쿼리에 대한 응답을 제공하는 것 외에도 요청한 모델에서 올바르게 작동했음을 증명해야 합니다. 하지만 어떻게 할 수 있을까요?
가장 쉬운 방법은 모델을 체인에서 스마트 콘트랙트로 실행하는 것입니다. 이는 확실히 결과를 검증할 수 있지만, 매우 비실용적입니다.GPT-3는 12,288개의 차원을 가진 단어를 나타냅니다. 이 크기의 행렬 곱셈을 온체인에서 한 번 수행하려면 현재 가스 가격 기준으로 약 100억 달러가 소요되며, 이는 약 한 달 동안 모든 블록을 채울 수 있는 비용입니다.
따라서 우리는 다른 접근 방식을 취해야 했습니다.
현장을 관찰한 결과, 검증 가능한 추론을 해결하는 데는 영지식 증명, 낙관적 사기 증명, 암호경제학 등 세 가지 주요 접근 방식이 있다는 것을 알게 되었습니다. 각 접근 방식에는 고유한 보안 및 비용 영향이 있습니다.

1. 영지식 증명(ZK ML)
대규모 모델을 실행했음을 증명할 수 있지만, 모델이 아무리 커도 증명 크기가 실제로는 고정되어 있다고 상상해 보세요. 이것이 바로 ZK ML(머신 러닝)이 약속하는 바이며, ZK-SNARK를 통해 달성할 수 있습니다.
원칙적으로는 우아하게 들리지만 심층 신경망을 영지식 회로로 컴파일한 다음 이를 증명하는 것은 매우 어렵습니다. 그리고 비용이 매우 많이 들기 때문에 최소한 추론 비용이 1000배 증가하고 지연 시간(증명을 생성하는 데 걸리는 시간)이 1000배 증가할 수 있으며, 어떤 일이 일어나기 전에 모델 자체를 회로로 컴파일하는 것은 말할 것도 없습니다. 궁극적으로 이 비용은 사용자에게 전가되어야 하므로 최종 사용자에게는 매우 비싼 비용이 될 것입니다.
반면에 이것이 암호화의 정확성을 보장할 수 있는 유일한 방법입니다. ZK를 사용하면 모델 제공자가 아무리 노력해도 속임수를 쓰는 것이 불가능합니다. 하지만 높은 비용으로 인해 당분간 대규모 모델에는 적용하기 어렵습니다.
예: EZKL, 모듈러스 랩스, 기자
2. 낙관적 사기 증명(낙관적 ML)
낙관적 접근 방식은 믿되 검증하는 것입니다. 반대가 증명되지 않는 한 추론이 옳다고 가정합니다. 노드가 부정 행위를 시도하면 '관찰자'가 네트워크에서 부정 행위자를 지적하고 부정 증명에 이의를 제기할 수 있습니다. 이러한 옵저버는 항상 체인을 감시하고 자신의 모델을 다시 실행하여 결과가 올바른지 확인해야 합니다.
이러한 사기 증명은 오류를 찾을 때까지 체인 전체에서 모델 실행 궤적을 반복적으로 분할하는 응답 게임인 트루비트 스타일의 대화형 챌린지입니다.

이러한 프로그램은 규모가 크고 내부 상태가 방대하며 단일 GPT-3 추론에 약 1페타플롭(10⁵ 부동 소수점 연산)의 비용이 들기 때문에 비용이 매우 많이 들 것입니다. 그러나 게임 이론에 따르면 이는 거의 불가능에 가깝습니다(실제 프로덕션에서 코드가 실행되는 경우가 거의 없기 때문에 코딩 시 부정 증명도 올바르게 작성하기가 매우 어렵습니다).
낙관적인 장점은 정직한 관찰자가 주의를 기울이는 한 ML은 안전하다는 것입니다. 비용은 ZK ML보다 저렴하지만 네트워크의 모든 옵저버가 모든 쿼리를 다시 실행한다는 점을 염두에 두세요. 균형 상태에서는 관찰자가 10명일 경우 보안 비용이 사용자에게 전가되므로 추론 비용의 10배 이상(또는 관찰자 수만큼)을 지불해야 한다는 뜻입니다.
단점은 낙관적 집계 기법과 마찬가지로 챌린지 기간이 끝날 때까지 기다려야 응답이 검증되었는지 확인할 수 있다는 것입니다. 하지만 네트워크 매개변수가 설정된 방식에 따라 며칠이 아닌 몇 분만 기다리면 될 수도 있습니다.
예: 오라, 젠신
3. 암호경제학적 ML(암호경제학적 머신러닝)
여기서는 모든 화려한 기술을 버리고 지분 가중 투표라는 간단한 작업을 수행합니다. 사용자는 쿼리를 실행할 노드 수를 결정하고, 각 노드는 자신의 응답을 공개하며, 응답 간에 불일치가 있는 경우 홀수 노드가 도끼를 갖게 됩니다. 보다 간단한 접근 방식인 표준 예후 예측자 메커니즘은 사용자가 원하는 보안 수준을 설정하여 비용과 신뢰의 균형을 맞출 수 있도록 합니다. 만약 체인링크가 머신러닝을 수행했다면, 이 접근법을 사용했을 것입니다.
지연 시간이 매우 빠르며 각 노드에서 커밋하고 공개하기만 하면 됩니다. 이것이 블록체인에 기록된다면 기술적으로는 두 블록에서 일어날 수 있습니다.
하지만 보안이 가장 취약합니다. 대부분의 노드가 협력할 의향이 있다면 합리적으로 담합을 선택할 수 있습니다. 사용자 입장에서는 이러한 노드에 투자하는 비용과 부정 행위로 인해 발생하는 비용을 고려해야 합니다. 즉, 아이겐 레이어와 같은 리플레징과 귀속성 보안을 사용하면 네트워크는 보안 장애가 발생할 경우 효과적인 보험을 제공할 수 있습니다.
하지만 이 시스템의 장점은 사용자가 원하는 보안 수준을 지정할 수 있다는 것입니다. 쿼럼에 3개 노드 또는 5개 노드를 포함할지, 아니면 네트워크의 모든 노드를 포함할지 선택할 수 있습니다. 또는 모험을 즐기고 싶다면 n=1을 선택할 수도 있습니다. 여기서 비용 함수는 간단합니다. 사용자는 쿼럼에서 원하는 쿼럼에 대해 비용을 지불합니다. 3을 선택하면 외삽 비용의 3배를 지불하는 것입니다.
여기서 까다로운 문제는 n=1을 안전하게 만들 수 있는가 하는 것입니다. 간단한 구현에서는 감시가 없다면 고립된 노드가 매번 속임수를 써야 합니다. 하지만 쿼리를 암호화하고 의도에 따라 지불하면 해당 노드가 실제로 이 작업에 응답하는 유일한 노드라는 것을 숨길 수 있을 것입니다. 이 경우 일반 사용자에게 추정 비용의 2배 미만의 비용을 청구할 수 있을 것입니다.
궁극적으로 암호경제학적 접근 방식은 가장 간단하고, 가장 쉽고, 가장 저렴하지만, 원칙적으로 가장 설득력이 떨어지고 가장 안전하지 않습니다. 하지만 언제나 그렇듯이 차이를 만드는 것은 세부 사항입니다.
예: 리추얼, 아토마 네트워크
검증 가능한 ML이 어려운 이유
왜 아직 이 모든 것을 갖추지 못했는지 궁금할 수도 있습니다. 결국 ML 모델은 매우 큰 컴퓨터 프로그램일 뿐입니다. 프로그램이 올바르게 실행되는지 증명하는 것은 언제나 블록체인의 핵심이었습니다.
그렇기 때문에 이 세 가지 검증 방법은 블록체인이 블록 공간을 보호하는 방식을 반영하며, ZK 롤업은 ZK 증명을, 낙관적 롤업은 사기 증명을, 대부분의 L1 블록체인은 암호경제학을 사용합니다. 의심할 여지 없이 결국에는 본질적으로 동일한 해결책에 도달할 것입니다. 그렇다면 이것이 ML에 적용될 때 어려운 점은 무엇일까요?
ML 계산은 종종 GPU에서 효율적으로 실행되도록 설계된 고밀도 계산 그래프로 표현되기 때문에 ML은 독특합니다. 이러한 그래프는 증명하도록 설계되지 않았습니다. 따라서 ZK 또는 낙관적 환경에서 ML 계산을 증명하려면 실행 가능한 형식으로 다시 컴파일해야 하는데, 이는 매우 복잡하고 비용이 많이 듭니다.

머신러닝의 두 번째 근본적인 어려움은 비결정성입니다. 프로그램 검증은 프로그램의 출력이 결정론적이라고 가정합니다. 그러나 동일한 모델을 다른 GPU 아키텍처나 CUDA 버전에서 실행하면 다른 결과를 얻을 수 있습니다. 각 노드가 동일한 아키텍처를 사용하도록 강제하더라도 알고리즘에 사용되는 무작위성 문제(확산 모델의 노이즈 또는 LLM의 토큰 샘플링)가 여전히 발생할 수 있습니다. 난수 시드를 제어하여 이러한 무작위성을 해결할 수 있습니다. 하지만 이 경우에도 부동소수점 연산에 내재된 비결정성이라는 마지막 골치 아픈 문제에 직면하게 됩니다.
거의 모든 GPU 연산은 부동소수점 숫자로 수행됩니다. 부동소수점은 조합이 불가능하기 때문에 작업하기가 어렵습니다. 즉, 부동소수점의 경우 (a + b) + c가 항상 a + (b + c)와 같다는 것은 사실이 아닙니다. GPU의 높은 병렬화 수준으로 인해 덧셈이나 곱셈을 수행할 때마다 순서가 달라질 수 있으며, 이로 인해 출력에 약간의 차이가 발생할 수 있습니다. 이는 단어의 불연속적인 특성으로 인해 LLM의 출력에는 영향을 미치지 않지만 이미지 모델의 경우 픽셀 값이 미묘하게 달라져 두 이미지가 정확히 일치하지 않을 수 있습니다.
즉, 성능에 큰 타격을 줄 수 있는 부동 소수점 숫자를 피하거나 출력을 비교할 때 어느 정도 유연성을 허용해야 합니다. 어느 쪽이든 세부 사항은 지루하고 완전히 추상화할 수 없습니다. (NEAR와 같은 일부 블록체인이 부동소수점 숫자를 지원하지만 이더 가상머신에서는 부동소수점 숫자를 지원하지 않는 이유입니다.)
요컨대, 탈중앙화된 추론 네트워크는 모든 세부 사항이 중요하기 때문에 어렵지만, 실제로는 의외로 많은 세부 사항이 존재합니다.
요약하자면
현재로서는 블록체인과 머신러닝이 공통점이 많다는 것은 분명합니다. 하나는 신뢰를 만드는 기술이고, 다른 하나는 신뢰가 절실히 필요한 기술입니다. 탈중앙화된 추론에 대한 각각의 접근 방식에는 고유한 장단점이 있지만, 저는 기업가들이 이러한 도구를 사용하여 어떻게 최고의 네트워크를 구축할 수 있을지 매우 흥미롭게 지켜보고 있습니다.






