JOVANA
Explore Library Glossary Getting Started Three Levels Fields How it works Mission
Join the mission
All guides

蒸餾、合併,與選對你的配方

把大模型壓縮成小模型、把多個微調折成單一檢查點,並把整個系列收攏成一個你站得住腳的決策。

蒸餾:用大模型教小模型

蒸餾(distillation)把一個昂貴而能幹的「老師」模型,變成一個便宜又快速、模仿老師的「學生」。在最常見的大型語言模型版本裡,你只是讓老師對許多提示生成高品質回應,再拿這些回應去微調學生——老師成了你的資料工廠。更精緻的變體則訓練學生去匹配老師對「下一個 token」的完整機率分布,這比單一選定的字詞傳遞了更多細微差異。

\mathcal{L}_{\text{KD}} = (1-\alpha)\,\mathrm{CE}(y,\, p_s) \;+\; \alpha\,T^{2}\,\mathrm{KL}\!\left(p_t^{T}\,\big\|\,p_s^{T}\right),\qquad p^{T}=\mathrm{softmax}(z/T)

蒸餾損失:學生在擬合真實標籤的同時,匹配教師經溫度 T 軟化後的機率分佈。

# Distillation by imitation (the common LLM recipe)
for prompt in many_prompts:
    answer = teacher.generate(prompt)   # strong, expensive model
    dataset.add(prompt, answer)
student = sft(small_base_model, dataset)  # cheap to run afterward
老師寫出教材,學生學著用低成本把它重現。

模型合併:平均權重,而非重新訓練

模型合併(model merging)是個令人意外的把戲:拿兩個或更多從「同一個基礎」微調出來的模型,直接把它們的權重結合——通常只是加權平均——就能得到一個同時繼承各家長處的單一模型,完全不需要額外訓練。一個擅長寫程式的模型,和一個擅長多語對話的模型,有時能合併成一個兩者兼擅的模型。

\theta_{\text{merge}} = \sum_{i} \lambda_i\,\theta_i,\qquad \sum_{i} \lambda_i = 1

模型合併一行公式:對源自同一基座的多個微調模型的權重做加權平均。

選擇你的配方

你現在握有整套工具。在它們之間做選擇,主要是把方法對上你面對的「那一種」差距——當你需要不只一種時,再用正確的順序把它們疊起來。

  1. 格式或風格差距 → 監督式/指令微調,幾乎總是透過 PEFT
  2. 缺少耐久的領域知識 → 持續預訓練,再用 SFT 找回聽指令的能力。
  3. 缺少快速變動的事實 → 別微調;改用檢索(RAG)。
  4. 需要更小/更便宜 → 把一個強模型蒸餾成一個小模型。
  5. 手上有好幾個不錯的微調 → 在花錢重訓一個合體模型之前,先試試合併。

評估,否則你只是在猜

上面每一種方法都可能在一小撮精挑細選的範例上「看起來」變好,卻在別處悄悄退步。對微調做評估(evaluating)是不容妥協的:留出一份模型從未訓練過的真實測試集,為目標任務評分,「同時」也跑一套通用評測來抓遺忘。當回應是開放式時,以大型語言模型當評審(LLM-as-judge)能大規模地評分——但要抽查它的判決,對照人類的判斷。

在微調之前先留出未經觸碰的驗證集與測試集——正是這種劃分才能告訴你方法是否真的奏效。

資料被劃分為獨立的訓練集、驗證集與測試集,以進行誠實的留出評估。

用代價換來的忠告

  1. 先把提示與檢索用到極限。微調很強大,但它是建置與維護成本最高的那根槓桿。
  2. 資料品質勝過任何巧妙的方法。一份乾淨、一致、用心整理的資料集,是一個好微調最強的單一預測指標。
  3. 預設用 PEFT 與小的秩;只有當評估說你非得這麼做時,才往上加。
  4. 永遠和原始的基礎模型對照測試——有時誠實的結果是:你根本不需要微調。