摘要:活动邀请了中科院计算所工程师暨和鲸社区资深创作者『致 Great』和大家进行分享。活动中,他向我们介绍了市面上众多 Deepseek R1 复现开源方案的优缺点,并且展示了如何使用Unsloth 来训练自己的 R1 推理模型(GRPO)并且达到顿悟时刻(附代码
导读
在大模型技术飞速发展的当下,诸多关键问题引发从业者与爱好者的广泛关注:大模型训练必须依赖天价算力?市面上众多Deepseek R1复现开源方案选哪一个?R1-Zero的“顿悟时刻”又是什么?
为解答这些疑问,2025 年 2 月 22 日(周六)14:00,和鲸社区精心策划了一场直播活动。
活动邀请了中科院计算所工程师暨和鲸社区资深创作者『致 Great』和大家进行分享。活动中,他向我们介绍了市面上众多 Deepseek R1 复现开源方案的优缺点,并且展示了如何使用Unsloth 来训练自己的 R1 推理模型(GRPO)并且达到顿悟时刻(附代码和配套环境)
分享嘉宾|『致Great』
和鲸社区创作者,硕士毕业于985高校计算机系,目前就职于计算所担任工程师,从事NLP算法研究以及工程落地等相关工作,有大模型优化训练以及RAG落地经验,多次拿到国内数据挖掘、NLP等比赛TOP名次,Kaggle Master称号。
以下是实录整理内容
01 Deepseek R1 模型的关键技术点
Deepseek R1 模型的相关论文在今年春节期间发布,随后因英伟达股票暴跌等新闻引发关注,热度持续至今。这一模型的中文名称是“通过强化学习提升大语言模型的推理能力”,主要聚焦两点:一是利用强化学习,二是增强大模型的推理能力。在使用中可以观察到,其思维链较长。
论文解决了以下问题:
无监督数据的推理能力培养:以往如 ChatGPT、LLaMA 或千问等开源模型在大规模语料上进行预训练,形成通识能力。Deepseek R1 则在此基础上进一步强化推理能力的学习。推理时的性能扩展:通过激发大模型的思考过程,提升推理效果。自我演化能力:强调“顿悟时刻”,即通过自我反思和净化提高模型的可读性和泛化能力。相比 Deepseek R0,其解决了可读性差和输出格式混乱的问题。多规模模型的蒸馏:论文涉及从 15 亿参数(1.5B)到 320 亿参数(32B)的多种模型,甚至基于 LLaMA 70B 进行能力蒸馏,将推理能力迁移到较小模型上。Deepseek R0 是 R1 的前身,通过多阶段训练实现效果。其关键点在于利用冷启动数据预热模型。这种方法常见于比赛或 Kaggle 项目中,即先在特定领域数据上预训练,使模型具备相关通识能力,再进行微调。例如,在医疗文本分类任务中,先用医疗数据预训练,再进行下游任务,能显著提升效果。Deepseek R1 则在思维链推理上进行冷启动,随后开展大规模强化学习。
02 GRPO 算法原理
GRPO 是 Deepseek R1 的核心强化学习算法。与传统强化学习算法(如 DPO 和 PPO)依赖奖励模型不同,GRPO 通过比较多个模型输出实现强化学习,不需要独立的奖励模型或批判模型。Deepseek R0 基于 Deepseek V3 Base(70B 版本)训练,跳过了监督微调(SFT)阶段,因此训练成本较低。尽管 R0 准确率高,但输出可读性差,常出现多语言混合和格式混乱。R1 通过有限监督微调和逐步强化学习改进,增强了正确性和可读性。
训练流程如下:
冷启动微调:使用 Deepseek V3 Base 和几千条长思维链数据(Put Star Long CoT Data)进行微调。GRPO 强化学习:基于思维链数据强化学习,得到 Deepseek R1 Zero 版本。拒绝采样与监督微调:通过拒绝采样生成 600K 高质量推理样本,结合 200K 通用数据,形成 800K 数据集,再次微调。第二次强化学习:加入准确性、格式、无害性和有用性等奖励信号,得到最终 Deepseek R1 模型。拒绝采样的过程以 V3 Base 作为价值模型,过滤低质量数据。训练跳过大规模预训练和部分 SFT 阶段,降低了成本。相比传统方法(如预测下一个词的预训练),其成本更低,且专注于推理数据生成。
长思维链数据的构造可能基于人工设计的优质样本,通过 Few-Shot 学习生成更多数据,鼓励模型输出包含反思和自我验证的详细答案。这可能是“顿悟时刻”出现的原因。此外,R1 通过格式化输出改进可读性。
GRPO 算法详解
GRPO 全称“群体相对策略优化”(Group Relative Policy Optimization),通过对同一问题的多条答案进行内部比较,避免传统奖励模型。其目标函数分为三部分:
新旧策略变化衡量:计算新策略相较旧策略的优势。裁剪函数:限制策略更新幅度,避免训练崩溃。KL 散度正则项:确保策略不偏离参考策略太远,维持稳定性。以数学问题“8 + 5 的总和是多少”为例:
1. 生成多条答案
答案 1:10 + 3 = 13(正确,格式良好,得 1.0 分)答案 2:13(正确,格式不正式,得 0.9 分)答案 3:12(错误,得 0 分)答案 4:总数是 13(正确,格式良好,得 1.0 分)2. 奖励函数设计
准确性奖励:正确答案得高分。格式奖励:符合推理过程和语言一致性得高分。惩罚项:语言混合或不连贯降低分数。3. 比较与优化
计算答案的平均分和标准差,得出每条答案的优势权重,通过裁剪策略和 KL 散度调整模型。这种方法类似比较多人的答案,而非直接给出对错,提高了训练效率。
03 开源方案概述
目前主要有以下开源复现方案:
1. Open R1:
HuggingFace 复现 DeepSeek-R1 全流程
步骤:用 Deepseek R1 整理高质量数据,纯强化学习训练 R0,全流程复现 R1。特点:包括 600K 数据集构造和拒绝采样。2. mini-deepseek-r1:
用 GRPO 和倒计时游戏复制出一个简单版本的 R1
结论:50 步学会正确格式,100 步提升准确率,200 步达 40% 准确率,强调自我反思。3. Open-Thoughts:
UC 伯克利复现 DeepSeek-Distill-Qwen-32B
目标:用 114K 数据训练 32B 和 7B 小型推理模型。数据集:涵盖代码、解谜、数学和科学推理数据。4. DeepScaleR:
重现 DeepSeek R1 和 OpenAI O1/O3
方法:先用 8K 短文本训练,再扩展至 24K 长文本。效果:响应长度增加,排名奖励提高,超越部分基线模型。5. LIMO:
少即是多
特点:用 817 条精选样本训练,在数学任务上超越 SOTA 模型。假设:预训练模型蕴含推理知识,通过详细拆解复杂问题激发能力。数据集多聚焦数学领域,因其推理过程易设计且步骤清晰。建议结合数学竞赛数据集进行实验,研究不同数据规模的泛化效果。
04 在 Unsloth上低成本复现
Unsloth是一个基于 TRL(Transformer Reinforcement Learning) 的计算工具,优化显存和训练速度,号称比 Hugging Face Transformers 微调 LLaMA3 等模型减少 30% 内存消耗。在 T4(16G 显存)上即可运行 GRPO。最新版本(2025 年 2 月 21 日更新)仅需 5GB 显存即可训练 1.5B 模型,且支持十倍训练长度。
代码实践:
1. 安装与加载
依赖 TRL 的 GRPO Trainer,使用 Unsloth AI 优化加载 Deepseek V3 Base(3B),设置 LoRA Rank 为 64,最大长度 1024。2. 数据集准备
使用 8K 数学推理数据集,提取问题(Prompt)和答案(Answer)。3. 奖励函数定义
正确性:答案与标准答案一致得 2.0 分,否则 0 分。数字检测:含数字得 0.5 分,无数字得 0 分。格式检查:符合推理格式得额外分数。4. 训练
配置样本生成数量(Name Generations)、答案长度等参数,使用 GRPO Trainer 训练。T4 上约需 30 分钟。5. 效果对比
未训练:问“strawberry 有几个 r”,答案错误且无推理。训练后:加载 LoRA 权重后,输出包含拆解过程,答案正确。训练日志显示,Reward 从负数升至 100 步后约 1-2,250 步后达 3,400 步后稳定在 3.5。小模型(3B)在短数据集上 200 步后收敛,建议使用 8B 以上模型提升效果。
05 问题回答
Q
蒸馏后模型重复性问题如何解决?
可在奖励函数中加入重复性惩罚项,如限制关键词重复次数(小于 2 次为正常),或检查小窗口内重复率。此外,检查训练数据,剔除重复样本。
Q
同样提示词重复提问结果不一致的原因?
大模型具有随机性(Temperature)。可固定随机种子(Seed Everything),降低 Temperature,提高 Top-p 或 Top-k 参数,减少随机性。
来源:和鲸