当前位置: 首页 > article >正文

【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 全流程
    • 从头开始构建 DeepSeek R1
    • Open-Thoughts: UC 伯克利复现 DeepSeek-Distill-Qwen-32B
    • LIMO:少即是多
    • DeepScaleR:完美复现 DeepSeek-R1 强化学习效果
  • Reference

一、R1复现项目

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

在这里插入图片描述

二、具体项目

预算上的纯RL:TinyZero

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

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

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

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):

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):

# 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


http://www.kler.cn/a/558494.html

相关文章:

  • 我的世界地下城DLC开发的第二天
  • Kafka安装
  • Linux:进程的认识
  • win32汇编环境,窗口程序中使用菜单示例四
  • 【java】就近原则
  • vscode@右键文件夹或文件vscode打开一键配置
  • for循环可遍历但不可以修改列表原因分析
  • 物联网常见协议基础学习
  • 【软考】【2025年系统分析师拿证之路】【啃书】第十三章 系统设计(十四)
  • CSS基础(盒子模型的组成、内容溢出、隐藏元素的方式、样式的继承、元素的默认样式、布局技巧、元素之间的空白问题、行内块元素的幽灵空白问题)
  • 利用 AI 大模型驱动企业智能化转型:Cherry Studio 与 Anything LLM 的应用探索
  • 海康威视摄像头ISUP(原EHOME协议) 摄像头实时预览springboot 版本java实现,并可以在浏览器vue前端播放(附带源码)
  • deepseek云端部署及结合本地知识库(结合api调用)可视化界面应用
  • 【拓展】二进制的原码、补码、反码及相互转换方式
  • Linux系统管理与编程01:准备工作
  • 深度学习(3)-TensorFlow入门(梯度带)
  • `pip freeze > requirements.txt` 命令
  • Python 错误和异常处理
  • 正则表达式特殊字符
  • 腾讯SQL面试题解析:如何找出连续5天涨幅超过5%的股票