讓大模型不再「巨無霸」,這是一份最新的大模型參數高效微調綜述
近期,大語言模型、文生圖模型等大規模 AI 模型迅猛發展。在這種形勢下,如何適應瞬息萬變的需求,快速適配大模型至各類下游任務,成為了一個重要的挑戰。受限于計算資源,傳統的全參數微調方法可能會顯得力不從心,因此需要探索更高效的微調策略。上述挑戰催生了參數高效微調(PEFT)技術在近期的快速發展。
為了全面總結 PEFT 技術的發展歷程并及時跟進最新的研究進展,最近,來自美國東北大學、加州大學 Riverside 分校、亞利桑那州立大學和紐約大學研究者們調研、整理并總結了參數高效微調(PEFT)技術在大模型上的應用及其發展前景,并總結為一篇全面且前沿的綜述。
論文鏈接:???https://arxiv.org/pdf/2403.14608.pdf??
PEFT 提供了一個高效的針對預訓練模型的下游任務適配手段,其通過固定大部分預訓練參數并微調極少數參數,讓大模型輕裝上陣,迅速適配各種下游任務,讓大模型變得不再「巨無霸」。
全文長達 24 頁,涵蓋了近 250 篇最新文獻,剛發布就已經被斯坦福大學、北京大學等機構所引用,并在各平臺都有著不小的熱度。
具體來說,該綜述分別從 PEFT 算法分類,高效 PEFT 設計,PEFT 跨領域應用,以及 PEFT 系統設計部署四大層面,對 PEFT 的發展歷程及其最新進展進行了全面且細致的闡述。無論是作為相關行業從業者,或是大模型微調領域的初學者,該綜述均可以充當一個全面的學習指南。
1、PEFT 背景介紹
論文首先以最近大熱的 LLaMA 模型作為代表,分析并闡述了大語言模型(LLM)和其他基于 Transformer 的模型的架構和計算流程,并定義了所需的符號表示,以便于在后文分析各類 PEFT 技術。
此外,作者還概述了 PEFT 算法的分類方法。作者根據不同的操作將 PEFT 算法劃分為加性微調、選擇性微調、重參數化微調和混合微調。圖三展示了 PEFT 算法的分類及各分類下包含的具體算法名稱。各分類的具體定義將在后文詳細講解。
在背景部分,作者還介紹了驗證 PEFT 方法性能所使用的常見下游基準測試和數據集,便于讀者熟悉常見的任務設置。
2、PEFT 方法分類
作者首先給出了加性微調、選擇性微調、重參數化微調和混合微調的定義:
- 加性微調通過在預訓練模型的特定位置添加可學習的模塊或參數,以最小化適配下游任務時模型的可訓練的參數量。
- 選擇性微調在微調過程中只更新模型中的一部分參數,而保持其余參數固定。相較于加性微調,選擇性微調無需更改預訓練模型的架構。
- 重參數化微調通過構建預訓練模型參數的(低秩的)表示形式用于訓練。在推理時,參數將被等價的轉化為預訓練模型參數結構,以避免引入額外的推理延遲。
這三者的區分如圖四所示:
混合微調結合了各類 PEFT 方法的優勢,并通過分析不同方法的相似性以構建一個統一的 PEFT 架構,或尋找最優的 PEFT 超參數。
接下來,作者對每個 PEFT 種類進一步細分:
A. 加性微調:
1)Adapter
Adapter 通過在 Transformer 塊內添加小型 Adapter 層,實現了參數高效微調。每個 Adapter 層包含一個下投影矩陣、一個激活函數,和一個上投影矩陣。下投影矩陣將輸入特征映射到瓶頸維度 r,上投影矩陣將瓶頸特征映射回原始維度 d。
圖五展示了三種典型的 Adapter 層在模型中的插入策略。Serial Adapter 順序地插入到 Transformer 模塊之后,Parallel Adapter 則并行地插入到 Transformer 模塊旁。CoDA 是一種稀疏的 Adapter 方式,對于重要的 token,CoDA 同時利用預訓練 Transformer 模塊和 Adapter 分支進行推理;而對于不重要的 token,CoDA 則僅使用 Adapter 分支進行推理,以節省計算開銷。
2)Soft Prompt
Soft Prompt 通過在輸入序列的頭部添加可學習的向量,以實現參數高效微調。代表性方法包括 Prefix-tuning 和 Prompt Tuning。Prefix-tuning 通過在每個 Transformer 層的鍵、值和查詢矩陣前面添加可學習的向量,實現對模型表示的微調。Prompt Tuning 僅僅在首個詞向量層插入可學習向量,以進一步減少訓練參數。
3)Others
除了上述兩種分類,還有一些 PEFT 方法同樣也是在訓練過程引入新的參數。
典型的兩種方法如圖六所示。(IA) 3 引入了三個縮放向量,用于調整鍵、值以及前饋網絡的激活值。SSF 則通過線性變換來調整模型的激活值。在每一步操作之后,SSF 都會添加一個 SSF-ADA 層,以實現激活值的縮放和平移。
B. 選擇性微調:
1)非結構化掩碼
這類方法通過在模型參數上添加可學習的二值掩碼來確定可以微調的參數。許多工作,如 Diff pruning、FishMask 和 LT-SFT 等,都專注于計算掩碼的位置。
2)結構化掩碼
非結構化掩碼對于掩碼的形狀沒有限制,但這就導致了其影響效率低下。因此,一些工作,如 FAR、S-Bitfit、Xattn Tuning 等均對掩碼的形狀進行了結構化的限制。兩者的區別如下圖所示:
C. 重參數化微調:
1)低秩分解
這類方法通過尋找預訓練權重矩陣的各種低維度重參數化形式,以代表整個參數空間進行微調。其中最為典型的方法為 LoRA,它通過添加兩個額外的上投影和下投影矩陣來構建原始模型參數的低秩表示用于訓練。在訓練后,額外引入的參數還可以被無縫的合并到預訓練權重中,避免引入額外推理開銷。DoRA 將權重矩陣解耦為模長和方向,并利用 LoRA 來微調方向矩陣。
2)LoRA 衍生方法
作者將 LoRA 的衍生方法分為了動態選擇 LoRA 的秩以及 LoRA 在各方面的提升。
LoRA 動態秩中,典型方法為 DyLoRA,其構造了一系列秩,用于在訓練過程中同時訓練,從而減少了用于尋找最優秩所耗費的資源。
LoRA 提升中,作者羅列了傳統 LoRA 在各個方面的缺陷以及對應的解決方案。
D. 混合微調:
這部分研究如何將不同 PEFT 技術融合進統一模型,并尋找一個最優的設計模式。此外,也介紹了一些采用神經架構搜索(NAS)用以得到最優 PEFT 訓練超參數的方案。
3、高效 PEFT 設計
這部分,作者探討了提升 PEFT 效率的研究,重點關注其訓練和推理的延遲和峰值內存開銷。作者主要通過三個角度來描述如何提升 PEFT 的效率。分別是:
PEFT 剪枝策略:即將神經網絡剪枝技術和 PEFT 技術結合,以進一步提升效率。代表工作有 AdapterDrop、SparseAdapter 等。
PEFT 量化策略:即通過降低模型精度來減少模型大小,從而提高計算效率。在與 PEFT 結合時,其主要難點是如何更好的兼顧預訓練權重以及新增的 PEFT 模塊的量化處理。代表工作有 QLoRA、LoftQ 等。
內存高效的 PEFT 設計:盡管 PEFT 能夠在訓練過程中只更新少量參數,但是由于需要進行梯度計算和反向傳播,其內存占用仍然較大。為了應對這一挑戰,一些方法試圖通過繞過預訓練權重內部的梯度計算來減少內存開銷,比如 Side-Tuning 和 LST 等。同時,另一些方法則嘗試避免在 LLM 內部進行反向傳播,以解決這一問題,例如 HyperTuning、MeZO 等。
4、PEFT 的跨領域應用
在這一章中,作者探討了 PEFT 在不同領域的應用,并就如何設計更優的 PEFT 方法以提升特定模型或任務的性能進行了討論。本節主要圍繞著各種大型預訓練模型展開,包括 LLM、視覺 Transformer(ViT)、視覺文本模型以及擴散模型,并詳細描述了 PEFT 在這些預訓練模型的下游任務適配中的作用。
在 LLM 方面,作者介紹了如何利用 PEFT 微調 LLM 以接受視覺指令輸入,代表性工作如 LLaMA-Adapter。此外,作者還探討了 PEFT 在 LLM 持續學習中的應用,并提及了如何通過 PEFT 微調 LLM 來擴展其上下文窗口。
針對 ViT,作者分別描述了如何利用 PEFT 技術使其適配下游圖像識別任務,以及如何利用 PEFT 賦予 ViT 視頻識別能力。
在視覺文本模型方面,作者針對開放集圖像分類任務,介紹了許多應用 PEFT 微調視覺文本模型的工作。
對于擴散模型,作者識別了兩個常見場景:如何添加除文本外的額外輸入,以及如何實現個性化生成,并分別描述了 PEFT 在這兩類任務中的應用。
5、PEFT 的系統設計挑戰
在這一章中,作者首先描述了基于云服務的 PEFT 系統所面臨的挑戰。主要包括以下幾點:
集中式 PEFT 查詢服務:在這種模式下,云服務器存儲著單個 LLM 模型副本和多個 PEFT 模塊。根據不同 PEFT 查詢的任務需求,云服務器會選擇相應的 PEFT 模塊并將其與 LLM 模型集成。
分布式 PEFT 查詢服務:在這種模式下,LLM 模型存儲在云服務器上,而 PEFT 權重和數據集存儲在用戶設備上。用戶設備使用 PEFT 方法對 LLM 模型進行微調,然后將微調后的 PEFT 權重和數據集上傳到云服務器。
多 PEFT 訓練:挑戰包括如何管理內存梯度和模型權重存儲,以及如何設計一個有效的內核來批量訓練 PEFT 等。
針對上述系統設計挑戰,作者又列舉了三個詳細的系統設計案例,以更深入的分析這些挑戰與其可行的解決策略。
Offsite-Tuning:主要解決微調 LLM 時出現的數據隱私困境以及大量資源消耗的問題。
PetS:提供了一個統一的服務框架,針對 PEFT 模塊提供統一的管理和調度機制。
PEFT 并行訓練框架:介紹了兩種并行 PEFT 訓練框架,包括 S-LoRA 和 Punica,以及他們如何提升 PEFT 的訓練效率。
6、未來研究方向
作者認為,盡管 PEFT 技術已經在很多下游任務取得了成功,但仍有一些不足需要在未來的工作中加以解決。
建立統一的評測基準:盡管已存在一些 PEFT 庫,但缺乏一個全面的基準來公平比較不同 PEFT 方法的效果和效率。建立一個公認的基準將促進社區內的創新和合作。
增強訓練效率:PEFT 在訓練過程中,其可訓練參數量并不總是與訓練過程中的計算和內存節省一致。如高效 PEFT 設計章節所述,未來的研究可以進一步探索優化內存和計算效率的方法。
探索擴展定律:許多 PEFT 技術都是在較小的 Transformer 模型上實現的,而其有效性不一定適用于如今的各種大參數量模型。未來的研究可以探索如何適應大型模型的 PEFT 方法。
服務更多模型和任務:隨著更多大型模型的出現,如 Sora、Mamba 等,PEFT 技術可以解鎖新的應用場景。未來的研究可以關注為特定模型和任務設計 PEFT 方法。
增強數據隱私:在服務或微調個性化 PEFT 模塊時,中心化系統可能面臨數據隱私問題。未來的研究可以探索加密協議來保護個人數據和中間訓練 / 推理結果。
PEFT 與模型壓縮:模型壓縮技術如剪枝和量化對 PEFT 方法的影響尚未得到充分研究。未來的研究可以關注壓縮后的模型如何適應 PEFT 方法的性能。
本文轉自 機器之心 ,作者:機器之心
