大模型微調哪家好?小孩子才做選擇,成年人當然是全都要
一、概述
title:UNIPELT: A Unified Framework for Parameter-Efficient Language Model Tuning
論文地址:https://arxiv.org/abs/2110.07577
代碼:https://github.com/morningmoni/UniPELT
1.1 Motivation
- 大模型不同的微調方法(PELT)例如LoRA,prefix-tuning,Adapter方法效果不同,在不同的任務上效果也有差異,到底選哪個方法好呢?
- parameter-efficient language model tuning (PELT) 方法能在參數量比fine-tuning小很多的情況下,perform追上fine-tuning的水平,但是不同的PELT方法在同一個任務上表現差異可能都非常大,這讓針對特定任務選擇合適的方法非常繁瑣。
1.2 Methods
- 提出了PELT方法,將不同的PELT方法作為子模塊,并學習通過門控機械激活最適合當前數據或任務的方法。
說明:
- 例如通過Gp參數控制Prefix-tuning方法的開關,GL控制LoRA方法的開關,GA控制Adapter方法的開關。
- 圖中藍顏色的參數為可學習的參數。
1.3 Conclusion
- 本文方法始終優于傳統的fine-tuning方法以及它在不同子模塊下的表現,并且通常超過了在每個任務上單獨使用的每個子模塊的最佳性能的上限 。
- 融合多種PELT方法可能會有利于預訓練語言模型PLM的有效性和魯棒性
二、詳細內容
1 GLUE實驗結果
- UniPELT(AP)和UniPELT(APL)區別
A: Adapter
P: P-tuning
L: LoRA
- 結論
在樣本K=100,500,1000的實驗上,UniPELT集成了多個微調方法的效果更好
2 Adapter方法分析:bottleneck大小對該方法效果的影響
- bootleneck size越大,可訓練的參數越多,效果也就更好,size=48的時候,可能學的還不太充分
3 LoRA方法對參數的敏感性
針對兩個任務SST和MRPC,和不同的參數a來做實驗,結果如下:
- 沒有一個有效的a在任何task上都是效果比較好的,說明了本文方法讓他自己來學習這些參數的重要性
4 其他方法分析:
- Prefix-tuning
增加訓練參數效果不一定好
- BitFit和LoRA
LoRA訓練參數比較小的情況下,效果好像也還可以
5 UniPELT和原始微調方法的上限對比
- 6個實驗有5個都超過了單獨方法的上限
6 全量數據的訓練效果
- 使用全量的數據PELT還是取得了最好的結果
- 不使用門,簡單的融合,效果也沒有本文PELT效果好,說明了本文方法的有用性
7 訓練時間和推理時間分析
- 訓練速度UniPELT比之前微調的方法多一些,但是也還好,推理時間BitFit增加的最少,本文方法時間增加27%
- 訓練參數量LoRA,BitFit,Prefix-tuning都比較小,UniPELT多了一些
三、Adaptor、Prefix-tuning、LoRA背景知識
參考原文:從統一視角看各類高效finetune方法:??https://mp.weixin.qq.com/s/j17G5RTWQJjYUhNOQBzzJA??
1 Adaptor方法介紹
Adaptor核心是在原Bert中增加參數量更小的子網絡,finetune時固定其他參數不變,只更新這個子網絡的參數。Adaptor是最早的一類高效finetune方法的代表,在Parameter-Efficient Transfer Learning for NLP(ICML 2019)這篇文章中被提出。在原來的Bert模型的每層中間加入兩個adapter。Adapter通過全連接對原輸入進行降維進一步縮小參數量,經過內部的NN后再將維度還原,形成一種bottleneck的結構。在finetune過程中,原預訓練Bert模型的參數freeze住不更新,只更新adapter的參數,大大減少了finetune階段需要更新和保存的參數量。
2 Prefix-tuning方法介紹
Prefix-tuning的核心是為每個下游任務增加一個prefix embedding,只finetune這些embedding,其他參數freeze。Prefix-tuning對應的論文是Prefix-Tuning: Optimizing Continuous Prompts for Generation(2021),這類方法的思想來源于prefix prompt,prefix embedding相當于一個上下文信息,對模型最終產出的結果造成影響,進而只finetune這個embedding實現下游任務的遷移。
3 LoRA方法介紹
LoRA的核心是通過引入參數量遠小于原模型的可分解的兩小矩陣建立一個旁路,通過finetune這個旁路來影響預訓練模型。LoRA于LoRA: Low-rank adaptation of large language models(2021)論文中被提出,利用低秩矩陣替代原來全量參數的訓練,提升finetune效率。
本文轉載自 ??NLP PaperWeekly??,作者: 胡翔
