你為什么不能用Llama-2?
隨著開源基礎(chǔ)模型的爆炸式增長,例如 Llama-2、Falcon 和 Bloom 等。加上國內(nèi)大廠也爭先恐后地為自家的產(chǎn)品上AI能力。
我們見識了大模型的生產(chǎn)力,也想有一個屬于自己的私有模型,但是目前使用API的方式,百度的文言一心API只能調(diào)用一次,訊飛的星火的API直接報內(nèi)部服務(wù)器錯誤(可能是我使用姿勢不對,與平臺無關(guān)??)。而且使用API的方式也涉及到數(shù)據(jù)安全的問題(可以看之前的文章)。
那能不能用開源模型,用自己的數(shù)據(jù)來微調(diào)一下,打造一個自己的專屬模型呢?然而,從成本的角度來看,這些模型中大部分模型對于一般人來說來說幾乎不可能使用,但是也有比較經(jīng)濟的辦法(一個開源項目似乎可以幫忙實現(xiàn),訪問地址文末給出)。
門檻
硬件是一個比較高的門檻,可能你已經(jīng)嘗試過在本地跑這些模型但是沒有成功,讓我們看看 Meta 的 Llama-2 模型的硬件要求。
Llama-2模型有70億參數(shù),要在GPU上以完整精度加載模型,即32位(或浮點32位),以進行下游訓(xùn)練或推理,每10億參數(shù)大約需要4GB內(nèi)存,因此,僅僅是加載Llama-2模型,以完整精度需要大約280GB內(nèi)存。
不過實際上Llama-2 實際上是以 16 位而不是 32 位發(fā)布的(不過很多 LLM 是以 32 位發(fā)布的)。加載 Llama-2 70B 將花費 180GB。(其實原理都是一樣的,就像我們使用Redis 一樣,如果想讓它占用較小的內(nèi)存,就用32位而不是64位編譯它)。
所以,我們也可以以節(jié)約內(nèi)存為目的,選擇加載不同精度級別的模型(以犧牲性能為代價)。如果加載 8 位精度的模型,每十億個參數(shù)將需要 1GB 內(nèi)存,這仍然需要 70GB GPU 內(nèi)存才能正常加載。
而且這還沒有談到微調(diào)。如果使用AdamW優(yōu)化器進行微調(diào),每個參數(shù)需要8字節(jié)的GPU內(nèi)存。對于Llama-2來說,這意味著額外需要560GB的GPU內(nèi)存。總的來說,需要在630GB到840GB之間的GPU內(nèi)存來進行Llama-2模型的微調(diào)。
我們可以看看某東上顯卡的價格
如果你想微調(diào) Llama-2,你將需要至少八個這樣的 GPU,你可以算算需要多少money。
如果使用云環(huán)境,按需使用的話,每小時也需要277.933,而且還沒有貨。
但是如果你只是想學(xué)習(xí)一下,那么也可以使用Google的Colaboratory( 簡稱"Colab"),Colab可以給我們分配免費的GPU使用。任何人都可以通過瀏覽器編寫和執(zhí)行任意 Python 代碼。
Colab 中的 GPU 是隨機分配,通常包括 Nvidia K80、T4、P4 和 P100。免費用戶大多數(shù)只能使用速度較慢的 K80 GPU,訂閱Colab Pro(每月9.9美元)可以使用 T4 或 P100 GPU。訪問地址放到文章末尾
那還有其他選擇嗎?目前有一個開源方案是Petals
什么是PETALS
Petals采用客戶端-服務(wù)器架構(gòu)??蛻舳耸菍で笫褂肔LM進行推理或微調(diào)的一方。服務(wù)器則是第三方,他們選擇分配一部分GPU資源給Petals網(wǎng)絡(luò)。
如果你用種子下載過資源,就能理解它的運行原理。BT下載這玩意兒,下載同一個文件的人越多,這個文件的下載速度就越快,因為每個下載用戶都會成為一個“資源節(jié)點”,互通有無。Petals道理和這個差不多,就是把大家伙的GPU都利用起來,協(xié)同推理/微調(diào)同一個大模型。
用了它,你的GPU實際上只需要加載大模型的一小部分,就能把模型跑起來。
舉個例子:
阿張想基于Llama搞個懂法語的語言大模型,而小李則想微調(diào)Llama讓它學(xué)會C++編程。盡管任務(wù)不同,但兩者涉及的一些步驟卻是共通的。
此時包括阿張小李在內(nèi)的Petals用戶們,自個兒的GPU里已分別加載好了模型的一部分(子集)。
于是,阿張和小李就可以通過網(wǎng)絡(luò)尋求其他用戶的幫助,利用別人已經(jīng)擁有的模型子集,在最短時間內(nèi)對Llama進行微調(diào)。同時,他們GPU上的模型資源也會被其他用戶利用。
圖片
這樣的話,現(xiàn)在來運行Llama-2模型進行推理,GPU要求已經(jīng)降低到僅需不到12GB的GPU內(nèi)存。
下面是Petals基于BLOOM-176B模型的測試數(shù)據(jù):
圖片
如果你感興趣,還可以直接在官方提供的Colab鏈接上試玩一下,地址在文章末尾。
圖片
最后
雖然Petals 提供了一個解決方案,但是它并不是時時刻刻都能使用的,網(wǎng)絡(luò)上根本沒有足夠的服務(wù)器來實現(xiàn)它。就拿Llama-2–70b-chat-hf 模型來說,有時候找不到在線服務(wù)器。
可以在這里看到實時監(jiān)控 https://health.petals.dev/
圖片
還有一些隱私和數(shù)據(jù)安全問題,因為在第一層模型上運行的服務(wù)器可以對它們進行逆向工程以恢復(fù)客戶端的輸入,這顯然不適合涉及敏感數(shù)據(jù)的用例。
Colab地址:
https://colab.research.google.com/drive/1Ervk6HPNS6AYVr3xVdQnY5a-TjjmLCdQ?usp=sharing
https://colab.research.google.com/?hl=zh-cn#scrollTo=GJBs_flRovLc
petals地址:
https://github.com/bigscience-workshop/petals