![]()
Mira 的THINKING MACHINES又整了一個大活,開源了一個非常牛逼的的LLM后訓練方法:On-Policy Distillation (在線策略蒸餾)
這是博客文章:
https://thinkingmachines.ai/blog/on-policy-distillation/
![]()
簡單來說在線策略蒸餾巧妙地結合了兩種主流后訓練范式的優點:它既有強化學習等在線策略方法的相關性和可靠性,能夠讓模型從自身的錯誤中學習;又具備監督微調 (SFT) 等離線策略 (Off-policy) 方法的數據效率,通過密集的監督信號加速學習過程
在線策略蒸餾是一種兼具性能與成本效益的強大技術,尤其適用于為小型、專業化的模型賦予前沿能力,例如在數學推理和企業知識個性化等場景中。它通過將一個更強大的教師模型用作過程獎勵模型,在不犧牲訓練穩定性的前提下,極大地提升了訓練效率,并為模型的持續學習和個性化定制開辟了新的可能性
特別值得一提的是THINKING MACHINES這個在線策略蒸餾方法在最新的實踐中使用 自家的Tinker訓練 API,復制了 Qwen3 的結果,即在推理基準上通過在線策略蒸餾實現同等性能,而成本僅為 RL 的一小部分,比如數學推理能力計算成本降低了驚人的 9 到 30 倍。而在線策略蒸餾方法綜合計算效率提高了恐怖的50到100倍
個人感覺這個在線策略蒸餾是解決 RL“通過吸管汲取監督信號,”(由大神karpathy 創造的概念,可以看我之前的文章)的一個潛在方向,感興趣的繼續往下看
以下是詳細解讀
模型的后訓練:在強化學習與監督微調之間的權衡
語言模型,特別是大型語言模型,其強大的專業領域能力并非一蹴而就,而是通過一系列精心設計的訓練階段堆疊而成的。這個過程大致可以分為三個核心階段:
預訓練 (Pre-training): 這是模型學習基礎能力的階段。通過處理海量的文本數據,模型掌握了語言的使用規律、廣泛的推理能力和基礎的世界知識
中訓練 (Mid-training): 這個階段旨在向模型注入特定的領域知識。例如,通過訓練代碼、醫療數據庫或公司內部文檔,讓模型成為特定領域的專家
后訓練 (Post-training): 這是最后也是至關重要的一步,旨在引導模型產生特定的、有用的行為,比如遵循指令、解決數學問題或進行流暢的對話
在后訓練階段,我們通常面臨兩種主要的訓練范式選擇:在線策略 (On-policy) 訓練和離線策略 (Off-policy) 訓練。這兩種方法各有優劣,理解它們的差異是理解在線策略蒸餾價值的關鍵
在線策略訓練 (On-policy training) 的典型代表是強化學習 (Reinforcement learning, RL)。在這種模式下,學生模型自行生成完整的行為序列,稱為 rollout。然后,系統會根據這個序列的最終結果給予一個獎勵。例如,在解決數學問題 What is 5 + (2 x 3)? 時,學生模型可能會生成錯誤的計算過程 5 + 2 is 7, and 7 x 3 is 21。由于最終答案 21 是錯誤的,系統會給予一個零獎勵或負獎勵。這種方法的優點在于,模型直接從自己產生的樣本中學習,能夠更直接地學會避免自己常犯的錯誤。然而,它的主要缺點是獎勵信號極其稀疏。模型只知道最終結果是錯的,但無法得知錯誤究竟出在哪一步:是運算順序錯了,還是算術本身出錯了?這種反饋的稀疏性導致強化學習的效率在許多應用中都非常低下,因為它在每個訓練回合中只能學到固定數量的信息,而與解決問題所需的token數量無關
離線策略訓練 (Off-policy training) 則依賴于一個外部數據源。最常見的形式是監督微調 (Supervised fine-tuning, SFT) 和知識蒸餾 (Distillation)。在這種模式下,我們使用一個強大的、已經驗證過能力的教師模型來生成大量高質量的、帶有正確步驟的示例。學生模型的目標是學習模仿這些教師軌跡。例如,對于同一個數學問題,教師模型會生成正確的步驟 2 x 3 equals 6, add 5 to get 11。學生模型在訓練時,會被鼓勵在每一步都生成與教師模型相同的token。這種方法的優點是提供了密集的監督信號,學生在每一步都能得到明確的指導,學習效率很高。然而,它的核心缺陷在于,學生只在教師模型經常遇到的上下文中學習。一旦學生在實際應用中犯了一個教師從未犯過的早期錯誤,它就會進入一個完全陌生的狀態,導致后續錯誤不斷累積和放大,即復合誤差 (Compounding error)。此外,研究發現,學生模型有時只會模仿教師的風格和自信度,而未必能學到其真正的知識準確性
為了更形象地理解這兩種方法的困境,我們可以用學習下棋來類比:
![]()
在線策略的強化學習 就像自己和自己下棋,沒有任何指導。你只有在整盤棋下完后,通過輸贏這一個信號來學習。雖然反饋直接與你的行為相關,但你很難知道究竟是哪幾步棋導致了最終的勝負
離線策略的蒸餾 就像觀看特級大師的棋局錄像。你看到的是最高水平的棋步,但這些棋步都發生在普通玩家幾乎永遠不會遇到的復雜棋局狀態下。你很難將這些學習應用到自己的實戰中
顯然,我們需要一種方法,既能像在線策略一樣讓模型在自己的棋局中學習,又能像離線策略一樣,在每一步棋后都能得到大師級的密集指導。這,正是在線策略蒸餾 (On-policy distillation) 旨在解決的問題
在線策略蒸餾:結合兩種范式的最佳實踐
在線策略蒸餾的核心思想非常直觀:它將在線策略的自主探索與離線策略的密集監督結合起來,創造了一個“兩全其美”的訓練框架。其工作流程旨在讓學生模型在自己生成的軌跡上學習,但每一步都由一個更強大的教師模型進行細致的評分和指導。
該方法具體的工作流程可以分解為以下幾個步驟,其實現通常基于現有的強化學習腳本:
1.初始化教師客戶端: 首先,我們需要一個高性能的教師模型。這個模型可以是規模更大、能力更強的通用模型,也可以是經過專門訓練的專家模型。在實現上,我們為這個教師模型創建一個獨立的客戶端,它只負責計算概率,而不需要進行反向傳播更新梯度
2.學生模型采樣軌跡: 與標準的強化學習一樣,我們讓學生模型根據給定的提示 (Prompt) 自主生成一系列完整的回答或行為序列 (Rollouts)。在生成過程中,我們會記錄下學生模型在每一步選擇每個token的對數概率(logprobs)
3.教師模型計算獎勵: 這一步是在線策略蒸餾的關鍵。我們將學生模型生成的軌跡,原封不動地交給教師模型。教師模型會對這個軌跡的每一個token進行評估,計算出在相同的上下文下,它自己生成這個token的對數概率。然后,通過學生和教師的對數概率之差,我們可以計算出兩者在每一步的分歧 (Divergence)。
4.使用分歧作為獎勵進行訓練: 我們將這個逐詞計算出的分歧作為獎勵信號,來更新學生模型。具體來說,我們使用負的逆向KL散度 (Negative reverse KL divergence) 作為優勢函數。逆向KL散度 是衡量學生策略分布與教師策略分布差異的指標。當學生模型的行為與教師模型一致時,KL散度為零;當學生模型的選擇與教師模型的期望相差甚遠時,KL散度會變得很大,從而產生一個強烈的負面獎勵(懲罰)。學生模型的目標就是通過訓練,最小化這個KL散度
這種方法使用的損失函數,即逆向KL散度,具有兩個非常優秀的特性:
不可被利用: 在傳統的強化學習中,獎勵模型可能會被利用(Reward hacking),即模型學會用一些投機取巧的方式獲得高分,但并未真正掌握任務。而逆向KL散度直接與教師模型的期望行為掛鉤,低KL散度總是意味著學生的行為更接近教師的期望,不存在被利用的空間
模式尋求: 它會驅使學生模型學習教師模型那種特定的、高質量的行為模式,而不是在多個次優選擇之間搖擺不定,從而使學習過程更加穩定和聚焦。
讓我們通過一個具體的例子來理解這個過程。在一個需要物理常識的數學問題中,學生模型 Qwen3-4B-Instruct-2507 忽略了“冰塊在煎鍋里會融化”這一關鍵物理背景,錯誤地將其當作純數學計算,并得出答案20。教師模型 Qwen3-235B-A22B-Instruct-2507 則能正確理解問題并給出正確答案0。在對學生的錯誤軌跡進行評分時,教師模型會重點懲罰那些引導學生走向錯誤方向的關鍵分叉詞元 (Forking tokens)。例如,當學生開始寫下 Note: The ice cubes are not removed during the process... 這樣的錯誤假設時,這些詞元會獲得非常高的KL散度(即非常大的懲罰)。相比之下,學生在錯誤邏輯下推導出的最終答案20,由于在給定錯誤前提的情況下是可預測的,所以受到的懲罰反而不大。這表明,在線策略蒸餾能夠精準地識別并糾正導致思維鏈走偏的根本原因
總而言之,在線策略蒸餾通過讓教師模型對學生的每一步進行打分,將強化學習中稀疏的、滯后的最終獎勵,轉化為了密集的、即時的過程獎勵。這不僅極大地提升了訓練的計算效率,也讓模型能夠更精確地學習如何從錯誤中恢復,從而克服了傳統離線策略蒸純粹模仿所帶來的復合誤差問題
應用案例一:高效實現數學推理能力的遷移Qwen3-32B -> Qwen3-8B-Base
為了驗證在線策略蒸餾在實際任務中的效果,首先將其應用于訓練模型的數學推理能力。實驗的目標是將一個強大的教師模型 (Qwen3-32B) 的推理能力,高效地遷移到一個較小的學生模型 (Qwen3-8B-Base) 上。實驗使用了數學競賽基準 AIME'24 來衡量模型的性能
所有實驗都從一個共同的起點開始:學生模型首先通過離線策略蒸餾,即在教師模型生成的 OpenThoughts-3 數據集上進行監督微調 (SFT),完成了中訓練。在訓練了40萬個樣本后,學生模型在 AIME'24 上的得分達到了 60%。此時,研究人員們比較了三種不同的后訓練方法,以將模型性能從 60% 提升到 70%
1.繼續離線策略蒸餾 (SFT): 這是最直接的方法。根據已有的訓練數據,性能的提升與訓練樣本數量的對數呈線性關系。通過外推這條曲線,研究人員估計,要達到 70% 的分數,大約需要額外訓練 200 萬個樣本。這是一個非常巨大的計算開銷,并且其前提是性能增長不會提前停滯
2.強化學習:根據 Qwen3 團隊的技術報告,在一個相似的SFT初始化模型之上,通過強化學習將性能提升到 67.6%,花費了 17,920 個 GPU 小時。這個成本與訓練 200 萬個SFT樣本的成本大致相當
3.在線策略蒸餾 :從 60% 的檢查點開始,在線策略蒸餾僅用了大約 150 個訓練步驟就達到了 70% 的目標分數。為了更公平地比較計算成本,將所有操作都轉換為了浮點運算次數 (FLOPs)。結果顯示:
與外推到 200 萬樣本的SFT相比,在線策略蒸餾的計算成本降低了 9 到 30 倍
成本降低的范圍取決于如何計算SFT的教師成本。如果SFT數據集是現成的,只考慮學生的訓練成本,那么成本降低約 9 倍
如果考慮到在實際應用中,SFT數據集也需要由教師模型生成,即將教師模型的采樣成本也計算在內,那么總成本降低可以達到 30 倍
如果從 GPU 小時的角度看,由于教師模型計算對數概率 (log-probs) 的過程可以高效并行化,實際節省的時間成本可能更接近 18 倍
![]()
這個案例有力地證明了在線策略蒸餾在計算效率上的巨大優勢。它用遠低于傳統SFT或RL的成本,實現了同等甚至更好的性能提升。這種效率的來源在于,它摒棄了RL中效率低下的試錯搜索過程,也避免了SFT中因數據分布不匹配而造成的大量冗余訓練。通過讓教師模型直接對學生模型自身產生的、最需要被糾正的行為進行密集指導,每一份計算資源都用在了刀刃上,從而實現了性能的快速飛躍。這對于在有限的計算預算下,訓練出高性能的專用模型具有極其重要的現實意義
應用案例二:在個性化定制中恢復被模型遺忘的行為:Qwen3-8B
在線策略蒸餾的另一個強大應用場景是模型個性化 (Personalization) 與 持續學習 (Continual learning)。在實際應用中,我們常常需要讓一個已經具備通用能力(如遵循指令)的模型,去學習新的、私有的領域知識(如公司內部文檔)。然而,這個過程常常伴隨著一個棘手的問題:災難性遺忘 。即在學習新知識的過程中,模型會逐漸忘記原有的重要能力
研究人員設計了一個實驗來模擬這個場景:目標是創建一個內部企業助理。這個助理需要滿足兩個要求:
1.知識性: 能夠準確回答基于公司內部文檔的問題(通過 internal QA 進行評估)
2.指令遵循: 保持強大的通用對話和指令遵循能力(通過 IF-eval 進行評估)
實驗的起點是一個經過后訓練的 Qwen3-8B 模型,它在 IF-eval 上表現出色(得分 85%),但對內部文檔一無所知(得分 18%)
首先,研究人員嘗試了傳統的中訓練方法 (Mid-training):將內部文檔數據和通用的聊天數據混合起來,對模型進行監督微調 (SFT)。實驗發現:
增加內部文檔的比例可以顯著提升模型的知識水平,當文檔數據占 100% 時,internal QA 得分可以達到 43%
然而,這個過程對指令遵循能力的破壞是巨大的。即使混合了 30% 的聊天數據來試圖維持原有能力,IF-eval 的分數依然會大幅下降。在只用文檔數據訓練時,IF-eval 分數會從 85% 暴跌至 45%
無論數據混合比例如何,只要開始微調,IF-eval 性能就會下降,并且無法完全恢復。即使使用 LoRA 這種旨在限制參數更新范圍的技術,也同樣會面臨知識學得更少、行為忘得一樣多的困境
這表明,通過SFT的方式來注入新知識,很容易破壞模型經過復雜(且昂貴)的RL訓練才獲得的精細行為。此時,在線策略蒸餾展現了其作為能力恢復工具的獨特價值
在模型已經通過微調學習了內部知識(例如,使用 70% 文檔和 30% 聊天數據進行訓練,此時 internal QA 得分為 36%,IF-eval 下降至 79%)之后,研究人員進行了第二階段的訓練:
教師模型:使用訓練開始前的、原始的 Qwen3-8B 模型作為教師
訓練數據:使用通用的指令遵循數據集 Tulu3 的提示 (prompts)
訓練方法:在線策略蒸餾
這個階段的目標非常純粹:讓學生模型重新學習并恢復它被遺忘的指令遵循能力,而教師就是過去的自己。結果非常驚人:
經過在線策略蒸餾后,模型的 IF-eval 分數從 79%恢復到了 83%,幾乎回到了最初的水平
更重要的是,這個恢復過程沒有損害它新學到的知識。internal QA 的分數甚至還略有提升,從 36% 增加到了 41%,這可能是因為恢復聊天能力和更好地理解知識之間存在正向遷移
![]()
這個案例深刻地揭示了在線策略蒸餾在模型生命周期管理中的巨大潛力。我們可以構想一種交替訓練 (Phase-alternating)的模式:首先通過微調注入新的領域知識,然后通過在線策略蒸餾來“喚醒”和恢復模型可能被遺忘的通用能力。這使得模型可以在不回歸基礎性能的前提下,持續不斷地學習和適應新數據,為實現真正的終身學習AI助理提供了一條切實可行的技術路徑
深度解析:在線策略蒸餾為何如此高效
在線策略蒸餾之所以能夠在多個任務中展現出遠超傳統方法的效率,其背后有多重深層原因。它不僅是一種技術上的融合,更在信息論和學習理論層面帶來了根本性的改變。
密集的監督信號極大提升了信息效率
強化學習 (RL) 的信息效率極低。從信息論的角度看,每次RL的訓練回合 (Episode) 無論長短,最終的成功或失敗只能為模型提供大約 O(1) 比特的信息。相比之下,蒸餾是逐詞 (per-token) 進行監督的。如果一個軌跡有 N 個詞元,那么在線策略蒸餾在每個回合中就能提供 O(N) 比特的信息。這意味著在處理長序列任務時,兩者的信息效率差距可以是成百上千倍。對比實驗顯示,從零開始訓練數學能力,在線策略蒸餾達到與RL相同的性能水平,所需的梯度步數少了 7-10 倍,綜合計算效率提升了 50-100 倍。這證明了密集的過程監督 (Process supervision) 相對于稀疏的結果監督 (Outcome supervision) 在學習效率上的壓倒性優勢
高效的數據復用能力
在數據稀缺的場景下,我們希望能夠反復利用已有的訓練數據。然而,用RL在同一個提示 (prompt) 上進行多輪訓練,模型很容易陷入對最終答案的死記硬背,而不是學習通用的解題策略。在線策略蒸餾則不同,它的目標是學習教師模型在每一步的完整概率分布,而不僅僅是最終的那一條成功路徑。這使得我們可以用同一個提示生成大量不同的軌跡,并對它們進行訓練,模型依然能夠學習到穩健的、可泛化的策略。實驗表明,僅使用一個訓練提示,通過多輪次的在線策略蒸餾,學生模型的性能也能達到與使用大量數據訓練的教師模型相近的水平,這展現了其卓越的數據效率
學習的本質:從搜索到直接教學
我們可以將后訓練過程理解為在不同層面的空間中進行搜索。預訓練是在高維的參數空間中進行搜索,尋找一組能夠編碼世界知識的權重,這個過程極其耗費計算資源。而強化學習則可以被看作是在語義策略空間 (Space of semantic strategies)中進行搜索。它通過隨機采樣,不斷“偶然發現”新的、有效的行為策略,然后通過獎勵信號來強化這些策略。這個搜索的過程同樣是昂貴且低效的。
在線策略蒸餾則為這個學習過程提供了一條捷徑。它跳過了漫長的搜索階段。一旦教師模型(通過其自身的訓練或搜索)已經找到了一個優秀的策略,蒸餾就可以像一位老師直接傳授知識一樣,將這個策略高效地“教”給學生模型。我們無需再花費大量計算去復現教師模型曾經走過的所有中間彎路,而可以直接學習最終的、最優的策略
作為持續學習的理想工具
在線策略蒸餾天然適合持續學習任務。傳統的SFT,即使用模型自己生成的樣本進行訓練,也會因為采樣批次的隨機性而導致模型狀態偏離初始分布,隨著時間推移,這種訓練會退化為離線策略訓練,從而引發性能衰退。而在線策略蒸餾中,教師模型是固定不變的。這為學生模型的學習提供了一個穩定的“錨點”或“引力中心”。無論學生模型如何探索,它始終會被拉回到教師模型的行為軌道上,從而保證了學習過程的穩定收斂,避免了在自我學習中出現性能退化的問題。這使得在線策略蒸餾成為在不斷變化的環境中保持模型能力和知識更新的強大工具
參考:
https://thinkingmachines.ai/blog/on-policy-distillation/
https://github.com/thinking-machines-lab/tinker-cookbook/tree/main/tinker_cookbook/recipes/distillation
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.