Friday, August 7, 2026

模型蒸餾,怎麼操作?(ChatGPT, 2026-8-7)

 模型蒸餾(model distillation)可以先理解成:讓一個較小的 student model,學會模仿一個較大、較強的 teacher model 的行為。

最基本的操作流程是:

  1. 準備一個強的 teacher,例如大型語言模型。
  2. 準備很多輸入 prompts / examples。
  3. 讓 teacher 對這些輸入產生答案,最好不只要最終答案,也保留機率分布、logits、評分或偏好訊號。
  4. 用這些 teacher 產生的資料去訓練較小的 student。
  5. 再用人工資料、真實任務資料和 evaluation set 驗證 student 是否真的學會,而不是只背答案。

最經典的 distillation,不是直接學 teacher 的「硬答案」,而是學它的 soft targets。例如分類模型原本答案可能是:

貓 = 1,狗 = 0。

但 teacher 其實可能輸出:

貓 0.82、狐狸 0.11、狗 0.05、其他 0.02。

這些機率透露了 teacher 對「相似性」的理解。Student 若只學「貓」,損失很多資訊;若學整個機率分布,就比較容易把 teacher 的 decision boundary 一起學過去。

通常會用一個 temperature T 把 logits 軟化:

p_i=\frac{\exp(z_i/T)}{\sum_j\exp(z_j/T)}

T 越高,分布越平,student 越能看到 teacher 對次佳答案的相對偏好。

訓練時常把兩種 loss 混在一起:

L=\alpha L_{\text{hard}}+(1-\alpha)L_{\text{distill}}

其中:

  • L_{\text{hard}}:student 對真實標籤的 loss;
  • L_{\text{distill}}:student 和 teacher 輸出分布之間的差異,常用 KL divergence;
  • \alpha:兩者權重。

對 LLM 而言,現在實務上常見的蒸餾,比早期分類模型更像下面幾種。

第一種:response distillation。
給 teacher 幾十萬到幾百萬個 prompts,讓它產出高品質答案,形成:

prompt → teacher answer

再拿這些資料對 student 做 supervised fine-tuning。

這是最容易理解,也最常見的版本。

第二種:reasoning distillation。
Teacher 不只提供答案,而提供中間推理軌跡、分解步驟或可驗證的 solution trace,再訓練 student 學會這種 problem-solving pattern。實際系統通常會特別處理推理資料品質,因為 teacher 產出的 reasoning 不一定都可靠。

第三種:logit distillation。
如果你真的掌握 teacher 模型本身,而不是只透過 API,就可以直接讓 student 學 teacher 每個 token 的 probability distribution。這比只拿文字答案資訊豐富很多。

第四種:preference distillation。
讓 teacher 對多個 candidate answers 排名,例如 A 比 B 好,再拿這種偏好資料訓練 student。這和 reward modeling、DPO 類方法很接近。

第五種:task-specific distillation。
不要求 student 變成一個縮小版全能 teacher,而只學某一個窄領域:

法律摘要、醫學分類、程式碼、客服、翻譯、數學。

這往往最划算。因為一個 7B 模型若只需做一件事,可能在那個任務上逼近甚至超過一個通用 70B 模型。

一個很簡化的 LLM 蒸餾例子是:

Teacher:70B
Student:7B
準備 100 萬條 prompts
Teacher 生成 100 萬條高品質 responses
清洗錯誤、重複、低品質資料
用這些資料 fine-tune 7B
再用人工標註資料補強
最後測試 MMLU、GSM8K、coding、domain benchmark 等。

但真正困難的地方其實不是「怎麼 train」,而是怎麼挑 teacher data

如果 teacher 產出很多垃圾,student 會把垃圾學得很忠實。這叫 garbage in, garbage out。

所以好的 distillation pipeline 常常還會做:

  • rejection sampling;
  • teacher self-consistency;
  • verifier filtering;
  • difficulty curriculum;
  • 去重;
  • 去掉 hallucination;
  • 保留 hard examples;
  • 混入真人高品質資料。

這也是為什麼模型蒸餾不能簡單理解成「把大模型抄成小模型」。

比較準確的說法是:

把 teacher 的行為分布壓縮進 student。

它壓縮的不只是答案,也包括:

什麼答案比較像對的、
哪些概念彼此相近、
面對不同 prompt 應如何分配注意力、
哪些推理模式值得重複。

所以 distillation 和一般 fine-tuning 最大差異可以這樣看:

Fine-tuning:我用人類資料教你。
Distillation:我讓另一個模型當老師教你。

而且實務上兩者通常混用。

如果再往您前面談中國 AI 的方向說,很多所謂「蒸餾式追趕」的核心優勢就在這裡:不用自己重新付完整 pretraining 的巨大成本,而是利用更強模型已經形成的能力,重新生成訓練資料,再壓進較小模型。

但它也有天花板:

student 很容易逼近 teacher 的表現,
卻不容易靠純模仿真正超越 teacher 的能力邊界。

除非它還加入新的資料、強化學習、搜尋、工具使用或獨立訓練。

如果您願意,我下一步可以直接畫給您看「模型蒸餾 vs 模型山寨 vs fine-tuning vs model stealing」四者的差別;這幾個概念現在非常容易混在一起。