將GPT家族模型極限壓縮,1700+億參數稀疏性達50%性能不減,單GPU即可

我們可以壓縮大型語言模型以獲得更好的性能嗎?本文中,研究者提出了剪枝技術 SparseGPT,可以一次性修剪至少 50% 的稀疏性,而無需任何重新訓練,並且準確率損失最小。

GPT 家族的大型語言模型(LLMs)在諸多工中取得了出色的表現,但模型龐大的規模和高昂的計算成本也增加了部署難度。例如,性能最好的 GPT-175B 模型約有 1750 億參數,以半精度(FP16)格式計算,總計至少佔 320GB(計算 1024 的倍數)的儲存空間,所以需要至少 5 個 A100 GPU,且在推理時,每個 GPU 都起碼需要有 80GB 的記憶體。因此,自然就需要通過模型壓縮來降低成本。迄今為止,幾乎所有現有的 GPT 壓縮方法都側重於量化,即降低單個權重數值表示的精確度。

剪枝是一種較為普遍的模型壓縮方法,它將網路元素從單個權重(非結構化剪枝)刪除到更高粒度的元件,例如權重矩陣的整行 / 列(結構化剪枝)。該方法已經投入使用一段時間了,能夠有效地應用於視覺和較小規模的語言模型和任務。然而,最優的剪枝方法需要對模型進行大量的再訓練,以恢復刪除的元素所造成的準確率損失,所以遇到向 GPT 這樣規模的模型時,成本也會極為高昂。雖然也存在一些 one-shot 剪枝方法,無需重新訓練即可壓縮模型,但弊端在於,它們的計算成本太高,無法應用於具有數十億個參數的模型。因此,到目前為止,幾乎沒有能對 GPT-3 比例模型進行精確剪枝的方法。

本文中,來自奧地利科技學院等機構的研究者提出 SparseGPT,其是目前首個 one-shot 精確剪枝技術,可以在 100 – 1000 億參數的模型規模上有效地運作。SparseGPT 的工作原理是將剪枝問題簡化為大規模的稀疏迴歸實例。它基於新的近似稀疏迴歸求解器,用於解決分層壓縮問題,其效率足以在幾個小時內使用單個 GPU 在最大的 GPT 模型(175B 參數)上執行。同時,SparseGPT 準確率足夠高,不需要任何微調,剪枝後所損耗的準確率也可以忽略不計。例如,當在最大的公開可用的生成語言模型(OPT-175B 和 BLOOM-176B)上執行時,SparseGPT 在 one-shot 測試中剪枝到 50-60% 的稀疏性,無論是以困惑度還是 zero-shot 測試準確率來衡量,損失準確率都極小。

論文地址:https://arxiv.org/pdf/2301.00774v1.pdf

圖 1 為實驗結果,有以下兩個關鍵點需要說明:首先,如圖 1(左)所示,SparseGPT 可以在 OPT 家族的 1750 億參數變數中剪枝到高達 60% 的均勻分層稀疏性,而幾乎不會損失精度。相比之下,唯一已知的在此規模下工作的 one-shot 基線 —— 幅度剪枝(Magnitude Pruning)的準確率僅保持到 10% 的稀疏度,並在超過 30% 的稀疏度時完全崩掉。

其次,如圖 1(右)所示,SparseGPT 還可以在更嚴格但對硬體友好的 2:4 和 4:8 半結構化稀疏模式中準確地施加稀疏性。儘管相對於密集基線,這些模式往往會失去額外的準確性,特別是對於較小的模型而言,但計算速度可以直接通過這些稀疏模式得出。此外,由技術引起的稀疏性與通過量化獲得的額外壓縮可以很好地混合在一起。

值得注意的是,該方法僅針對局部,從某種意義上說,它依賴於權重更新,旨在保留每一層的輸入輸出關係,計算是在沒有任何全局梯度資訊的梯度下進行的。因此,使用者可以直接識別密集預訓練模型近鄰中的稀疏精確模型。另一處發現如圖 1(右)所示:較大的模型更容易稀疏化。具體來說,對於一個固定的稀疏水平,隨著模型大小的增加,稠密和稀疏模型變體之間的相對準確率差距會隨之縮小,如此一來,如果將最大的模型剪枝到 50% 的稀疏性,實際上不會降低準確率。實驗部分會詳細說明這一觀察結果,對於未來壓縮巨型模型的研究而言,這具有極大的鼓舞性。

SparseGPT 演算法概覽

SparseGPT 重建演算法的視覺化。給定一個固定的修剪掩碼 M,使用 Hessian 逆序列

,增量地修剪權重矩陣 W 的每一列的權重,並更新這些行中的其餘權重(位於正在處理的列的右側)。具體來說,修剪權重的右邊(深藍色部分)將被更新以補償修剪錯誤,而未修剪的權重不生成更新(淺藍色部分)。

下圖是完整演算法偽程式碼

下圖是完整演算法偽程式碼:

實驗結果

實驗結果

該研究進行了多項實驗。第一組實驗研究了 LLM 稀疏化的難度如何隨著大小而變化。為此,研究考慮到了整個 OPT 模型家族,並統一剪枝所有線性層(不包括標準的嵌入和頭部),分別達到 50% 的非結構化稀疏度,4:8 或 2:4 的半結構化稀疏度。(這三種模式都對應 50% 的整體稀疏度,但 2:4 模式最為嚴格的,其次是 4:8 和非結構化稀疏度。)表 1 中給出了原始 WikiText2 性能資料,具體視覺化結果參見圖 1(右)。

接下來,是對目前公開可用最大規模的密集模型 OPT-175B 和 BLOOM-176B 的研究結果,以及對它們的性能如何隨著 SparseGPT 或幅度剪枝的稀疏程度而縮放的結果。結果見圖 1(左)和圖 5(左)。

下面提供了幾個 ZeroShot 任務中 OPT-175B 的各種稀疏變體的結果來補充該研究對困惑度的評估。眾所周知,ZeroShot 的評估相對嘈雜,但同時更容易闡釋。表 2 彙總了所有的資料。

最後,另一個研究方向是將稀疏性和量化結合,即將稀疏性可以加速計算和量化可以節省記憶體兩點相結合。具體來說,如果將一個模型壓縮到 50% 稀疏 + 4 位權重,只儲存非零權重並使用位掩碼來指示它們的位置,那麼這與 3 位量化消耗的總體記憶體是相同的。圖 5(右)將 SparseGPT 50% + 4 位數字與最先進的 GPTQ 3 位數字進行比較。雖然似乎有一些異常值,但對於一些模型來說,50% + 4 位模型比各自的 3 位版本更準確,包括 175B 的 8.55 vs. 8.68 3 位。2:4 和 4:8 與 4 位的組合也在 OPT-175B 上進行了測試,產生的測試結果顯示:困惑度為 9.20 和 8.86,使用額外的量化技巧(如 blocking)也許能實現進一步的改進。

相關文章

萬字長文全面了解 GPT-4

萬字長文全面了解 GPT-4

今天凌晨1點,openai發佈了全網期待已久的GPT-4。 GPT-4的看點都有哪些呢? 邏輯推理,強到可以代替你考律師啦 角色扮演,cos...

ChatGPT 的「神功」,是如何煉成的?

ChatGPT 的「神功」,是如何煉成的?

最強對話式 AI,站在巨人的肩膀上。 AIGC 在這幾個月成了一個大熱的話題。 頗有些風水輪流轉的感覺,如同年初大火特火的 web3 一樣,...