(2025|ICLR|廈大華為,LoSA,基于表示互信息的動態層級稀疏率,基于重構誤差的秩分配)LLM 的動態低秩稀疏自適應

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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/73136.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/73136.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/73136.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

p5.js:sound(音樂)可視化,動畫顯示音頻高低變化

本文通過4個案例介紹了使用 p5.js 進行音樂可視化的實踐,包括將音頻振幅轉化為圖形、生成波形圖。 承上一篇:vite:初學 p5.js demo 畫圓圈 cd p5-demo copy .\node_modules\p5\lib\p5.min.js . copy .\node_modules\p5\lib\addons\p5.soun…

linux 進程和計劃管理

查看進程 在Linux系統中,有多個命令可以用來查看進程 以下是一些常用的命令: ps命令:用于查看當前系統中的進程狀態。 基本用法:ps -ef,該命令會以完整格式顯示所有進程的詳細信息,包括用戶ID、進程ID、父…

DeepSeek 多模態大模型 Janus-Pro 本地部署教程

下載模型倉庫 git clone https://github.com/deepseek-ai/Janus.git 國內下載倉庫失敗時,可以使用以下代理: git clone https://github.moeyy.xyz/https://github.com/deepseek-ai/Janus.git 準備 Conda 3.12 虛擬環境 conda create --name deepseek7B p…

Qt開源控件庫(qt-material-widgets)的編譯及使用

項目簡介 qt-material-widgets是一個基于 Qt 小部件的 Material Design 規范實現。 項目地址 項目地址:qt-material-widgets 本地構建環境 Win11 家庭中文版 VS2019 Qt5.15.2 (MSVC2019) 本地構建流程 克隆后的目錄結構如圖: 直接使用Qt Crea…

ARM 嵌入式處理器內核與架構深度剖析(2): ARM 處理器架構剖析

目錄 一、ARM處理器架構剖析 1.1. 指令集架構(ISA) 1.2. 寄存器集 1.3. 存儲模型 1.4. 異常模型 二、架構設計精要 2.1 處理器模式與特權分級 2.2 寄存器銀行化技術 2.3 指令集演化 三、微架構核心技術 3.1 流水線創新 3.2 內存子系統 3.3 …

Flutter 按鈕組件 TextButton 詳解

目錄 1. 引言 2. TextButton 的基本用法 3. 主要屬性 4. 自定義按鈕樣式 4.1 修改文本顏色 4.2 添加背景色 4.3 修改按鈕形狀和邊距 4.4 樣式定制 5. 高級應用技巧 5.1 圖標文本組合 5.2 主題統一配置 5.3 動態交互 6. 性能優化與注意事項 6.1 點擊區域優化 6.…

std::ranges::views::split, lazy_split, std::ranges::split_view, lazy_split_view

std::ranges::views::split, std::ranges::split_view C20 中引入的用于分割范圍(range)的組件,允許將輸入范圍按特定分隔符或條件分割成多個子范圍。以下是詳細說明和示例: 基本概念 1. 功能 分割范圍:將輸入范圍&…

c++ constraints與concepts使用筆記

c constraints與concepts使用筆記 1. 模板參數缺乏約束的問題2. Concepts 基本概念3. Concept 的定義與使用4. requires 表達式詳解5. requires 從句 vs requires 表達式完整示例:約束矩陣運算 1. 模板參數缺乏約束的問題 問題分析: 傳統模板參數沒有語…

Qt | 屏幕截圖實現

01 全局截屏控件 1. 鼠標右鍵彈出菜單。 2. 支持全局截屏。 3. 支持局部截屏。 4. 支持截圖區域拖動。 5. 支持圖片另存為。 演示 點擊按鈕即可截圖 源碼: 通過網盤分享的文件:screenwidget屏幕截圖 鏈接: https://pan.baidu.com/s/1PZfQlUXNIoZKEfEtLNV2jQ?pwd=5jsg 提…

2.angular指令

初級使用可以查看視頻 參考手冊 注意 像ng-class,ng-value,ng-href等這些,很多都可以直接用class“{{}}” 原生寫,為啥還出這些指令,是因為原生的比如剛一進頁面就先出現表達式了,瀏覽器走到這里的時候才去解析,給用戶…

CTFshow 【WEB入門】信息搜集 【VIP限免】 web1-web17

CTFshow 【 WEB入門】、【VIP限免】 web1 ----源碼泄露 首先第一步,看源代碼 web2----前臺JS繞過 簡單點擊查看不了源代碼,可以強制查看 比如 Ctrl Shift ICtrl U或者在url前加一個view-source: view-source:http://79999ca1-7403-46da-b25b-7ba9…

java 手搓一個http工具類請求傳body

import java.io.*; import java.net.HttpURLConnection; import java.net.URL; import java.nio.charset.StandardCharsets;public class HttpUtil {/*** JSON請求發起*/public static String httpJsonRequest(String requestUrl, String requestJson) {String responseJson &…

Spring boot3-WebClient遠程調用非阻塞、響應式HTTP客戶端

來吧&#xff0c;會用就行具體理論不討論 1、首先pom.xml引入webflux依賴 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-webflux</artifactId> </dependency> 別問為什么因為是響應式....…

寫了一個二叉樹構造函數和畫圖函數,方便debug

代碼 class TreeNode(object):def __init__(self, val, leftNone, rightNone):self.val valself.left leftself.right rightdef construct_tree(nodes):if not nodes:return Noneroot TreeNode(nodes[0])queue [root]index 1while index < len(nodes):node queue.p…

QT:串口上位機

創建工程 布局UI界面 設置名稱 設置數據 設置波特率 波特率默認9600 設置數據位 數據位默認8 設置停止位 設置校驗位 調整串口設置、接收設置、發送設置為Group Box 修改配置 QT core gui serialport 代碼詳解 mianwindow.h 首先在mianwindow.h當中定義一個串口指…

【Pandas】pandas Series asof

Pandas2.2 Series Time Series-related 方法描述Series.asfreq(freq[, method, how, …])用于將時間序列數據轉換為指定的頻率Series.asof(where[, subset])用于返回時間序列中指定索引位置的最近一個非缺失值 pandas.Series.asof pandas.Series.asof 方法用于返回時間序列…

沉浸式CSS學習路徑

好的!我將以魔法學院成長故事為框架,為您設計一套沉浸式CSS學習路徑。以下是敘事化學習提綱: 第一卷:像素學徒的覺醒 章節1:被封印的魔法書 發現HTML的"素顏"本質,通過<!DOCTYPE html>解除網頁封印用style標簽打開CSS魔法書,學會給文字穿上color斗篷和…

使用netlify部署github的vue/react項目或本地的dist,國內也可以正常訪問

提供簡潔的部署流程和豐富功能&#xff0c;如自定義域名、自動構建和服務器端功能。通過連接到 Git 倉庫實現持續部署&#xff0c;每次推送代碼都會自動構建和發布&#xff0c;支持無服務器函數&#xff0c;允許在前端項目中實現后端邏輯&#xff0c;提供直觀的用戶界面來管理和…

復現 MoGe

要復現 MoGe&#xff0c;以下給出一般性的復現訓練過程步驟示例&#xff09;的訓練過程&#xff0c;你可以參考以下步驟&#xff1a; 環境準備 安裝必要的深度學習框架&#xff0c;如 TensorFlow 或 PyTorch&#xff0c;以及相關的庫&#xff0c;例如用于數據處理的 NumPy、Pan…

Redis-緩存穿透擊穿雪崩

1. 穿透問題 緩存穿透問題就是查詢不存在的數據。在緩存穿透中&#xff0c;先查緩存&#xff0c;緩存沒有數據&#xff0c;就會請求到數據庫上&#xff0c;導致數據庫壓力劇增。 解決方法&#xff1a; 給不存在的key加上空值&#xff0c;防止每次都會請求到數據庫。布隆過濾器…