NeurIPS 2024|SparseLLM:突破性全域性剪枝技術,大語言模型稀疏化革命

机器之心發表於2024-10-10

圖片

AIxiv專欄是機器之心釋出學術、技術內容的欄目。過去數年,機器之心AIxiv專欄接收報導了2000多篇內容,覆蓋全球各大高校與企業的頂級實驗室,有效促進了學術交流與傳播。如果您有優秀的工作想要分享,歡迎投稿或者聯絡報導。投稿郵箱:liyazhou@jiqizhixin.com;zhaoyunfeng@jiqizhixin.com


本篇工作已被NeurIPS(2024 Conference on Neural Information Processing Systems)會議接收,文章第一作者為美國埃默裡大學的博士生白光霽,通訊作者為趙亮教授,來自埃默裡大學計算機系。共同作者包括美國阿貢國家實驗室的Yijiang Li和Kibaek Kim,以及埃默裡大學的博士生凌辰。該研究主要探討了大語言模型的全域性剪枝方法,旨在提高預訓練語言模型的效率。該成果的發表為大模型的剪枝與最佳化研究提供了新的視角,並在相關領域具有重要的應用潛力。

圖片

  • 論文標題:SparseLLM: Towards Global Pruning of Pre-trained Language Models
  • 論文連結:https://arxiv.org/abs/2402.17946
  • 程式碼:https://github.com/BaiTheBest/SparseLLM

情景匯入

隨著大型語言模型(LLMs)如 GPT 和 LLaMA 在自然語言處理領域的突破,現如今的模型能夠在各種複雜的語言任務中表現優異。然而,這些模型往往包含數十億引數,導致計算資源的需求極為龐大。為了讓LLMs在更多的實際應用中變得可行,研究人員進行了大量的模型壓縮工作,其中包括剪枝量化知識蒸餾和低秩分解等方法。

剪枝作為一種重要的壓縮策略,透過引入稀疏性提升了記憶體和計算效率。儘管剪枝的有效性已在視覺任務和較小規模的語言模型中得到驗證,但全域性剪枝由於需要將整個模型載入到同一個GPU中,對於如今的大規模LLMs而言是不現實的。因此,近年來出現了區域性剪枝方法比如SparseGPT和Wanda,儘管這些方法簡單粗暴地區域性化每個layer的剪枝,從而在效率上有了提升,但區域性剪枝帶來的效果往往是次優 (suboptimal) 的。

我們提出的 SparseLLM 框架,透過將全域性剪枝問題分解為更易管理的子問題,從而在高稀疏度下也能實現高效的最佳化和優異的效能。SparseLLM 在實現了記憶體和計算效率的同時,超越了當前最先進的剪枝方法,為LLMs的壓縮和應用樹立了新的標杆。
圖片
Figure 1: 此圖展示了全域性剪枝、區域性剪枝與我們提出的 SparseLLM 框架的對比。全域性剪枝(左):由於需要將整個模型載入到同一GPU中,記憶體消耗過大,難以適用於大規模LLMs。區域性剪枝(中):只考慮每一層的區域性誤差,儘管記憶體需求較低,但會導致次優的全域性效能。SparseLLM(右):透過引入輔助輸入和輸出,將全域性剪枝問題分解為可管理的子問題,實現低記憶體開銷下的全域性剪枝,保持全域性最優效能。

現有方法及其缺陷

在模型剪枝中,剪枝方法主要分為兩大類:全域性剪枝(Global Pruning)和區域性剪枝(Local Pruning)。

全域性剪枝

全域性剪枝旨在對整個模型應用統一的稀疏化掩碼(sparsity mask),以最小化未壓縮模型與壓縮模型之間的全域性損失。雖然理論上全域性剪枝可以為模型提供最優的效能,尤其是在高稀疏度情況下,但它的主要缺點在於其記憶體開銷巨大。為了實現全域性剪枝,整個模型必須被載入到同一個GPU中,這對於如今規模巨大的LLMs(如GPT和LLaMA)來說是不現實的。

區域性剪枝

為了規避全域性剪枝的記憶體瓶頸,區域性剪枝透過將模型壓縮分解為每一層的子問題來減少記憶體消耗。區域性剪枝的方法通常會對每一層的輸出進行獨立的稀疏化,並構造區域性損失來衡量未壓縮和壓縮層之間的差異。雖然區域性剪枝方法在資源使用方面更加高效,但由於它只關注每一層的區域性最優解,導致了全域性上次優的模型效能,尤其是在高稀疏度下表現尤為顯著。

方法缺陷

區域性剪枝的侷限性在於它無法很好地捕捉模型層之間的相互依賴關係,只針對各層的稀疏化進行最佳化。這種過度約束每層啟用值的行為,容易導致全域性效能的下降。因此,儘管區域性剪枝在某些情況下能帶來效率提升,但它往往無法達到全域性剪枝所能帶來的最優效能。

技術方法

在SparseLLM框架中,我們的目標是實現全域性剪枝。SparseLLM透過將全域性剪枝目標分解為多個子問題,每個子問題可以使用較少的資源解決,並且可以協同實現全域性剪枝目標。SparseLLM的優勢在於它能夠在記憶體消耗較低的情況下實現全域性剪枝

動機

SparseLLM的開發基於以下觀察:LLMs可以被表述為一個複合函式,後一個模組的輸出是下一個模組的輸入。這使得可以透過輔助變數將全域性剪枝目標重新表述為等價形式,從而將其分解為多個子問題。然後,開發了一種高效的演算法,透過交替最佳化每個子問題來實現全域性最優解。

剪枝問題的重新表述


我們透過對模型的稠密線性部分和非線性部分進行解耦,重新表述了剪枝問題。將每一層的輸出儲存為一個新變數 ,非線性層的輸出則表示為啟用值 。接著,我們最佳化以下目標函式NeurIPS 2024|SparseLLM:突破性全域性剪枝技術,大語言模型稀疏化革命
其中約束條件為:NeurIPS 2024|SparseLLM:突破性全域性剪枝技術,大語言模型稀疏化革命
這裡NeurIPS 2024|SparseLLM:突破性全域性剪枝技術,大語言模型稀疏化革命表示模型的總層數,NeurIPS 2024|SparseLLM:突破性全域性剪枝技術,大語言模型稀疏化革命表示需要剪枝的層集合,NeurIPS 2024|SparseLLM:突破性全域性剪枝技術,大語言模型稀疏化革命NeurIPS 2024|SparseLLM:突破性全域性剪枝技術,大語言模型稀疏化革命分別代表原始預訓練模型的中間變數值。 是模型的最終輸出結果 。

Remark:

這個公式具有高度的通用性和靈活性。當NeurIPS 2024|SparseLLM:突破性全域性剪枝技術,大語言模型稀疏化革命時,解決該問題等同於全域性剪枝。而當NeurIPS 2024|SparseLLM:突破性全域性剪枝技術,大語言模型稀疏化革命時,問題簡化為區域性剪枝,獨立地考慮每一層。透過調節NeurIPS 2024|SparseLLM:突破性全域性剪枝技術,大語言模型稀疏化革命的大小,我們可以在全域性和區域性剪枝之間無縫切換。

SparseLLM最佳化過程

原始的全域性剪枝問題包含全域性約束條件,為了避免直接求解帶約束的目標函式,我們引入了輔助變數和懲罰函式。透過引入NeurIPS 2024|SparseLLM:突破性全域性剪枝技術,大語言模型稀疏化革命懲罰項,原始的全域性目標函式被轉化為無約束問題,具體表達如下:NeurIPS 2024|SparseLLM:突破性全域性剪枝技術,大語言模型稀疏化革命
其中,NeurIPS 2024|SparseLLM:突破性全域性剪枝技術,大語言模型稀疏化革命NeurIPS 2024|SparseLLM:突破性全域性剪枝技術,大語言模型稀疏化革命是超引數。這樣,我們將每一層的剪枝問題解耦為區域性子問題,同時保留了層之間的依賴性。

SparseLLM演算法的關鍵在於上面公式中的的靈活性,目的是在完全全域性剪枝(會導致記憶體瓶頸)和完全域性部剪枝(會導致次優效能)之間找到更好的折中。粗暴地對所有層進行全域性剪枝是不現實的。最近的研究表明,前饋網路 (FFN) 模組在每個解碼器層中的引數佔LLM總引數的三分之二以上。因此,SparseLLM優先對FFN模組進行全域性剪枝,同時仍然遵循對多頭注意力模組 (MHA) 的區域性剪枝策略(見Figure 2)。這種策略在剪枝大規模模型的計算可行性與剪枝過程的有效性之間取得了平衡,並遵循了現有LLM剪枝框架的限制和實踐。

具體而言,SparseLLM將NeurIPS 2024|SparseLLM:突破性全域性剪枝技術,大語言模型稀疏化革命設定為NeurIPS 2024|SparseLLM:突破性全域性剪枝技術,大語言模型稀疏化革命,其中NeurIPS 2024|SparseLLM:突破性全域性剪枝技術,大語言模型稀疏化革命表示每個解碼器層FFN模組中線性層的索引集(具體數學細節詳見論文)。也就是說,同一個FFN模組中的線性層被全域性剪枝,而剩下的線性層仍按照區域性剪枝。對於每一層的FFN模組,我們的目標是最小化以下無約束的目標函式NeurIPS 2024|SparseLLM:突破性全域性剪枝技術,大語言模型稀疏化革命

此時,每一層的剪枝問題被表述為線性投影模組(上投影和下投影)的最佳化問題,並且可以針對每一個子問題進行交替最佳化。這一過程透過引入輔助變數和懲罰函式,使得我們能夠在不消耗過多記憶體的前提下,求解全域性最優解。

圖片
Figure 2: 該圖展示了 SparseLLM 框架在不同LLM架構中的工作原理。左側描繪了在 OPT模型中的剪枝流程。SparseLLM透過引入輔助變數,將全域性剪枝問題分解為可管理的子問題,利用線性層的上下投影模組(Up Proj 和 Down Proj)以及ReLU啟用函式來實現模型壓縮。右側描繪了在 LLaMA模型 中的剪枝流程。此處,SparseLLM除了使用線性層的上下投影外,還利用了SiLU啟用函式與Gate Proj模組來實現更復雜的剪枝操作。圖中標註了剪枝層(藍色)、輔助變數(綠色)和預訓練模型的固定輸入/輸出(粉色),以幫助理解各模組在剪枝過程中的相互關係與作用。

OPT 模型中的子問題求解


在 OPT 模型中,我們的目標是對每一層的FFN模組進行全域性剪枝。根據公式5,我們首先考慮交替最佳化子問題,對於每一個子問題的閉式解,我們分以下步驟進行:

  1. 剪枝權重的最佳化:首先,我們固定其他變數,最佳化權重 NeurIPS 2024|SparseLLM:突破性全域性剪枝技術,大語言模型稀疏化革命NeurIPS 2024|SparseLLM:突破性全域性剪枝技術,大語言模型稀疏化革命。具體來說,最佳化目標是最小化以下表示式:NeurIPS 2024|SparseLLM:突破性全域性剪枝技術,大語言模型稀疏化革命
    為了求解該問題,我們首先對NeurIPS 2024|SparseLLM:突破性全域性剪枝技術,大語言模型稀疏化革命 進行分解:NeurIPS 2024|SparseLLM:突破性全域性剪枝技術,大語言模型稀疏化革命,其中 NeurIPS 2024|SparseLLM:突破性全域性剪枝技術,大語言模型稀疏化革命( 表示偽逆)。透過將分解後的 帶入原始損失函式中,可以得到權重剪枝問題的閉式解,類似於 SparseGPT 等剪枝方法。
  2. 啟用值的更新:對於啟用值 NeurIPS 2024|SparseLLM:突破性全域性剪枝技術,大語言模型稀疏化革命的最佳化,這是一個類似於權重剪枝的簡單最小二乘問題。啟用值 NeurIPS 2024|SparseLLM:突破性全域性剪枝技術,大語言模型稀疏化革命的更新可以透過如下公式求解:
    NeurIPS 2024|SparseLLM:突破性全域性剪枝技術,大語言模型稀疏化革命
  3. 輸出 的更新:對於輸出 NeurIPS 2024|SparseLLM:突破性全域性剪枝技術,大語言模型稀疏化革命,我們最小化以下非凸的損失函式NeurIPS 2024|SparseLLM:突破性全域性剪枝技術,大語言模型稀疏化革命
    由於ReLU函式的逐元素操作,問題可以透過簡單的if-then邏輯分為兩種情況:NeurIPS 2024|SparseLLM:突破性全域性剪枝技術,大語言模型稀疏化革命

LLaMA 模型中的子問題求解


在LLaMA模型中,我們的剪枝過程與OPT模型類似,唯一不同的是LLaMA模型中包含額外的門控投影層,並使用了SiLU啟用函式。我們針對LLaMA的各層子問題進行如下求解:
  1. 剪枝權重的最佳化:對於LLaMA模型中的FFN模組,權重剪枝的最佳化過程與OPT模型類似。我們透過最小化以下表示式來最佳化權重NeurIPS 2024|SparseLLM:突破性全域性剪枝技術,大語言模型稀疏化革命
    並使用類似於OPT模型的分解方法求解。
  2. 啟用值 的更新:在LLaMA模型中,我們使用SiLU啟用函式,因此啟用值的更新公式如下:NeurIPS 2024|SparseLLM:突破性全域性剪枝技術,大語言模型稀疏化革命
  3. 輸出 的更新:對於LLaMA模型中的輸出NeurIPS 2024|SparseLLM:突破性全域性剪枝技術,大語言模型稀疏化革命 ,我們最小化以下損失函式NeurIPS 2024|SparseLLM:突破性全域性剪枝技術,大語言模型稀疏化革命
    透過類似的數學操作,我們可以求得NeurIPS 2024|SparseLLM:突破性全域性剪枝技術,大語言模型稀疏化革命 的解析解為:NeurIPS 2024|SparseLLM:突破性全域性剪枝技術,大語言模型稀疏化革命
  4. 門控投影輸出NeurIPS 2024|SparseLLM:突破性全域性剪枝技術,大語言模型稀疏化革命 的更新:對於門控投影層的 ,我們透過最小化以下表示式來更新:NeurIPS 2024|SparseLLM:突破性全域性剪枝技術,大語言模型稀疏化革命
    由於SiLU函式的非凸特性,問題可以透過查詢預先計算好的解決方案的查詢表來快速求解。

透過上述過程,SparseLLM能夠在LLaMA和OPT兩種模型架構中實現高效的全域性剪枝,最大化壓縮效果的同時,保持模型的全域性效能。

實驗部分

實驗設定

為了驗證 SparseLLM 框架的有效性,我們在多個大規模語言模型上進行了廣泛的實驗。我們使用了 PyTorch 框架並結合 HuggingFace 的 Transformers 庫來處理模型和資料集。所有剪枝實驗均在 NVIDIA A100 GPU 上執行,以確保實驗結果具備較好的可擴充套件性和適用性。

實驗的資料集選取了 WikiText2 (WT2)、PTB(Penn Treebank),以及 C4 的驗證集。這些資料集是語言模型壓縮任務中的標準基準集,確保了結果的廣泛適用性。為了保持公平性,我們在所有實驗中使用了相同的資料子集,並確保剪枝過程為零樣本設定,即不引入額外的訓練資料,僅依賴於模型的預訓練權重進行剪枝

我們採用了模型的 困惑度(Perplexity) 作為評估指標,這是一種常用的衡量語言模型生成能力的指標。困惑度越低,模型的表現越好。所有剪枝後的模型均透過困惑度指標評估其在不同資料集上的效能,比較剪枝前後的效能變化以及不同稀疏度下的效能差異。

模型與剪枝策略

實驗中,我們選擇了兩類主流的預訓練語言模型進行剪枝實驗:
  • OPT 模型:我們針對不同規模的 OPT 模型(如 OPT-1.3b、OPT-2.7b 等)進行全域性剪枝,評估 SparseLLM 在不同大小的模型上的效果。
  • LLaMA 模型:我們也對 LLaMA 系列模型進行了實驗,特別是 LLaMA-2 13b 模型,考察其在使用 SparseLLM 框架下的剪枝效果。
對於每一個模型,我們使用了不同的稀疏度設定,從 70% 到 90% 的非結構化稀疏度,以及 3:4 的半結構化稀疏度。在每個稀疏度水平下,我們測試了模型在各個基準資料集上的效能表現,以驗證 SparseLLM 在不同稀疏度條件下的剪枝效果。

比較基線方法

為了全面評估 SparseLLM 的效果,我們與現有的幾種剪枝方法進行了對比:
  • 區域性幅度剪枝:一種傳統的剪枝方法,逐層根據權重幅度進行獨立的區域性剪枝,不考慮層間的依賴性。
  • SparseGPT:一種最新的區域性剪枝方法,專門針對預訓練語言模型進行高效的權重剪枝,能夠在高稀疏度條件下維持較好的效能。
  • Wanda:另一種基於區域性剪枝的方法,透過最小化剪枝後的模型輸出誤差,達到較好的壓縮效果。
我們分別在不同稀疏度條件下與上述方法進行了對比,詳細記錄了各模型在不同資料集上的困惑度結果。

結果分析

  • 剪枝效果分析

在不同稀疏度條件下,SparseLLM 在大多數情況下能夠顯著超過基線方法,特別是在高稀疏度(≥ 70%)的情況下,SparseLLM 能夠維持較低的困惑度,甚至在一些任務中超越了未剪枝的模型。相比之下,區域性幅度剪枝方法和 SparseGPT 的效能在稀疏度較高時下降明顯,證明了全域性剪枝方法在模型壓縮中的優勢。
此外,我們還分析了模型剪枝後的引數分佈情況。SparseLLM 的剪枝策略能夠有效地保持模型重要引數的位置不變,減少了剪枝過程中重要資訊的丟失,這也解釋了其在高稀疏度下效能優越的原因。

圖片

  • 模型大小與效能權衡

我們進一步分析了不同大小模型在使用 SparseLLM 剪枝時的表現。實驗表明,較大規模的模型在剪枝後的效能更為穩定,尤其是 LLaMA 13b 等大規模模型,即使在90%稀疏度下,困惑度的增幅也非常有限。這一結果表明,隨著模型規模的增加,SparseLLM 能夠更有效地在剪枝中找到最優的權重保留策略,降低剪枝對模型效能的負面影響。

圖片

Figure 3: Fast convergence of SparseLLM. Training loss per epoch for pruning layer 3 of OPT-125m at 80% sparsity (Left) and layer 6 of LlaMA-2 13b at 70% sparsity (Right).

  • 收斂速度分析


除了剪枝效能,我們還對 SparseLLM 的收斂速度進行了分析。在實際訓練過程中,SparseLLM 在最初的幾個 epoch 內即可快速達到較低的訓練損失,表明其剪枝過程非常高效。相比之下,其他區域性剪枝方法在稀疏度較高時,需要更多的訓練步驟才能收斂到類似的效能水平。這進一步證明了全域性剪枝策略在保持模型效能的同時,能夠有效減少訓練時間和資源消耗。
  • 不同任務的通用性

為了驗證 SparseLLM 在零樣本設定下的通用性,我們在多個零樣本任務上測試了剪枝後的模型效能。實驗結果表明,SparseLLM 在大多數任務上保持了優異的效能,特別是在涉及推理和生成任務時,SparseLLM 剪枝後的模型仍然能夠生成高質量的文字輸出,而其他基線方法的效能在高稀疏度下顯著下降。

圖片

實驗小結

實驗結果表明,SparseLLM 框架能夠在不同規模的預訓練語言模型上實現高效的全域性剪枝,同時保持良好的模型效能。無論是在較小的 OPT 模型上,還是在更大規模的 LLaMA 模型上,SparseLLM 均表現出色,特別是在高稀疏度的條件下表現尤為突出。此外,SparseLLM 的收斂速度和剪枝後的通用性也為其在實際應用中的高效性和適用性提供了強有力的支援。

結論

在本研究中,我們提出了 SparseLLM,一個針對大規模預訓練語言模型的全域性剪枝框架。透過引入輔助變數和區域性子問題,我們成功解決了全域性剪枝在計算和記憶體方面的瓶頸。實驗結果表明,SparseLLM 能夠在保持模型效能的同時,在高稀疏度下有效地壓縮模型。與現有的剪枝方法相比,SparseLLM 在困惑度、稀疏度和通用性方面展現出了顯著的優勢,特別是在處理大型模型(如 LLaMA 和 OPT 系列)時,SparseLLM 的全域性剪枝策略展現了更好的效能保持能力。
透過本研究,我們證明了全域性剪枝在大規模語言模型中的潛力,不僅能夠顯著降低模型的計算和儲存成本,還能在高稀疏度下維持優異的效能。這為實際應用中對資源敏感的任務提供了一個有效的解決方案。

未來研究方向

雖然 SparseLLM 取得了優異的結果,但仍有若干值得深入研究的方向:
  1. 動態剪枝策略的研究:當前的 SparseLLM 是基於靜態的全域性剪枝策略,即在訓練前決定剪枝的層和稀疏度。未來可以探索動態剪枝策略,結合任務需求和模型訓練過程,實時調整剪枝比例和剪枝區域,以進一步提升模型壓縮效率。
  2. 稀疏性與硬體加速的結合:儘管 SparseLLM 能夠大幅減少模型的計算和儲存開銷,但在實際部署中如何高效利用硬體加速器(如GPU、TPU)的稀疏性支援仍是一個開放問題。未來的工作可以研究如何更好地結合稀疏矩陣乘法和硬體加速技術,以實現更大的效能提升。
  3. 剪枝後的模型微調:儘管我們的實驗已經展示了 SparseLLM 在高稀疏度下的效能保持能力,但剪枝後的模型是否可以透過微調進一步提升效能仍然值得探索。未來的研究可以結合剪枝和微調技術,探討如何在稀疏化後進一步最佳化模型效能。
透過探索這些方向,SparseLLM 有望在大規模語言模型的壓縮與高效推理中發揮更加廣泛的作用,為各類NLP應用提供更多的支援與創新。

相關文章