業(yè)內(nèi)首次! 全面復(fù)現(xiàn)DeepSeek-R1-Zero 數(shù)學(xué)、代碼能力,訓(xùn)練步數(shù)僅需R1-Zero 1/10
?OpenAI 的 o1 系列和 DeepSeek-R1 的成功充分證明,大規(guī)模強(qiáng)化學(xué)習(xí)已成為一種極為有效的方法,能夠激發(fā)大型語(yǔ)言模型(LLM) 的復(fù)雜推理行為并顯著提升其能力。
然而,這些推理模型的核心訓(xùn)練方法在其技術(shù)報(bào)告中仍然鮮有披露。近期社區(qū)的主要工作也僅局限于數(shù)學(xué)推理領(lǐng)域,使得跨領(lǐng)域泛化這一挑戰(zhàn)依然未得到充分探索。此外,GRPO 訓(xùn)練過(guò)程中存在多項(xiàng)常見(jiàn)問(wèn)題,如性能瓶頸、樣本利用效率低下,以及在處理混合領(lǐng)域數(shù)據(jù)集時(shí)難以培養(yǎng)專(zhuān)業(yè)推理技能等,這些挑戰(zhàn)使得強(qiáng)化學(xué)習(xí)方法的有效擴(kuò)展變得更加復(fù)雜。
針對(duì)這些挑戰(zhàn),快手 Kwaipilot 團(tuán)隊(duì)提出了一種創(chuàng)新的強(qiáng)化學(xué)習(xí)框架 —— 兩階段歷史重采樣策略優(yōu)化(two-Staged history-Resampling Policy Optimization ,SRPO),旨在從多個(gè)維度系統(tǒng)性地解決上述訓(xùn)練難題。我們對(duì)外發(fā)布了 SRPO 的技術(shù)報(bào)告,詳細(xì)披露了該訓(xùn)練方法的技術(shù)細(xì)節(jié),同時(shí)也開(kāi)源了 SRPO-Qwen-32B 模型。
- 論文標(biāo)題:SRPO: A Cross-Domain Implementation of Large-Scale Reinforcement Learning on LLM
- 論文鏈接:https://arxiv.org/abs/2504.14286
- 模型開(kāi)源地址:https://huggingface.co/Kwaipilot/SRPO-Qwen-32B
這是業(yè)界首個(gè)同時(shí)在數(shù)學(xué)和代碼兩個(gè)領(lǐng)域復(fù)現(xiàn) DeepSeek-R1-Zero 性能的方法。通過(guò)使用與 DeepSeek 相同的基礎(chǔ)模型 (Qwen2.5-32B) 和純粹的強(qiáng)化學(xué)習(xí)訓(xùn)練,SRPO 成功在 AIME24 和 LiveCodeBench 基準(zhǔn)測(cè)試中取得了優(yōu)異成績(jī)(AIME24 = 50、LiveCodeBench = 41.6),超越了 DeepSeek-R1-Zero-32B 的表現(xiàn)。更值得注意的是,SRPO 僅需 R1-Zero 十分之一的訓(xùn)練步數(shù)就達(dá)到了這一水平。
SRPO AIME24 和 LiveCodeBench 表現(xiàn),每項(xiàng)為 pass@1 的 32 次平均得分
一、方法概覽?
原始 GRPO 實(shí)現(xiàn)的挑戰(zhàn)
在我們最開(kāi)始的探索中,我們使用過(guò)標(biāo)準(zhǔn)的 GRPO 算法(公式 1)直接進(jìn)行訓(xùn)練:
公式 1:GRPO 優(yōu)化目標(biāo)
然而,在訓(xùn)練過(guò)程中,我們很快遇到了瓶頸,模型始終無(wú)法達(dá)到預(yù)期的 R1-Zero 性能水平。這些問(wèn)題包括:
1. 數(shù)學(xué)與代碼跨領(lǐng)域的優(yōu)化沖突:數(shù)學(xué)問(wèn)題很容易通過(guò)訓(xùn)練誘發(fā)較長(zhǎng)且細(xì)致的推理軌跡(長(zhǎng) CoT),而代碼數(shù)據(jù)這種傾向則弱很多。直接混合這兩種類(lèi)型的數(shù)據(jù)也會(huì)產(chǎn)生沖突,導(dǎo)致模型在兩個(gè)領(lǐng)域中都表現(xiàn)欠佳。
2. 相同的組獎(jiǎng)勵(lì)導(dǎo)致訓(xùn)練效率下降:GRPO 算法依賴(lài)于采樣組內(nèi)非零的獎(jiǎng)勵(lì)方差來(lái)計(jì)算優(yōu)勢(shì)。當(dāng)一個(gè)組的 rollout 產(chǎn)生幾乎相同的獎(jiǎng)勵(lì)值時(shí),計(jì)算得到的優(yōu)勢(shì)會(huì)接近于零。當(dāng)一個(gè)訓(xùn)練 batch 的大部分?jǐn)?shù)據(jù)都表現(xiàn)出這種現(xiàn)象時(shí),有效的梯度貢獻(xiàn)會(huì)變得極小,大幅降低訓(xùn)練效率。
3. 過(guò)早的性能飽和:GRPO 訓(xùn)練在 benchmark 評(píng)測(cè)中較早遇到了性能瓶頸,獎(jiǎng)勵(lì)也遇到飽和平臺(tái)期。這個(gè)問(wèn)題一定程度上源于數(shù)據(jù)集的質(zhì)量不足。當(dāng)訓(xùn)練數(shù)據(jù)缺乏足夠的復(fù)雜性或多樣性,特別是簡(jiǎn)單的問(wèn)題太多,模型會(huì)傾向于保守地維持其在較容易任務(wù)中的性能,難以得到解決挑戰(zhàn)性問(wèn)題所需的復(fù)雜、深入的推理能力。
?
階段訓(xùn)練
為了解決數(shù)學(xué)和代碼之間內(nèi)在的響應(yīng)長(zhǎng)度沖突問(wèn)題,我們最終實(shí)現(xiàn)了一種兩階段訓(xùn)練范式:
Stage 1 (Eliciting Reasoning Abilities):初始訓(xùn)練階段僅專(zhuān)注于具有挑戰(zhàn)性的數(shù)學(xué)數(shù)據(jù)。此階段的目標(biāo)是充分激勵(lì)模型的 test-time scaling,發(fā)展出反思性停頓、回溯行為和逐步分解等多種能力。
Stage 2 (Skill Integration):在此階段,將代碼數(shù)據(jù)引入到訓(xùn)練過(guò)程中。利用在階段 1 中建立的推理基礎(chǔ),進(jìn)一步提升代碼能力,同時(shí)逐步強(qiáng)化程序性思維、遞歸和工具調(diào)用能力。
訓(xùn)練策略的比較分析
不同訓(xùn)練數(shù)據(jù)策略對(duì)響應(yīng)長(zhǎng)度的影響
Mixed Training:在數(shù)學(xué)和代碼混合數(shù)據(jù)上訓(xùn)練的混合訓(xùn)練模型,在響應(yīng)長(zhǎng)度的增長(zhǎng)方面表現(xiàn)出局限性,且基準(zhǔn)測(cè)試性能較差。雖然數(shù)學(xué)問(wèn)題會(huì)引發(fā)一些推理模式,但代碼問(wèn)題經(jīng)常產(chǎn)生簡(jiǎn)短、直接的響應(yīng),主要集中于即時(shí)代碼輸出,而很少進(jìn)行初步分析或規(guī)劃。
Math-Only Training:僅使用數(shù)學(xué)數(shù)據(jù)進(jìn)行訓(xùn)練能夠穩(wěn)定地增加回復(fù)長(zhǎng)度,并在數(shù)學(xué)基準(zhǔn)測(cè)試中表現(xiàn)出色。重要的是,這培養(yǎng)了強(qiáng)大的、能夠很好地泛化的推理能力;當(dāng)面對(duì)編程任務(wù)時(shí),模型會(huì)嘗試詳細(xì)的、逐步的推理。觀察到的行為包括在數(shù)學(xué)問(wèn)題解決過(guò)程中細(xì)致的步驟檢查和重新審視。這反映了數(shù)學(xué)數(shù)據(jù)激發(fā)推理能力的特征。
Code-Only Training:盡管在代碼基準(zhǔn)測(cè)試中的表現(xiàn)有所提高,但顯式推理行為的發(fā)展甚微,并且實(shí)現(xiàn)響應(yīng)長(zhǎng)度的顯著增加被證明是困難的。與純數(shù)學(xué)訓(xùn)練相比,對(duì)代碼和數(shù)學(xué)問(wèn)題的響應(yīng)都明顯較短,代碼任務(wù)的解決方案通常是直接生成的,缺乏實(shí)質(zhì)性的逐步推理或初步分析。
Staged Training: 我們所提出的兩階段訓(xùn)練在數(shù)學(xué)和編程領(lǐng)域均表現(xiàn)出優(yōu)異的結(jié)果。該模型在解決數(shù)學(xué)問(wèn)題時(shí)始終如一地生成詳細(xì)的逐步推理模式,并在處理編程任務(wù)時(shí)生成結(jié)構(gòu)化的推理模式。特別地,涌現(xiàn)出一些復(fù)雜的行為,例如模型自發(fā)地利用寫(xiě)代碼來(lái)輔助數(shù)學(xué)推理。對(duì)這些響應(yīng)模式的更詳細(xì)分析將在后文中介紹。
History Resampling
我們發(fā)現(xiàn)在訓(xùn)練的中后期階段,batch 中近 50% 的采樣組產(chǎn)生相同的獎(jiǎng)勵(lì)。這種情況通常發(fā)生在模型在較容易的問(wèn)題上持續(xù)成功時(shí),導(dǎo)致獎(jiǎng)勵(lì)的方差極小,梯度更新效果不佳。
在訓(xùn)練期間 batch 內(nèi)近 50% 的優(yōu)勢(shì)函數(shù)值為零(藍(lán)色線)
為了解決這種低效性并提高梯度信號(hào)的質(zhì)量,我們引入了歷史重采樣(History Resampling)。在訓(xùn)練過(guò)程中,我們記錄每個(gè) epoch 內(nèi)所有 rollout 獎(jiǎng)勵(lì)的結(jié)果。在一個(gè) epoch 結(jié)束時(shí),我們按如下方式重建下一個(gè) epoch 的數(shù)據(jù)集:
1. 過(guò)濾過(guò)于簡(jiǎn)單的樣本:排除所有 rollout 都得到正確答案的樣本,它們實(shí)際上沒(méi)有為策略改進(jìn)提供任何信息信號(hào)。
2. 保留信息樣本:保留結(jié)果多樣(既有正確又有不正確)或結(jié)果全部不正確的樣本。這些樣本生成正向獎(jiǎng)勵(lì)方差,確保優(yōu)勢(shì)非零及梯度信號(hào)有效。此外,對(duì)于當(dāng)前 epoch 中所有展開(kāi)都不正確的困難樣本,快手 Kwaipilot 團(tuán)隊(duì)也將其保留在數(shù)據(jù)集中。理由是,這些最初具有挑戰(zhàn)性的一些問(wèn)題,對(duì)于更新后的策略而言可能會(huì)變得相對(duì)容易,從而在后續(xù)的訓(xùn)練中產(chǎn)生有效梯度。這種策略的根本思想與課程學(xué)習(xí)相一致,即逐步將模型暴露于平均而言更具挑戰(zhàn)性的樣本,以提高訓(xùn)練效率。
Training statistics of History Resampling
與 DAPO 中提出的 Dynamic Sampling 方法相比,History Resampling 顯著提高了計(jì)算效率,響應(yīng)長(zhǎng)度增長(zhǎng)也更加穩(wěn)定。
數(shù)據(jù)
我們對(duì)社區(qū)開(kāi)源的 Code&Math 數(shù)據(jù)進(jìn)行了數(shù)據(jù)清洗和篩選,通過(guò)啟發(fā)式規(guī)則對(duì)原始數(shù)據(jù)進(jìn)行過(guò)濾,清理題目文本中無(wú)關(guān)的 URL、格式噪聲等,確保核心字段(問(wèn)題和答案真值)完整。參考 PRIME 對(duì)數(shù)學(xué)數(shù)據(jù)的清洗方法,剔除一題多問(wèn)、純證明題、需要圖像或表格理解的題目。針對(duì)代碼數(shù)據(jù),剔除依賴(lài)特定環(huán)境、需要文件 IO 或網(wǎng)絡(luò)交互的題目,專(zhuān)注于算法邏輯。
在數(shù)據(jù)入庫(kù)前,對(duì)數(shù)學(xué)和代碼題目進(jìn)行正確性校驗(yàn),確保答案的正確性和可解性,剔除答案錯(cuò)誤或存在歧義的題目;然后判斷題目難度,結(jié)合通過(guò)率(Pass@k)將題目細(xì)分為簡(jiǎn)單、中等、困難三個(gè)等級(jí)。
數(shù)據(jù)清洗過(guò)程
獎(jiǎng)勵(lì)設(shè)計(jì)
為了緩解由獎(jiǎng)勵(lì)模型引起的 hacking 問(wèn)題,我們使用類(lèi)似 Deepseek R1 的基于規(guī)則的獎(jiǎng)勵(lì)系統(tǒng)設(shè)計(jì),將最終獎(jiǎng)勵(lì)分為格式獎(jiǎng)勵(lì)和準(zhǔn)確性獎(jiǎng)勵(lì)。對(duì)于格式獎(jiǎng)勵(lì)??????????????,我們要求模型的最終答案嚴(yán)格遵循 "answer" 格式。遵守格式可獲得 0.2 的獎(jiǎng)勵(lì)。此外,模型響應(yīng)中出現(xiàn)的任何代碼轉(zhuǎn)換或混合使用多種語(yǔ)言的情況都將導(dǎo)致懲罰項(xiàng):??????????????mix = -0.1。
對(duì)于準(zhǔn)確性獎(jiǎng)勵(lì),我們分別評(píng)估數(shù)學(xué)和編碼任務(wù)。在數(shù)學(xué)任務(wù)中,我們使用數(shù)學(xué)驗(yàn)證工具來(lái)驗(yàn)證正確性。如果答案完全正確且等價(jià),我們給予滿分 1 分。在答案部分正確的情況下(例如,模型在多項(xiàng)選擇題中僅選擇一個(gè)正確選項(xiàng)),我們給予部分分?jǐn)?shù) 0.2 分。完全錯(cuò)誤的答案得 0 分。獎(jiǎng)勵(lì) R 是格式獎(jiǎng)勵(lì)、準(zhǔn)確率獎(jiǎng)勵(lì)和負(fù)面懲罰的組合結(jié)果:
二、實(shí)驗(yàn)結(jié)果
本節(jié)詳細(xì)介紹使用 SRPO 方法的實(shí)驗(yàn)設(shè)置與實(shí)驗(yàn)結(jié)果。包括訓(xùn)練配置和關(guān)鍵超參數(shù),以及相應(yīng)的優(yōu)化方法。我們重點(diǎn)觀測(cè)了訓(xùn)練過(guò)程中獎(jiǎng)勵(lì)的變化情況以及響應(yīng)長(zhǎng)度等指標(biāo)。
實(shí)驗(yàn)設(shè)置
我們使用 Qwen-2.5-Base-32B 作為初始檢查點(diǎn),并使用 AdamW 優(yōu)化器(β = [0.9, 0.95]) 以 1e-6 的恒定學(xué)習(xí)率進(jìn)行訓(xùn)練,沒(méi)有設(shè)置權(quán)重衰減。我們使用 vLLM 作為 rollout 推理框架,每步采樣 256 個(gè) prompt,每個(gè) prompt 采樣個(gè) 32 個(gè) rollout,小批量大小為 8,192 個(gè),用于 on-policy RL 訓(xùn)練。第 1 階段訓(xùn)練運(yùn)行 840 個(gè)步驟,然后是第 2 階段。在每個(gè) epoch 之后,通過(guò) History Resampling 實(shí)現(xiàn)動(dòng)態(tài)采樣。
具體來(lái)說(shuō),我們應(yīng)用了 token-level loss,并將超過(guò)最大響應(yīng)長(zhǎng)度(10,000 個(gè) token)的 reward 設(shè)置為零,以防止長(zhǎng)度偏差被裁剪。此外,考慮到推理模式和 base 模型之間的顯著分布差異,我們從 GRPO 損失函數(shù)中刪除了 KL 項(xiàng)以鼓勵(lì)探索。
訓(xùn)練過(guò)程
SRPO 的動(dòng)態(tài)訓(xùn)練
上圖展示了 SRPO 的訓(xùn)練完整獎(jiǎng)勵(lì)曲線和響應(yīng)長(zhǎng)度曲線。在獎(jiǎng)勵(lì)增長(zhǎng)開(kāi)始趨于平穩(wěn)后,我們進(jìn)入了第 2 階段的訓(xùn)練。在第 2 階段開(kāi)始時(shí),由于模型之前未訓(xùn)練編碼能力,總體獎(jiǎng)勵(lì)下降,后續(xù)訓(xùn)練導(dǎo)致獎(jiǎng)勵(lì)穩(wěn)步增加。在整合編碼數(shù)據(jù)后,響應(yīng)長(zhǎng)度并沒(méi)有顯著增加,這與我們的預(yù)期一致。同時(shí),基準(zhǔn)測(cè)試結(jié)果表明,該模型的數(shù)學(xué)和編碼能力都有持續(xù)和穩(wěn)定的提高,證明了我們方法的有效性。
具體來(lái)說(shuō),History Resampling 確保了在每個(gè)訓(xùn)練步驟中梯度更新始終有效,從而直接提高了信息梯度的比例。這種提升的采樣效率帶來(lái)了穩(wěn)定的獎(jiǎng)勵(lì)增長(zhǎng),清晰地展現(xiàn)了重采樣策略所實(shí)現(xiàn)的訓(xùn)練效率提升。
思維行為
我們識(shí)別出三種代表性的反思模式。這些模式包括 recheck、hesitation、exploration。我們對(duì)包含這種模式的響應(yīng)進(jìn)行統(tǒng)計(jì),并記錄這幾種模式的平均響應(yīng)長(zhǎng)度。在 RL 訓(xùn)練過(guò)程中,他們觀察到模型的自我反思、糾正和回溯頻率逐漸增加。這表明模型展現(xiàn)了“自我驗(yàn)證”能力。我們認(rèn)為模型在 RL 中涌現(xiàn)出類(lèi)似人類(lèi)認(rèn)知過(guò)程的“反思”,是模型在策略優(yōu)化過(guò)程中的適應(yīng)性行為。
在訓(xùn)練過(guò)程中不同的 aha 模式出現(xiàn)的頻次變化
如上圖所示,在模型訓(xùn)練的早期階段,模型幾乎沒(méi)有主動(dòng)檢查和反思先前推理步驟。然而,隨著訓(xùn)練的進(jìn)行,模型表現(xiàn)出明顯的反思和回溯行為,形成如逐步推理、數(shù)值替換、逐一驗(yàn)證和自我優(yōu)化等響應(yīng)模式。
自我校正的例子
數(shù)值替換(綠色)和逐個(gè)驗(yàn)證(紅色)
自我優(yōu)化
同時(shí),他們還發(fā)現(xiàn)了有趣的現(xiàn)象:模型在解決數(shù)學(xué)問(wèn)題時(shí),學(xué)會(huì)了自發(fā)使用程序代碼進(jìn)行驗(yàn)證。它首先通過(guò)數(shù)學(xué)推理給出解題過(guò)程,隨后主動(dòng)編寫(xiě)程序代碼驗(yàn)證方案的正確性。這類(lèi)案例體現(xiàn)了模型會(huì)借助程序性思維進(jìn)行自我糾錯(cuò)和多次嘗試。這一現(xiàn)象也進(jìn)一步表明,在訓(xùn)練后期,模型已經(jīng)掌握了廣泛思考和綜合運(yùn)用多種代碼思維進(jìn)行問(wèn)題求解的能力。
三、結(jié)論與展望
本文介紹了 SRPO,這是首個(gè)在數(shù)學(xué)與代碼領(lǐng)域成功復(fù)現(xiàn) DeepSeek-R1-Zero-Qwen-32B 的工作。快手 Kwaipilot 團(tuán)隊(duì)提出了一種創(chuàng)新的兩階段訓(xùn)練范式,利用訓(xùn)練過(guò)程中的歷史重采樣策略,同時(shí)設(shè)計(jì)了專(zhuān)為數(shù)學(xué)與代碼聯(lián)合強(qiáng)化學(xué)習(xí)(RL)訓(xùn)練定制的數(shù)據(jù)整理流程(pipeline)。這些方法為社區(qū)構(gòu)建更強(qiáng)大的推理模型提供了重要參考。未來(lái),團(tuán)隊(duì)將繼續(xù)探索更大規(guī)模的數(shù)據(jù)與模型、更加高效的強(qiáng)化學(xué)習(xí)算法,以及其在更廣泛推理場(chǎng)景中的應(yīng)用潛力。
- END -
