支持私有云部署
AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


Open R1 项目进展第二期

发布日期:2025-03-31 21:03:59 浏览次数: 1573 作者:Hugging Face
推荐语

深度学习数学推理领域的重大突破!

核心内容:
1. Open R1 项目两周进展概览,填补 DeepSeek R1 训练流程和数据缺失
2. OpenR1-Math-220k 数据集发布,大规模数学推理的新里程碑
3. 社区进展:高质量数据集整理与模型推理步数控制技术探讨

杨芳贤
53A创始人/腾讯云(TVP)最具价值专家

原文发布于 2025 年 2 月 10 日

我们启动 Open R1 项目已经两周了,这个项目是为了把 DeepSeek R1 缺失的部分补齐,特别是训练流程和合成数据。

这篇文章里,我们很高兴跟大家分享一个大成果:,这是我们打造的第一个大规模数学推理数据集!

除此之外,我们还聊聊社区里一些让人兴奋的进展,比如怎么整理出小而精的高质量数据集来微调模型,以及如何在训练和推理时控制推理模型的“思考步数”。

一起来看看吧!

OpenR1-Math-220k 数据集

DeepSeek R1 的厉害之处在于,它能把高级推理能力“传授”给小模型。DeepSeek 团队生成了 60 万条推理记录,用来微调 Qwen 和 Llama 系列模型,结果证明,不用强化学习,直接从 R1 “蒸馏”出来的效果也很棒。比如,DeepSeek-R1-Distill-Qwen-7B 在 AIME 2024 上拿下了 55.5% 的成绩,比更大的 QwQ-32B-Preview 还强。

不过,这些推理记录没公开,这就促使社区自食其力,重新创建了几个类似的数据集。比如

隆重介绍 OpenR1-Math-220k!这是一个用 512 台 H100 机器本地跑出来的大规模数学推理数据集,每个问题还配了好几个答案。我们跟合作,基于他们超受欢迎的数据集,推出了全新升级版。

这个 OpenR1 数据集跟其他的有啥不一样:

  • 80 万条推理记录: 我们用为 40 万道题各生成了两个答案,筛完后剩下 22 万道题,每道题都有靠谱的推理过程。
  • 512 台 H100 本地跑: 没用 API,我们靠在自家科学计算集群上搞定,每天能生成 18 万条推理记录
  • 基于: 我们主攻数学推理,针对 NuminaMath 1.5 (的升级版) 里的题目生成答案。
  • 自动筛选: 用只留下至少一个正确答案的题目,还请当“裁判”,捞回更多靠谱答案 (比如有些答案格式乱了,规则解析器认不出来)。
  • 性能追平: 我们在数据集上微调,效果不输原版 DeepSeek-Distill-Qwen-7B。

我们希望这个可扩展、高质量的推理数据生成方法,不仅能用在数学上,还能拓展到代码生成等领域。

数据怎么来的

为了搞出 OpenR1-220k,我们让根据模型卡建议的参数去解 NuminaMath 1.5 里的 40 万道题。还在每道题的提示前加了句:

“请一步步推理,最后把答案写在 \boxed{} 里。”

每道题最多给 16k token ,因为我们发现 75% 的题 8k token 就能搞定,剩下的基本得用满 16k。一开始用 vLLM 跑推理,每台 H100 一小时能生成 15 个答案,脚本也在之前的更新和 Open R1里分享了。后来我们试了 ****,速度翻倍,每张 H100 一小时能搞 25 个答案!靠着 512 张 H100,我们一天能生成 30 万个答案,几天就攒了 80 万条推理记录。

每道题我们生成了两份答案,有些甚至四份,这样筛选和训练时更灵活。这种做法跟 DeepSeek R1 的拒绝采样差不多,还能支持 DPO 这种偏好优化方法。

生成脚本:

未筛过的数据集:

数据怎么筛的

为了确保只留下高质量、正确的推理过程,我们用来把关。这是个专门评测 LLM 答案的数学表达式评估系统,我们把模型给的最终答案跟数据集里的标准答案对比。

结果发现,55% 的题至少有一个正确答案。但 NuminaMath 1.5 里有些标准答案是空的,或者格式没法自动校验,挺麻烦的。虽然我们升级了 Math-Verify,让它能更好地处理这些怪格式 (后面会讲改进),但还是找了个备用方案: 用 Llama-3.3-70B-Instruct 当“裁判”,从被拒的答案里救回一些靠谱的。先把不完整或标准答案空的样本筛掉,只看格式 OK、答案框得清楚的,最后救回了 2.8 万道题。

我们给 Llama3.3-70B-Instruct 的指令是:

你是数学答案的检查员。给你一道题,你得对比标准答案和模型的最终答案,看看是不是一个意思,哪怕格式不一样。

题目:

{problem}

标准答案:

{answer}

模型答案:

{generation}

只看模型给的最终数学答案,别管这些差别:

- 格式 (比如 \boxed{} 和普通文本)
- 多选题形式 (比如 “A” 和完整答案)
- 坐标对或答案的顺序
- 等价的数学表达或符号差异
- 如果模型答案乱七八糟,就说“结果: 不确定”

先简单说两三句你的对比思路,然后给出结论,用这几种格式:

- “结果: 一样”
- “结果: 不一样”
- “结果: 不确定”

结合规则校验 (Math Verify) 和 LLM 判断,我们既保证了数据质量,又没牺牲规模。最终数据集有 22 万道题,推理过程都经过验证,是个训练推理模型的好资源。每道题多份答案也方便社区筛选更好的结果,或者根据 NuminaMath 的数据来源和题型再做调整。

数据集分两块:

  • default (9.4 万道题): SFT 微调后效果最好。
  • extended (13.1 万道题): 加了 NuminaMath 1.5 的其他来源,比如 cn_k12 ,推理记录更多。但在这部分微调后效果不如 default ,可能是 cn_k12 的题太简单了。

对于多正确答案的题,我们还试了用奖励模型 (RM) 挑最好的。每道题如果 R1 给了好几个正确答案,我们去掉思考过程 ( <think>…</think> ),把问题和答案丢给打分,用 vLLM 跑。按分数排了个序,挑了第一名的答案放进训练集。可惜实验发现,这么挑跟随便选一个正确的没啥差别。以后可以试试评分时带上推理过程,别只看最终答案。

跟 DeepSeek-Distill-Qwen-7B 比比性能

我们用 5e-5 的学习率,在 default 数据集上微调了 Qwen2.5-Math-Instruct 三轮。为了把上下文长度从 4k 拉到 32k,我们把 RoPE 频率调到 300k。训练用的是线性学习率,前面 10% 是预热。下面是用比较的表现:

模型
MATH-500
AIME24
AIME25
DeepSeek-Distill-Qwen-7B
91.6
43.3
40
OpenR1-Qwen-7B
90.6
36.7
40
OpenThinker-7B
89.6
30.0
33.3

这版数据集只是个起点,社区还能再优化,比如用 DeepSeek R1 的拒绝采样法提高质量。

Math-Verify 升级了啥

我们在检查 Math-Verify 的结果时发现了一些问题,就做了大修。强烈建议大家升到最新版 (0.5.2),体验这些改进:

pip install math-verify==0.5.2

主要升级有:

  • 改进了纯文本答案的解析和验证 (比如  和   算一样)。

  • 改进了答案列表的解析 (比如  和   和   跟   等价)。

  • 修了个 bug,单个 LaTeX 里多个框的答案也能认了 (比如  等于 {1,2})。

  • 加了有序元组。因为判断列表是元组还是集合非常困难,我们靠标准答案来定:

    • (1,2,3) ≠ {3,2,1}; 1,2,3 == {3,2,1}; {3,2,1} == {1,2,3}。
  • 支持标准答案的关系表达 (比如小于) 和预测的区间 (比如  等价于 )。

社区热点

这周社区从各种角度玩转了 GRPO,还有研究表明,只要 1000 个优质样本,就能让现有开源模型引发推理。

GRPO 的一些实践

  • nrehiew把 GRPO 用在 Qwen2.5-0.5B 基础模型上,在 GSM8k 测试中拿下 51% 的准确率,比 Qwen2.5-0.5B-Instruct 高了 10 个点。这成绩太亮眼,引发了大家对预训练中指令数据作用的。不过,把 GRPO 用到其他基础模型 (比如 Llama 3) 上还没啥大突破。发现,基础模型稍微提示一下就能自我反思,DeepSeek-R1 论文里的“开悟”可能更多是模型本身牛,而不是 RL 优化的功劳。
  • Unsloth 施展,让 15B 参数的模型只用 15GB 显存就能跑 GRPO ?。这下 Google Colab 免费也能玩了!
  • 的 Wing Lian 发现
  • Alexander Doria 搞出了,这很酷,因为 GRPO 第一次公开跳出“可验证”领域。

测试表现

这周第一部分放出来了,有 15 道难题,是给高中生备战国际数学奥赛用的。过去一年,AIME 2024 是测 LLM 数学能力的主力,大家很期待 LLM 在新题上的表现:

  • 的研究人员测了一堆模型,发现远小于预期,只有 10-20 个百分点。

  • 发现 AIME 2025 有几道题网上早就有了!这可能不小心泄了题,凸显了

LLM 必须用自然语言推理吗?

一篇新挺有意思,用循环语言模型在潜在空间隐式推理,能扩展测试时的计算。这跟在潜在空间训语言模型有点像,但现在用在了推理上。好处是效率高,不用生成一堆“思考”token 也能出好成绩。

小而精的推理数据成趋势?

DeepSeek R1 用 60 万条推理记录搞蒸馏,但最近研究发现,不用海量训练,少量精心挑的样本也能让模型学会复杂推理。

比如数据集,只有 1000 道数学题,推理过程从蒸馏而来,挑题时看重难度、多样性和质量。作者用它微调 Qwen2.5-32B-Instruct,在竞赛数学测试中比 OpenAI 的 o1-preview 高了 27%。

另一个数据集更狠,只用 817 个样本就在 AIME 和 MATH 上表现抢眼。作者猜,如果模型预训练时已经学了很多领域知识,可能几百个好例子就够让它推理开窍。

控制思维链长度: 预算强制和奖励设计

微调的 Qwen2.5-32B-Instruct 这么牛,一个关键是 预算强制。这招能在测试时调整推理时间,要么加个“Wait”让它多想,要么加个结束标记让它停。作者发现,模型有测试时扩展性: 多给点思考时间,数学测试的准确率就涨。

类似地,(Yeo 等人) 也研究了思维链 (CoT) 长度对效果的影响。他们搞了个 **余弦奖励 (Cosine Reward)**,正确答案鼓励短 CoT,错的推长 CoT,稳住了 RL 训练,尤其在上下文长度有限、回答容易爆炸时。还有个 重复惩罚,模型要是为刷奖励在难题上重复废话,就罚它,逼它好好解题。

下一步干啥?

GRPO 在 TRL 里跑得挺顺,我们正在大干一场实验,看看哪些超参数和奖励函数最管用。想知道进展,可以去瞧瞧,下次更新会写详细报告!

53AI,企业落地大模型首选服务商

产品:场景落地咨询+大模型应用平台+行业解决方案

承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

添加专属顾问

回到顶部

加载中...

扫码咨询