蒸餾是怎麼做的:從老師到學生
上一節講了為什麼要把模型做小。這一節看具體怎麼做。整個過程比想像中樸素:讓老師去答題,把答題過程記下來,拿這批材料去訓練學生。難點不在流程,在細節。
準備問題集
收集覆蓋目標領域的問題。問題可以人工整理,也可以讓模型自己生成。這一步決定了學生模型能力的上限:沒被問到的領域,學生就學不到。
教師模型作答,保留完整推理過程
關鍵在「完整」兩個字。只保留最終答案,學生學到的是背結論;保留中間的推理鏈條,學生才有機會學到怎麼想。這也是推理類模型特別適合當老師的原因,它們本來就會把思考過程寫出來。
取出概率分佈,而不只是最終答案
模型每輸出一個詞,內部其實是一整張候選詞的概率表。只取排第一的那個會丟掉大量信息,把整張表留下來,傳遞的信息量完全不同。下一段展開講。
用這批材料訓練學生模型
訓練數據由三部分組成:原始問題、教師的完整回答、以及每一步的概率分佈。學生模型的目標是讓自己的輸出分佈儘量貼近老師的。
評估並迭代
在測試集上看學生跟老師差多遠,再回頭調整問題集的覆蓋面和訓練配置。通常要來回好幾輪。
假設有一道圖片分類題,正確答案是貓。傳統訓練的做法是告訴模型:貓對,其他全錯。蒸餾的做法是把老師的判斷原樣交給學生。
實際操作時還有一個小技巧。老師如果太自信,概率分佈會非常尖鋭,比如 98% / 1% / 1%,這跟硬標籤就沒多大區別了,軟標籤的優勢體現不出來。
做法是在計算概率時除以一個數 T,也就是温度係數。T 越大分佈越平緩,詞與詞之間的相對關係就越明顯。這跟Harness 核心篇講過的 Temperature 是同一個機制,只是用途不同:那裏是為了讓輸出多樣,這裏是為了讓信息更充分地傳給學生。
這一段是本節最難憑空想像的地方,直接拖給你看。下面是老師看一張貓的圖片時給出的判斷,你來調 T。
光講流程比較抽象。看一個公開的例子:DeepSeek 在 2025 年 1 月發佈 R1 時,同時開源了六個蒸餾版模型,都是用 R1 生成的推理數據訓練出來的。
這個清單裏有一處值得留意的細節:學生模型的底座不是自家的,是從別人開源的模型裏挑的。六個裏四個選了 Qwen2.5,兩個選了 Llama3。
為什麼這麼挑,官方沒有解釋。但可以反推出幾個條件:底座必須權重開放且許可允許再訓練,否則做出來不能發佈;尺寸譜系要足夠全,才能一次覆蓋從 1.5B 到 70B 的多個檔位;社區工具鏈要成熟,訓練和部署才不用重造輪子。這三條同時滿足的選項當時並不多。
DeepSeek 公佈的評測裏,32B 的蒸餾版在數學和程式碼幾項基準上超過了 OpenAI o1-mini,官方稱其在同期稠密模型中達到新的最好成績。
到這裏,蒸餾的好處講得差不多了:便宜、快、能本地跑。下一節講代價。學生學的是老師的全部,包括老師的毛病。