漫畫趣解:一口氣搞懂模型蒸餾!

最近,伴隨著DeepSeek的火爆,「模型蒸餾」這個專業名詞,也頻繁出現在大眾視野。
什麼是模型蒸餾呢?
“模型蒸餾”就是把大模型學到的本領,用“濃縮”的方式教給小模型的過程,在保證一定精度的同時,大幅降低運算成本和硬體要求。
大模型:像一位見多識廣、知識儲備龐大的“大教授”,無所不知,但是“供養”他很貴。
不僅培養他的過程很耗時耗力(訓練成本高),請他過來講課成本也很高,要有很大一筆安家費(部署模型的硬體基礎設施,甚至資料中心),還要支付超高的課時費(推理成本高)。
小模型:

相當於一枚小學生,知識面非常有限,但是勝在沒教授那麼大譜,給個板凳坐著就夠了(部署成本低,推理成本低)。
小模型想要擁有跟大模型完全一樣的能力是不現實的,畢竟一分錢一分貨。
但是我們可以讓大模型教小模型一些基本的解題思路,讓學生和老師一樣思考問題。

教授會100種解題思路,挑兩三種不錯的教給小學生,讓小學生照葫蘆畫瓢。

這個解題思路轉移的過程,其實就是模型蒸餾

以DeepSeek釋出的六個蒸餾模型為例,滿血版671B引數量的DeepSeek R1就是“教授模型

而教授模型針對不同尺寸的

學生模型

進行知識蒸餾,這些學生模型包括↓

看,前幾天讓大家本地安裝的那些模型,其實就是從DeepSeek R1這個老師蒸餾得到的,每個學生都從老師身上學到了些“三腳貓”功夫。
因為學生模型的初始資質不同,所以得到的蒸餾模型能力也不同。
總之,腦容量越大(權重數/引數量),能力就越強,就越接近老師的水平。
那麼,模型蒸餾具體是怎麼幹的呢?
簡單說,就是老師做一遍,學生跟著學。
但針對每個輸入的問題,老師不會直接給出確定答案,而是給出解題思路(俗稱軟標籤)。
比如,輸入一張貓的照片給老師模型,老師不會直接給出答案:

這是貓,而是給出一組機率分佈,告訴學生,這張圖可能是什麼。

老師這麼幹,就是為了讓學生具備舉一反三、觸類旁通的能力,用機率分佈來對應各種類別的相似程度。
如果只告訴學生這是貓,學生就不知道它和老虎有多少差別。透過這種有機率分佈的軟標籤,學生就知道了老師是如何判斷、如何區分。
接下來,需要建立小模型的學習標準(綜合損失函式)。
老師雖然NB,但小模型在學習的時候,並不會完全照搬老師的思路。
它會結合自己原有資料集中的硬標籤(貓就是貓、狗就是狗),再參考老師的答案,最終給出自己的判斷。
所以,學生模型既要參考“教授給的學習筆記”(軟標籤),又要結合“媽媽給的判斷”(原有監督學習中的硬標籤)。
實操中,用“蒸餾損失”來衡量學生模型與教授模型輸出結果的差異。用“真實監督損失”來衡量學生模型對基本是非問題的判斷。
然後,再設定一個平衡係數(α)來調節這兩種損失,達到一個最優效果。
說白了,學生模型要儘量模仿教授模型的行為,蒸餾損失越小越好,但是又不能學傻了,基本的是非問題都答不對。
標準確定後,就可以進入正式的蒸餾訓練了。
把同一批訓練樣本分別輸入到學生模型和教授模型;
根據硬標籤和軟標籤,對比結果,結合權重,得到學生模型最終的損失值;
對學生模型進行引數更新,以得到更小的損失值。
不斷重複這個過程,就相當於反覆刷題,每刷一輪,就找找學生答案和老師答案的差距,及時糾正。
經過多輪以後,學生的知識就會越來越紮實。
最終,蒸餾得到的小模型,儘量複製大模型的智慧,同時保持自己身輕如燕的優勢。
這樣,學生模型就可以作為課代表,獨立帶班,不需要教授坐鎮了。
擴充套件閱讀
一、關於不同的蒸餾路線
前面講的這種模型蒸餾,只是最常見、最通用的一種方式,叫做知識蒸餾,也叫輸出層蒸餾
相當於老師直接告訴你最後的答案,學生只需要抄作業,模仿老師的答案就行。
這種方式操作起來最簡單,即便教師模型不開源,你拿不到教師模型,只要能呼叫他的API,看到老師的知識輸出,就可以模仿他,蒸餾出自己的小模型。
所以,有些模型比如GPT4,是明確宣告不允許知識蒸餾的,但只要你能被呼叫,就沒法避免別人偷師。
坊間傳聞,業界大模型廠商之間,都存在互相蒸餾的操作,正所謂“互相模仿、共同進步”

除了輸出層蒸餾,還有中間層蒸餾(也叫特徵層蒸餾),不僅學到最終判斷的結論,還學習老師對影像/文字的內部理解,更深入地繼承老師的“知識結構”。
相當於學生不光看老師的最終答案,還要看老師的解題過程或中間步驟,從而更全面地學到思考方法。
但這種蒸餾方案,操作難度較高,通常需要教師模型允許,甚至主動配合,適用定製化的專案合作。
不過現在也可以透過一些手段來獲取教師模型的

推理軌跡

(Reasoning Traces),比如使用特殊構造的提示詞來誘導老師逐步返回推理,得到推理軌跡。
同時隨著各種推理模型的推出,有些推理模型的API本身就支援返回推理軌跡,比如Google Gemini2.0 Flash,DeepSeek等等。
二、關於蒸餾、微調和RAG
這三種方法,都是最佳化的大模型的手段,但是實現路徑和應用場景不同。
蒸餾:是學生透過模仿老師的解題思路,達到和老師相似的知識水平。
適用於將大模型的能力遷移到小模型上,以適配更低端的算力環境。(比如在企業私有云、個人電腦甚至手機、邊緣終端上)
微調:又叫精調,相當於學生意識到自己某門課有短板,然後自己找參考書惡補了一下,從而補上短板。
適用於特定場景下,用特定資料集對通用模型進行小規模訓練。比如通用基礎模型對醫療不大懂,就用醫療資料集給它開小灶,讓他變身醫療專家模型。
RAG:

直譯過來叫做“檢索增強生成”。相當於這題我不會,但是我有“小抄”,我回答的時候,就看一眼小抄,然後再綜合我腦子裡的已有知識,進行回答。

RAG,不是訓練,不改變大模型的“腦回路”,但可以作為外掛,提升大模型回答問題的精準性。適用於企業自身積累了大量知識庫文件,透過RAG的方式,與大模型關聯。
這樣,大模型在回答問題的時候,會先檢索知識庫,進行精準回答。

三、舉兩個現實的例子
舉個例子,現在特大號公眾號後臺的自動回覆,其實就是騰訊混元大模型,透過RAG的方式,連線了特大號所有的歷史文章,作為知識庫使用。
當你提問的時候,它就會檢索這些歷史文章,然後再回答問題。
再舉個例子,前幾天被熱傳的李飛飛團隊僅花費50美元,就訓練出一個比肩ChatGPT o1和DeepSeek R1的模型,其實是一種誤讀。
李飛飛團隊的s1模型,其實是基於通義的開源模型Qwen2.5-32B進行的微調,而微調所用的資料集,其中一部分蒸餾自Google Gemini 2.0 Flash Thinking。

所以,這個模型的誕生,是先透過知識蒸餾,從Gemini API獲取推理軌跡和答案,輔助篩選出1000個高質量的資料樣本。

然後,再用這個資料集,對通義Qwen2.5-32B進行微調,最終得到效能表現不錯的s1模型。
這個微調過程,消耗了50美元的算力費用,但這背後,卻是Gemini和Qwen兩大模型無法估量的隱形成本。
這就好比,你“偷了”一位名師解題思路,給了一個學霸看,學霸本來就很NB,現在看完“思路”,變得更NB了。
嚴格來講,Gemini 2.0作為閉源商業模型,雖然支援獲得推理軌跡,但原則上是不允許用作蒸餾的,即便蒸餾出來也不能商用。不過如果僅是發發論文、做做學術研究、博博眼球,倒也無可厚非。
當然,不得不說,李的團隊為我們打開了一種思路:我們可以站在巨人的肩膀上,用四兩撥千斤的方法,去做一些創新。
比如,DeepSeek是MIT開源授權,程式碼和權重全開放,而且允許蒸餾(且支援獲取推理軌跡)。
那麼對於很多中小企業來講,無異於巨大福利,大家可以輕鬆透過蒸餾和微調,獲得自己的專屬模型,還能商用。
GenAI的普惠革命時代,恐怕真的來了。

相關文章