DeepSeek 在海內外攪起的驚濤巨浪,餘波仍在洶湧。當中國大模型撕開矽谷的防線之後,在預設中總是落後半拍的中國 AI 軍團,這次竟完成了一次反向技術輸出,引發了全球範圍內復現 DeepSeek 的熱潮。DeepSeek-R1 雖然開源,但也沒有完全開源,訓練資料、訓練指令碼等關鍵資訊並未完全公佈。不過,有技術報告,相當於擁有著復現 R1 的指導方針,已經有不少執行力強的團隊用小模型見證「aha moment」了。在浩浩蕩蕩的復刻大軍中,最令人矚目的,當數 Hugging Face 領銜的 Open R1 專案。Open R1 宣稱要做到完全開放復現 DeepSeek-R1,補齊 DeepSeek 所有未公開的技術細節。Open R1 專案剛剛啟動不過幾周,他們已經完成了:專案地址:https://github.com/huggingface/open-r1在開源社群的眾志成城,Open R1 更是動作迅速。今天,他們釋出了 OpenR1-Math-220k 資料集,又補全了一塊 DeepSeek R1「碎片」—— 合成資料。資料集連結:https://huggingface.co/datasets/open-r1/OpenR1-Math-220kDeepSeek R1 的一個重要優勢在於它能夠將高階推理能力遷移到較小的模型中。DeepSeek 團隊生成了 60 萬條推理資料,在 Qwen 和 Llama 等開源模型上證明了這種遷移能力。即使不使用強化學習,直接從 R1 模型進行遷移也能實現強大的推理效能。然而,這些合成資料僅 DeepSeek 可見,未對其他團隊開放閱讀許可權。OpenR1-Math-220k 資料集就是來補上這塊空缺的。具體而言,Open R1 團隊使用 DeepSeek R1 生成了 80 萬條推理軌跡,經過篩選和驗證後得到了 22 萬條高質量資料。這些資料可以用來支援更小的模型,來達到媲美 DeepSeek R1 的效果。比如在 OpenR1-Math-220k 資料集上訓練出來的 Qwen-7B-Math-Instruct,達到了與 DeepSeek-Distill-Qwen-7B 相當的效能。下面就讓我們來看看 OpenR1-Math-220k 資料集的特點,以及它是怎麼誕生的:目前,開源社群已經發布了 OpenThoughts-114k、Bespoke-Stratos-17k、Dolphin-R1 和 LIMO 等多個推理資料集。然而,為了進行推理公眾公開發布,這促使社群獨立重建類似的資料集。另外,社群已經發布了多個開放資料集,包括 OpenThoughts-114k、Bespoke-Stratos-17k、Dolphin-R1 和 LIMO。為了整理 OpenR1-Math-220k,Open R1 還和開發了廣受歡迎的 NuminaMath-CoT 資料集開發團隊 Numina 進行了合作。那麼,與現有資料集相比,Open R1 的資料集有什麼新特點呢?- 80 萬條 R1 推理軌跡:使用 DeepSeek R1 為 40 萬個問題各生成了兩個答案,最終經過篩選後保留了 22 萬個具有正確推理軌跡的問題。
- 本地執行 512 個 H100:沒有依賴 API,而是在計算叢集上利用 vLLM 和 SGLang 本地執行生成任務,每天可以生成 18 萬條推理軌跡。
- 基於 NuminaMath 1.5:專注於數學推理公式,為 NuminaMath 1.5(NuminaMath-CoT 資料集的改進版本)中的問題生成答案。
- 自動過濾:Open R1 團隊透過數學驗證,只保留至少有一個正確答案的問題,還讓 Llama3.3-70B-Instruct 作為「判官」,以篩選出更多正確的樣本,特別是那些因格式錯誤而無法透過基於規則的解析器驗證的答案。
- 在 OpenR1-Math-220k 訓練出來的 Qwen-7B-Math-Instruct,達到了與 DeepSeek-Distill-Qwen-7B 相當的效能。
- default(94k 問題):這部分資料在經過監督微調(SFT)後表現最佳。
- extended(131k 問題):這部分資料包含額外的 NuminaMath 1.5 資料來源,例如 cn_k12,提供了更多的推理公式。(研究發現這個子集在經過監督微調後的效能低於預設資料集,可能是因為 cn_k12 中的問題相對簡單。)
Open R1 團隊表示,希望這個可擴充套件的、高質量的推理資料生成過程,能夠啟發程式碼生成等數學之外的領域。為了構建資料集,OpenR1 團隊讓 DeepSeek R1 為來自 NuminaMath 1.5 的 40 萬個問題生成答案。他們遵循了 DeepSeek 技術報告中推薦的引數設定,並在提示詞前新增了以下指令:Please reason step by step, and put your final answer within \boxed{}.
為了確保生成過程的高效性,團隊將每次生成的 tokens 限制設定為 16k。經過分析發現,只有 75% 的問題能夠在 8k tokens 內解決,而大多數剩餘問題需要完整的 16k tokens。最初,他們使用 vLLM 進行推理,每個 H100 節點每秒可以生成 15 個答案,並且相關生成指令碼已分享在 OpenR1 倉庫中。最近,他們又開始嘗試使用 SGLang,每個 H100 節點每秒可以生成 25 個答案(速度提升了近兩倍),這使得 512 個 H100 節點上每天能生成 30 萬個問題的答案。為了在後續的過濾和最佳化過程中提供更大的靈活性,團隊為每個問題生成了兩個答案 —— 有時甚至生成四個。這樣一來,不僅復刻出了類似於 DeepSeek R1 允許進行拒絕取樣的方法,還能使資料集能夠適用於如 DPO 等偏好最佳化方法。資料生成指令碼:https://github.com/huggingface/open-r1/tree/main/slurm。為了確保資料集中只包含高質量且正確的推理結果,Open R1 團隊設計了一套數學驗證系統,用於自動比對 LLM 生成的複雜數學表示式答案與資料集中的標準答案。在這個過程中,OpenR1 團隊發現大約 55% 的問題至少有一個正確答案。然而,NuminaMath 1.5 資料集中有很多答案是空的,或者格式不符合驗證標準,這都給自動驗證帶來了困難。為了解決這些問題,Open R1 團隊先是對 Math-Verify 工具進行了改進,使其能夠處理更多不常見的答案格式,再使用 Llama-3.3-70B-Instruct 模型進行二次評估。具體來說,對於那些被 Math-Verify 判定為錯誤的答案,使用 Llama-3.3-70B-Instruct 模型重新評估,識別實際上正確但因格式問題被錯判的答案。最終,他們找回了 2.5 萬條被「誤判」的資料。最佳化 Math-Verify 工具:對 Math-Verify 工具進行了改進,使其能夠處理更多不常見的答案格式。讓 Llama-3.3-70B-Instruct 「作判官」的提示詞如下:You are a mathematical answer validator. You will be provided with a mathematical problem and you need to compare the answer in the reference solution, and the final answer in a model's solution to determine if they are equivalent, even if formatted differently.
Focus ONLY on comparing the final mathematical answer provided by the model while ignoring differences in:
- Formatting (e.g., \\boxed{{}} vs plain text)
- Multiple choice formatting (e.g., "A" vs full solution)
- Order of coordinate pairs or solutions
- Equivalent mathematical expressions or notation variations
- If the model's answer is nonsense, return "Verdict: AMBIGUOUS"
Start with a brief explanation of your comparison (2-3 sentences). Then output your final answer in one of the following formats:
對於那些包含多個正確答案的資料行,團隊嘗試使用獎勵模型(RM)作為最終篩選器來選擇最佳答案。具體操作如下:首先,從每個包含多個正確答案的資料行中,去掉(<think>…</think>),提取最終答案;第二,將問題和提取的答案輸入到配置了 vLLM 的 Qwen/Qwen2.5-Math-RM-72B 模型中,獲取每個答案的評分;接著,根據模型評分,對每個包含多個正確答案的資料行排名,選擇排名最高的答案納入訓練資料集。遺憾的是,消融實驗表明,這種方法並沒有比隨機選擇一個正確答案帶來更好的模型效能。Open R1 團隊的判斷是,可能在使用獎勵模型評分時,不僅要考慮最終答案,還要包括推理過程。Open R1 訓練出來的新模型 VS DeepSeek-Distill-Qwen-7BOpen R1 在 OpenR1-Math-220k 的基礎上,對 Qwen2.5-Math-Instruct 進行了 3 輪微調,學習率為 5e-5。為了將上下文長度從 4k 擴充套件到 32k,他們將 RoPE 頻率提高到 300k。訓練遵循線性學習率排程,其中包含 10% 的預熱階段。下表展示了在 lighteval 上 OpenR1-Qwen-7B、DeepSeek-Distill-Qwen-7B 和 OpenThinker-7B 的效能對比,可以看出在數學成績上,OpenR1-Qwen-7B 和 DeepSeek-Distill-Qwen-7B 差距不是非常明顯。本週 AIME 2025 開賽,來自蘇黎世聯邦理工學院的研究人員用新題來測評了多款模型,卻發現各種模型的數學能力下降了 10-20 個百分點之間。有研究者發現這些「全新」的 AIME 題可能已經在網際網路論壇洩露,這有可能造成意外的過擬合問題,這也凸顯了新鮮測試資料的困境。同時,開源社群也從多個角度探索了 GRPO,有多個研究實驗室表明,大約 1000 個高質量的訓練樣本可能就足以在現有的開源模型中引發推理能力。論文連結:https://arxiv.org/pdf/2502.05171馬里蘭大學的一篇論文表明,透過使用迴圈語言模型,可以在潛在空間中隱式推理,從而在測試時擴充套件計算能力,這類似於 Meta 的 Coconut。這些方法的優勢在於它們的計算效率更高:透過探索潛在空間,無需生成大量「思考」token 即可獲得高效能。儘管 DeepSeek R1 使用了 600k 推理軌跡進行蒸餾,但最新研究表明,複雜的推理能力並非單純透過大規模訓練在語言模型中實現,而是可以透過少量精心設計的樣本達成。s1K 資料集就是一個很好的例子。它包含 1000 個經過精心挑選的數學問題,以及從 Gemini Flash 蒸餾出的推理軌跡。在選擇問題時,研究者注重難度、多樣性和質量。透過在 s1K 資料集上對 Qwen2.5-32B-Instruct 進行微調,研究者成功使其在競賽數學基準測試中超過了 OpenAI 的 o1-preview,最高提升了 27%。另一個資料集 LIMO 也進一步驗證了這一理念。它僅使用 817 個訓練樣本,就在 AIME 和 MATH 基準測試中取得了出色的表現。LIMO 的作者推測,當模型在預訓練階段已經積累了豐富的知識後,可能只需要少量結構良好的樣本,就能解鎖高階推理能力。Qwen2.5-32B-Instruct 模型在 s1K 資料集上微調後表現出色,其中一個關鍵因素是採用了「預算強制」。這是一種測試時的計算技術,透過在模型生成中新增「等待」token 來延長推理時間,或者新增「結束思考」的 token 來截斷推理。這種方法使研究者能夠靈活調整模型的思考時間,並發現隨著思考時間的增加,模型在不同數學基準測試中的準確性也隨之提高。同樣,Yeo 等人在研究《Demystifying Long Chain-of-Thought Reasoning in LLMs》中探討了思維鏈(CoT)長度對模型效能的影響。他們引入了一種名為「餘弦獎勵」的新獎勵函式,用於在正確生成時激勵較短的 CoT,在錯誤生成時激勵較長的 CoT。這種獎勵機制在模型的最大上下文大小有限且平均響應長度可能失控的情況下,能夠穩定強化學習訓練。論文連結:https://arxiv.org/pdf/2502.03373此外,當模型在處理難題時出現獎勵劫持的跡象(即透過重複而非真正解決問題來增加 CoT 長度),研究者還會採用重複懲罰機制,以避免模型陷入無效的迴圈推理。Open R1 團隊表示,現在 GRPO 已經在 TRL 中順利執行,他們正在開展一系列廣泛的實驗,以瞭解哪些超引數和獎勵函式對訓練的影響最大。https://huggingface.co/blog/open-r1/update-2https://x.com/_lewtun/status/1889002019316506684https://huggingface.co/open-r1