模型如何訓練(以及你為何不會自己做)
你能下載的每個對話模型都走過同樣的三階段流程。你幾乎肯定永遠不會自己跑第一階段——那是資料中心的領地——但二、三階段的便宜表親你可能會跑。了解這些階段能解釋 base 與 instruct 的行為差異、模型為何幻覺,以及 Hugging Face 上的「合併版」模型到底是什麼。
第一階段:預訓練——昂貴的部分
一個目標、難以想像的規模:在數兆 token 的網頁文字、程式碼與書籍上預測下一個 token。知識與技能就是在這裡進入權重,絕大多數算力也是花在這裡。
| 項目 | 大致規模(數量級) |
|---|---|
| 資料 | 現代家族需要 10–30T token |
| 硬體 | 數千 GPU 月;前緣訓練會占住叢集數個月 |
| 成本 | 7B 約 $1M–$10M+;70B 級 $10M–$100M+;前緣訓練據傳遠高於此 |
| 產出 | base 模型——網際網路形狀的自動補全,沒有助理行為 |
產出是一個 base 模型:接續能力一流、當助理則毫無用處。問它問題,它會回答——然後繼續冒出另一個問題、一個清單、一個分頁符號,因為網路上的文字就是這副德性。
第二階段:監督式微調(SFT)
數萬到數百萬筆精心整理的(指令 → 回應)配對,幾個 GPU 天。與預訓練相比是捨入誤差,但它重塑了行為:回答指令、用有用的格式、然後停止。這是把 base 模型變成能對話的模型的階段。
第三階段:偏好調校
- RLHF:人類對回應配對排序;獎勵模型學習這個排序;策略再對著獎勵最佳化(PPO)。經典做法,機制笨重。
- DPO:跳過獎勵模型,直接對偏好配對最佳化。更簡單、穩定,開源圈的最愛。
- 效果:風格、有用程度、拒絕行為、更校準的主張。還有迎合——模型學到大家獎勵同意。
SFT 資料實際上看起來像這樣——普通的指令/回應配對 JSONL,沒什麼稀奇:
{"instruction": "Summarize the changelog in three bullets.", "response": "- Adds ..."}
{"instruction": "답변을 존댓말로 작성하세요.", "response": "네, 알겠습니다 ..."}
幾千到幾百萬筆這種資料、跑幾個 epoch,base 模型就學會了助理格式。
同樣的權重,不同的階段
prompt: "Write a haiku about GPUs."
base (after stage 1):
"Write a haiku about GPUs.
Write a sonnet about CPUs.
1. Choose your topic carefully..." ← 接續文件
instruct (stages 1+2+3):
"A thousand cores wake,
each chasing one quiet token—
fans hold their breath." ← 回答、排版、停止
存放庫字尾告訴你階段:裸名稱=base;-instruct/-it/-chat=已調校(見 參數量)。
再多學一個詞彙:知識截止日——預訓練語料截止收集的日期。問它之後的事,你要麼得到誠實的「我不知道」,要麼更糟,得到自信的虛構;兩者對凍結的權重來說都是正確行為(什麼是 LLM)。
訓練 vs 微調:大約相差 1000 倍
| 預訓練 | LoRA 微調 | |
|---|---|---|
| 資料 | 10^12–10^13 token | 10^6–10^9 token |
| 更新的參數 | 全部 | 不到 1–2%(小型配接器矩陣) |
| 硬體 | 叢集 | 單張 GPU |
| 實際耗時 | 數週到數月 | 數小時到數天 |
| 成本 | $M–$100M+ | 租用 $0–$100 |
| 用途 | 知識+技能 | 風格、格式、窄域行為 |
| 風險 | loss 不穩的訓練、報銷的檢查點 | 對極小資料集過擬合 |
| 失敗模式 | 數月後才發現的無聲資料 bug | 一般技能的災難性遺忘 |
| 可重現嗎 | 很少(資料不公開) | 可以(資料集就在存放庫裡) |
| 資料來源 | 公開網頁、程式碼、書籍、授權檔案 | 你的提示詞與理想答案 |
| 誰做得到 | 資金充裕的實驗室 | 你,這個週末就行 |
微調調整的是旋鈕;它不增加知識。教 7B 學你公司的語氣:LoRA,一個晚上。教它你那 5 萬份內部文件:那是檢索,不是訓練(RAG、微調)。
微調能做與不能做什麼,讓你瞄準正確的目標:
- 能:輸出格式、語氣、術語、拒絕風格、工具呼叫語法、可靠地完成窄域任務。
- 能:把某個窄域任務從大模型蒸餾到小模型。
- (可靠地)不能:加入新事實、修好弱推理、延長知識截止日、讓小模型變大。
- 原則:問題若是「不知道」,用檢索;若是「不聽話」,用微調。
檢查點、合併版,以及你下載的東西
- 訓練過程會存檢查點;正式發布的通常是最終 instruct 階段的權重——你拿到的是成品助理,不是打造它的過程。
- 「合併版」是把同一個 base 模型的多個微調做平均或內插(model soups)。沒有訓練發生;它是權重算術,結果常落在親代之間。在 Hugging Face 上流行、便宜、偶爾極優。
- 來歷不明意味授權不明:合併版會繼承每個親代的條款(開放權重 vs 封閉 API)。
- 對話模型背後的 base 權重有時也會發布——只有接續式工作負載或微調基底才需要拿它。
- 為什麼開源發布停在最終階段:預訓練資料與中間檢查點是昂貴的競爭資產;成品權重只是展示品。
- 社群 instruct 模型共用後訓練配方與資料集,這就是為什麼那麼多模型感覺可以互換:同樣的 base、同樣的二/三階段劇本。
- 優先選模型卡有列資料與階段的發布;有文件紀錄的最終檢查點比炒作的更耐久。
相關章節: 微調 · RAG · 開放權重 vs 封閉 API · 參數量