智能合約智能性的下一步:深入剖析ZKML賽道

通過zkSNARKs 證明機器學習(ML) 模型推理有望成為這十年智能合約最重要的進步之一。這一發展開闢了一個令人興奮的大設計空間,允許應用程序和基礎設施發展成為更複雜和智能的系統。

通過添加ML 功能,智能合約可以變得更加自主和動態,允許它們根據實時鏈上數據而不是靜態規則做出決策。智能合約將是靈活的,可以適應各種場景,包括那些在最初創建合約時可能沒有預料到的場景。簡而言之,ML 功能將擴大我們放在鏈上的任何智能合約的自動化、準確性、效率和靈活性。

ML 在web3 之外的大多數應用程序中被廣泛應用,在智能合約中的應用幾乎是零。其主要是由於在鏈上運行這些模型的計算成本很高。例如,FastBERT 是一種計算優化語言模型,使用約1800 MFLOPS(百萬浮點運算),這無法直接在EVM 上運行。

鏈上ML 模型的應用,主要關注的是推理階段:應用模型對真實世界的數據進行預測。為了擁有ML 規模的智能合約,合約必須能夠攝取此類預測,但正如我們之前提到的,直接在EVM 上運行模型是不可行的。 zkSNARKs 為我們提供了一個解決方案:任何人都可以在鏈下運行一個模型,並生成一個簡潔且可驗證的證明,表明預期的模型確實產生了特定的結果。該證明可以在鏈上發布並由智能合約攝取以增強其智能。

在這篇文章中,我們將:

  • 查看鏈上ML 的潛在應用程序和用例
  • 探索zkML 核心的新興項目和基礎設施建設
  • 討論現有實現的一些挑戰以及zkML 的未來會是什麼樣子
智能合約智能性的下一步:深入剖析ZKML賽道智能合約智能性的下一步:深入剖析ZKML賽道

機器學習(ML)簡介

機器學習(ML)是人工智能(AI)的一個子領域,專注於開發能夠讓計算機從數據中學習並進行預測或決策的算法和統計模型。 ML模型通常具有三個主要組成部分:

  • 訓練數據:一組用於訓練機器學習算法進行預測或對新數據進行分類的輸入數據。訓練數據可以採用多種形式,如圖像、文本、音頻、數值數據或其組合。
  • 模型架構:機器學習模型的整體結構或設計。它定義了層次結構、激活函數和節點或神經元之間的連接類型和數量。架構的選擇取決於具體的問題和使用的數據。
  • 模型參數:模型在訓練過程中學習的值或權重,用於進行預測。這些值通過優化算法進行迭代調整,以最小化預測結果與實際結果之間的誤差。

模型的生成和部署分為兩個階段:

  • 訓練階段:在訓練階段,模型會接觸到一個帶標籤的數據集,並調整其參數以最小化預測結果與實際結果之間的誤差。訓練過程通常涉及多次迭代或週期,模型的準確性會在單獨的驗證集上進行評估。
  • 推理階段:推理階段是使用經過訓練的機器學習模型對新的未見數據進行預測的階段。模型接收輸入數據,並應用學習到的參數生成輸出,如分類或回歸預測。

目前,zkML主要關注於機器學習模型的推理階段,而不是訓練階段,主要是由於驗證電路中訓練的計算複雜性。然而,zkML對推理的關注並不是一種限制:我們預計將會產生一些非常有趣的用例和應用。

已驗證的推理場景

驗證推理有四種可能的場景:

  • 私有輸入,公共模型。模型消費者(MC) 可能希望對模型提供者(MP) 保密他們的輸入。例如,MC 可能希望在不披露其個人財務信息的情況下向貸方證明信用評分模型的結果。這可以使用預先承諾方案並在本地運行模型來完成。
  • 公共輸入,私有模型。 ML-as-a-Service 的一個常見問題是MP 可能希望隱藏其參數或權重以保護其IP,而MC 想要驗證生成的推理確實來自對抗設置中的指定模型. 這樣想:當向MC 提供推理時,MP 有動機運行更輕的模型以節省成本。使用鏈上模型權重的承諾,MC 可以隨時審核私有模型。
  • 私有輸入,私有模型。當用於推理的數據高度敏感或機密,並且模型本身被隱藏以保護IP 時,就會出現這種情況。這方面的一個例子可能包括使用私人患者信息審核醫療保健模型。 zk 中的組合技術或使用多方計算(MPC) 或FHE 的變體可用於服務此場景。
  • 公共輸入,公共模型。當模型的所有方面都可以公開時,zkML 解決了一個不同的用例:將鏈下計算壓縮和驗證到鏈上環境。對於較大的模型,驗證推理的簡潔zk 證明比自己重新運行模型更具成本效益。

驗證的ML推理為智能合約開闢了新的設計空間。一些加密原生應用包括:

1、DeFi

可驗證的鏈下ML預言機。繼續採用生成式人工智能可能推動行業實施其內容的簽名方案(例如,新聞出版物簽署文章或圖像)。簽名數據準備好進行零知識證明,使數據可組合且可信。 ML模型可以在鏈下處理這些簽名數據以進行預測和分類(例如,對選舉結果或天氣事件進行分類)。這些鏈下ML預言機可以通過驗證推理並在鏈上發布證明來無需信任地解決現實世界的預測市場、保險協議合約等問題。

基於ML參數的DeFi應用。 DeFi的許多方面可以更加自動化。例如,借貸協議可以使用ML模型實時更新參數。目前,借貸協議主要依賴由組織運行的鏈下模型來確定抵押因子、貸款價值比、清算閾值等,但更好的選擇可能是社區訓練的開源模型,任何人都可以運行和驗證。

自動化交易策略。展示金融模型策略的回報特徵的常見方式是MP向投資者提供各種回測數據。然而,沒有辦法在執行交易時驗證策略師是否遵循該模型- 投資者必須信任策略師確實遵循模型。 zkML提供了一個解決方案,MP可以在部署到特定頭寸時提供金融模型推理的證明。這對於DeFi管理的保險庫可能尤其有用。

2、安全性

智能合約的欺詐監控。與其讓緩慢的人工治理或中心化參與者控制暫停合約的能力,可以使用ML模型來檢測可能的惡意行為並暫停合約。

3、傳統ML

分散的、無信任的Kaggle實現。可以創建一個協議或市場,允許MC或其他感興趣的方驗證模型的準確性,而無需MP披露模型權重。這對於銷售模型、圍繞模型準確性進行競賽等方面非常有用。

生成式AI的去中心化提示市場。生成式AI的提示創作已經發展成為一門複雜的工藝,最佳輸出生成提示通常具有多個修改器。外部方可能願意從創作者那裡購買這些複雜的提示。 zkML在這裡可以有兩種用法:1)驗證提示的輸出,以向潛在買家確保提示確實創建所需的圖像;

2)允許提示所有者在購買後保持對提示的所有權,同時對買家保持模糊,但仍為其生成經過驗證的圖像。

4、身份

用保護隱私的生物識別認證替代私鑰。私鑰管理仍然是web3用戶體驗中最大的障礙之一。通過面部識別或其他獨特因素抽象私鑰是zkML的一種可能解決方案。

公平的空投和貢獻者獎勵。可以使用ML模型創建用戶的詳細人物畫像,根據多個因素確定空投分配或貢獻獎勵。當與身份解決方案結合使用時,這可能特別有用。在這種情況下,一種可能性是讓用戶運行一個開源模型,評估他們在應用程序中的參與情況以及更高層次的參與,比如治理論壇的帖子,以推理他們的分配。然後提供這個證明給合約,以獲得相應的代幣分配。

5、Web3社交

用於web3社交媒體的過濾。 web3社交應用的去中心化性質將導致垃圾信息和惡意內容的增加。理想情況下,社交媒體平台可以使用一個社區共識的開源ML模型,並在選擇過濾帖子時發布模型推理的證明。案例:關於Twitter算法的zkML分析。

廣告/推薦。作為一個社交媒體用戶,我可能願意看到個性化的廣告,但希望將我的偏好和興趣對廣告商保密。我可以選擇在本地運行一個關於我的興趣的模型,將其輸入到媒體應用程序中為我提供內容。在這種情況下,廣告商可能願意為最終用戶支付費用,以實現這一點,然而,這些模型可能遠不如目前生產中的定向廣告模型複雜。

6、創作者經濟/遊戲

遊戲內經濟再平衡。可以使用ML模型動態調整代幣發行、供應、銷毀、投票門檻等。一個可能的模型是一個激勵合約,如果達到一定的再平衡門檻並驗證了推理的證明,就會重新平衡遊戲內經濟。

新類型的鏈上游戲。可以創建合作的人類對抗AI遊戲和其他創新的鏈上游戲,其中無信任的AI模型充當一個不可玩的角色。 NPC採取的每個動作都會與一個任何人都可以驗證的證明一起發佈到鏈上,以確定正在運行正確的模型。在Modulus Labs的Leela vs. the World中,驗證者希望確保所述的1900 ELO AI選擇棋步,而不是Magnus Carlson。另一個例子是AI Arena,一個類似於Super Smash Brothers的AI格鬥遊戲。在高風險的競爭環境中,玩家希望確保他們訓練的模型沒有乾擾或作弊。

智能合約智能性的下一步:深入剖析ZKML賽道智能合約智能性的下一步:深入剖析ZKML賽道

新興項目和基礎設施

zkML生態系統可以廣泛分為四個主要類別:

  • 模型到證明編譯器:將現有格式(例如Pytorch、ONNX等)的模型編譯成可驗證的計算電路的基礎設施。
  • 廣義證明系統:構建用於驗證任意計算軌蹟的證明系統。
  • zkML特定的證明系統:專門構建用於驗證ML模型計算軌蹟的證明系統。
  • 應用程序:致力於獨特zkML用例的項目。

01模型驗證編譯器(Model-to-Proof Compilers)

在zkML生態系統中,大部分關注都集中在創建模型到證明編譯器上。通常,這些編譯器將使用Pytorch、Tensorflow等高級ML模型轉換為zk電路。

EZKL是一個庫和命令行工具,用於在zk-SNARK中進行深度學習模型的推理。使用EZKL,您可以在Pytorch或TensorFlow中定義一個計算圖,並將其導出為帶有JSON文件中一些示例輸入的ONNX文件,然後將EZKL指向這些文件以生成zkSNARK電路。通過最新一輪的性能改進,EZKL現在可以在約6秒和1.1GB的RAM內證明一個MNIST大小的模型。迄今為止,EZKL已經得到了一些顯著的早期採用,被用作各種黑客馬拉松項目的基礎設施。

Cathie So的circomlib-ml庫包含了用於Circom的各種ML電路模板。電路包括一些最常見的ML函數。由Cathie開發的Keras2circom是一個Python工具,使用底層的circomlib-ml庫將Keras模型轉換為Circom電路。

LinearA開發了兩個用於zkML的框架:Tachikoma和Uchikoma。 Tachikoma用於將神經網絡轉換為僅使用整數的形式並生成計算軌跡。 Uchikoma是一個工具,將TVM的中間表示轉換為不支持浮點運算的編程語言。 LinearA計劃支持使用域算術的Circom和使用有符號和無符號整數算術的Solidity。

Daniel Kang的zkml是一個基於他在《Scaling up Trustless DNN Inference with Zero-Knowledge Proofs》論文中的工作構建的ML模型執行證明的框架。在撰寫本文時,它能夠在約5GB的內存和約16秒的運行時間內證明一個MNIST電路。

在更廣義的模型到證明編譯器方面,有Nil Foundation和Risc Zero。 Nil Foundation的zkLLVM是一個基於LLVM的電路編譯器,能夠驗證用流行編程語言(如C++、Rust和JavaScript/TypeScript等)編寫的計算模型。與這裡提到的其他模型到證明編譯器相比,它是通用的基礎設施,但仍適用於復雜的計算,如zkML。當與他們的證明市場結合使用時,這可能尤為強大。

Risc Zero構建了一個通用的zkVM,針對開源的RISC-V指令集,因此支持現有成熟的語言,如C++和Rust,以及LLVM工具鏈。這允許在主機和客戶zkVM代碼之間實現無縫集成,類似於Nvidia的CUDA C++工具鏈,但是使用ZKP引擎代替GPU。與Nil類似,使用Risc Zero可以驗證ML模型的計算軌跡。

02廣義證明系統

證明系統的改進是使zkML 取得成果的主要推動力,特別是自定義門和查找表的引入。這主要是由於ML 對非線性的依賴。簡而言之,非線性是通過激活函數(例如ReLU、sigmoid 和tanh)引入的,這些激活函數應用於神經網絡中線性變換的輸出。由於數學運算門的限制,這些非線性在zk 電路中實現起來具有挑戰性。按位分解和查找表可以通過將非線性的可能結果預先計算到查找表中來幫助解決這個問題,有趣的是,這在zk 中的計算效率更高。

出於這個原因,Plonkish 證明系統往往是zkML 最受歡迎的後端。 Halo2 和Plonky2 及其表式算術方案可以通過查找參數很好地處理神經網絡非線性。此外,前者擁有充滿活力的開發人員工俱生態系統和靈活性,使其成為包括EZKL 在內的許多項目的實際後端。

其他證明系統也有其優勢。基於R1CS的證明系統包括Groth16,因其小型證明尺寸而聞名,以及Gemini,因其處理極大電路和線性時間驗證器而聞名。基於STARK的系統,例如Winterfell證明器/驗證器庫,尤其在通過Giza的工具將Cairo程序的追踪作為輸入,並使用Winterfell生成STARK證明來驗證輸出的正確性時,非常有用。

03 zkML特定的證明系統

在設計能夠處理先進的機器學習模型的複雜、電路不友好的操作的高效證明系統方面已經取得了一些進展。基於GKR證明系統的zkCNN和基於組合技術的Zator等系統往往比通用證明系統更具性能,這一點在Modulus Labs的基準測試報告中有所體現。

zkCNN是一種使用零知識證明來證明卷積神經網絡正確性的方法。它使用sumcheck協議來證明快速傅里葉變換和卷積,具有線性的證明時間,比漸近計算結果更快。已經引入了幾個改進和泛化的交互證明,包括驗證卷積層、ReLU激活函數和最大池化。根據Modulus Labs的基準測試報告,zkCNN特別有趣的地方在於它在證明生成速度和RAM消耗方面優於其他通用證明系統。

Zator是一個旨在探索使用遞歸SNARK來驗證深度神經網絡的項目。驗證更深層次模型的當前限制是將整個計算軌跡適應單個電路中。 Zator提出使用遞歸SNARK逐層進行驗證,可以逐步驗證N步重複計算。他們使用Nova將N個計算實例減少為一個可以通過單個步驟進行驗證的實例。採用這種方法,Zator能夠對具有512層的網絡進行SNARK,這與大多數當前的生產AI模型一樣深。 Zator的證明生成和驗證時間仍然對於主流應用案例來說過長,但他們的組合技術仍然是非常有趣的。

應用領域

鑑於zkML處於早期階段,其關注點主要集中在上述基礎設施上。然而,目前也有一些項目致力於應用開發。

Modulus Labs是zkML領域中最多樣化的項目之一,他們既開展示例應用,也從事相關研究。在應用方面,Modulus Labs通過RockyBot(一個鏈上交易機器人)和Leela vs. the World(一個人類與經過驗證的鏈上Leela國際象棋引擎對戰的棋盤遊戲)展示了zkML的用例。該團隊還進行了研究,編寫了《智能的代價》,對不同模型規模下的各種證明系統的速度和效率進行了基準測試。

Worldcoin正在嘗試應用zkML來創建一個保護隱私的人類身份證明協議。 Worldcoin使用定制硬件處理高分辨率虹膜掃描,並將其插入到Semaphore實現中。然後可以使用該系統執行諸如成員資格證明和投票等有用操作。他們目前使用受信任的運行時環境和安全的安全區域來驗證相機簽名的虹膜掃描,但他們最終的目標是使用零知識證明來驗證神經網絡的正確推理,以提供加密級別的安全保證。

Giza是一種協議,採用完全無信任的方法在鏈上部署AI模型。它使用包括ONNX格式表示機器學習模型、Giza Transpiler用於將這些模型轉換為Cairo程序格式、ONNX Cairo Runtime用於以可驗證和確定性的方式執行模型,以及Giza Model智能合約用於在鏈上部署和執行模型的技術堆棧。儘管Giza也可以歸類為模型到證明編譯器的類別,但他們作為一個ML模型市場的定位是目前最有趣的應用之一。

Gensyn是一個分佈式硬件供應網絡,用於訓練ML模型。具體而言,他們正在開發一個基於梯度下降的概率審計系統,並使用模型檢查點來使分散式GPU網絡能夠為全尺度模型提供訓練服務。儘管他們在這裡的zkML應用非常特定於他們的用例——他們希望確保當一個節點下載和訓練模型的一部分時,他們對模型更新的誠實性——但它展示了將zk和ML相結合的強大力量。

ZKaptcha 專注於web3 中的bot 問題,為智能合約提供驗證碼服務。他們目前的實施讓最終用戶通過完成驗證碼來生成人類工作的證明,驗證碼由他們的鏈上驗證程序驗證,並通過幾行代碼由智能合約訪問。今天,他們主要只依賴於zk,但他們打算在未來實現zkML,類似於現有的web2 驗證碼服務,分析鼠標移動等行為以確定用戶是否是人類。

鑑於zkML 市場還很早,許多應用程序已經在黑客馬拉松級別進行了試驗。項目包括AI Coliseum,一個使用ZK 證明來驗證機器學習輸出的鏈上AI 競賽,Hunter z Hunter,一個使用EZKL 庫來驗證帶有halo2 電路的圖像分類模型輸出的照片尋寶遊戲,以及zk Section 9,它將AI 圖像生成模型轉換為用於鑄造和驗證AI 藝術的電路。

智能合約智能性的下一步:深入剖析ZKML賽道智能合約智能性的下一步:深入剖析ZKML賽道

zkML面臨的挑戰

儘管在提高和優化方面取得了飛速的進展,但zkML領域仍然面臨一些核心挑戰。這些挑戰涉及技術和實踐等方面,包括:

  • 以最小的精度損失進行量化
  • 電路規模,特別是當網絡由多個層組成時
  • 矩陣乘法的高效證明
  • 對抗攻擊

量化是將浮點數表示為定點數的過程,大多數機器學習模型使用浮點數表示模型參數和激活函數,在處理zk電路的域算術時,需要使用定點數。量化對機器學習模型的準確性的影響取決於所使用的精度級別。一般來說,使用較低的精度(即較少的比特數)可能會導致準確性降低,因為這可能引入舍入和近似誤差。然而,有幾種技術可用於最小化量化對準確性的影響,例如在量化後對模型進行微調,以及使用量化感知訓練等技術。此外,zkSummit 9上的一項黑客馬拉松項目Zero Gravity顯示出,針對邊緣設備開發的替代神經網絡架構(例如無權重神經網絡)可以用於避免電路中的量化問題。

除了量化之外,硬件是另一個關鍵挑戰。一旦通過電路正確地表示了機器學習模型,由於zk的簡潔性,驗證其推理的證明將變得廉價且快速。這裡的挑戰不在於驗證者,而在於證明者,因為隨著模型規模的增長,RAM消耗和證明生成時間會迅速增加。某些證明系統(例如使用sumcheck協議和分層算術電路的基於GKR的系統)或組合技術(例如將Plonky2與Groth16相結合,Plonky2在證明時間方面效率高但對於大型模型的高效證明大小較差,而Groth16在復雜模型的複雜度上不會導致證明大小增長)更適合處理這些問題,但在zkML項目中管理權衡是一個核心挑戰。

在對抗攻擊方面,仍然有待努力。首先,如果一個無信任的協議或DAO選擇實施一個模型,在訓練階段仍然存在對抗攻擊的風險(例如訓練模型以在看到特定輸入時表現出特定行為,這可能被用來操縱後續的推理) 。聯邦學習技術和訓練階段的zkML可能是最小化這種攻擊面的一種方式。

另一個核心挑戰是當模型保護隱私時存在模型盜竊攻擊的風險。雖然可以混淆模型的權重,但在給定足夠的輸入輸出對的情況下,從理論上講,仍然有可能反向推導出權重。這主要是對小規模模型的風險,但仍然存在風險。

智能合約的可擴展

儘管在將這些模型優化為在zk的限制條件下運行時存在一些挑戰,但改進工作正在以指數速度進行,一些人預計在進一步的硬件加速下,我們很快就能與更廣泛的機器學習領域達到同等水平。為了強調這些改進的速度,zkML從0xPARC在2021年展示瞭如何在可驗證電路中執行小規模MNIST圖像分類模型的演示,到Daniel Kang在不到一年後為ImageNet規模的模型做同樣的工作的論文。在2022年4月,這個ImageNet規模的模型的準確性從79%提高到92%,並且像GPT-2這樣的大型模型在近期內有望成為可能,儘管目前的證明時間較長。

我們認為zkML是一個豐富而不斷發展的生態系統,旨在擴展區塊鍊和智能合約的能力,使其更加靈活、適應性強和智能化。

儘管zkML仍處於早期開發階段,但它已經開始顯示出有希望的結果。隨著技術的發展和成熟,我們可以期待在鏈上看到更多創新的zkML用例。