微調入門篇-大模型微調的理論學習

2024年2月6日 19点热度 0人点赞

1、為什麼大模型微調

之前在《大模型這塊蛋糕,想吃嗎》介紹了普通人如何搭上大模型這塊列車, 其中有一個就是模型微調,這個也是未來很多IT公司需要發力的方向,以及在《垂直領域大模型的應用更親民》中論述了為什麼微調適合大傢,以及微調有什麼價值? 作為小程序猿在開始進行微調實操之前,我們先了解一下微調大模型有什麼方法和技術嗎?

2、大模型微調的方式

(1)全量微調(Full Fine-tuning):這個其實算不上微調,算是全新訓練,但是大部分微調框架都支持這種方式需要較大的計算資源和時間,但可以獲得更好的性能.

(2)增加額外參數

(3)選取一部分參數調優

(4)引入重參數優化

3、大模型微調的技術

由上面微調的方式的道路,引發的微調技術也是很多的

(1)《BitFit: BitFit: Simple Parameter-efficient Fine-tuning or Transformer-based Masked Language-models》訓練時隻更新bias的參數或者部分bias參數

(2)《Prefix Tuning: Prefix-Tuning: Optimizing Continuous Prompts for Generation》在輸入token之前構造一段任務相關的virtual tokens作為Prefix,然後訓練的時候隻更新Prefix部分的參數,而PLM中的其他部分參數固定。

(3)《Prompt Tuning: The Power of Scale for Parameter-Efficient Prompt Tuning》 該方法可以看作是Prefix Tuning的簡化版本,它給每個任務定義了自己的Prompt,然後拼接到數據上作為輸入,但隻在輸入層加入prompt tokens,並且不需要加入 MLP 進行調整來解決難訓練的問題。

(4)《P-Tuning: GPT Understands, Too 》該方法將Prompt轉換為可以學習的Embedding層,並用MLP LSTM的方式來對Prompt Embedding進行一層處理。相比Prefix Tuning,P-Tuning加入的可微的virtual token,但僅限於輸入層,沒有在每一層都加;另外,virtual token的位置也不一定是前綴,插入的位置是可選的。這裡的出發點實際是把傳統人工設計模版中的真實token替換成可微的virtual token

(5)《P-Tuning v2: P-Tuning v2: Prompt Tuning Can Be Comparable to Fine-tuning Universally Across Scales and Tasks》該方法在每一層都加入了Prompts tokens作為輸入,而不是僅僅加在輸入層

(6)《Adapter Tuning :Parameter-Efficient Transfer Learning for NLP》,該方法設計了Adapter結構,並將其嵌入Transformer的結構裡面,針對每一個Transformer層,增加了兩個Adapter結構(分別是多頭註意力的投影之後和第二個feed-forward層之後),在訓練時,固定住原來預訓練模型的參數不變,隻對新增的 Adapter 結構和 Layer Norm 層進行微調,從而保證了訓練的高效性。

(7)《LoRA: LOW-RANK ADAPTATION OF LARGE LANGUAGE MODELS》,該方法的核心思想就是通過低秩分解來模擬參數的改變量,從而以極小的參數量來實現大模型的間接訓練.

........

小結:

(1)增加額外參數,如:Prefix Tuning、Prompt Tuning、Adapter Tuning及其變體。

(2)選取一部分參數更新,如:BitFit。

(3)引入重參數化,如:LoRA、AdaLoRA、QLoRA。

(4)混合高效微調,如:MAM Adapter、UniPELT

那怎麼選擇微調技術呢?

(1)總的來說,像P-Tuning v2、LoRA等都是綜合評估很不錯的高效微調技術。如果顯存資源有限可以考慮QLoRA;如果隻是解決一些簡單任務場景,可以考慮P-Tuning、Prompt Tuning也行。

(2)Prompt Tuning、Prefix Tuning、LoRA等少部分微調技術針對不同參數規模的模型進行過評估,同時,這幾種方式也是目前應用比較多的高效微調方法.

4、微調框架

要參考論文實現那些技術嗎?當然不用,現在開源的能力越來越強,所以計算機發展越來越快,根本學不過來:

(1)DeepSpeed Chat : 微軟開源,提供了一鍵式RLHF訓練框架,獎勵模型微調和基於人類反饋的強化學習(RLHF),此外還實現了DeepSpeed HE,統一的高效混合引擎,達到訓練和推理引擎之間的過渡是無縫的。

(2)PEFT:PEFT 是 Huggingface 開源的一個參數高效微調庫,它提供了最新的參數高效微調技術,並且可以與 Transformers 和 Accelerate 進行無縫集成。

小結:

一般來說現在大傢基本選擇peft框架進行微調.

5、PEFT框架支持微調技術

不同任務下支持模型和技術都有所差別:

PERF支持微調技術有:

(1)LoRA

(2)Prefix Tuning

(3)P-Tuning

(4)Prompt Tuning

(5)AdaLoRA:Adaptive Budget Allocation for Parameter-Efficient Fine-Tuning

(6)IA3:Infused Adapter by Inhibiting and Amplifying Inner Activations

..... 還在新增

6、當前高效微調技術存在的一些問題

(1)缺乏模型大小的考慮

(2)缺乏測量基準和評價標準

(3)代碼實現可讀性差

7、總結

立一下flag,鼓勵自己學下去,了解完微調技術和微調框架,接下來就是實踐微調