如果數據量很大,建議先跑一輪 增量預訓練 (Continual Pre-training) 讓模型「看過」這些字,再進行 指令微調 (SFT) 讓模型「學會回答」相關問題。
準備讓模型吸收專業知識,在 2x RTX 5090 的硬體基礎下,最專業的做法是分為兩個階段:增量預訓練(Continual Pre-training) 負責讓模型「看過並記住」知識,指令微調(SFT) 負責讓模型「學會用人類的方式回答」這些知識。
以下是針對這兩階段的切換配置與實作建議:第一階段:增量預訓練 (Continual Pre-training)
✏️ 目標: 讓模型內化專業術語、邏輯與事實。
- 數據格式: 純文本(如專業文章、手冊、代碼)。
- 學習率: 極低(例如 $5 \times 10^{-6}$),避免破壞模型原有的基礎常識。
- 核心配置:
- DeepSpeed ZeRO-2/3: 必須開啟。因為這階段通常需要處理長文本(Context Window),ZeRO 能分攤顯存壓力。
- Liger Kernel: 強烈建議開啟。它能優化 CrossEntropyLoss,在處理大量新專業詞彙時,能顯著降低顯存峰值。
- Flash Attention 3: 必開。確保 5090 在處理 8k 或 16k 窗口時保持極速。全參數訓練: 如果數據量超過 500MB,建議嘗試全參數訓練,效果遠好於 LoRA。
第二階段:指令微調 (Supervised Fine-tuning, SFT)
✏️ 目標: 訓練模型如何根據第一階段學到的知識來回答問題。
- 數據格式: 問答對(QA pairs,例如「根據文獻 A,XX 操作的步驟為何?」)。
- 學習率: 稍高(例如 $2 \times 10^{-5}$)。
- 核心配置:
- LoRA (Rank=64/128): 為了節省資源並保持靈活性,這階段常用 LoRA。
- NEFTune: 建議開啟(在 SFTTrainer 中加入 neftune_noise_alpha)。這能對輸入 Embedding 加入雜訊,防止模型過擬合到特定的問答樣版中。
- Packing: 將多個短 QA 拼接在一起訓練,避免 5090 在處理短文本時頻繁空轉。
5090 雙卡切換配置表 (Cheatsheet)

實作小技巧:如何判斷模型學進去了?
👍 在兩張 5090 跑訓練時,請觀察 Perplexity (PPL):
- 第一階段: PPL 應該平穩下降。如果下降太快,可能是過擬合;如果不降,說明學習率太低。
- 驗證: 訓練完第一階段後,你可以用
base_model直接補全一段專業術語。如果它能接出正確的專有名詞,代表知識已經注入。

















