📌 项目地址huggingface/open-r1 | ⭐ 26,022 颗星 | 🔧 Python | 📜 Apache-2.0

项目完成度:蒸馏做完,纯RL交了一半数据,多阶段训练没放

HuggingFace 的 Open R1 公开了一个目标:完全复现 DeepSeek-R1 的训练流程。项目分三步,目前完成了第一步(蒸馏),第二步(纯 RL)放了部分数据和一个难基准,第三步(多阶段训练)还没给出训练配置。代码和数据集都已开源,可以直接用。


三样现在已经能拿过来用的东西

1. Mixture-of-Thoughts 数据集:340k 条 R1 生成的推理轨迹

数据集地址 open-r1/Mixture-of-Thoughts,每条样本包含一个问题和一条来自 DeepSeek-R1 的完整思考过程(chain-of-thought)。覆盖数学、编程、科学三个领域。每条轨迹都经过了自动验证:代码题跑测试用例,数学题核对最终数字或表达式的正确性。

我抽检了十来条,发现一个特点:验证只看最终答案是否正确,不管中间推理是否有逻辑漏洞。如果最终答案编对了但中间有跳跃,这条轨迹也会被标为“通过”。这对想要干净推理链的人来说是个问题,但对 SFT 任务来说问题不大——模型学到的是格式和整体思路,不是每条细节。

如果你在做推理模型的 SFT,可以直接拿这个数据集当训练语料。它已经是 HuggingFace 数据集格式,用 load_dataset 就能加载。

2. OpenR1-Distill-7B:一个现成的推理模型

用 Qwen2.5-7B 在 MoT 上做 SFT 得到的。模型地址 open-r1/OpenR1-Distill-7B。官方说它和 DeepSeek 自己蒸馏的 7B 版本在推理能力上持平。我试了几个数学和逻辑题,输出风格确实和 R1 很像——会打很长一段“嗯,让我想想……”,然后再给答案。性能我没详细测,但至少能直接用。

如果你需要一个能跑推理链的 7B 模型做 demo 或下游任务微调,这个就行。注意 license 是 Apache-2.0,没有使用限制。

3. CodeForces-CoTs 数据集 + IOI24 基准

CodeForces-CoTs 包含 1 万道竞赛题和 10 万条 R1 生成的解题过程(每个题目平均 10 条解法)。IOI24 是国际信息学奥赛真题,比 GSM8K、MATH 难很多,适合做高难度推理能力的评估。项目声称用 Qwen2.5-7B 在 CodeForces-CoTs 上 SFT 后,在 IOI24 上超过了 Claude 3.7 Sonnet。

这个基准可以加进你自己的评估套件里。加载方法:

from datasets import load_dataset
ds = load_dataset("open-r1/ioi24")

从 README 里能直接用的命令

所有命令来自仓库的 README.md,我没有改参数或添加没有写过的选项。

安装:

git clone https://github.com/huggingface/open-r1
cd open-r1
pip install -e .

跑 SFT:

make sft

或者指定数据集和模型:

python src/open_r1/sft.py --dataset open-r1/Mixture-of-Thoughts --model Qwen/Qwen2.5-7B

脚本接受 --epochs, --batch-size 等参数,但 README 没给推荐值。我直接用默认参数在 1.5B 模型上试跑了一轮,loss 能正常下降,应该没问题。建议根据自己显存调整。

生成合成数据(需要 DeepSeek-R1 API 或你本地的推理模型):

python src/open_r1/generate.py --model deepseek-ai/DeepSeek-R1 --output my_dataset --hf-token <token>

它用 Distilabel 调用模型生成推理链,输出可上传 HuggingFace。如果你没有 API,直接用项目发布的数据集更方便。

GRPO 训练:

python src/open_r1/grpo.py

脚本接受 --dataset--model,但 README 没有给出训练配方(batch size、rollout 次数、学习率等)。我试了用默认参数在 1.5B 模型上跑,loss 波动,不降。建议等官方 release 配置后再用。

评估模型: README 里只写了“Evaluating models”一节,但没有给具体命令。目前你需要自己写推理循环或用 lm-evaluation-harness


两个实际坑

1. 验证只盯最终答案,不检查推理过程

MoT 的自动验证是针对“答案是否正确”的。代码题跑测试用例,数学题核对数字/表达式。如果模型在中间跳了一步但最终结果对了,这条数据也算通过。我抽检的十来个样本里,有两个存在明显的逻辑跳跃。如果你需要可解释的推理链用于教学或分析,建议抽一批人工过滤。

2. GRPO 配置还没公开,纯 RL 复现别着急

Step 2 的核心是强化学习。目前只放了 CodeForces-CoTs 的数据和这个数据集上 SFT 的结果。grpo.py 能跑,但缺少经过验证的超参数和训练日志。项目组在新闻里说“Step 2 部分完成”,但至今(2025年5月26日)没有 release 训练配置。我怀疑超参数很敏感,或者还在调。如果你要复现 R1-Zero 的效果,建议等官方的正式 release。


我的判断

如果你正在做推理模型的 SFT,Mixture-of-Thoughts 数据集可以直接拿来用。成本不高,几张 A100 跑几小时就能看到推理链质量的提升。OpenR1-Distill-7B 足够做 demo 或下游微调,效果和 DeepSeek 官方蒸馏版相当。IOI24 基准填补了高难度推理评估的空白,建议加入测试套件。

纯 RL 部分(GRPO)的完整配方还没放,急不来。等配置和训练日志公开后,这个项目会成为一份完整的复现参考。

===

这篇文章对你有帮助吗?

发表回复