Dynamic Low-Rank Sparse Adaptation for Large Language Models
目錄
1. 引言
1.1 關鍵詞
2. 方法
2.1 預備知識
2.2 層級稀疏率確定
2.3 稀疏感知的秩分配
2.4 動態稀疏與適配
3. 實驗
3.1 實驗設置
3.2 語言建模
3.3 零樣本任務
3.4 N:M 稀疏性
3.5 消融實驗
3.6 分析
4. 結論
1. 引言
隨著大語言模型(Large Language Models, LLMs)的發展,模型規模顯著增加,極大提升了在多領域理解和生成內容的能力。然而,模型規模的指數增長也帶來了部署和推理困難,主要表現為計算需求和延遲的劇增。針對這些問題,模型壓縮方法,如稀疏化(Sparsity)、量化和知識蒸餾被廣泛研究,其中稀疏方法在降低模型大小和推理延遲方面表現突出。
現有的稀疏方法,如 SparseGPT 和 Wanda,在高稀疏度情況下性能會嚴重退化,通常需要額外的微調以恢復性能。低秩適配(Low-Rank Adaptation, LoRA)是一種高效的參數微調方法,但存在兩個核心問題:
- LoRA 無法在微調后融入稀疏的 LLM 權重中,導致推理延遲增加。
- 均勻稀疏率和靜態秩設置未能充分利用不同層之間的差異,限制了稀疏模型性能的恢復。
本文提出了一種 動態低秩稀疏適配方法(Dynamic Low-rank Sparse Adaptation, LoSA),實現了稀疏 LLM 與低秩適配的無縫集成。LoSA 在微調過程中動態調整稀疏率和秩,以提高稀疏 LLM 的性能而不增加推理延遲。具體而言,LoSA 通過 基于表示互信息(Representation Mutual Information, RMI)的動態層級稀疏率?和 基于重構誤差的秩分配策略 實現了稀疏與低秩適配的有效融合。
1.1 關鍵詞
大語言模型(LLMs),稀疏化(Sparsity),低秩適配(LoRA),表示互信息(Representation Mutual Information, RMI),稀疏感知秩分配(Sparsity-Aware Rank Allocation),動態稀疏微調(Dynamic Sparse Fine-tuning)
2. 方法
2.1 預備知識
本文基于 SparseGPT 的思想,將 LLM 的稀疏化視作逐層的重構問題。具體而言,將密集模型每一層的權重與輸入特征圖進行稀疏化掩碼處理,并引入低秩適配模塊以減小稀疏引入的重構誤差。通過統一優化問題同時確定稀疏掩碼、層級稀疏率和層級秩分配。
優化目標是盡量減少稀疏 LLM 的每一層與其對應的密集層之間的輸出差異:
其中,i:層,s:稀疏率,r:秩,X:輸入,M:掩碼,W:權重,BA:低秩矩陣?
圖 1:將傳統的稀疏 LLM 與 LoRA 相結合與 LoSA 方法進行比較:
- (a) 傳統的 LLM 稀疏方法采用均勻的稀疏率,而 LoRA 也使用均勻的秩。此外,LoRA 權重不能合并(merge)到稀疏 LLM 權重中。
- (b) LoSA 對 LLM 執行動態稀疏低秩自適應,同時將稀疏性應用于 LLM 和低秩自適應。此外,LoSA 根據表示互信息動態確定逐層稀疏率,并根據稀疏 LLM 的重建誤差分配低秩自適應的秩。?
2.2 層級稀疏率確定
現有稀疏方法采用均勻稀疏率,忽視了層間重要性的差異。本文基于 RMI 提出了一種快速計算層級重要性的方法。RMI 用于衡量不同層之間的冗余性,進而確定每一層的稀疏率。
- 公式 2:信息瓶頸(Information Bottleneck,IB),用于壓縮冗余
- 公式 3:擴展的 IB,附加了最小化層間信息冗余。
上式意味著與其他層高度相關的層不太重要。?層 i 的重要性計算為:
層稀疏率 s 計算為:
上述方法難以計算,可利用歸一化 Hilbert-Schmidt 獨立性準則(Hilbert-Schmidt Independence Criterion,HSIC)實現快速高效計算,僅需通過模型的特征圖即可完成,極大降低計算復雜度。
其中,X_i?表示第 i 層的輸入,X 表示第 i 層的特征圖。
【注:直觀理解,類似于余弦相似度,兩層特征圖相似度越高,這兩層的相關度越高】?
2.3 稀疏感知的秩分配
使用低秩自適應可以有效恢復稀疏 LLM 的性能。為合理分配有限的低秩適配參數預算,本文提出了基于層級重構誤差的秩分配方法,更高的重構誤差意味著該層需要更多的微調參數。秩分配公式為:
其中,L_i 表示第 i 層的重構誤差,L_avg 表示所有 n 層重構誤差的均值,?Ω 表示所有 n 層的平均秩,?x? 將 x 四舍五入為最接近的整數。
2.4 動態稀疏與適配
本文進一步提出了一種動態稀疏與適配策略,逐步增加稀疏率,同時動態調整低秩適配模塊的秩,以有效整合稀疏和微調。
執行 T 步稀疏性和微調,并使用立方稀疏性調度(cubic sparsity schedule)確定漸進稀疏率,如下所述:
其中 Θ^f 是最終稀疏率,Θ^t 表示第 t 步中 n 層的平均稀疏率。
此外,由于重構誤差會隨著稀疏率的上升而增加,因此在每個步驟中線性增加平均秩 Ω^t,即?
在計算步驟 t 的平均稀疏率 Θ^t 后,
- 首先使用第 2.2 節中概述的方法建立分層稀疏率 s^t。
- 隨后,通過應用稀疏掩碼 M^t 同時稀疏化 LLM 和低秩自適應的權重,該掩碼是使用 SparseGPT或 Wanda 得出的。這種協調的方法確保了 LLM 權重和低秩自適應之間的兼容性,有助于在微調后將低秩自適應集成到 LLM 的稀疏權重中。
- 一旦建立了稀疏 LLM,就會采用第 2.3 節中描述的秩分配方法確定低秩自適應的分層秩 r^t。
- 算法的全部細節在算法 1 中概述。
3. 實驗
3.1 實驗設置
實驗模型包括 LLaMA-1、LLaMA-2、LLaMA-3、Vicuna 和 OPT,參數規模覆蓋 7B 到 70B。使用 WikiText-2 數據集評估語言建模能力,使用多個零樣本任務評估模型泛化能力。微調數據集為從 Alpaca-GPT4 中隨機抽取的 10K 樣本,優化器為 Paged AdamW,學習率為 2×10??,初始秩為 6。
3.2 語言建模
LoSA 方法在 WikiText-2 上顯著降低了不同稀疏水平(50%-70%)下稀疏 LLM 的困惑度(Perplexity),表現顯著優于 LoRA。如在 70% 稀疏率下,LLaMA-2-7B 使用 LoSA 微調,困惑度較 Wanda 降低 68.73,展現了顯著的性能提升。
3.3 零樣本任務
LoSA 在 HellaSwag、Winogrande 等七個下游零樣本任務上明顯提高了稀疏 LLM 的準確性。尤其在 70% 稀疏率下,LoSA 對 LLaMA-2-7B 的平均零樣本準確率提升達 16.32%,明顯優于 LoRA,證明了其強大的泛化性能。
3.4 N:M 稀疏性
LoSA 同樣適用于混合 N:M 稀疏設置(如混合 2:8 稀疏,N 表示非零權重),通過給更重要層更低的 N 值,進一步提升了稀疏模型的性能,實驗結果表明 LoSA 顯著優于傳統方法和 LoRA。?
3.5 消融實驗
消融實驗驗證了層級稀疏率(LSR)、稀疏感知秩分配(SRA)和動態稀疏適配(DSA)三個核心策略的有效性。實驗表明,移除任一策略都會導致性能下降,表明三者均對LoSA的性能提升具有貢獻,其中動態稀疏適配策略的貢獻最大。
步 T 決定了稀疏率增加的速度。T 越大,稀疏率增加越慢,每次刪除的參數越少。?
3.6 分析
LoSA 微調效率高,參數量僅為 LoRA 的 1 ? s%,GPU 內存占用與 LoRA 相近,但由于額外步驟耗時較長,LoSA 微調需要更多時間(約 45 分鐘)。但其相比 LoRA 在推理速度和模型精度方面均有明顯優勢,如 CPU 加速最高達到 2.60 倍。
4. 結論
本文提出了動態低秩稀疏適配方法 LoSA,實現了 LLM 稀疏和低秩適配的統一優化,有效提升了稀疏 LLM 的性能,無額外推理延遲,并通過廣泛實驗驗證了方法的高效性和實用性。
論文地址:https://arxiv.org/abs/2502.14816
項目頁面:https://github.com/wzhuang-xmu/LoSA