LLM基礎模型系列:Fine-Tuning總覽 原創
由于對大型語言模型,人工智能從業者經常被問到這樣的問題:如何訓練自己的數據?回答這個問題遠非易事。生成式人工智能的最新進展是由具有許多參數的大規模模型驅動的,而訓練這樣的模型LLM需要昂貴的硬件(即許多具有大量內存的昂貴GPU)和花哨的訓練技術(例如,完全分片的數據并行訓練)。
幸運的是,這些模型通常分兩個階段進行訓練——預訓練和微調。其中前一個階段(要)昂貴得多。鑒于高質量的預訓練LLMs很容易在網上獲得,大多數人工智能從業者可以簡單地下載一個預訓練的模型,并專注于使這個模型(通過微調)適應他們想要的任務。
“就所需的硬件和為不同任務托管獨立實例的存儲/交換成本而言,微調龐大的語言模型的成本高得令人望而卻步?!?/p>
模型的大小并沒有在微調過程中改變。因此微調一個LLM雖然比預訓練便宜,可是也不是易事,仍然需要訓練技術和硬件來處理這樣的模型。每次微調運行都會創建一個完全獨立的“副本”。
參數高效微調(PEFT)是微調一種比較好的技術,它不是端到端地訓練完整的模型,而是固定預訓練的模型權重,并且在微調期間僅調整少量特定于任務的參數。這種方法大大減少了內存開銷,簡化了存儲/部署過程,并允許使用更易于訪問的硬件進行微調LLMs。
1.微調與轉移學習
首先先來明確兩個概念,微調和轉移學習。轉移學習是將一個通用的預訓練模型應用到全新的但是相關領域的過程。而微調是將通用的預訓練模型進一步的訓練。一般而言,微調是包含轉移學習的。
上圖展示了預訓練,特征提取和微調的過程,預訓練就是使用訓練數據直接訓練基礎模型,比較常見的有T5,BloombergGPT,GPT-4。特征提取一般是利用基礎模型進行內容的Embedding,然后在另接其他的模型進行預測,例如Bert。微調是利用訓練數據訓練完基礎模型,然后采用微調技術(例如更新部分參數,更新所有層或者額外添加層)進行二次訓練。
微調和Prompt Engineering(通過提示詞優化結果,基礎模型的參數是凍結的,經常在論文中會用雪花圖標標識)不同,它重新精校模型參數的數值。若是全部精校所有的參數,讀者需要大量的計算資源。
上圖為2018年的一篇論文的插圖,有三幅圖片分別代表著:a為預訓練,b為全量參數微調,c為分類器微調。
Instruction-tuned就是全量微調中的一種,FLAN在基礎模型上面,通過指令調整(在通過指令描述的數據集集合上微調語言模型)可以顯著提高未見任務的零樣本性能。它采用 137B參數預訓練語言模型,并在通過自然語言指令模板表達的60多個NLP數據集上對其進行指令調整。
FLAN 顯著提高了其未修改版本的性能,并在評估的25個數據集中的20個數據集上超越了零樣本175B GPT-3。FLAN 甚至在 ANLI、RTE、BoolQ、AI2-ARC、OpenbookQA和StoryCloze上的表現遠遠優于少樣本 GPT-3。消融研究表明,微調數據集的數量、模型規模和自然語言指令是指令調整成功的關鍵。大白話而言,它將這些數據集根據不同的模版構建不同的指令訓練樣本,然后再次訓練模型:
全量微調是美味的,但是若沒有太多的計算資源,那么存在兩種方法可以在有限的資源下將模型調教得較為服帖。一 種是X-shot Prompt,這點在介紹Dspy的時候說過了。另外一種是高效參數微調(微調部分參數),簡稱PEFT(Parameter-efficient fine tuning)。本系列還是會將重點放在PEFT的技術上面。
2.PEFT概覽
最后先來看看PEFT的技術分類和全景圖,大致可分為四類:
- Additive PEFT:通過注入新的可訓練模塊或參數來修改模型架構;Selective PEFT:使選擇部分的參數子集在微調期間可訓練,其余的凍結;
- Reparameterization PEFT:將原來的參數重新結構化,比如用低軼矩陣重新表示以進行訓練,然后等效地將其轉換推理。
- Hybrid PEFT,它結合了不同PEFT方法的優點,建立了一個統一的PEFT模型。
上圖為各種算法,都是圍繞著各種主流微調技術的微調方法,比如之前的文章已經介紹過的LoRA,后續將圍繞這根主線開展學習之旅。
本文轉載自 ??魯班模錘??,作者: 龐德公
