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