iT邦幫忙

2025 iThome 鐵人賽

DAY 9
0
生成式 AI

生成式AI的奇妙旅程:從ChatGPT到個人化應用系列 第 9

Day 9|預訓練與微調(Pre-training and Fine-tuning)

  • 分享至 

  • xImage
  •  

在完成了 Tokenization 和 Embedding,我們已經把語言轉換成了模型能理解的數字形式。
但問題來了:模型要怎麼從這些數字中真正學會語言知識?
答案就是透過Pre-training(預訓練)Fine-tuning(微調)

一、預訓練與微調的基礎概念與核心差異

預訓練(Pre-training)與微調(Fine-tuning)是深度學習中遷移學習的兩個關鍵階段,兩者在目的、數據和訓練方式上存在顯著差異。

核心定義與目標

  • 預訓練(Pre-training): 目的在於在大規模通用數據集(例如 ImageNet 或 Wikipedia 文本)上訓練模型,讓模型學習通用特徵,例如圖像的邊緣、紋理,或語言的語法、語義與常識。這一步類似於**「打基礎」**。
    • 在自然語言處理(NLP)領域,預訓練語言模型(PLM,如 BERT、GPT)的目標是預先學會「語言的常識」,這開啟了「先學語言,再學任務」的黃金時代。
  • 微調(Fine-tuning): 在預訓練模型的基礎上,使用特定領域的小規模數據繼續訓練,目標是讓模型适配具體任務,提升任務性能,屬於**「專業化訓練」**。

數據與資源對比

維度 預訓練(Pre-training) 微調(Fine-tuning)
數據 規模龐大、通用性高(數十億文本/數百萬圖像) 規模小(幾百到幾千樣本)、領域特定、高度相關
訓練起點 通常從隨機初始化開始 基於預訓練模型權重
計算資源 高(需要 GPU 集群,數天/週) 低(單卡,幾小時/天),訓練時間短

訓練方式

在微調階段,可以選擇凍結部分層(固定底層通用特徵,僅訓練頂層)或全參數微調(調整所有參數,但使用較低的學習率以避免破壞已有知識)。


二、高效微調的革命性技術:LoRA(低秩適應)

LoRA (Low-Rank Adaptation) 是一種參數效率微調(PEFT)技術,旨在加速大型模型的微調並減少記憶體消耗。

LoRA 的運作原理

  1. 低秩分解(Low-Rank Decomposition): LoRA 使用兩個較小的矩陣($A$ 和 $B$)通過低秩分解來表示原始權重矩陣 ($\mathbf{W}$) 的更新量 ($\Delta \mathbf{W}$),即 $\Delta \mathbf{W} = \mathbf{B}\mathbf{A}$。
  2. 凍結權重: 原始的大型權重矩陣保持凍結,不參與訓練。
  3. 訓練適配器: 只有新引入的這兩個低秩矩陣($A$ 和 $B$,即適配器權重)被訓練以適應新數據。
  4. 結合結果: 訓練完成後,原始權重與適配器權重($A$ 和 $B$)結合以獲得最終結果。

LoRA 的主要優勢

  • 大幅減少可訓練參數數量
  • 訓練速度更快,且計算和儲存成本更低。
  • 允許為不同任務創建多個輕量化且可移植的模型(即只儲存 $A$ 和 $B$)。
  • 在推論時,適配器權重可以合併到基礎模型中,不會增加額外的推論延遲
  • 相較於完全微調的模型,可達到相近或甚至更好的性能。

關鍵參數配置

在使用 LoraConfig 進行配置時,以下參數至關重要:

  • r (Rank):更新矩陣的秩。秩越低,可訓練參數越少。通常建議盡可能增加秩,目標可以設定為 64 或 128
  • target_modules:指定將 LoRA 應用於模型中的哪些模組(例如,Transformer 模型中的注意力區塊)。
  • lora_alpha:LoRA 縮放因子。
  • use_rslora:啟用 Rank-Stabilized LoRA,它使用 $\text{lora_alpha}/\sqrt{r}$ 進行縮放,這有助於高秩(high-rank)的有效性。

三、結合模型壓縮:參數效率微調(PEFT)與量化微調

大型語言模型(LLM)即使使用 PEFT,其內建模型大小仍是記憶體上的挑戰。量化(Quantization) 技術通過減少表示每個權重所需的位元數來壓縮原始網路,以緩解 GPU 記憶體使用。

PEFT 的困境與量化需求

PEFT 旨在減少訓練期間的記憶體使用。然而,傳統的量化方法通常專注於部署(如 PTQ,訓練後量化),無法在微調期間減少 GPU 記憶體;而訓練感知量化(QAT)則會更新所有參數,失去了參數效率特性。因此,需要將 PEFT 與量化結合。

結合量化的進階 PEFT 技術

  1. QLoRA (Efficient Finetuning of Quantized LLMs):

    • 這是一種在量化(例如 4-bit)的 LLM 上執行 LoRA 微調的技術。
    • 它引入了 Normal Float 4-bit (NF4) 數據類型,這被認為在資訊理論上對於常態分佈的權重是最佳的。
    • 使用雙重量化(Double Quantization) 來進一步壓縮量化常數。
    • 利用 Paged Optimizers(分頁優化器)管理 CPU-GPU 記憶體,為優化器狀態分配分頁記憶體,當 GPU 記憶體耗盡時,資料會自動轉移到 CPU RAM。
  2. PEQA (Parameter-Efficient and Quant-aware Adaptation):

    • PEQA 直接對量化後的參數進行微調,不依賴於先前 PEFT 模組
    • 它將全精度權重矩陣量化為子 4-bit 整數矩陣一個純量向量,並只針對這個純量向量進行微調,以適應特定任務。
    • PEQA 在減少模型大小(Model Size)和可學習參數數量方面表現出色。
  3. QA-LoRA (Quantization-Aware Low-Rank Adaptation):

    • 旨在解決 QLoRA 在低位元數(bit)下微調後,量化特性難以維持的問題。
    • QA-LoRA 將 NF4 量化替換為 INT4 量化,並調整了適配器 $A$ 矩陣的結構,目的是在微調後仍能保持量化屬性。

四、微調流程中的參數與數據最佳化策略

尋找最佳微調參數是一個迭代的過程

超參數(Hyperparameter)調整策略

  1. 一次只變動一個參數: 這是測試結果並確保能準確複製訓練過程的關鍵方法。
  2. 遵循既有經驗: 從社群中已知的成功參數或設定開始嘗試。
  3. 調整幅度:
    • 對於學習率(Learning Rate):嘗試將其乘以 3 倍或除以 3 倍。
    • 對於 Batch Size(批次大小):嘗試將其乘以 2 倍或除以 2 倍。
  4. 學習率排程: 至少嘗試兩種不同的學習率排程策略。
  5. 文件化與再現性: 務必仔細記錄每次實驗的所有細節、配置檔案和特定的數據集版本,以確保未來能夠精確重現訓練(reproduce)。
  6. 自動化工具: 可以使用像 WandB 的 SweepsOptuna 等工具來進行超參數搜尋。其中,Optuna 的設計被認為在計算資源的使用上是高效的。

數據集大小與參數的關係(LoRA 實踐)

  • 提升效果的關鍵: 幾乎所有的模型改進都來自於改善數據
  • 小型數據集(SFT < 5000 樣本): 為限制過度擬合(overfitting),應使用較大的批次大小(Batch Size)、較高的 Epoch 數,以及中等的學習率。
    • 例如,對於 500 個樣本的訓練,可以使用 Batch Size 64,Epoch 30。
  • 大型數據集: 應採用較低的學習率,以避免陷入局部最小值。

輸出控制參數

在推論(inference)階段,一些參數可以控制生成結果的品質。例如,有人發現設定 Top P (0.95)、Min P (0.05-0.5)、動態 Temperature (0.8/2.35 閾值) 和 Smoothing (0.23) 之外,其他參數並未帶來可靠且顯著的差異。


五、從應用場景看學習策略的選擇

在應用大型語言模型(LLM)時,可以選擇零樣本學習、少樣本學習或微調,三者代表了不同的資源投入和性能策略。

學習策略比較

策略 定義 範例 (提取航司名稱) 案例結果 (準確率)
零樣本 (Zero-shot) 在提示中不提供任何範例,依賴模型已具備的通用推理能力。 僅提供清晰且結構化的指令。 19% (作為基準線)
少樣本 (Few-shot) 在提示中提供幾個具體的任務範例 在指令前加入數條 TWEET: LABEL: 的訓練樣本。 97%
微調 (Fine-tuning) 使用訓練數據集對現有的模型進行再訓練,並儲存更新後的權重。 使用與少樣本學習相同的控制數據集進行訓練。 91% 或 97% (結果與少樣本接近)

少樣本學習與微調的取捨

少樣本學習和微調在特定任務(如實體提取)中可以產生相似的結果。選擇哪種方式取決於規模經濟(Economies of Scale):

  • 如果團隊需要執行提示 10 萬次,那麼花費在微調上的時間和計算成本(GPU 或 Token 成本)是合理的,因為可以累積節省大量的提示 Token 費用並潛在提高輸出品質。
  • 如果只需要使用提示幾次且已經有效,則沒有理由進行微調。

數據品質的重要性

在少樣本學習中,數據的品質和變異性比單純的數據數量更為關鍵。如果能策劃一個具有足夠變異性的少樣本數據集(例如 100 筆),使其足以代表更大的數據集(例如 900 筆),則可以在成本和工程上取得最佳效果。


六、對「預訓練與微調」典範的重新思考與挑戰

儘管「預訓練與微調」在深度學習領域確立了主流地位,但有研究開始挑戰這一典範,特別是在計算資源和數據規模不斷增長的背景下。

挑戰一:ImageNet 預訓練並非總是必需 (電腦視覺)

在物體偵測(Object Detection)和實例分割(Instance Segmentation)等電腦視覺任務中,傳統上 ImageNet 預訓練被視為必要步驟。然而,有研究發現:

  1. 收斂速度 vs. 最終精度: ImageNet 預訓練確實能加快訓練初期的收斂速度
  2. 「從零開始」的可行性: 只要使用適當的正規化技術(如 Group Normalization, GNSynchronized Batch Normalization, SyncBN),並訓練足夠長的時間(以彌補缺乏預訓練的基礎特徵學習),從隨機初始化開始訓練的模型,其最終精度可以媲美甚至超越微調模型。
  3. 弱化效果: 當目標任務對空間定位敏感度更高(如高 IoU 閾值的偵測或關鍵點偵測)時,預訓練帶來的優勢會減弱
  4. 結論: ImageNet 預訓練是歷史上在目標數據不足或計算資源不夠時的「權宜之計」。如果目標數據集足夠大(例如 COCO 數據集大於 10k 圖像),直接在目標數據上訓練是值得考慮的有效解決方案。

挑戰二:模型架構與任務類型的匹配 (自然語言處理)

  • BERT 的優勢: BERT (Transformer Encoder 架構) 透過 Masked LM (MLM) 訓練,具有雙向理解能力。這使其在自然語言理解 (NLU) 任務(如問答、分類)中表現優異。
  • BERT 的局限: 由於其編碼器架構,BERT 不太適合自然語言生成 (NLG) 任務(如文章摘要、翻譯)。這類任務更常使用像 GPT (自回歸 LM) 或 T5 (Text-to-Text) 等擅長序列生成的模型。

結語

預訓練與微調讓大型語言模型能在龐大知識的基礎上,快速適應各種專業任務。
預訓練打下了通用的「語言常識」基礎,微調則讓模型在特定場景中發揮出精準的能力。這一套流程,奠定了近年 AI 成果爆發的核心。

然而,光靠預訓練與微調仍有一個限制:模型雖然聰明,但不一定「貼近人類偏好」
因此,研究者提出了 RLHF(Reinforcement Learning with Human Feedback),讓人類回饋成為模型學習的「最後一哩路」。
下一篇我們就要探討 RLHF 在大型語言模型中的角色,以及它如何讓 AI 更加符合人類價值與需求。


上一篇
Day 8|大型語言模型的語言基石:Tokenization 與 Embedding
系列文
生成式AI的奇妙旅程:從ChatGPT到個人化應用9
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言