LLM 基礎模型系列:Fine-Tuning 總覽

文|龐德公

編輯|郭嘉

由於對大型語言模型,人工智能從業者經常被問到這樣的問題:如何訓練自己的數據?回答這個問題遠非易事。生成式人工智能的最新進展是由具有許多參數的大規模模型驅動的,而訓練這樣的模型 LLM 需要昂貴的硬件(即許多具有大量內存的昂貴 GPU)和花哨的訓練技術(例如,完全分片的數據並行訓練)。

幸運的是,這些模型通常分兩個階段進行訓練——預訓練和微調。其中前一個階段(要)昂貴得多。鑑於高質量的預訓練 LLMs 很容易在網上獲得,大多數人工智能從業者可以簡單地下載一個預訓練的模型,並專注於使這個模型(通過微調)適應他們想要的任務。

“就所需的硬件和爲不同任務託管獨立實例的存儲 / 交換成本而言,微調龐大的語言模型的成本高得令人望而卻步。”

模型的大小並沒有在微調過程中改變。因此微調一個 LLM 雖然比預訓練便宜,可是也不是易事,仍然需要訓練技術和硬件來處理這樣的模型。每次微調運行都會創建一個完全獨立的 “副本”。

參數高效微調(PEFT)是微調一種比較好的技術,它不是端到端地訓練完整的模型,而是固定預訓練的模型權重,並且在微調期間僅調整少量特定於任務的參數。這種方法大大減少了內存開銷,簡化了存儲 / 部署過程,並允許使用更易於訪問的硬件進行微調 LLMs。

微調與轉移學習

圖片

首先先來明確兩個概念,微調和轉移學習。轉移學習是將一個通用的預訓練模型應用到全新的但是相關領域的過程。而微調是將通用的預訓練模型進一步的訓練。一般而言,微調是包含轉移學習的。

圖片

上圖展示了預訓練,特徵提取和微調的過程,預訓練就是使用訓練數據直接訓練基礎模型,比較常見的有 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 的技術上面。

PEFT 概覽

最後先來看看 PEFT 的技術分類和全景圖,大致可分爲四類:

圖片

圖片

上圖爲各種算法,都是圍繞着各種主流微調技術的微調方法,比如之前的文章已經介紹過的 LoRA,後續將圍繞這根主線開展學習之旅。

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/e3yds5mCtoIfGt8hpIraKA