當您計畫以參數高效的方式微調模型時,應該考慮 LoRA 以外的選項。

如果您想用自己的資料微調一個開源模型,您可能會對所謂的「參數高效微調」(Parameter-Efficient Fine-Tuning,簡稱 PEFT)技術感興趣。這個術語描述了能顯著降低模型微調所需記憶體的方法。儘管有數十種這類技術,但幾乎所有人都選擇了名為「LoRA」的方法。

在這篇部落格文章中,我們將探討 LoRA 是否真的是最佳選擇,有哪些工具可以幫助您做出明智的決定,以及如何透過拓展視野超越 LoRA 來獲益。

什麼是 PEFT,以及何時需要它?

市面上有無數的開源模型,但它們通常無法完全滿足您的特定應用需求。提示詞工程(Prompting)或許有幫助,但通常不夠。與其從頭訓練一個新模型,不如考慮微調一個現有的模型。

然而,微調非常耗費記憶體:您通常需要足夠的記憶體來容納整個模型好幾次。量化(Quantization)可以減少模型的記憶體佔用,但量化後的模型無法直接微調。因此,一系列旨在減少微調所需記憶體的技術應運而生,這就是「參數高效微調」(PEFT)。

透過 PEFT,您只需一小部分記憶體就能微調模型,甚至可以微調量化後的模型。它還提供其他優勢,例如檢查點(checkpoint)檔案小、對災難性遺忘(catastrophic forgetting)的抵抗力更強,以及能夠從同一個基礎模型提供多個微調版本。

Hugging Face 開發了 PEFT 函式庫,它以統一的 API 實現了許多 PEFT 技術,並與 Transformers 和 Diffusers 等生態系統良好整合。它還支援多種量化方法,進一步提高了參數高效微調的可及性。無論您是想用自己的資料進行微調,還是正在研究新的 PEFT 方法,PEFT 函式庫都能提供一個良好的起點。

LoRA:微調技術的女王 👑

LoRA(Low Rank Adaptation)是一種早期出現且被證明非常有效的參數高效微調技術。它的工作原理是在基礎模型之上添加少量參數,凍結基礎模型的權重,然後只訓練這些少量參數。

在所有 PEFT 技術中,LoRA 是迄今為止最受歡迎的。以下是一些估計數據:

在 Hugging Face Hub 上,20,834 個模型卡中,若只提及一種 PEFT 技術,其中 20,509 個提及 LoRA(佔 98.4%)。我們也檢查了在外部網站上,圖像生成領域哪些 PEFT 技術受歡迎。在 10,000 個檢查點的樣本中,我們發現 7,111 個是 LoRA。

其他被識別的 PEFT 技術是 LoCon (363) 和 DoRA (11,可說是 LoRA 的變體)。這意味著 95.0% 的 PEFT 檢查點是 LoRA。

在 GitHub 上搜尋程式碼片段 `from peft import <PEFT CONFIG>` (例如 GH 查詢),71.3% 的結果是關於 LoRA。緊隨其後的是 LoHa (3.7%) 和 AdaLoRA (3.5%)。儘管這些估計並不完美,但結論是 LoRA 幾乎肯定是迄今為止最常見的 PEFT 技術。

這可能意味著 LoRA 對所有人來說都表現最佳,這一事實反映在其使用統計數據中。然而,還有另一種可能性:LoRA 是早期流行起來的 PEFT 技術之一。因此,它的使用可能形成了自我強化:LoRA 擁有最高的能見度、最多的教學/範例,並且在下游套件中獲得最佳支援。因此,LoRA 的受歡迎程度是自我滋養的。

這一切都引出了一個問題:我們是否因為迴避更好的技術而錯失了性能提升的機會?畢竟,有無數研究人員的論文聲稱他們的技術超越了 LoRA。這難道不足以證明我們應該超越 LoRA,轉而採用更新的技術嗎?

僅憑論文結果選擇正確的 PEFT 技術是個問題

有數十篇論文研究了 LoRA 以外的微調技術。僅在 PEFT 函式庫中,撰寫本文時就有超過 40 種不同的 PEFT 技術(如果算上 PEFT 技術的變體,則更多)。對於幾乎所有這些技術,您都會發現研究人員聲稱他們的技術根據其基準測試結果優於 LoRA。

這些主張的問題在於,研究人員面臨著提供超越現有基準結果的壓力。即使沒有惡意,這也可能導致結果產生偏差,例如在調整替代技術上花費的時間少於研究人員提出的技術。例如,一項研究發現,透過調整學習率,LoRA 可以與據稱更好的 PEFT 技術相媲美 (https://arxiv.org/abs/2602.04998)。

另一個複雜之處在於,每篇論文選擇了不同的 PEFT 技術集進行比較,並運行了不同的基準測試集。即使在相同的基準測試上比較相同的技術,程式碼也通常不可用或不容易自行運行,這使得結果難以重現。總體而言,僅憑論文結果很難找出最適合您的 PEFT 技術。因此,您可能會傾向於直接選擇預設的 LoRA。

我們在 PEFT 中如何進行基準測試

Hugging Face 思考了如何幫助使用者就使用哪種 PEFT 技術做出明智的決定。透過 PEFT 函式庫,我們已經提供了一個實現許多 PEFT 技術並以相同 API 暴露它們的套件。下一步是提供基準測試,以進一步闡明所討論的問題。

我們已經有一個基準測試,用於檢查 LLM 在數學資料集上的微調情況已有一段時間。這個基準測試會取一個 LLM,並在思維鏈(chain-of-thought)推理上對其進行微調,以使用未經指令微調的基礎模型來產生數學問題的結果。因此,該基準測試檢查模型是否能學習執行數學推理,並調整生成的輸出以符合預期格式。

為了將我們的發現擴展到另一種模態,我們還添加了圖像生成基準測試。這個測試檢查模型是否可以微調以學習一個新概念(一隻貓絨毛玩具),並在不忘記現有概念的情況下,在新的情境中生成它。

所有 PEFT 技術都在完全相同的條件下進行評估:相同的基礎模型、相同的資料集、相同的訓練和評估程式碼、相同的硬體。由於不同的使用者有不同的需求,我們追蹤的不僅僅是測試性能。除了 VRAM 使用量,我們還追蹤遺忘/漂移、運行時間和檢查點大小等指標。這些結果旨在在消費級硬體上運行,添加一個新實驗只需添加一個新的 PEFT 配置並運行一個腳本。

由於我們在平等基礎上比較所有 PEFT 技術,並且沒有偏袒任何一方,我們相信這些基準測試可以客觀地描繪出不同 PEFT 技術的表現。我們認為,如果您有自己的資料集,您可以採用類似的方法,並利用 PEFT 函式庫來評估多種 PEFT 技術。

我們的發現:LoRA 表現良好,但不一定是最佳選擇

完成基準測試運行後,我們發現儘管 LoRA 表現良好,但其他 PEFT 方法可以在一個或多個方面超越它,因此應該被考慮。請查看下圖,它比較了 LoRA 和其他五種 PEFT 技術的性能。

基準測試的一些結果。在測試性能和記憶體使用方面,LoRA 不一定是最佳選擇。左:MetaMathQA 基準測試;右:圖像生成基準測試。請查閱此 Space 以獲取最新結果。

解釋上述結果的一種方式是從權衡的角度思考,例如:模型在測試集上的表現如何與訓練它所需的記憶體量相比?如果一種 PEFT 技術在這些指標上不能同時被任何其他技術超越,那麼它就在帕雷托前緣(Pareto Frontier)上。換句話說:如果您想要更好的測試準確度,您需要更多的記憶體;如果您想要更高的記憶體效率,您就必須犧牲準確度。

讓我們仔細看看 LLM 數學資料集基準測試的結果。在測試準確度與記憶體方面,我們發現 LoRA 確實位於帕雷托前緣。它達到了 53.2% 的測試準確度,並在峰值時需要 22.6 GB 的 VRAM。然而,帕雷托前緣上還有其他 PEFT 技術。

例如,BEFT 達到了 32.9% 的測試準確度,但最大僅需要 20.2 GB 的記憶體。另一方面,Lily 達到了 54.9% 的測試準確度,但需要 25.6 GB 的記憶體。根據對您來說更重要的是什麼,您可能會得出結論,LoRA 並不代表對您來說的最佳權衡。

微調 meta-llama/Llama-3.2-3B 並在 GSM8K 上評估時,測試準確度與記憶體使用量的權衡。LoRA 表現良好,但其他 PEFT 技術也一樣。

值得注意的是,即使 LoRA 在這項任務中表現良好,我們談論的也不是「香草版」LoRA(vanilla LoRA)。一方面,我們有帶有秩穩定初始化(rank stabilized initialization)的 LoRA,這是一種以不同於預設初始化的方式縮放 LoRA 貢獻的技術,並提供了非常好的測試準確度(53.2%)。

另一方面,我們有 LoRA-FA,它使用專門為 LoRA 設計的優化器,凍結部分 LoRA 權重,因此記憶體效率更高(20.2 GB)。普通的 LoRA 僅在 22.5 GB 記憶體下達到 48.1% 的準確度,因此應該避免使用,轉而選擇替代方案。

接下來,讓我們看看圖像生成基準測試。在 Hugging Face Space 中,選擇「image-gen」下拉選單以顯示結果。該任務的目標是學習一個新概念,即一個貓絨毛玩具,並將其推廣到新的提示詞。

使用 LoRA 微調 FLUX.2-klein-base-4B 後生成的貓絨毛玩具圖片。

對於這項任務,主要指標是「Dino 相似度」(dino similarity),它衡量生成圖像與保留測試資料集中圖片的相似程度,數值越高越好。一如既往,我們也需要關注記憶體使用量。當繪製這兩個指標的帕雷托前緣時,我們發現 LoRA 位於該前緣之下。

讓我們看看具體數字:LoRA 達到了 0.697 的相似度分數,而 OFT 達到了 0.708;在記憶體方面,LoRA 需要 9.97 GB,而 OFT 需要 9.01 GB。因此,OFT 在這些指標上嚴格優於 LoRA。

微調 FLUX.2-klein-base-4B 並在測試集上評估時,測試準確度與記憶體使用量的權衡。其他 PEFT 技術如 OFT 在測試分數和更低的記憶體使用量方面都超越了 LoRA。

當然,您也應該檢查其他接近帕雷托前緣的 PEFT 方法,因為指標可能會因隨機性而產生微小變化。此外,您應該探索其他指標:運行時性能對您來說重要嗎?或者您關心檢查點的大小?從下拉選單中選擇相關指標,結果可能會大不相同。對於圖像生成基準測試,請務必檢查生成的範例圖像,以了解微調模型的能力。

限制

異議:但基準測試偏袒某種方法!

對 PEFT 基準測試的一個批評是,超參數的選擇可能偏袒某種技術。這是事實,要對這麼多技術進行詳盡且公平的超參數掃描是很困難的。然而,每個人都可以非常容易地為 PEFT 貢獻自己的實驗:如果您認為透過選擇不同的超參數可以改進特定的 PEFT 技術,請提交 PR!我們已經添加了如何操作的說明。同樣地,如果您想貢獻一個全新的基準測試,請聯繫我們討論您的想法。

基準測試的另一個問題是,它們可能無法完全反映特定 PEFT 技術的能力。