作者:Haseeb Qureshi
翻譯:白話區塊鏈
如果你想要運行類似Llama2-70B這樣的大型語言模型。這種龐大的模型需要超過140GB的內存,這就意味著你無法在家用機器上直接運行原始模型。那么你有什么選擇呢?你可能會轉向云服務提供商,但你可能不太愿意信任一個單一的集中式公司來為你處理這個工作負載,并收集你的所有使用數據。所以,你需要的是去中心化推理,它能讓你在不依賴于任何單一提供商的情況下運行機器學習模型。
1、信任問題
在一個去中心化的網絡中,僅僅運行模型并信任輸出是不夠的。假設我讓網絡使用Llama2-70B來分析一個治理困境。我怎么知道它實際上沒有使用Llama2-13B,給我更糟糕的分析,并將差異收入囊中呢?
在中心化世界中,你可能會相信像OpenAI這樣的公司是誠實的,因為它們的聲譽受到了威脅(而且在某種程度上,LLM的質量是不言而喻的)。但在去中心化的世界中,誠實并不是默認的——它需要驗證。
這就是可驗證推理發揮作用的地方。除了提供對查詢的響應之外,您還要證明它在您要求的模型上正確運行了。但是如何做到呢?
天真的方法是將模型作為智能合約在鏈上運行。這肯定會保證輸出是經過驗證的,但這是非常不切實際的。GPT-3用12288的嵌入維度表示單詞。如果您在鏈上進行這樣大小的單次矩陣乘法,根據當前的gas價格,它將耗費約100億美元——計算將連續填充每個區塊約一個月的時間。
所以,不行,我們需要一個不同的方法。
觀察了這個領域之后,我清楚地看到,有三種主要方法出現來解決可驗證推理的問題:零知識證明、樂觀欺詐證明和密碼經濟學。每種方法都有其自身的安全性和成本影響。
2、零知識證明(ZK ML)
想象一下,你能夠證明你運行了一個龐大的模型,但無論模型有多大,這個證明的大小都是固定的。這就是ZK ML承諾的,通過ZK-SNARKs的神奇之處實現。
雖然在原理上聽起來很優雅,但將深度神經網絡編譯成零知識電路,然后進行證明是非常困難的。而且這是非常昂貴的——最低成本可能是推理成本增加1000倍,延遲增加1000倍(生成證明的時間),更不用說在任何這些事情發生之前,將模型本身編譯成電路了。最終,這種成本必須轉嫁給用戶,所以這對最終用戶來說會非常昂貴。
另一方面,這是唯一一種在密碼學上保證正確性的方法。使用ZK,無論模型提供者如何努力,都不能作弊。但這樣做成本巨大,這使得這種方法在可預見的未來對于大型模型來說不切實際。
示例:EZKL、Modulus Labs、Giza
3、樂觀欺詐證明(Optimistic ML)
樂觀的方法是信任,但要進行驗證。我們假設推理是正確的,除非證明相反。如果某個節點試圖作弊,“觀察者”在網絡中可以指出作弊者,并使用欺詐證明來挑戰他們。這些觀察者必須始終在鏈上觀察,并在自己的模型上重新運行推理,以確保輸出是正確的。
這些欺詐證明是Truebit風格的交互式挑戰-響應游戲,在鏈上重復對模型執行軌跡進行二分,直到找到錯誤為止。
如果這種情況真的發生了,那也將是非常昂貴的,因為這些程序龐大而內部狀態巨大——單個 GPT-3 推理成本約為 1 petaflop(10¹? 浮點運算)。但是博弈論表明,這幾乎不會發生(欺詐證明也因為代碼幾乎從不在生產中被觸發而臭名昭著地難以編寫正確)。
樂觀 ML 的優勢在于只要有一個誠實的觀察者在關注,就是安全的。成本比 ZK ML 便宜,但請記住,網絡中的每個觀察者都在重新運行每個查詢。在均衡狀態下,這意味著如果有 10 個觀察者,安全成本必須轉嫁給用戶,因此他們將不得不支付比推理成本更多的費用(或者觀察者的數量)。
與樂觀 Rollups 一樣,不利之處在于你必須等待挑戰期過去,才能確保響應被驗證。不過,這取決于網絡參數化的方式,你可能只需要等待幾分鐘而不是幾天。
示例:Ora、Gensyn(盡管當前尚未具體說明)。
4、加密經濟學(Cryptoeconomic ML)
在這里,我們放棄所有花哨的技術,采取簡單的方法:權益加權投票。用戶決定有多少節點應該運行他們的查詢,它們各自透露其響應,如果響應之間存在差異,那么異常的那個將被扣除權益。標準的預言機內容——這是一種更直接的方法,讓用戶設置他們所需的安全級別,平衡成本和信任。如果 Chainlink 做機器學習,這就是他們的做法。
這里沒有什么延遲很快——你只需要從每個節點獲得一次提交和揭示。如果這些記錄被寫入區塊鏈,那么技術上可以在兩個區塊內完成。
然而,安全性是最弱的。如果多數節點足夠狡猾,它們可能會合謀。作為用戶,你必須考慮這些節點所承擔的風險以及作弊所需的成本。話雖如此,使用像 Eigenlayer 重新抵押和可歸屬安全性這樣的東西,網絡在安全失敗的情況下可以有效地提供保險。
但這個系統的好處是用戶可以指定他們想要多少安全性。他們可以選擇在他們的選區中有 3 個節點或 5 個節點,或者是網絡中的每個節點——或者,如果他們想要冒險,他們甚至可以選擇 n=1。這里的成本函數很簡單:用戶為他們想要的節點數付費。如果你選擇了 3 個,你就要支付 3 倍的推理成本。
這里的棘手問題是:你能讓 n=1 安全嗎?在一個簡單的實現中,如果沒有人檢查,一個孤立的節點應該每次都會作弊。但我懷疑,如果你加密查詢并通過意圖進行支付,你可能能夠模糊節點的視線,讓他們認為他們實際上是唯一回應這個任務的人。在這種情況下,你可能能夠讓普通用戶支付的費用不到 2 倍的推理成本。
最終,加密經濟學方法是最簡單、最容易、可能也是最便宜的,但原則上是最不吸引人和最不安全的。但一如既往,細節決定成敗。
示例:Ritual(盡管目前說明不足)、Atoma Network
5、為什么可驗證的機器學習這么難
你可能會想知道為什么我們還沒有這一切?畢竟,歸根結底,機器學習模型只是非常大的計算機程序。證明程序是否被正確執行長期以來一直是區塊鏈的基礎。
這就是為什么這三種驗證方法與區塊鏈保護其區塊空間的方式如此相似——ZK Rollups使用ZK證明,OP Rollups使用欺詐證明,而大多數L1區塊鏈使用加密經濟學。毫不奇怪,我們最終得到了基本相同的解決方案。那么,應用到機器學習時,是什么使這一過程變得困難呢?
機器學習獨特之處在于,機器學習計算通常被表示為密集的計算圖,旨在在GPU上高效運行。它們并不是設計來進行證明的。因此,如果你想在ZK或OP的環境中證明機器學習計算,它們必須以使此成為可能的格式重新編譯——這非常復雜且昂貴。
在ML中的第二個基本困難是非確定性,程序驗證假設程序的輸出是確定性的。但是,如果你在不同的GPU架構或CUDA版本上運行相同的模型,你會得到不同的輸出。即使你強制每個節點使用相同的架構,你仍然會遇到算法中使用的隨機性問題(擴散模型中的噪聲,或LLM中的令牌抽樣)。你可以通過控制隨機數發生器的種子來固定隨機性。但即使有了這一切,你仍然面臨著最后一個令人頭疼的問題:浮點運算中固有的非確定性。
GPU中幾乎所有的操作都是基于浮點數的。浮點數很挑剔,因為它們不是可交換的——也就是說,對于浮點數來說,(a + b) + c 不總是等同于 a + (b + c)。由于GPU高度并行化,每次執行時加法或乘法的順序可能不同,這可能導致輸出的微小差異。鑒于單詞的離散性,這不太可能影響LLM的輸出,但對于圖像模型來說,可能會導致像素值略有不同,從而使兩幅圖像無法完全匹配。
這意味著你要么需要避免使用浮點數,這將極大地影響性能,要么你需要允許在比較輸出時有些放松。無論哪種方式,細節都很繁瑣,你不能將它們簡單地抽象掉。(這就是為什么EVM不支持浮點數的原因,盡管一些區塊鏈像NEAR支持浮點數。)
簡而言之,去中心化的推理網絡很難,因為所有細節都很重要,而現實中卻有大量的細節。
6、總結
總的來說,目前區塊鏈和機器學習顯然有很多交集,一個是創造信任的技術,另一個是急需信任的技術。雖然每種去中心化推理方法都有其自身的權衡,但我對看到創業者如何利用這些工具來構建最佳網絡非常感興趣。
注:本文代表作者的主觀觀點,不代表Dragonfly或其關聯公司的觀點。Dragonfly管理的基金可能已經投資了本文提到的某些協議和加密貨幣。本文不構成投資建議,不應作為任何投資的依據,也不應被用來評估任何投資的優點。
本文鏈接:http://www.zhucexiangganggs.com/kp/du/03/5101.html
來源:https://medium.com/dragonfly-research/dont-trust-verify-an-overview-of-decentralized-inference-c471a9f7a586