對應原題(Common ‧ Fine-Tuning, Post-Training and Alignment)
- What is distillation, and how do you build a strong small model from a large one? — Asked at: Alibaba
原始論文:Hinton, Vinyals & Dean, Distilling the Knowledge in a Neural Network (2015)。
🎯 什麼情境該想到我
當你「有一個好用但太貴的大模型,想換成便宜的小模型而不掉太多品質」的時候。
★ 這是 服務棧選型與降本 裡「降本 5–10×」的那個槓桿,也是今天大多數開源小模型真正的來源。
⚙️ 怎麼用
經典形式:為什麼 soft target 比 hard label 好
核心概念是「暗知識」(dark knowledge):
Hard label(one-hot): 貓 = 1.0 狗 = 0 車 = 0
Teacher 的 soft target: 貓 = 0.90 狗 = 0.08 車 = 0.001
▲ ▲
「有點像狗」 「完全不像車」
★ 這些非目標類別的相對機率
含有 one-hot 標籤沒有的資訊
teacher 不只告訴 student 答案,還告訴它「這題有多接近其他答案」。
這等於免費提供了類別之間的結構關係——一個 hard label 完全丟失的訊號。
溫度 用來放大暗知識:
越大分布越平,小機率的差異越明顯(見 取樣與解碼策略)。
損失函數:
★ 那個 常被問:軟化分布會讓梯度的量級縮小約 ,乘回 是為了讓 soft loss 與 hard loss 的梯度量級可比,這樣改 時不用重調 和學習率。
LLM 時代的三種蒸餾
| 類型 | 需要什麼 | 資訊量 | 實務可行性 |
|---|---|---|---|
| ① Logit / 分布蒸餾(白盒) | teacher 的完整 logits;同 tokenizer、同詞表 | 最高 | ❌ 只有自己有 teacher 權重時可行 |
| ② ★ 序列級 / 黑盒蒸餾 | teacher 的輸出文字 | 中 | ✅ 只需要 API——這是實務主流 |
| ③ 推理鏈蒸餾 | teacher 的完整推理過程 | 高 | ✅ 只需要 API,且效果顯著 |
① 白盒蒸餾的一個細節值得知道——前向 KL vs 反向 KL:
| 行為 | |
|---|---|
| 前向 KL | Mode-covering:逼 student 把機率質量鋪到 teacher 所有的模式上,包括它容量不足以學會的那些 → 結果是到處都學一點、哪裡都不精 |
| 反向 KL | Mode-seeking:讓 student 專注在它學得會的那些模式上 |
當 student 容量遠小於 teacher 時,反向 KL 通常更好(MiniLLM 等工作的核心主張)。
這是「小模型不該假裝自己是大模型」的數學版本。
② 黑盒蒸餾就是:用 teacher 生成大量(輸入 → 輸出)配對,student 拿去做 SFT。
大量開源指令模型都是這樣來的。簡單、有效、只需要 API。
③ 推理鏈蒸餾:teacher 產生完整的思考過程,student 學「推理 + 答案」而不只是答案。
DeepSeek-R1 的蒸餾系列就是這條路——用 R1 產生的長推理資料去 SFT 小模型,讓不具備 RL 訓練資源的小模型也獲得可觀的推理能力(見 GRPO 與 RLVR)。
這說明推理能力有相當一部分是可以用資料搬運的。
★ 怎麼建一個強的小模型(題目的實作部分)
| # | 步驟 | 關鍵 |
|---|---|---|
| 1 | ★ 先收窄任務範圍 | 蒸餾在窄任務上效果最好。想要一個「什麼都會的小模型」基本上會失望——容量就是容量 |
| 2 | ★ 用你真實的輸入分布生成資料 | 不要用公開資料集。用你線上真實的 query 分布讓 teacher 生成——這是黑盒蒸餾勝負的關鍵 |
| 3 | 品質過濾(拒絕採樣) | teacher 生 個候選,用 verifier/RM/規則挑最好的。teacher 也會犯錯,不要照單全收 |
| 4 | ★ 針對 student 的錯誤補資料 | 找出 student 做錯的樣本 → 讓 teacher 示範 → 加進訓練集。on-policy 蒸餾,效果遠勝盲目擴量 |
| 5 | 蒸推理過程,不只蒸答案 | 即使最終產品不輸出推理,訓練時學推理過程也會提升答案品質 |
| 6 | 對照 teacher 評估,量 gap | 指標是「相對 teacher 的保留率」,不是絕對分數。並且要在真實分布上量 |
| 7 | 必要時配 PEFT | student 本身也可以用 LoRA 微調(見 LoRA 與 QLoRA) |
和其他壓縮手段的關係
| 手段 | 改變什麼 | 保留能力 |
|---|---|---|
| 量化 | 只改數值精度,架構與參數量不變 | 高(見 量化 Quantization) |
| 剪枝 | 移除部分權重/結構 | 中,通常要再微調 |
| ★ 蒸餾 | 換成一個更小的新模型 | 看任務範圍——窄任務可以接近 teacher,通用任務差距明顯 |
實務上常疊加:蒸餾出小模型 → 再量化 → 再上推論優化。三者的效益是相乘的。
⚠️ 注意 / 什麼時候不適用
- ★ 授權問題是真實的商業風險。多數商用 LLM API 的服務條款禁止用其輸出訓練競爭模型。
→ 用 API 輸出做蒸餾之前,先讀 ToS。 這是面試時提出來會加分的實務考量,也是真的會出事的地方。 - student 的天花板受容量限制。蒸餾搬運的是「行為」,不是「能力上限」。1B 的模型不會因為蒸餾就具備 70B 的推理深度。
- 會完整繼承 teacher 的錯誤與偏誤,而且 student 沒有能力察覺。teacher 錯的地方,student 會學得很紮實。
- 分布外表現更差。student 只學了 teacher 在那些資料上的行為,沒見過的分布上退化比 teacher 嚴重得多。
- ★ 資料生成成本不低。要生成幾十萬筆高品質樣本,teacher 的 API 帳單可能很可觀。先算這筆帳,並用 前綴快取 Prompt Caching 與批次 API 壓成本。
- 白盒蒸餾需要同 tokenizer。跨家族(Llama teacher → Qwen student)無法做 logit 對齊,只能走黑盒。
- 不要只用 benchmark 驗收。蒸餾模型很容易在公開基準上看起來不錯、在真實流量上明顯差——一定要用自己的評估集(見 工具-AI系統評估)。
🧪 我實際套用的紀錄
- 2026-09-20:從面試題庫展開,尚未實際套用。
🔗 相關
- GRPO 與 RLVR —— 推理能力的來源,以及怎麼蒸給小模型
- 量化 Quantization —— 另一條壓縮路線,常疊加
- 推測解碼 Speculative Decoding —— draft 模型常用蒸餾產生
- Scaling Laws 與 Chinchilla —— 小模型 + 超量資料的另一條路
- 服務棧選型與降本 —— 降本槓桿第 7 項
- 災難性遺忘 —— 自我蒸餾是緩解手段
- 取樣與解碼策略 —— 溫度在兩處的不同用途