VIP 專屬 模型微調 實戰

蒸餾:用大模型教出可上線的小模型

把大模型的能力壓縮進小模型,是降低推論成本最有效的手段之一。

模型微調教程封面

蒸餾的商業價值很直接:如果一個 8B 模型能在你的特定任務上達到 70B 模型九成五的表現,推論成本可能降到十分之一。

關鍵在於「特定任務」四個字。蒸餾不會產生通用能力相當的小模型,它是把大模型在某個窄領域的行為複製過來。

三種蒸餾方式

  • 回應蒸餾:用大模型產生輸出,當作小模型的訓練標籤。最簡單,也最常用。
  • 推理鏈蒸餾:讓大模型輸出推理過程,小模型學習整個推理再給答案。對需要多步推理的任務效果較好。
  • 機率分布蒸餾:讓小模型擬合大模型的 token 機率分布。效果最好但需要能取得 logits,多數 API 不提供。

回應蒸餾的實作流程

# 1. 收集真實輸入(不需要標註)
inputs = load_prod_inputs(n=5000)

# 2. 用大模型產生標籤(溫度 0,確保一致)
labels = [teacher.complete(PROMPT.format(x=x), temperature=0) for x in inputs]

# 3. 過濾:只留下通過驗證的樣本
pairs = [(x, y) for x, y in zip(inputs, labels)
         if format_valid(y) and rules_ok(y)]

# 4. 用 pairs 微調小模型
print(f'保留 {len(pairs)}/{len(inputs)} 筆({len(pairs)/len(inputs):.0%})')

第三步的過濾是品質關鍵。老師模型也會出錯,直接把錯誤標籤訓進學生模型,等於把錯誤固化。

提升標籤品質的兩個技巧

  1. 多次取樣取共識:同一個輸入用老師模型跑三次,只保留三次一致的樣本。不一致的丟棄或送人工。
  2. 用驗證器過濾:能程式驗證的部分(格式、加總、引用)一律驗證,不通過就丟。

推理鏈蒸餾的注意事項

# 訓練標籤同時包含推理與答案
{"role": "assistant", "content":
  "<think>訂單金額 1200 超過免運門檻 1000,但配送地為離島,"
  "依規定離島不適用免運。</think>\n"
  "{\"eligible\": false, \"reason\": \"離島不適用\"}"}

推理鏈會增加輸出長度,也就增加推論成本。要評估「推理帶來的準確率提升」是否值得多出來的 token。很多任務的答案是:不值得。

評測:與老師比,也與基準比

  • 學生模型 vs 老師模型:達到幾成表現。
  • 學生模型 vs 未蒸餾的同尺寸模型加少樣本:有沒有真的變好。
  • 成本對照:實際的每次呼叫成本差距。
  • 通用能力回歸:學生模型在其他任務上是否退化。

授權問題

使用商業模型的輸出訓練競爭模型,可能違反服務條款。用於自用的內部任務通常沒問題,但若要商業散布蒸餾出來的模型,務必先確認老師模型的授權條款。
蒸餾資料是可累積的資產。從第一天就把(輸入、通過驗證的輸出)存起來,一年後你會有一份高品質且完全貼合真實分布的資料集。
🔒

訂閱後繼續閱讀全文

本篇為訂閱者專屬內容。訂閱後可取得下列權限:

  • 解鎖全部內容權限
  • 閱讀不限篇數
  • 全站移除廣告
月卡
NT$240
開通 30 天
一次付清,開通 30 天
季卡
NT$620
開通 90 天
一次付清,開通 90 天,每天約 NT$7
年卡
NT$2,160
開通 365 天
一次付清,開通 365 天,每天約 NT$6

一次性付款,付款成功後立即開通,到期自動結束,不會再次扣款,也不需要取消訂閱。

立即訂閱

金額均為新臺幣(TWD),即實際扣款金額,不另收手續費
支援信用卡 · Apple Pay · Google Pay · WebATM · ATM 轉帳
購買須知與退款政策

延伸閱讀

更多模型微調 →