首頁 >科技週邊 >人工智慧 >首個千億模型壓縮演算法 SparseGPT 來了,降低算力成本的同時保持高精度

首個千億模型壓縮演算法 SparseGPT 來了,降低算力成本的同時保持高精度

王林
王林轉載
2023-04-12 13:01:031863瀏覽

自 2020 年 GPT-3 橫空出世以來,ChatGPT 的爆火再一次將 GPT 家族的生成式大型語言模型帶到聚光燈下,它們在各種任務中都已顯示出了強大的性能。

但模型的龐大規模也帶來了計算成本的上升和部署難度的增加。

例如,GPT‑175B 車型總計至少佔 320GB 半精確度  (FP16)  格式的儲存空間,在推理時,起碼需要五個 80 GB 儲存空間的 A100 GPU。

模型壓縮(model compression)是目前使用較多的一種降低大模型計算成本的方法,但迄今為止,幾乎所有現有的GPT 壓縮方法都專注於量化(quantization),即降低單一權重的數值表示的精確度。

另一種模型壓縮方法是剪枝(pruning),即刪除網路元素,包括從單一權重(非結構化剪枝)到更高粒度的元件如權重矩陣的整行/列(結構化剪枝)。這種方法在視覺和較小規模的語言模型中很有效,但會導致精度損失,從而需要對模型進行大量再訓練來恢復精度,所以遇到像GPT 這樣大規模的模型時,成本就又變得過於昂貴了。雖然也有一些單次剪枝方法,無需重新訓練即可壓縮模型,但它們計算量太大,難以應用於具有數十億參數的模型。

那麼針對 GPT-3 這種規模的大模型,有沒有一種方法能夠對其作精確的剪枝、同時保持最小的精度損失且降低計算成本?

近日,來自奧地利科學技術研究所(ISTA) 的兩名研究人員Elias Frantar 和Dan Alistarh 合作了一項研究,首次針對100 至1000 億參數的模型規模,提出了精確的單次剪枝方法SparseGPT。

首個千億模型壓縮演算法 SparseGPT 來了,降低算力成本的同時保持高精度

論文網址:https://arxiv.org/pdf/2301.00774.pdf

#SparseGPT 可以將GPT 系列模型單次剪枝到50% 的稀疏性,而無需任何重新訓練。目前最大的公開可用的 GPT-175B 模型,只需要使用單一 GPU 在幾個小時內就能實現這種剪枝。

而且,SparseGPT 還很準確,能將精度損失降到最小。例如在目前最大的開源模式 OPT‑175B 和 BLOOM‑176B 上執行SparseGPT 時,可以達到 60% 的稀疏度,同時將精確度損失降到最小。

電驅SparseGPT演算法

#超大模型的研究近年來非常活躍,但到目前為止,還沒有一個百億參數以上的模型能夠實現非常準確的高度稀疏化。

現有方法對計算成本的要求都過高,以目前最準確的訓練後方法OBC 為例,對於十億參數模型,它需要1 小時以上的時間來進行壓縮。已知最快的訓練後方法 AdaPrune 也需要幾分鐘來對十億參數模型進行剪枝,以此速度,GPT-3 規模的模型估計需要數百小時(幾週)的計算。

大多數現有的剪枝方法如漸進幅度剪枝(gradual magnitude pruning),需要在剪枝步驟後進行大量的再訓練以恢復準確性,而GPT 規模的模型通常需要大量的用於訓練或微調的計算量和參數調整量,這使得基於再訓練的方法難以應用。因此,在 GPT 規模上應用這種漸進的剪枝方法是行不通的。

ISTA 團隊的這項工作提出了SparseGPT 方法,可以實現幾個小時內在單一GPU 上運行千億以上參數的模型,並且足夠準確,可將模型修剪到50 %-60% 的稀疏度水平,而不會大幅降低效能。

SparseGPT 的核心是一種新的大規模近似稀疏回歸演算法,它可以推廣到半結構化(2:4 和4:8)模式,並且與現有的權重量化方法相容。

首個千億模型壓縮演算法 SparseGPT 來了,降低算力成本的同時保持高精度

大多數現有的剪枝方法如漸進幅度剪枝(gradual magnitude pruning),需要在剪枝步驟後進行大量的再訓練以恢復準確性,而GPT 規模的模型通常需要大量的用於訓練或微調的計算量和參數調整量,這使得基於再訓練的方法難以應用。因此,在 GPT 規模上應用這種漸進的剪枝方法是行不通的。

SparseGPT 是針對 GPT 規模模型的後訓練(post-training)方法,因為它不執行任何微調。

#

目前有許多量化 GPT 規模模型的後訓練的方法,如 ZeroQuant、LLM.int8()  和 nuQmm 等,但由於異常特徵的存在,激活量化可能會很困難。 GPTQ 利用近似二階資訊將權重精確量化到 2‑4 位元,適用於最大的模型,當它與高效的 GPU 核心結合時,可以帶來2‑5 倍的推理加速。

但由於 GPTQ 專注於稀疏化而不是量化,因此 SparseGPT是量化方法的補充,二者可以結合應用。

另外,除了非結構化修剪,SparseGPT 也適用於半結構化的模式,例如流行的n:m 稀疏格式,在Ampere NVIDIA GPU 上可以2:4 的比例實現加速。

SparseGPT :高稀疏化水平,低精度損失

對SparseGPT 壓縮模型的效果進行評估後,研究人員發現,大型語言模型進行稀疏化的難度與模型大小成比例,與現有的幅度剪枝(Magnitude Pruning)方法相比,使用SparseGPT 能夠實現更高的模型稀疏化程度,同時保持最低限度的精度損失。

研究人員在 PyTorch 上實現了 SparseGPT,並使用 HuggingFace 的 Transformers 庫來處理模型和資料集,並且都在具有 80GB 記憶體的單一 NVIDIA  A100 GPU 上進行。在這樣的實驗條件下,SparseGPT 可以在大約 4 小時內對 1750 億參數的模型實現完全稀疏化。

研究人員依序稀疏 Transformer  層,這顯著降低了記憶體需求,並且還大大提高了並行處理所有層的準確性。所有的壓縮實驗都是一次性進行,沒有任何微調。

評估物件主要是 OPT 系列模型,包含從 1.25 億到 1750 億參數的一套模型,方便觀察剪枝相對於模型大小的縮放表現。另外也分析了 BLOOM 的 1760 億參數變體。

在資料集和評估指標方面,實驗採用了原始WikiText2 測試集的困惑度來評估SparseGPT 壓縮方法的準確性,同時為了增加可解釋性,也使用了一些ZeroShot 精準度指標。另外,評估的重點在於稀疏模型相對於密集模型基準的準確性,而非絕對數字。

研究人員對OPT 整個模型系列的所有線性層進行剪枝(不包括標準的嵌入和頭部),分別達到50% 的非結構化稀疏度、全4 :8 或全2:4 的半結構化稀疏度,結果如下圖。

首個千億模型壓縮演算法 SparseGPT 來了,降低算力成本的同時保持高精度

可見,使用幅度剪枝來壓縮的模型準確度在所有尺寸上都很糟糕,而且模型越大,準確度下降得越厲害。

而使用 SparseGPT 來壓縮的模型趨勢不同,在 27 億參數下,困惑度損失

較大的模型更容易稀疏化

一個總的趨勢是,較大的模型更容易稀疏化,在固定的在稀疏度水準下,稀疏模型相對於密集模型的相對精度下降會隨著模型大小的增加而縮小。作者推測這可能是由於它們的參數化程度較高,整體上抗噪能力也較強。

相比於密集模型基線,在最大規模下,使用SparseGPT 將模型壓縮至4:8 和2:4 稀疏度時,困惑度增長分別僅為0.11 和0.39 。這樣的結果意味著,我們可以在實踐中實現 2 倍的加速,商用的 NVIDIA Ampere GPU 對 2:4 的稀疏度已經有了支援。

作者研究了 OPT-175B 和 BLOOM-176B 兩個千億模型的表現與使用 SparseGPT 帶來的稀疏程度之間的關係,結果下圖所示。

首個千億模型壓縮演算法 SparseGPT 來了,降低算力成本的同時保持高精度

可以看到,對於OPT-175B 模型,幅度剪枝最多可以實現10% 的稀疏度,緊接著就會有較大的精度損失。而 SparseGPT 在困惑度增加的下還能達到 60% 的稀疏度。

首個千億模型壓縮演算法 SparseGPT 來了,降低算力成本的同時保持高精度

#

对于 BLOOM-176B 模型,尽管幅度剪枝可以达到 30% 的稀疏度而没有显著的精度损失,但相比之下,SparseGPT 可以实现 50% 的稀疏度,即 1.66 倍的提升。而且,在 80% 的稀疏度下,使用 SparseGPT 压缩的模型的困惑度仍然保持在合理水平,但幅度剪枝在达到 OPT 的 40% 稀疏度和 BLOOM 的 60% 稀疏度时,困惑度就已经 > 100。

另外,SparseGPT 能够从这些模型中移除大约 1000 亿个权重,对模型准确性的影响有限。

最后总结一下,该研究首次表明,基于 Transformer 的大规模预训练模型可以通过一次性权重修剪压缩到高稀疏性,无需任何再训练,精度损失也很低。

值得注意的是,SparseGPT 的方法是局部的:在每个修剪步骤之后,它都会执行权重更新,旨在保留每一层的输入输出关系,这些更新是在没有任何全局梯度信息的情况下计算的。因此,大规模 GPT 模型的高度参数化似乎使这种方法能够直接识别密集预训练模型“近邻”中的稀疏精确模型。

另外,由于实验所采用的的准确度指标(困惑度)非常敏感,因此生成的稀疏模型输出似乎与密集模型的输出密切相关。

这项研究在缓解大模型的算力限制方面具有很大的积极意义,将来的一个工作方向是研究大模型的微调机制来进一步恢复精度,同时,扩大 SparseGPT 的方法在模型训练期间的适用性,将会减少训练大模型的计算成本。​

以上是首個千億模型壓縮演算法 SparseGPT 來了,降低算力成本的同時保持高精度的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:51cto.com。如有侵權,請聯絡admin@php.cn刪除