搜尋意圖: 如果你在找「監督式微調 是什麼」或「監督式微調 和相近概念差在哪」,先看這頁的短定義、完整說明與延伸比較。
TL;DR: 使用人工標注的高品質示範資料,對預訓練語言模型進行有監督訓練以使其遵循指令的技術。
實用情境: 適合用在閱讀 AI 文章、產品文件或和同事討論時,先用一頁快速對齊概念。
下一步: 先讀完定義,再往下看延伸比較與對應工具,把概念轉成實際應用。
使用人工標注的高品質示範資料,對預訓練語言模型進行有監督訓練以使其遵循指令的技術。
監督式微調(Supervised Fine-Tuning,SFT)在大型語言模型的訓練管線中扮演承上啟下的關鍵角色:承接預訓練(pre-training)建立的語言能力基礎,啟動後續對齊(alignment)訓練的起點。
預訓練 vs. 微調的分工
預訓練語言模型(base model / pretrained model)在海量文字語料上學習了語言的結構與世界知識,但其訓練目標(預測下一個詞元)使其本質上是個「文字補全機器」,並不擅長遵循指令或進行有意義的對話。
舉例:若向 base model 提問「台灣的首都是哪裡?」,模型可能繼續補全「台灣的首都是哪裡?台灣的首都是哪裡?日本的首都是...」,因為它只是在模仿訓練語料的分布,不會「理解」這是個需要回答的問題。SFT 的目的,就是讓模型學會「問題-答案」這種結構化的交互模式。
SFT 資料的形式
SFT 資料通常是指令-回應對(instruction-response pairs),格式如:
- 指令(Instruction):使用者的問題或任務描述
- 輸入(Input,可選):任務的具體輸入內容
- 輸出(Output):高品質的期望回應
代表性的公開 SFT 資料集包含 Alpaca(Stanford,5.2 萬條)、FLAN 系列、ShareGPT(真實使用者對話)、OpenAssistant 等。
訓練過程
SFT 的訓練目標與預訓練相同,都是最小化交叉熵損失(cross-entropy loss),但有兩個重要差異:
- 訓練只對「回應」部分計算損失,對「指令」部分的損失通常被遮罩掉(masked),確保模型只學習如何生成高品質回應,而不是學習重複指令。
- 資料量遠小於預訓練(數千到數十萬條 vs. 數十億詞元),訓練輪次(epoch)也較少。
SFT 的主要效果
- 指令遵循(Instruction Following):模型學會根據使用者指令完成特定任務。
- 格式化輸出:模型學會以清晰、結構化的方式回應。
- 安全行為基礎:部分 SFT 資料包含安全示範(如拒絕有害請求),建立初步的安全行為。
- 對話格式適應:模型適應特定的對話模板(如 ChatML、Alpaca 格式)。
資料品質 vs. 資料數量的取捨 研究表明,SFT 的效果高度依賴資料品質而非單純的數量。Alpaca 論文最初使用 5.2 萬條 ChatGPT 生成的資料,後續研究(如 LIMA 論文)發現只需 1000 條精心挑選的高品質示範,即可達到相當的對話能力。過多低品質資料反而可能損害模型表現,因此現代 SFT 管線通常會包含嚴格的資料過濾與品質評估步驟。
參數高效微調(PEFT)
全量微調(full fine-tuning)需要更新所有模型參數,對於 70B 以上的大型模型,算力成本極高。參數高效微調(Parameter-Efficient Fine-Tuning,PEFT)方法只更新少量參數:
- LoRA(Low-Rank Adaptation):在模型的注意力層旁插入低秩矩陣,只訓練這些插入的矩陣,可在消費級 GPU 上微調數十億參數的模型。
- QLoRA:結合量化(quantization)與 LoRA,進一步降低顯存需求。
- Adapter:在 Transformer 層之間插入小型 adapter 網路。
SFT 在完整訓練管線中的位置 現代 LLM 訓練管線通常依序包含:
- 預訓練(Pre-training):大規模語料學習語言能力
- SFT:高品質示範資料學習指令遵循
- RLHF 或 RLVR:進一步對齊人類偏好或強化推理能力
SFT 是步驟 2,為步驟 3 提供一個已具備基本指令遵循能力的起始模型(稱為 SFT model 或 policy model)。部分研究(如 DeepSeek-R1-Zero)探索了跳過 SFT 直接從 base model 進行 RL 訓練,但通常訓練不穩定,最終效果不及先 SFT 再 RL 的管線。
常見問題
SFT 和一般的機器學習微調(fine-tuning)有什麼不同?
廣義上兩者都是「在預訓練模型基礎上用特定資料繼續訓練」,但在 LLM 語境中,SFT 特指使用指令-回應對格式的有監督訓練,目的是讓模型學會指令遵循。一般的微調(如 BERT 用於分類任務)通常是在預訓練 encoder 後面加分類頭,針對特定任務進行有監督學習。SFT 在 LLM 後訓練中的特殊之處在於:訓練資料格式、損失遮罩策略(只對回應計算損失)、以及與 RLHF/RLVR 的搭配關係,使其成為一個相對專門的概念。
SFT 資料需要多少才夠?
沒有絕對的數量門檻,品質遠比數量重要。LIMA 論文(2023)的研究結論是「1000 條精心策劃的高品質示範就能顯著提升對話能力」,挑戰了「SFT 需要海量資料」的直覺。實務上,數千到數萬條高品質示範通常足以建立基本的指令遵循能力;若要涵蓋特定領域知識或複雜推理任務,需要更多針對性資料。過多低品質資料(如批次生成但未經過濾的合成資料)反而可能引入錯誤格式或知識,降低模型品質。
在沒有大量 GPU 的情況下,個人或小團隊能做 SFT 嗎?
可以,LoRA 和 QLoRA 大幅降低了 SFT 的算力門檻。以 7B 參數的模型為例,使用 QLoRA(4-bit 量化 + LoRA)在單張消費級 GPU(如 RTX 3090/4090)上即可完成 SFT。工具鏈方面,Axolotl、LLaMA-Factory、Unsloth 等開源框架提供了友善的 SFT 訓練介面,降低了工程門檻。主要限制是訓練速度(資料量大時需要較長時間)和模型規模(70B 以上的全量微調仍需多卡環境)。Hugging Face 的 TRL 函式庫也提供了完整的 SFT 訓練器(SFTTrainer)。