---
title: "監督式微調（SFT (Supervised Fine-Tuning)）"
slug: sft-supervised-fine-tuning
language: zh-TW
source: https://aiterms.tw/learning/what-is-sft-supervised-fine-tuning
updated_at: 2026-06-22
tags: [後訓練, 指令遵循, LoRA, 對齊, 大型語言模型]
ipas_term: false
type: deep-dive
---

# 監督式微調 是什麼？

> 使用人工標注的高品質示範資料，對預訓練語言模型進行有監督訓練以使其遵循指令的技術。

監督式微調（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），但有兩個重要差異：
1. 訓練只對「回應」部分計算損失，對「指令」部分的損失通常被遮罩掉（masked），確保模型只學習如何生成高品質回應，而不是學習重複指令。
2. 資料量遠小於預訓練（數千到數十萬條 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 訓練管線通常依序包含：
1. 預訓練（Pre-training）：大規模語料學習語言能力
2. SFT：高品質示範資料學習指令遵循
3. 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）。

---

深度解說頁：https://aiterms.tw/learning/what-is-sft-supervised-fine-tuning
快查頁：https://aiterms.tw/terms/sft-supervised-fine-tuning
最後更新：2026/06/22