← 返回信息流
AI 资讯Hacker News·2 小时前

DeepSeek-R1复现项目开源

原标题:Open Reproduction of DeepSeek-R1

速览

该项目旨在复现DeepSeek-R1模型,通过开源模型权重和训练代码,降低研究门槛。此举有助于社区深入理解R1架构,推动大模型技术的进一步发展与创新。

AI 深度解读

Open Reproduction of DeepSeek-R1:深度解读

背景

DeepSeek-R1 的发布在人工智能社区引起了巨大轰动,其展现出的强大推理能力引发了业界对“强化学习(RL)在大型语言模型中作用”的重新审视。然而,DeepSeek 官方并未完全开源其 R1 模型的全部训练细节、数据生成流程及具体的强化学习配置,这给希望复现其效果的研究者和开发者带来了一定门槛。

在此背景下,Hacker News 上流传并广受关注的 Open Reproduction of DeepSeek-R1 项目应运而生。该项目的核心目标是填补 R1 训练管线中缺失的环节,通过完全开源的方式,让社区能够复现并在此基础上构建新的模型。该项目并非简单的代码堆砌,而是旨在建立一个透明、可验证的 R1 复现管线,涵盖从数据生成、监督微调(SFT)到强化学习(RL)训练的全过程。

核心内容

该项目是一个持续进行的工作(Work in Progress),其设计初衷是简化复现流程。项目结构主要包含 src/open_r1 目录下的核心脚本以及用于简化操作的 Makefile

1. 项目架构与工具链

项目通过以下核心脚本实现 R1 管线的关键步骤:

  • grpo.py:在给定数据集上使用 GRPO(Group Relative Policy Optimization,组相对策略优化)算法训练模型。
  • sft.py:对模型在数据集上进行简单的监督微调(Supervised Fine-Tuning)。
  • generate.py:利用 Distilabel 从模型中生成合成数据。
  • Makefile:封装了上述脚本的易执行命令,简化 R1 管线各步骤的操作。

2. 复现路线图

项目严格遵循 DeepSeek-R1 的技术报告,将复现工作划分为三个主要阶段:

  • 阶段 1:复现 R1-Distill 模型。通过从 DeepSeek-R1 蒸馏高质量语料,构建蒸馏模型。
  • 阶段 2:复现纯 RL 管线(R1-Zero)。这涉及整理用于数学、推理和代码的大规模新数据集。
  • 阶段 3:展示从基础模型到经过 RL 调优模型的完整多阶段训练流程。

3. 关键进展与数据发布

项目团队按时间顺序发布了多个重要更新和数据集,逐步推进复现进程:

  • 2025年5月26日(阶段 1 完成)

    • 发布了 Mixture-of-Thoughts 数据集,包含 35 万条经过验证的推理轨迹(verified traces),涵盖数学、编码和科学任务,旨在教导语言模型进行逐步推理。
    • 发布了训练配方,成功复现了 open-r1/OpenR1-Distill-7B 模型,其推理能力与 deepseek-ai/DeepSeek-R1-Distill-Qwen-7B 相当,标志着阶段 1 的完成。
  • 2025年3月11日(更新 #3)

    • 发布了 CodeForces-CoTs 数据集,包含 1 万个竞技编程问题和 10 万条从 R1 蒸馏出的解决方案。
    • 发布了 IOI24 基准测试,包含来自国际信息学奥林匹克竞赛的极难问题。
    • 性能表现:在 IOI24 上,基于 CodeForces-CoTs 训练的 7B Qwen 模型表现优于 Claude 3.7 Sonnet;32B 模型则超越了 R1 本身。
  • 2025年2月10日(更新 #2)

    • 发布了 OpenR1-Math-220k 数据集,包含 22 万条从 R1 在 NuminaMath 新版本上蒸馏出的轨迹。
    • 在此数据集上训练的模型性能与 DeepSeek 的蒸馏模型持平。
  • 2025年2月2日(更新 #1)

    • 实现了训练、推理和评估管线的第一部分。

4. 安装与配置指南

项目对硬件和软件环境有特定要求,主要依赖 CUDA 12.4。

  • 环境准备

    • 推荐使用 uv 管理 Python 虚拟环境。
    • 必须安装 vLLM (0.8.5.post1)FlashAttention
    • 重要提示:必须使用 PyTorch v2.6.0,因为 vLLM 的二进制文件是为此版本编译的。
    • 需登录 Hugging Face 和 Weights and Biases (W&B) 账户。
    • 需确保系统安装了 Git LFS 以加载和推送模型/数据集。
  • 硬件配置

    • 默认配置针对 8 x H100 (80GB) 节点。
    • 支持 DDP 或 DeepSpeed (ZeRO-2 和 ZeRO-3) 进行分布式训练。
    • 若硬件不同,需调整 batch size 和梯度累积步数以保持全局 batch size 恒定。

5. 训练与推理细节

  • 监督微调 (SFT)

    • 示例命令展示了如何使用 acceleratezero3.yaml 配置,基于 open-r1/Mixture-of-Thoughts 数据集对 Qwen2.5-Math-7B-RoPE-300k 进行微调。
    • 关键参数包括:学习率 4.0e-5,训练轮数 5,最大序列长度 32768,启用 gradient_checkpointingbf16 精度。
  • 聊天模板 (Chat Template) 注意事项

    • 警告:大多数基础模型(如 meta-llama/Llama-3.2-1B)没有预定义的聊天模板,因此训练时默认使用 ChatML。
    • Qwen 模型:Qwen 基础模型(如 Qwen/Qwen2.5-1.5B)在 tokenizer 中预定义了聊天模板,因此必须相应设置 EOS token(例如 <|eot_id|> 或 `
查看原文 →github.com