自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

LLM高效微調詳解-從Adpter、PrefixTuning到LoRA

發(fā)布于 2024-5-7 09:56
瀏覽
0收藏

一、背景

LLM高效微調詳解-從Adpter、PrefixTuning到LoRA-AI.x社區(qū)

目前NLP主流范式是在大量通用數(shù)據(jù)上進行預訓練語言模型訓練,然后再針對特定下游任務進行微調,達到領域適應(遷移學習)的目的。

LLM高效微調詳解-從Adpter、PrefixTuning到LoRA-AI.x社區(qū)

Context Learning v.s. SFT

指令微調是預訓練語言模型微調的主流范式,其目的是盡量讓下游任務的形式盡量接近預訓練任務。

從而減少下游任務和預訓練任務之間的Gap, 實現(xiàn)預訓練語言模型適應下游任務,而非下游任務去適應模型

LLM高效微調詳解-從Adpter、PrefixTuning到LoRA-AI.x社區(qū)

指令微調的效果要優(yōu)于基于Zero/Few-shot的提示詞工程的上下文學習。


但隨著預訓練語言模型進入LLM時代,其參數(shù)量愈發(fā)龐大。全量微調模型所有參數(shù)所需的顯存早已水漲船高。


例如:

全參微調Qwen1.5-7B-Chat預估要2張80GB的A800,160GB顯存 全參微調Qwen1.5-72B-Chat預估要20張80GB的A800,至少1600GB顯存

而且,通常不同的下游任務還需要LLM的全量參數(shù),對于算法服務部署來說簡直是個災難(當然,一種折衷做法就是全量微調后把增量參數(shù)進行SVD分解保存,推理時再合并參數(shù) )。

LLM高效微調詳解-從Adpter、PrefixTuning到LoRA-AI.x社區(qū)

為了尋求一個不更新全部參數(shù)的廉價微調方案,之前一些預訓練語言模型的高效微調(Parameter Efficient, PEFT)工作,要么插入一些參數(shù)或學習外部模塊來適應新的下游任務。

LLM高效微調詳解-從Adpter、PrefixTuning到LoRA-AI.x社區(qū)

接下來將介紹如下4個PEFT方法(重點是主流的LoRA):

  • Adatper Tuning
  • Prompt Tuning
  • Prefix Tuning
  • LoRA

LLM高效微調詳解-從Adpter、PrefixTuning到LoRA-AI.x社區(qū)

二、參數(shù)高效微調

2.1 Adapter Tuning

Adapter Tuning試圖在Transformer Layer的Self-Attetion+FFN之后插入一個先降維再升維的MLP(以及一層殘差和LayerNormalization)來學習模型微調的知識。

LLM高效微調詳解-從Adpter、PrefixTuning到LoRA-AI.x社區(qū)

Adapter即插入的FF up + FF Down。

LLM高效微調詳解-從Adpter、PrefixTuning到LoRA-AI.x社區(qū)

在微調時,Transformer Layer原有的所有參數(shù)凍結,反向傳播后僅更新Adapter參數(shù)。

缺點:需要修改原有模型結構,同時還會增加模型參數(shù)量。

2.2 Promot Tuning

Prompt Tuning設計了一種prefix prompt方法,即在模型輸入的token序列前添加前綴prompt token,而這個前綴prompt token的embedding是由網(wǎng)絡學到。


Prompt Tuning可以看做token已經(jīng)確定,但是embedding是可以學的。

它相當于僅用prompt token的embedding去適應下游任務,相比手工設計或挑選prompt,它是一種Soft的prompt(軟提示)


LLM高效微調詳解-從Adpter、PrefixTuning到LoRA-AI.x社區(qū)

LLM高效微調詳解-從Adpter、PrefixTuning到LoRA-AI.x社區(qū)

LLM高效微調詳解-從Adpter、PrefixTuning到LoRA-AI.x社區(qū)

在針對下游任務微調時,Prompt Tuning將凍結原始LLM的參數(shù),只學習獨立的prompt token參數(shù)(參數(shù)化的prompt token加上輸入的token送入模型進行前向傳播,反向傳播只更新prompt token embedding的參數(shù))。


在針對不同的下游任務微調時,就可以分別學習不同的Task Specifical的Prompt Token參數(shù)。

LLM高效微調詳解-從Adpter、PrefixTuning到LoRA-AI.x社區(qū)

  • Soft Prompt Tuning在模型增大時可以接近Model Tuning(fine-tuning)的效果
  • 離散Prompt Tuning(Prompt Design)基本不能達到Model Tuning的效果

LLM高效微調詳解-從Adpter、PrefixTuning到LoRA-AI.x社區(qū)

Promot Tuning方法的參數(shù)成本是,其中是提示長度,是token嵌入維度。

提示越短,必須調整的新參數(shù)就越少,那么調參的目標是就是找到表現(xiàn)仍然良好的最小prefix prompt長度。

2.3 Prefix-Tuning

LLM高效微調詳解-從Adpter、PrefixTuning到LoRA-AI.x社區(qū)

為了避免人為的離散Prompt選取優(yōu)化,Prefix-Tuning提出可學習的Prefix Prompt。

LLM高效微調詳解-從Adpter、PrefixTuning到LoRA-AI.x社區(qū)

LLM高效微調詳解-從Adpter、PrefixTuning到LoRA-AI.x社區(qū)

Prefix-Tuning提出可學習的Prompt,即:

learns a sequence of prefixes that are prepended at every transformer layer

LLM高效微調詳解-從Adpter、PrefixTuning到LoRA-AI.x社區(qū)

Prefix tuning為層的Transformer Layer的每層多頭注意力的鍵和值都配置了可學習的prefix vectors.

Two sets of prefix vectors ,  are concatenatedwith the original key  and value

LLM高效微調詳解-從Adpter、PrefixTuning到LoRA-AI.x社區(qū)

LLM高效微調詳解-從Adpter、PrefixTuning到LoRA-AI.x社區(qū)

看到這里可以知道,Prefix-Tuning可以算是Promot Tuning的一個特例(Promot Tuning只在輸入側加入可學習的Prefix Prompt Token)

2.4 LoRA

為緩解該問題,LoRA(Low-Rank Adaption of LLMs),即LLMs的低秩適應,被提出用于高效參數(shù)微調。


LLM高效微調詳解-從Adpter、PrefixTuning到LoRA-AI.x社區(qū)

LLM高效微調詳解-從Adpter、PrefixTuning到LoRA-AI.x社區(qū)

相關論文表明訓練學到的過度參數(shù)化的模型實際上存在于一個較低的內在維度上

類似于機器學習中的降維算法,假設高維數(shù)據(jù)實際是在低維的流形上一樣


LLM高效微調詳解-從Adpter、PrefixTuning到LoRA-AI.x社區(qū)


其具體操作是,凍結了預訓練的模型權重,并將可訓練的LoRA秩分解矩陣注入到LLM的每個Transformer Decoder層中,從而大大減少了下游任務的可訓練參數(shù)數(shù)量。


LoRA 方法的計算流程如下圖:

LLM高效微調詳解-從Adpter、PrefixTuning到LoRA-AI.x社區(qū)

LLM高效微調詳解-從Adpter、PrefixTuning到LoRA-AI.x社區(qū)


對于使用LoRA的模型來說,由于可以將原權重與訓練后權重合并,因此在推理時不存在額外的開銷。

Prefix Tuning是指在輸入序列前綴添加連續(xù)可微的軟提示作為可訓練參數(shù)。由于模型可接受的最大輸入長度有限,隨著軟提示的參數(shù)量增多,實際輸入序列的最大長度也會相應減小,影響模型性能。

三、適用范圍

近來LLM主要是指,Decoder-Only架構的大規(guī)模預訓練語言模型。

畢竟,同等參數(shù)規(guī)模和訓練數(shù)據(jù)量,Encoder-Decoder架構的T5和Bart在生成任務熵,相比Decoder-Only架構并不具備優(yōu)勢。更不用說,Encoder-Only架構的BERT了。


但是,所有使用Transformer架構的算法都可以使用上述PEFT方法。


針對主流的Decoder Only的生成式因果語言模型,其訓練范式具體是:

LLM高效微調詳解-從Adpter、PrefixTuning到LoRA-AI.x社區(qū)

圖片源自:《大規(guī)模語言模型:從理論到實踐》


LLM高效微調詳解-從Adpter、PrefixTuning到LoRA-AI.x社區(qū)

  • 有監(jiān)督微調(Supervised Finetuning):基于高質量的指令數(shù)據(jù)(用戶輸入的提示詞 + 對應的理想輸出結果)微調LLM,從而得到有監(jiān)督微調模型(SFT模型)。SFT模型將具備初步的指令理解能力和上下文理解能力(預訓練得到的LLM在指令微調的過程中被引導如何使用其學到的知識)進一步基于結果有排序指令樣本,
  • 獎勵建模(Reward Modeling):獎勵階段試圖構建一個文本質量對比模型(相當于一個Critor)。對同一個提示詞,它將對SFT模型給出的多個不同輸出的質量做排序。獎勵模型可通過二分類模型,對輸入的兩個結果之間的優(yōu)劣進行判斷。
  • 強化學習(Reinforcement Learning):強化學習階段將根據(jù)給定的提示詞樣本數(shù)據(jù),利用在前一階段訓練的獎勵模型,給出SFT模型對用戶提示詞補全結果的質量評估,并與語言模型建模目標綜合得到更好的效果。強化學習微調將在SFT模型基礎上,它將使LLM生成的結果文本能獲得更高的獎勵。


除了預訓練,增量預訓練、有監(jiān)督微調、有監(jiān)督微調、獎勵建模、強化學習階段都可以采用PEFT方式。

LLM高效微調詳解-從Adpter、PrefixTuning到LoRA-AI.x社區(qū)

本文轉自 AI生成未來 ,作者:LeonYi


原文鏈接:??https://mp.weixin.qq.com/s/Wax2GZCAgfk_oosgkCWvzA??

收藏
回復
舉報
回復
相關推薦