【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范式复现笔记. 腾讯工程](https://mp.weixin.qq.com/s/BYPKP5oXg1V4C_vg0VFGhw) \[2\] [DeepSeek R1 最新复现项目汇总](https://mp.weixin.qq.com/s/8PIJTo_V0HRfPYTe_t_4CQ) \[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

相关推荐
山顶夕景20 小时前
【LLM】基于ms-Swift大模型SFT和RL的训练实践
大模型·微调·swift·强化学习
夫子3961 天前
【深度干货】Transformer推理优化完全指南:模型压缩、推理加速与硬件调优
人工智能·llm
智泊AI1 天前
终于有人把AI大模型训练过程讲明白了!!!
llm
GRITJW1 天前
强化学习系统性学习笔记(一):从理论基础到策略优化
强化学习
数据智能老司机1 天前
建构 AI Agent 应用——Agentic 系统的学习机制
架构·llm·agent
数据智能老司机1 天前
建构 AI Agent 应用——编排
架构·llm·agent
镰刀韭菜2 天前
【AI4S】大语言模型与化学的未来,以及整合外部工具和聊天机器人的潜力
llm·transformer·大语言模型·药物设计·分子发现·chemchat·smiles
数据智能老司机2 天前
建构 AI Agent 应用——工具调用
架构·llm·agent
aopstudio2 天前
llms.txt:为大模型打造的“网站说明书”
人工智能·python·llm·开发者工具
、、、、南山小雨、、、、3 天前
Pytorch强化学习demo
pytorch·深度学习·机器学习·强化学习