原標(biāo)題:Glueandcoprocessorarchitectures
作者:Vitalik,Ethereum創(chuàng)始人;編譯:鄧通,金色財(cái)經(jīng)
特別感謝JustinDrake、GeorgiosKonstantopoulos、AndrejKarpathy、MichaelGao、TarunChitra和各種Flashbots貢獻(xiàn)者提供的反饋和評(píng)論。
如果你以中等程度的細(xì)節(jié)分析現(xiàn)代世界中正在進(jìn)行的任何資源密集型計(jì)算,你會(huì)一次又一次發(fā)現(xiàn)的一個(gè)特點(diǎn)是,計(jì)算可以分為兩個(gè)部分:
相對(duì)少量的復(fù)雜但計(jì)算量不大的“業(yè)務(wù)邏輯”;
大量密集但高度結(jié)構(gòu)化的“昂貴工作”。
這兩種計(jì)算形式最好用不同的方式處理:前者,其架構(gòu)可能效率較低但需要具有非常高的通用性;后者,其架構(gòu)可能具有較低的通用性,但需要具有非常高的效率。實(shí)踐中這種不同方式的例子有哪些?
首先,讓我們了解一下我最熟悉的環(huán)境:Ethereum虛擬機(jī)(EVM)。這是我最近進(jìn)行的Ethereum交易的geth調(diào)試跟蹤:在ENS上更新我的博客的IPFS哈希。該交易總共消耗了46924gas,可以按以下方式分類:
基本成本:21,000
調(diào)用數(shù)據(jù):1,556
EVM執(zhí)行:24,368
SLOAD操作碼:6,400
SSTORE操作碼:10,100
LOG操作碼:2,149
其他:6,719
變壓器模型的一個(gè)塊的前向傳遞
我們?cè)谶@里看到了什么?我們看到了用Python編寫的相對(duì)少量的“業(yè)務(wù)邏輯”,它描述了正在執(zhí)行的操作的結(jié)構(gòu)。在實(shí)際應(yīng)用中,還會(huì)有另一種類型的業(yè)務(wù)邏輯,它決定了諸如如何獲取輸入以及對(duì)輸出執(zhí)行的操作等細(xì)節(jié)。但是,如果我們深入研究每個(gè)單獨(dú)的操作本身(self.norm、torch.cat、+、*、self.attn內(nèi)部的各個(gè)步驟……),我們會(huì)看到矢量化計(jì)算:相同的操作并行計(jì)算大量值。與第一個(gè)示例類似,一小部分計(jì)算用于業(yè)務(wù)邏輯,大部分計(jì)算用于執(zhí)行大型結(jié)構(gòu)化矩陣和向量運(yùn)算——事實(shí)上,大多數(shù)只是矩陣乘法。
就像在EVM示例中一樣,這兩種類型的工作以兩種不同的方式處理。高級(jí)業(yè)務(wù)邏輯代碼是用Python編寫的,這是一種高度通用和靈活的語言,但也非常慢,我們只是接受低效率,因?yàn)樗簧婕翱傆?jì)算成本的一小部分。同時(shí),密集型操作是用高度優(yōu)化的代碼編寫的,通常是在GPU上運(yùn)行的CUDA代碼。我們甚至越來越多地開始看到LLM推理在ASIC上進(jìn)行。
現(xiàn)代可編程密碼學(xué),如SNARK,在兩個(gè)層面上再次遵循類似的模式。首先,證明器可以用高級(jí)語言編寫,其中繁重的工作是通過矢量化操作完成的,就像上面的AI示例一樣。我在這里的圓形STARK代碼展示了這一點(diǎn)。其次,在密碼學(xué)內(nèi)部執(zhí)行的程序本身可以以一種在通用業(yè)務(wù)邏輯和高度結(jié)構(gòu)化的昂貴工作之間進(jìn)行劃分的方式編寫。
要了解其工作原理,我們可以看看STARK證明的最新趨勢(shì)之一。為了通用且易于使用,團(tuán)隊(duì)越來越多地為廣泛采用的最小虛擬機(jī)(如RISC-V)構(gòu)建STARK證明器。任何需要證明執(zhí)行情況的程序都可以編譯成RISC-V,然后證明者可以證明該代碼的RISC-V執(zhí)行情況。
這是一種簡(jiǎn)化:在實(shí)踐中,效率和通用性之間的權(quán)衡曲線幾乎總是有兩個(gè)以上的層次。GPU和其他在行業(yè)中通常被稱為“協(xié)處理器”的芯片不如CPU通用,但比ASIC通用。專業(yè)化程度的權(quán)衡很復(fù)雜,這取決于對(duì)算法的哪些部分在五年后仍將保持不變,哪些部分在六個(gè)月后會(huì)發(fā)生變化的預(yù)測(cè)和直覺。在ZK證明架構(gòu)中,我們經(jīng)?吹筋愃频亩鄬訉I(yè)化。但對(duì)于廣泛的思維模型,考慮兩個(gè)層次就足夠了。在許多計(jì)算領(lǐng)域都有類似的情況:
從上述例子來看,計(jì)算當(dāng)然可以以這種方式分割,這似乎是一種自然法則。事實(shí)上,你可以找到幾十年來計(jì)算專業(yè)化的例子。然而,我認(rèn)為這種分離正在增加。我認(rèn)為這是有原因的:
我們最近才達(dá)到CPU時(shí)鐘速度提升的極限,因此只有通過并行化才能獲得進(jìn)一步的收益。但是,并行化很難推理,因此對(duì)于開發(fā)人員來說,繼續(xù)按順序推理并讓并行化在后端發(fā)生往往更為實(shí)際,并包裝在為特定操作構(gòu)建的專用模塊中。
計(jì)算速度最近才變得如此之快,以至于業(yè)務(wù)邏輯的計(jì)算成本已經(jīng)變得真正可以忽略不計(jì)。在這個(gè)世界中,優(yōu)化業(yè)務(wù)邏輯運(yùn)行的VM以達(dá)到計(jì)算效率以外的目標(biāo)也是有意義的:開發(fā)人員友好性、熟悉性、安全性和其他類似目標(biāo)。同時(shí),專用的“協(xié)處理器”模塊可以繼續(xù)為效率而設(shè)計(jì),并從它們與粘合劑的相對(duì)簡(jiǎn)單的“接口”中獲得其安全性和開發(fā)人員友好性。
最重要的昂貴操作是什么變得越來越清晰。這在密碼學(xué)中最為明顯,其中最有可能使用哪些類型的特定昂貴操作:模數(shù)運(yùn)算、橢圓曲線線性組合(又稱多標(biāo)量乘法)、快速傅里葉變換等等。在人工智能中,這種情況也變得越來越明顯,二十多年來,大部分計(jì)算都是“主要是矩陣乘法”(盡管精度水平不同)。其他領(lǐng)域也出現(xiàn)了類似的趨勢(shì)。與20年前相比,(計(jì)算密集型)計(jì)算中的未知未知數(shù)要少得多。
一個(gè)關(guān)鍵點(diǎn)是,膠合器(Glue)應(yīng)優(yōu)化以成為好的膠合器(Glue),而協(xié)處理器(coprocessor)也應(yīng)優(yōu)化以成為好的協(xié)處理器(coprocessor)。我們可以在幾個(gè)關(guān)鍵領(lǐng)域探索這一點(diǎn)的含義。EVM
Blockchain虛擬機(jī)(例如EVM)不需要高效,只需要熟悉即可。只需添加正確的協(xié)處理器(又稱“預(yù)編譯”),低效VM中的計(jì)算實(shí)際上可以與本機(jī)高效VM中的計(jì)算一樣高效。例如,EVM的256位寄存器所產(chǎn)生的開銷相對(duì)較小,而EVM的熟悉度和現(xiàn)有開發(fā)者生態(tài)系統(tǒng)帶來的好處是巨大且持久的。優(yōu)化EVM的開發(fā)團(tuán)隊(duì)甚至發(fā)現(xiàn),缺乏并行化通常不是可擴(kuò)展性的主要障礙。
改進(jìn)EVM的最佳方法可能只是(i)添加更好的預(yù)編譯或?qū)S貌僮鞔a,例如EVM-MAX和SIMD的某種組合可能是合理的,以及(ii)改進(jìn)存儲(chǔ)布局,例如,Verkle樹的更改作為副作用,大大降低了訪問彼此相鄰的存儲(chǔ)槽的成本。
運(yùn)行Debian的RISC-V筆記本電腦
然而,效率仍然是一個(gè)問題。上述鏈接文章的作者寫道:
RISC-V等較新的開源芯片設(shè)計(jì)不可能與已經(jīng)存在并經(jīng)過數(shù)十年改進(jìn)的處理器技術(shù)相媲美。進(jìn)步總有一個(gè)起點(diǎn)。
更偏執(zhí)的想法,比如這種在FPGA上構(gòu)建RISC-V計(jì)算機(jī)的設(shè)計(jì),面臨著更大的開銷。但是,如果膠合和協(xié)處理器架構(gòu)意味著這種開銷實(shí)際上并不重要,那會(huì)怎樣?如果我們接受開放和安全芯片將比專有芯片慢,如果需要甚至放棄推測(cè)執(zhí)行和分支預(yù)測(cè)等常見優(yōu)化,但試圖通過添加(如果需要,專有)ASIC模塊來彌補(bǔ)這一點(diǎn),這些模塊用于最密集的特定類型的計(jì)算,那會(huì)怎樣?敏感計(jì)算可以在“主芯片”中完成,該芯片將針對(duì)安全性、開源設(shè)計(jì)和側(cè)信道阻力進(jìn)行優(yōu)化。更密集的計(jì)算(例如ZK證明、AI)將在ASIC模塊中完成,這將了解有關(guān)正在執(zhí)行的計(jì)算的更少信息(可能,通過加密盲化,在某些情況下甚至可能為零信息)。密碼學(xué)
另一個(gè)關(guān)鍵點(diǎn)是,這一切都對(duì)密碼學(xué),尤其是可編程密碼學(xué)成為主流非常樂觀。我們已經(jīng)在SNARK、MPC和其他設(shè)置中看到了一些特定的高度結(jié)構(gòu)化計(jì)算的超優(yōu)化實(shí)現(xiàn):某些哈希函數(shù)的開銷僅比直接運(yùn)行計(jì)算貴幾百倍,而且人工智能(主要是矩陣乘法)的開銷也非常低。GKR等進(jìn)一步的改進(jìn)可能會(huì)進(jìn)一步降低這一水平。完全通用的VM執(zhí)行,特別是在RISC-V解釋器中執(zhí)行時(shí),可能會(huì)繼續(xù)產(chǎn)生大約一萬倍的開銷,但出于本文中描述的原因,這并不重要:只要使用高效的專用技術(shù)分別處理計(jì)算中最密集的部分,總開銷就是可控的。
矩陣乘法專用MPC的簡(jiǎn)化圖,這是AI模型推理中最大的組件。請(qǐng)參閱本文了解更多詳細(xì)信息,包括如何保持模型和輸入的私密性。
“膠合層只需要熟悉,不需要高效”這一想法的一個(gè)例外是延遲,以及在較小程度上的數(shù)據(jù)帶寬。如果計(jì)算涉及對(duì)同一數(shù)據(jù)進(jìn)行數(shù)十次重復(fù)的繁重操作(就像密碼學(xué)和人工智能一樣),那么由低效膠合層導(dǎo)致的任何延遲都可能成為運(yùn)行時(shí)間的主要瓶頸。因此,膠合層也有效率要求,盡管這些要求更為具體。結(jié)論
總體而言,我認(rèn)為上述趨勢(shì)從多個(gè)角度來看都是非常積極的發(fā)展。首先,這是在保持開發(fā)人員友好性的同時(shí)最大化計(jì)算效率的合理方法,能夠同時(shí)獲得更多兩者對(duì)每個(gè)人都有好處。特別是,通過在客戶端實(shí)現(xiàn)專業(yè)化以提高效率,它提高了我們?cè)谟脩粲布镜剡\(yùn)行敏感且性能要求高的計(jì)算(例如ZK證明、LLM推理)的能力。其次,它創(chuàng)造了一個(gè)巨大的機(jī)會(huì)之窗,以確保對(duì)效率的追求不會(huì)損害其他價(jià)值,最明顯的是安全性、開放性和簡(jiǎn)單性:計(jì)算機(jī)硬件中的側(cè)通道安全性和開放性、降低ZK-SNARK中的電路復(fù)雜性以及降低虛擬機(jī)中的復(fù)雜性。從歷史上看,對(duì)效率的追求導(dǎo)致這些其他因素退居次要地位。有了膠合和協(xié)處理器架構(gòu),它不再需要。機(jī)器的一部分優(yōu)化效率,另一部分優(yōu)化通用性和其他價(jià)值,兩者協(xié)同工作。
這一趨勢(shì)對(duì)密碼學(xué)也非常有利,因?yàn)槊艽a學(xué)本身就是“昂貴的結(jié)構(gòu)化計(jì)算”的一個(gè)主要例子,而這一趨勢(shì)加速了這一趨勢(shì)的發(fā)展。這為提高安全性又增加了一個(gè)機(jī)會(huì)。在Blockchain世界中,安全性的提高也成為可能:我們可以少擔(dān)心虛擬機(jī)的優(yōu)化,而更多地關(guān)注優(yōu)化預(yù)編譯和與虛擬機(jī)共存的其他功能。
第三,這一趨勢(shì)為規(guī)模較小、較新的參與者提供了參與的機(jī)會(huì)。如果計(jì)算變得不那么單一,而更加模塊化,這將大大降低進(jìn)入門檻。即使使用一種類型的計(jì)算的ASIC,也有可能有所作為。在ZK證明領(lǐng)域和EVM優(yōu)化中也是如此。編寫具有近乎前沿水平效率的代碼變得更加容易和易于訪問。審計(jì)和形式化驗(yàn)證此類代碼變得更加容易和易于訪問。最后,由于這些非常不同的計(jì)算領(lǐng)域正在趨同于一些共同模式,因此它們之間有更多的協(xié)作和學(xué)習(xí)空間。
免責(zé)聲明:Vitalik:提升效率和安全性的新構(gòu)想——膠合和協(xié)處理器架構(gòu)文章轉(zhuǎn)發(fā)自互聯(lián)網(wǎng),版權(quán)歸其所有。
文章內(nèi)容不代表本站立場(chǎng)和任何投資暗示。加密貨幣市場(chǎng)極其波動(dòng),風(fēng)險(xiǎn)很高,可能不適合所有投資者。在投資加密貨幣之前,請(qǐng)確保自己充分了解市場(chǎng)和投資的風(fēng)險(xiǎn),并考慮自己的財(cái)務(wù)狀況和風(fēng)險(xiǎn)承受能力。此外,請(qǐng)遵循您所在國(guó)家的法律法規(guī),以及遵守交易所和錢包提供商的規(guī)定。對(duì)于任何因使用加密貨幣所造成的投資損失或其他損失,本站不承擔(dān)任何責(zé)任。
Copyright © 2021.Company 元宇宙YITB.COM All rights reserved.元宇宙YITB.COM