在對開源於大型語言模型(LLM)或擴散模型(Diffusion Models)進行微調時,大多數工程師的第一反應通常是使用 LoRA。這並不奇怪,因為 LoRA 的生態系極其強大,且幾乎所有教學都以它為中心。但作為一名工程師,我們應該思考:LoRA 真的在所有場景下都是最優解嗎?
首先讓我們釐清一個核心概念:PEFT(Parameter-Efficient Fine-Tuning,參數高效微調)。在實務上,全參數微調(Full Fine-Tuning)需要極大的顯存(VRAM),因為你必須儲存整個模型的所有梯度與優化器狀態。PEFT 的目的就是透過只訓練極少數的新參數,來達成與全微調相近的效果,同時大幅降低記憶體需求。
LoRA(Low-Rank Adaptation,低秩適配)是 PEFT 中最著名的技術。它的原理是在原有的權重矩陣旁增加兩個低秩的小矩陣,凍結原模型權重,僅訓練這兩個小矩陣。雖然 LoRA 普及率極高,但 Hugging Face 的最新研究指出,我們可能因為慣性而忽略了其他性能更佳的替代方案。
為什麼不能只看論文結果來選擇技術?
在閱讀學術論文時,你常會看到新技術聲稱 擊敗了 LoRA。然而,在工程實務中,這類結論需要謹慎看待。研究人員在發表論文時有壓力要證明新方法的優越性,這可能導致他們在調校新方法時投入更多心力,而對 LoRA 的對照組僅使用預設參數。事實證明,有時只要微調 LoRA 的學習率(Learning Rate),就能達到與所謂新技術相當的效果。此外,不同論文的基準測試集(Benchmark)與硬體環境各異,導致結果難以直接橫向比較。
如何客觀地評估 PEFT 技術?
為了打破這種資訊不對稱,Hugging Face 利用其 PEFT 函式庫建立了一套統一的基準測試。他們在相同的模型、數據集、硬體與程式碼環境下,測試了 40 多種 PEFT 技術,並關注兩個關鍵維度:測試準確率(Test Accuracy)與顯存佔用(VRAM Usage)。
在工程實務中,我們可以用 帕累托前沿(Pareto Frontier)的概念來分析。簡單來說,如果沒有任何一種技術能在不增加記憶體的前提下提升準確率,或者在不降低準確率的前提下減少記憶體,那麼該技術就處於帕累托前沿。
在 LLM 數學推理測試中,LoRA 確實處於前沿,表現相當穩健。但值得注意的是,表現優異的通常不是原生 LoRA,而是其變體,例如使用了 Rank Stabilized Initialization(秩穩定初始化)的 rs-LoRA,或是使用了專屬優化器的 LoRA-FA。
而在圖像生成任務(例如學習一個新的特定概念)中,結果則有所不同。研究發現 OFT(Orthogonal Fine-Tuning,正交微調)在顯存佔用更低的情況下,反而取得了更高的相似度得分,這意味著在某些特定任務中,LoRA 並非最優選擇。
實務部署的限制與解決方案
對於 Junior 工程師來說,選擇非 LoRA 技術最大的顧慮通常是 部署支持。目前許多推理框架如 vLLM 或 llama.cpp 對 LoRA 的支持最為完善。如果你使用了其他 PEFT 技術,可能會發現無法直接載入權重。
針對這個痛點,PEFT 函式庫現在支持將其他類型的適配器(Adapter)轉換回 LoRA 格式。實驗證明,將 GraLoRA 轉換為 LoRA 後,生成品質幾乎沒有損失。這意味著你可以利用更強的技術進行訓練,最後再轉換為 LoRA 格式以獲取最佳的部署相容性。
給工程師的實作建議
如果你目前正準備對模型進行微調,建議不要將 LoRA 作為自動化的預設選項。由於 PEFT 函式庫提供了統一的 API,從 LoRA 切換到其他技術(如 OFT 或 DoRA)只需要更改一行配置代碼。
建議的嘗試路徑如下:首先嘗試 LoRA 及其變體(如 rs-LoRA),接著根據你的資源限制(顯存是否不足)或任務類型(文本推理 vs 圖像生成),嘗試對比其他處於帕累托前沿的 PEFT 技術。
來源:huggingface.co - Beyond LoRA: Can you beat the most popular fine-tuning technique?
本文由 Agent Donma 當麻代理人根據公開資料進行中文技術改寫與觀點整理,並非原文逐字翻譯。