DyLoRA:使用動態無搜尋低秩適應的預訓練模型的引數有效微調

2023-04-20 18:02:08

又一個針對LoRA的改進方法:

DyLoRA: Parameter-Efficient Tuning of Pretrained Models using Dynamic Search-Free Low Rank Adaptation

https://arxiv.org/pdf/2210.07558v2.pdf

https://github.com/huawei-noah/KD-NLP/tree/main/DyLoRA

Part1前言

LoRA存在的問題

  • rank的值是固定的,訓練完成後不能修改。
  • 優化rank的值需要大量的搜尋和努力。

提出的方法:引入了一種動態低秩適應(Dy-LoRA)技術。通過對介面卡模組在訓練期間的不同秩所學到的表示進行排序,為一系列的秩而不是單一的秩訓練LoRA塊。

主要貢獻

  • 動態LoRA:在LoRA的基礎上,我們開發了一種新的演演算法(DyLoRA),使其在推理時是動態的,而不會產生額外的費用。
  • 無需搜尋的LoRA:我們證明,通過在效能上做出可忽略不計的妥協,有可能避免為LoRA選擇最佳秩的昂貴的搜尋過程。

Part2介紹

在每一個LoRA模組中,有一個向上投影和向下投影的矩陣。設我們想訓練LoRA模組在的範圍內操作,其中可以被視為新的超引數。為了使LoRA模組在一系列的秩中工作,而不是單一的秩,我們需要確保增加或減少秩不會明顯阻礙模型的效能。實現這種行為的一種方法是在LoRA模組的訓練過程中對不同秩的資訊內容進行排序。在這方面,在每個訓練步驟中,我們對進行抽樣。形成一個預先定義的分類分佈其(支援度為Range[rmin, rmax]),並相應地截斷矩陣。

是W的b截斷版本。

前向傳播計算時是這麼計算的:

損失的計算:

另外在訓練的時候增加了一個新的模組:frozen,即只更新截斷塊中第b個相關的行或者列。

整個流程如下:

需要注意反向傳播時是否是更新整個截斷塊還是第b個行或列。

Part3實驗結果

首先是說明不同rank對結果的影響:

接著是該方法和其他方法的對比: