【LLM】R1复现项目(SimpleRL、OpenR1、LogitRL、TinyZero)持续更新

note

(1)未来的工作需亟待解决:

  • 支持大规模 RL 训练(PPO、GRPO 等)的开源基础框架
  • 用于稳定训练的 GRPO 训练超参的自动化调优
  • RL 训练数据的配比(难度、领域、任务等)
  • 基于 Instruct 模型训练 R1 时,高质量 long CoT 的数据获取
  • 合适的惩罚函数设计以保证 CoT 思考链质量不退化

(2)应用在业务落地时,需要考虑:

  • 模型在给定的 prompt 下,结合预训练的基本知识能否正确给出正确的推理结果。任何业务中的「潜规则」都需要显式地定义在 prompt 中,并尽可能避免与预训练知识的冲突。
  • 混合通用数据、业务数据与数学、代码类领域任务下的 long CoT SFT 数据来给模型先打下一个坚实的思维链范式基础,这有利于提升 RL 训练时的稳定性。

(3)RL 基本设置:Reward 函数定义、Penalty 函数定义 (Optional)、优化方式、训练平台

注:复现工作均在 TIONE 平台上使用 1 台 ~ 4 台 GPUs 进行。上述几个开源复现工作中,只有 OpenRLHF 支持多机多卡训练。其余的仅支持单机多卡训练,且往往存在 GPU 数目的限制。在训练 TinyZero 和 LogitRL 时,就遇到了扩展 GPUs 后训练卡在初始化的问题。大部分项目使用 4 卡、8 卡、32 卡(SimpleRL)复现耗时在 2~3 天左右。

(4)总结:

1)DeepSeek R1 的 format 约束主要以"{think process}{answer}"的形式实现,而开源方案大多采用了 "{think process}{answer}" 的形式。从优化角度而言两者的差异不大。在构建基于正则表达式来判断模型输出是否存在规范格式时,往往采用的是较为严格的 r"^.?\s.*?$" 来约束开头与结尾。针对部分数学类问题,format reward 考虑答案是否出现了 \box{} 框。

2)accuracy reward:各个工作的实现方式基本沿用了过往强化学习算法中 ORM(outcome reward model) 里的代码。此处的难点有两个:

  • 需要编写大量的后处理代码,从模型的输出结果中能够成功解析出最终的结果;
  • 需要考虑判断相等的条件(数值、字符串等),并针对不同的领域数据设计不同的 reward 方式。

对于前者而言,对于某些要求格式化输出类问题,需要正确匹配出目标 kv 对。对于后者而言,判断 prediction 和 gt 是否相等并返回 reward 的定义也有所讲究。最严格的完全一致匹配只会区分正确 - 错误两种情况,在某些任务上可能会影响训练收敛的速度。

文章目录

  • note
  • 一、R1复现项目
  • 二、具体项目
    • 预算上的纯RL:TinyZero
    • [Open R1: HuggingFace 复现 DeepSeek-R1 全流程](#Open R1: HuggingFace 复现 DeepSeek-R1 全流程)
    • [从头开始构建 DeepSeek R1](#从头开始构建 DeepSeek R1)
    • [Open-Thoughts: UC 伯克利复现 DeepSeek-Distill-Qwen-32B](#Open-Thoughts: UC 伯克利复现 DeepSeek-Distill-Qwen-32B)
    • LIMO:少即是多
    • [DeepScaleR:完美复现 DeepSeek-R1 强化学习效果](#DeepScaleR:完美复现 DeepSeek-R1 强化学习效果)
  • Reference

一、R1复现项目

Github 训练集 测试集 模型 RL 框架 优点 缺点 易上手评级
simpleRL-reason MATH 8K(level 3-5), AIME 2024, MATH 500, AMC Minerva Math, OlympiadBench AIME 2024, MATH 500, AMC Qwen2.5-7B OpenRLHF 1)实现简单 2)系统工作支持 PRM/ORM/R1 等 3)RL 框架支持多机多卡 1)RL 算法暂不支持 GRPO ⭐️⭐️⭐️
open-r1 DigitalLearningGmbH/MATH-lighteval, AI-MO/NuminaMath-TIR AIME 2024, MATH-500, GPQA Diamond DeepSeek-R1-Distill-Qwen-7B, Qwen2.5-Math-7B, Qwen2.5-1.5B-Instruct TRL 1)实现简单 2)全流程支持 R1 系列工作(sft/rl/sft+rl) 1)多机训练暂不支持 ⭐️⭐️
unsloth GSM8K GSM8K[test] LLAMA 3.1(8B), Phi4, Qwen2.5-1.5B TRL 1)官方声称最接近 R1 的复现方式 2)接口简单 1)多卡需付费 ⭐️
logit-RL KK 老实人与骗子 lv3&5 KK 老实人与骗子 Qwen2.5-7B-Instruct veRL 1)RL 框架支持多种算法 2)复现率较高 1)多机训练暂不支持 ⭐️⭐️⭐️
tinyzero Countdown Countdown Qwen2.5-3B veRL 1)RL 框架支持多种算法 2)复现率较高 1)多机训练暂不支持 ⭐️⭐️⭐️
oatzero 8K MATH, MATH 500 MATH 500 Qwen2.5-Math-7B/1.5B, Qwen2.5-7B/3B, Microsoft-Rho-Math-7B, DeepSeek-Math-7B-Base OAT 1)统一集成了 tinyzero 等代码 1)多机训练暂不支持 ⭐️⭐️
demystify MATH, WebInstruct, MATH-500, TheoremQA, MLU-Pro-1k MATH 500 llama3.1-8B, Qwen2.5-Math-7B OpenRLHF 1)实现简单 2)论文本身较扎实(训练 & 验证充分) 1)实验 setting 与 R1 稍有区别 ⭐️⭐️

二、具体项目

预算上的纯RL:TinyZero

Sky-T1专注于模型蒸馏,也有在"纯RL"领域的一些工作-TinyZero,一个3B参数模型,复制了DeepSeek-R1-Zero的方法(训练成本不到30美元)。

即使只有3B参数,TinyZero也表现出一些新兴的自我验证能力,这支持了"推理可以通过纯RL在小模型中出现"的观点。

RL 训练时设置严格的格式约束,通常以 system prompt 的形式出现在训练数据中。

system prompt(snippet):

python 复制代码
Show your work in <think> </think> tags. And return the final answer in <answer> </answer> tags, for example <answer> (1 + 2) / 3 </answer>.

reward 函数定义(snippet):

python 复制代码
answer_pattern = r'<answer>(.*?)</answer>'
match = re.finditer(answer_pattern, solution_str)
matches = list(match)
if matches:
    final_answer = matches[-1].group(1).strip()
else:
    final_answer = None
return final_answer

考虑到答案校验存在不同的类型(字符串通常使用 exact_match,浮点数允许给定精度下的误差),不同开源项目也使用了适应于训练集的答案校验函数。

accuracy reward 定义(snippet):

python 复制代码
# Evaluate equation
try:
    result = evaluate_equation(equation)
    if result is None:
        if do_print:
            print(f"Could not evaluate equation")
        return format_score
    if abs(result - target) < 1e-5:  # Account for floating point precision
        if do_print:
            print(f"Correct equation: {equation} = {result}")
        return score
    else:
        if do_print:
            print(f"Wrong result: equation = {result}, target = {target}")
        return format_score
......

总结:

(1)DeepSeek R1 的 format 约束主要以"{think process}{answer}"的形式实现,而开源方案大多采用了 "{think process}{answer}" 的形式。从优化角度而言两者的差异不大。在构建基于正则表达式来判断模型输出是否存在规范格式时,往往采用的是较为严格的 r"^.?\s.*?$" 来约束开头与结尾。针对部分数学类问题,format reward 考虑答案是否出现了 \box{} 框。

(2)accuracy reward:各个工作的实现方式基本沿用了过往强化学习算法中 ORM 里的代码。此处的难点有两个:

  • 1)需要编写大量的后处理代码,从模型的输出结果中能够成功解析出最终的结果;
  • 2)需要考虑判断相等的条件(数值、字符串等),并针对不同的领域数据设计不同的 reward 方式。

对于前者而言,对于某些要求格式化输出类问题,需要正确匹配出目标 kv 对。对于后者而言,判断 prediction 和 gt 是否相等并返回 reward 的定义也有所讲究。最严格的完全一致匹配只会区分正确 - 错误两种情况,在某些任务上可能会影响训练收敛的速度。

Open R1: HuggingFace 复现 DeepSeek-R1 全流程

HuggingFace 表示,将以 DeepSeek-R1 的技术报告为指导,分 3 个步骤完成这个项目:

• step 1:从 DeepSeek-R1 中蒸馏高质量数据,复现 R1-Distill 模型。

• step 2:复现通过纯强化学习训练 R1-Zero 的过程,包括如何生成推理数据集

• step 3:复现训练 R1 的完整 pipeline,包括两阶段 SFT、两阶段 RL。

从头开始构建 DeepSeek R1

Deepseek讲解,一个讲解如何从头开始构建 DeepSeek R1的项目

https://github.com/FareedKhan-dev/train-deepseek-r1

开发者Fareed Khan's 用手绘流程图以及代码的方式,逐步讲解如何按照 deepseek 技术报告构建一个可以在本地运行的小型基础模型。非常详细。

该项目选择了一个较小的基础模型 Qwen/Qwen2.5--0.5B-Instruct 作为起点。

  • 通过 GRPO 算法进行强化学习,设计了多种奖励函数,如准确度奖励、格式奖励、推理步骤奖励、余弦缩放奖励和重复惩罚奖励,以鼓励模型进行正确和清晰的推理过程。
  • 在此基础上进行了监督微调(SFT),使用了 Bespoke-Stratos-17k 数据集,通过少样本提示、直接提示和后处理精炼等方法,进一步提升了模型的推理能力和输出质量。
  • 最后,通过拒绝采样筛选出高质量的推理数据,进行了第二阶段的 SFT 训练,以及针对实用性和无害性进行了奖励优化,最终完成了 DeepSeek R1 模型的构建。

Open-Thoughts: UC 伯克利复现 DeepSeek-Distill-Qwen-32B

斯坦福、UC伯克利等多机构联手发布了开源模型:OpenThinker-32B,性能直逼 DeepSeek-Distill-Qwen-32B。

仅使用了 114k(OpenThoughts-114k) 数据(DeepSeek-Distill-Qwen-32B 的1/8),就与同尺寸 DeepSeek-Distill-Qwen-32B 打成平手。团队发现,通过采用经 DeepSeek-R1 验证过的大规模优质数据集,就能够成功训练出达到 SOTA 水平的推理模型。具体实现方法包括扩大数据量、严格验证推理过程以及扩大模型规模。

LIMO:少即是多

上交大的最新研究成果却给出了一个另外答案:仅需 817 条精心策划的样本,便能让模型在数学竞赛级别的难题上超越众多现有的顶尖模型。这一发现不仅颠覆了传统认知,更揭示了一个我们可能一直忽视的事实:大模型的数学潜能或许始终存在,关键在于如何有效激发它。

LIMO(Less Is More for Reasoning)仅用 817 条精心设计的训练样本,通过简单的 SFT,就全面超越了那些使用几十万数据训练的主流模型,如 o1-preview 和 QwQ。

在 AIME24 评测中,LIMO 的准确率从传统方法(以 Numina-Math 为例)的 6.5% 飙升至 57.1%。而在 10 个不同的基准测试上,它实现了 40.5% 的绝对性能提升,超越了那些使用 100 倍数据训练的模型。这一突破证明了高质量、小规模的数据集,远比低效的海量数据训练更能激发大模型的推理潜能。

DeepScaleR:完美复现 DeepSeek-R1 强化学习效果

UC 伯克利团队宣布,他们仅以4500美元的成本,通过简单的强化学习(RL),就成功复现并训练出了 DeepScaleR-1.5B-Preview 模型,直接超越了 o1-preview。

UC伯克利的研究团队以 Deepseek-R1-Distilled-Qwen-1.5B 为基础,通过强化学习(RL),在 40,000 个高质量数学问题上进行训练,使用了 3800 A100 小时(4500美元),训练出了 DeepScaleR-1.5B-Preview 模型。在多个竞赛级数学基准测试中优于 OpenAI 的 o1-preview。

Reference

[1] DeepSeek R1范式复现笔记. 腾讯工程

[2] DeepSeek R1 最新复现项目汇总

[3] simpleRL-reason:GitHub - hkust - nlp/simpleRL - reason: This is a replicate of DeepSeek - R1 - Zero and DeepSeek - R1 training on small models with limited data

[4] open-r1:GitHub - huggingface/open - r1: Fully open reproduction of DeepSeek - R1

[5] [logit - RL](https://github.com/Unakar/Logic - RL):GitHub - Unakar/Logic - RL: Reproduce R1 Zero on Logic Puzzle

[6] [tinyzero](https://github.com/Jiayi - Pan/TinyZero):GitHub - Jiayi - Pan/TinyZero: Clean, minimal, accessible reproduction of DeepSeek R1 - Zero

[7] [demystify long CoT](https://github.com/eddycmu/demystify - long - cot):GitHub - eddycmu/demystify - long - cot

[8] deepscaleR:Notion -- The all - in - one workspace for your notes, tasks, wikis, and databases.

[1] Bespoke-Stratos-17k:https://huggingface.co/datasets/bespokelabs/Bespoke-Stratos-17k

[2]Bespoke-Stratos-32B:https://huggingface.co/bespokelabs/Bespoke-Stratos-32B

[3]Bespoke-Stratos-7B:https://huggingface.co/bespokelabs/Bespoke-Stratos-7B

[4]BAAI/TACO:https://huggingface.co/datasets/BAAI/TACO

[5]codeparrot/apps:https://huggingface.co/datasets/codeparrot/apps

[6]deepmind/code_contests:https://huggingface.co/datasets/deepmind/code_contests

[7]MatrixStudio/Codeforces-Python-Submissions:https://huggingface.co/datasets/MatrixStudio/Codeforces-Python-Submissions

[8]AI-MO/NuminaMath-CoT:https://huggingface.co/datasets/AI-MO/NuminaMath-CoT

[9]camel-ai/chemistry:https://huggingface.co/datasets/camel-ai/chemistry

[10]camel-ai/biology:https://huggingface.co/datasets/camel-ai/biology

[11]camel-ai/physics:https://huggingface.co/datasets/camel-ai/physics

[12]INK-USC/riddle_sense:https://huggingface.co/datasets/INK-USC/riddle_sense

相关推荐
forestsea1 小时前
DeepSeek 提示词:高效的提示词设计
人工智能·deepseek
二哥不像程序员2 小时前
解放大脑!用DeepSeek自动生成PPT!
人工智能·powerpoint·deepseek
好运工具 - HapTool3 小时前
DeepSeek在初创企业、教育和数字营销领域应用思考
清华大学·deepseek·haptool·好运工具
bin91533 小时前
DeepSeek 助力 Vue 开发:打造丝滑的文本输入框(Text Input)
前端·javascript·vue.js·前端框架·ecmascript·deepseek
卢奕冰20174 小时前
51单片机测试题AI作答测试(DeepSeek & Kimi)
单片机·kimi·deepseek
季春二九5 小时前
Deepseek深度求索教程:从入门到精通,免费获取清华大学新闻学院104页完整指南
deepseek
lfq7612045 小时前
微信小程序调用火山方舟(字节跳动火山引擎)中的DeepSeek大模型
微信小程序·火山引擎·豆包·deepseek
天翼云开发者社区6 小时前
数字先锋 | 天翼云xDeepSeek,赋能东莞开启智慧政务新篇章!
人工智能·大模型·政务·云服务器·deepseek
我们的五年6 小时前
硬件加速与技术创新双轮驱动:DeepSeek和ChatGPT性能进阶的未来蓝图
人工智能·chatgpt·自动驾驶·汽车·deepseek