license: apache-2.0
datasets:
- open-r1/Mixture-of-Thoughts
language:
- en
base_model:
- open-r1/Qwen2.5-Math-7B-RoPE-300k
library_name: transformers
模型概述
OpenR1-Distill-7B是基于Qwen/Qwen2.5-Math-7B在Mixture-of-Thoughts数据集上后训练的版本。该数据集包含从DeepSeek-R1蒸馏出的35万条经过验证的推理轨迹,涵盖数学、编程和科学任务,旨在教会语言模型进行逐步推理。
OpenR1-Distill-7B复现了deepseek-ai/DeepSeek-R1-Distill-Qwen-7B的推理能力,同时保持完全开放和可复现性。它非常适合研究推理时计算和可验证奖励的强化学习(RLVR)。
模型描述
- 模型类型: 70亿参数的类GPT模型,在公开可用的合成数据集混合上进行后训练。
- 语言(NLP): 主要为英语
- 许可证: Apache 2.0
- 微调自模型: Qwen/Qwen2.5-Math-7B的一个变体,其RoPE基础频率扩展到30万,以支持32k上下文的训练。
模型来源
- 代码库: https://github.com/huggingface/open-r1
- 训练日志: https://wandb.ai/huggingface/open-r1/runs/199cum6l
- 评估日志: https://huggingface.co/datasets/open-r1/details-open-r1_OpenR1-Distill-7B
使用方法
要与模型聊天,首先安装🤗 Transformers:
pip install transformers>0.52
然后按如下方式运行聊天CLI:
transformers chat open-r1/OpenR1-Distill-7B \
max_new_tokens=2048 \
do_sample=True \
temperature=0.6 \
top_p=0.95
或者,使用pipeline()
函数运行模型:
import torch
from transformers import pipeline
pipe = pipeline("text-generation", model="open-r1/OpenR1-Distill-7B", torch_dtype=torch.bfloat16, device_map="auto")
messages = [
{"role": "user", "content": "哪个数字更大,9.9还是9.11?"},
]
outputs = pipe(messages, max_new_tokens=2048, do_sample=True, temperature=0.6, top_p=0.95, return_full_text=False)
print(outputs[0]["generated_text"])
性能表现
我们使用Lighteval在以下基准测试上评估模型:
模型 |
AIME 2024 |
MATH-500 |
GPQA Diamond |
LiveCodeBench v5 |
OpenR1-Distill-7B |
52.7 |
89.0 |
52.8 |
39.4 |
DeepSeek-R1-Distill-Qwen-7B |
51.3 |
93.5 |
52.4 |
37.4 |
所有分数表示pass@1准确率,并使用temperature=0.6
和top_p=0.95
的采样。DeepSeek-R1技术报告使用每个查询4-64个响应的采样来估计pass@1,但没有指定每个基准测试的具体响应数量。在上表中,我们使用以下每个查询的响应数量来估计pass@1准确率:
基准测试 |
每个查询的响应数量 |
AIME 2024 |
64 |
MATH-500 |
4 |
GPQA Diamond |
8 |
LiveCodeBench |
16 |
请注意,对于像AIME 2024这样的基准测试,采样多个响应很重要,因为只有30个问题,这会导致重复运行时的方差较大。每个提示采样多少响应的选择可能解释了我们的评估结果与DeepSeek报告的小差异。查看open-r1
代码库了解如何复现这些结果的说明。
训练方法
OpenR1-Distill-7B在Mixture-of-Thoughts数据集上使用监督微调(SFT)进行训练,该数据集包含从DeepSeek-R1蒸馏出的35万条推理轨迹。为了优化数据混合,我们遵循了Phi-4-reasoning技术报告中描述的相同方法,即可以独立优化每个领域的混合,然后合并成一个单一数据集。下图展示了我们在数学和代码领域实验的演变:
各个实验对应如下:
- exp1 - exp3: 将模型的基础RoPE频率从10k扩展到100k、300k和500k。我们发现缩放因子之间没有显著差异,并在所有后续实验中使用300k。
- exp4 - exp6: 独立将数学和代码混合的学习率从1e-5扩展到2e-5和4e-5。
- exp7 - exp8: 测量序列打包(exp7)与不打包(exp8)对数学混合的影响。
- exp9 - exp10: 测量在所有三个混合(数学、代码和科学)上训练与仅在数学和代码上训练的影响。
[!注意]
我们在消融实验中使用LiveCodeBench v4加速评估,因为它包含v5约一半的问题,但仍能代表完整基准测试。
训练超参数
训练中使用了以下超参数:
- 训练轮数: 5.0
- 学习率: 4.0e-05
- 设备数量: 8
- 训练批次大小: 2
- 梯度累积步数: 8
- 总训练批次大小: 2 * 8 * 8 = 128
- 随机种子: 42
- 分布式类型: DeepSpeed ZeRO-3
- 优化器: Adam,betas=(0.9,0.999),epsilon=1e-08
- 学习率调度器类型: cosine_with_min_lr,min_lr_rate=0.1
- 学习率调度器预热比例: 0.03
- 最大梯度范数: 0.2
训练结果
在训练过程中,我们每轮监控AIME 2024、GPQA Diamond和LiveCodeBench v4的进展。下图展示了训练结果:
框架版本
- 平台: Linux-5.15.0-1049-aws-x86_64-with-glibc2.31
- Python版本: 3.11.11
- TRL版本: 0.18.0.dev0
- PyTorch版本: 2.6.0
- Transformers版本: 4.52.0.dev0
- Accelerate版本: 1.4.0
- Datasets版本: 3.5.1
- HF Hub版本: 0.30.2
- bitsandbytes版本: 0.45.5
- DeepSpeed版本: 0.16.8
- Liger-Kernel版本: 0.5.9
- OpenAI版本: 1.76.2
- vLLM版本: 0.8.4
引用
如果您发现此模型对您的工作有用,请考虑如下引用:
@misc{openr1,
title = {Open R1: 完全开放的DeepSeek-R1复现},
url = {https://github.com/huggingface/open-r1},
author = {Hugging Face},
month = {一月},
year = {2025}
}