開源22萬條DeepSeek R1的高質量數據,你也能複現DeepSeek了

DeepSeek 在海內外攪起的驚濤巨浪,餘波仍在洶湧。 

當中國大模型撕開矽谷的防線之後,在預設中總是落後半拍的中國 AI 軍團,這次竟完成了一次反向技術輸出,引發了全球範圍內複現 DeepSeek 的熱潮。 

DeepSeek-R1 雖然開源,但也沒有完全開源,訓練數據、訓練腳本等關鍵信息並未完全公佈。 

不過,有技術報告,相當於擁有著複現 R1 的指導方針,已經有不少執行力強的團隊用小模型見證「aha moment」了。在浩浩蕩蕩的複刻大軍中,最令人矚目的,當數 Hugging Face 領銜的 Open R1 項目。 

Open R1 宣稱要做到完全開放複現 DeepSeek-R1,補齊 DeepSeek 所有未公開的技術細節。Open R1 項目剛剛啟動不過幾週,他們已經完成了: 

  • GRPO 實現
  • 訓練與評估代碼
  • 用於合成數據的生成器

項目地址:https://github.com/huggingface/open-r1 

在開源社區的眾志成城,Open R1 更是動作迅速。今天,他們發佈了 OpenR1-Math-220k 數據集,又補全了一塊 DeepSeek R1「碎片」—— 合成數據。 

OpenR1-Math-220k 數據集概覽 OpenR1-Math-220k 數據集概覽 

數據集鏈接:https://huggingface.co/datasets/open-r1/OpenR1-Math-220k 

DeepSeek 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 工具進行了改進,使其能夠處理更多不常見的答案格式。 

對於那些包含多個正確答案的數據行,團隊嘗試使用獎勵模型(RM)作為最終篩選器來選擇最佳答案。具體操作如下: 

首先,從每個包含多個正確答案的數據行中,去掉(),提取最終答案;第二,將問題和提取的答案輸入到配置了 vLLM 的 Qwen/Qwen2.5-Math-RM-72B 模型中,獲取每個答案的評分;接著,根據模型評分,對每個包含多個正確答案的數據行排名,選擇排名最高的答案納入訓練數據集。 

遺憾的是,消融實驗表明,這種方法並沒有比隨機選擇一個正確答案帶來更好的模型性能。Open R1 團隊的判斷是,可能在使用獎勵模型評分時,不僅要考慮最終答案,還要包括推理過程。 

Open R1 訓練出來的新模型 VS DeepSeek-Distill-Qwen-7B

Open 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 個高質量的訓練樣本可能就足以在現有的開源模型中引發推理能力。 

啟示和新的問題

LLM 是否需要使用自然語言進行推理?

論文鏈接: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 的作者推測,當模型在預訓練階段已經積累了豐富的知識後,可能只需要少量結構良好的樣本,就能解鎖高級推理能力。 

CoT 長度:預算強製與獎勵塑造

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 中順利運行,他們正在開展一系列廣泛的實驗,以瞭解哪些超參數和獎勵函數對訓練的影響最大。 

那就讓我們靜待 Open R1 的好消息吧。 

參考鏈接: 

https://huggingface.co/blog/open-r1/update-2 

https://x.com/_lewtun/status/1889002019316506684 

https://huggingface.co/open-r1 

本文來自微信公眾號「機器之心」,編輯:佳琪,36氪經授權發佈。