Posted on

LoRA (Low-Rank Adaptation)

LoRA(Low-Rank Adaptation)是什麼

LoRA是一種有效的參數微調技術,可幫助改善大型語言模型在特定任務上的效能表現,並且具有較低的運算和儲存成本。它是一種用於在大型語言模型(LLM)上進行參數微調的技術。 它旨在透過降低模型參數的秩(rank)來減少模型的複雜度,從而提高模型的泛化能力和適應性。

在傳統的參數微調過程中,常常會遇到過擬合的問題,特別是當訓練資料較少或訓練資料與目標任務不符時。 LoRA透過引入一個低秩的參數矩陣,將原始的高維參數矩陣分解成兩個低秩矩陣的乘積,從而降低模型的複雜度。 這種降維的方式可以有效地減少模型的參數量,減緩過度擬合的情況,並提高模型的泛化能力。

LoRA的主要優點

  • 更快的訓練速度 :將原始的高維度參數矩陣分解成低秩矩陣,可以大幅減少模型的參數數量。
  • 更低的計算成本 : 將原始的高維度參數矩陣分解成低秩矩陣,進而降低模型的計算和儲存成本。它不是添加層,而是為參數添加值,不會導致推理延遲。
  • 更少的泛化損失: LoRA能夠提高模型的泛化能力,使其更能適應不同的任務和領域。

LoRA流程說明

  • 使用預訓練的 LLM 權重初始化 A 和 B 矩陣。
  • 將 LLM 應用於特定任務的訓練數據集。
  • 在訓練過程中,只有 A 矩陣會針對訓練數據集(輸入資料(X))進行微調。
  • 訓練完成後,獲得了針對特定任務適應的 LLM,也就是H(輸出)。

運作原理

在LoRA中,一組新參數同時加入了網路WA和中WB。這些網路利用低秩權重向量,其向量的維度表示為dxr和rxd。在這裡,「d」代表原始凍結網路參數向量的維度,而「r」表示所選的低秩或更低維度。值得注意的是,「r」的值越小,模型訓練過程就越加速和簡化。確定適當的「r」值是LoRA中的關鍵決策。選擇較低的值會導致更快且更具成本效益的模型訓練,但可能不會產生最佳結果。相反,選擇較高的「r」值會增加訓練時間和成本,但會增強模型處理更複雜任務的能力。

LoRA的運作方式是,首先需要一個預先訓練的LLM,並凍結其大部分參數。然後,將這些凍結的預訓練模型權重與可訓練的秩分解矩陣一起注入到變壓器的每一層中。這樣做有助於精細化模型,特別是在低資源硬體上調整模型。

從上表可以看出,LoRA 方法的結果與經典的微調方法相當,可以用更少的時間和資源獲得或多或少相同的結果,並且有更快的執行時間和更短的訓練時間,真是太棒了!

結論

  • LoRA 是一種模型適應技術,可減少 LLM 中的參數數量,同時保持其效能。
  • 它透過將LLM的權重分解為低秩矩陣(共同特徵)和隨機矩陣(特定於任務的變體)來實現這一點。
  • 低秩矩陣和隨機矩陣相結合產生一個特定於任務的適配器,該適配器可以根據特定任務自訂 LLM。
  • LoRA 在訓練速度、運算效率和模型大小方面具有優勢,使其適合資源受限的環境。
  • LoRA 多數的成果比 Fine-tuning 的成果還要好,並且訓練的參數量遠小於 Fine-tuning。

更多資訊請見

LoRA: Low-Rank Adaptation of Large Language Models: