魚羊 發自 凹非寺
在家用消費級GPU就能跑1760億參數大模型,推理微調都很快。
還是用BT下載的方式實現。
這事兒可把AI愛好者們新鮮壞了。

這不,這個名為PETALS的項目剛開源沒多久,GitHub標星數就達到了1.3k。
老司機們都知道,BT下載這玩意兒,下載同一個檔案的人越多,這個檔案的下載速度就越快,因為每個下載使用者都會成為一個「資源節點」,互通有無。
PETALS道理差不多,就是把大傢伙的GPU都利用起來,協同推理/微調同一個大模型。
用上它,你的GPU實際上只需要載入大模型的一小部分,就能把模型跑起來,速度還嘎嘎快:
推理速度能達到1秒/token,比offloading的方式快10倍。
offloading是通過提高GPU利用率,加速模型訓練的一種方法,
什麼是PETALS
具體來說,PETALS來自BigScience這個科研合作項目。此前人人皆可用的1760億參數開源大模型BLOOM也來自於該項目。
至於PETALS具體是怎麼個用法,先來看看下面這個例子:
張三想基於BLOOM搞個懂法語的語言大模型,而李四則想微調BLOOM讓它學會C++程式設計。
儘管任務不同,但兩者涉及的一些步驟卻是共通的。
此時包括張三李四在內的PETALS使用者們,自個兒的GPU裡已分別載入好了模型的一部分(子集)。
於是,張三和李四就可以通過網路尋求其他使用者的幫助,利用別人已經擁有的模型子集,在最短時間內對BLOOM進行微調。同時,他們GPU上的模型資源也會被其他使用者利用。

實際的操作過程中,PETALS的每個參與者,都會通過本地設備運行一個伺服器/客戶端,或者兩者兼具。
伺服器包含模型層子集,通常是Transformer塊。同時,伺服器會處理來自客戶端的請求。
客戶端則會形成以流水線形式並行的一連串伺服器,來運行整個模型的推理/微調。
值得一提的是,微調後的子模型可以在模型中心共享,繼續提供給其他人使用。

此外,為了提高分散式推理的性能,開發人員們還採取了以下策略:
動態量化,使每個GPU儲存更多參數,減少連續設備和通訊回合的數量;
優先考慮低延遲連接,即每個客戶端優先考慮距離近的伺服器;
伺服器之間的負載均衡。
在這些最佳化措施的基礎之上,研究人員證明,千億參數級別的模型可以基於PETALS有效運行。

對了,如果你感興趣,還可以直接在官方提供的Colab連結上試玩一下,地址文末奉上~

關於BigScience
前文說到,PETALS是BigScience項目的一部分。
BigScience是一個開放科學合作計劃,旨在打破科技巨頭對AI資源的壟斷。
此前,在HuggingFace、法國國家大型計算中心等機構的牽頭之下,BigScience匯聚來自60個國家和250多個機構的1000多名研究人員,一起搞出了「人人可用」、從程式碼到資料集通通開源的BLOOM語言大模型。
BLOOM有1760億參數,支持59種語言,是目前最大的多語種開源語言模型。

目前,PETALS主要支持的就是BLOOM。不過開發人員表示,未來還將支持更多基礎模型。
Colab地址:
https://colab.research.google.com/drive/1Ervk6HPNS6AYVr3xVdQnY5a-TjjmLCdQ?usp=sharing
參考連結:
[1]https://github.com/bigscience-workshop/petals
[2]https://news.ycombinator.com/item?id=34215665