LLMs之DeepSeek-R1:open-r1(完全-完整-开放式-复现DeepSeek-R1)的简介、安装和使用方法、案例应用之详细攻略

LLMs之DeepSeek-R1:open-r1(完全-完整-开放式-复现DeepSeek-R1)的简介、安装和使用方法、案例应用之详细攻略

目录

相关文章

LLMs之MoE之DeepSeek:《DeepSeek-V3 Technical Report》翻译与解读

LLMs之MoE之DeepSeek-V3:DeepSeek-V3的简介、安装和使用方法、案例应用之详细攻略

LLMs之DeepSeek:《DeepSeek-R1: Incentivizing Reasoning Capability in LLMs via Reinforcement Learning》翻译与解读

LLMs之DeepSeek:DeepSeek-R1的简介、安装和使用方法、案例应用之详细攻略

open-r1的简介

1、项目内容

open-r1的安装和使用方法

1、安装

2、使用方法

训练模型

SFT (监督微调)

T1、使用 accelerate 命令启动训练

T2、使用 Slurm 作业提交脚本

GRPO (强化学习)

T1、使用 accelerate 命令启动训练

T2、使用 Slurm 作业提交脚本

评估模型

3、实践

复现 DeepSeek 的 MATH-500 评估结果

从小型蒸馏 R1 模型生成数据:使用 distilabel 库从小型模型生成数据

从 DeepSeek-R1 生成数据:使用Ray分布式计算框架从大型模型生成数据

open-r1的案例应用


相关文章

LLMs之MoE之DeepSeek:《DeepSeek-V3 Technical Report》翻译与解读

LLMs之MoE之DeepSeek:《DeepSeek-V3 Technical Report》翻译与解读-CSDN博客

LLMs之MoE之DeepSeek-V3:DeepSeek-V3的简介、安装和使用方法、案例应用之详细攻略

LLMs之MoE之DeepSeek-V3:DeepSeek-V3的简介、安装和使用方法、案例应用之详细攻略-CSDN博客

LLMs之DeepSeek:《DeepSeek-R1: Incentivizing Reasoning Capability in LLMs via Reinforcement Learning》翻译与解读

LLMs之DeepSeek:《DeepSeek-R1: Incentivizing Reasoning Capability in LLMs via Reinforcement Learning》翻译-CSDN博客

LLMs之DeepSeek:DeepSeek-R1的简介、安装和使用方法、案例应用之详细攻略

LLMs之DeepSeek:DeepSeek-R1的简介、安装和使用方法、案例应用之详细攻略-CSDN博客

open-r1的简介

2025年1月31日,open-r1项目是一个对 DeepSeek-R1 模型进行完全开放式复现的项目。其目标是构建 R1 管道的缺失部分,以便每个人都能复现并在此基础上进行构建。项目的计划大致分为三个步骤:
>> 蒸馏高质量语料:通过从 DeepSeek-R1 蒸馏高质量语料库来复制 R1-Distill 模型。
>> 纯强化学习管道:复制 DeepSeek 用于创建 R1-Zero 的纯强化学习管道。这可能涉及为数学、推理和代码整理新的、大规模的数据集。
>> 多阶段训练:展示如何通过多阶段训练从基础模型过渡到强化学习微调模型。

总而言之,Hugging Face 的 open-r1 项目是一个对 DeepSeek-R1 模型进行完全开放式复现的项目。 它提供了从模型训练评估数据生成的完整流程,并支持多种并行策略以适应不同的硬件资源。用户可以根据自身需求选择不同的训练和评估方式,并根据提供的脚本生成合成数据。该项目文档详细,易于上手,并提供了多个案例应用示例,方便用户进行复现和改进。 项目的开放性和可复现性使其具有重要的研究价值和应用前景。 然而,该项目对硬件资源要求较高,需要一定的集群计算资源才能充分发挥其性能。

GitHub地址GitHub - huggingface/open-r1: Fully open reproduction of DeepSeek-R1

1、项目内容

该项目旨在对 DeepSeek-R1 模型进行完全开放的复现,目标是构建 R1 管道中缺失的部分,使其可被所有人复现和改进。项目设计简洁,主要由 src/open_r1 目录下的几个关键 Python 脚本和一个 Makefile 组成。

src/open_r1 目录包含用于训练和评估模型以及生成合成数据的脚本:

grpo.py:使用 GRPO 在给定数据集上训练模型。

sft.py:对数据集上的模型进行简单的 SFT(监督微调)。

evaluate.py:在 R1 基准测试上评估模型。

generate.py:使用 Distilabel 从模型生成合成数据。

Makefile:包含利用上述脚本的 R1 管道中每个步骤的易于运行的命令。

open-r1的安装和使用方法

1、安装

本节提供了详细的安装步骤,涵盖了虚拟环境创建、核心库安装、账户登录以及 Git LFS 安装等方面,并强调了版本兼容性问题。

安装过程需要先创建 Python 虚拟环境(推荐使用 uv 工具),然后安装 vLLM (版本 >=0.7.0,并指定 CUDA 12.1 版本),最后安装项目依赖 (推荐 pip install -e ".[dev]")。 此外,需要登录 Hugging Face 和 Weights and Biases 账户,并安装 Git LFS。 安装过程中需要注意 CUDA 版本兼容性,PyTorch 版本必须为 2.5.1。

创建虚拟环境

使用 uv 创建 Python 虚拟环境 (需要先安装 uv,请参考 UV 安装指南)。

uv venv openr1 --python 3.11 && source openr1/bin/activate && uv pip install --upgrade pip

安装 vLLM

确保你的系统 CUDA 版本为 12.1。

pip install vllm>=0.7.0 --extra-index-url https://download.pytorch.org/whl/cu121。

设置 LD_LIBRARY_PATH 环境变量

export LD_LIBRARY_PATH=$(python -c "import site; print(site.getsitepackages()[0] + '/nvidia/nvjitlink/lib')") 这会同时安装 PyTorch v2.5.1,非常重要,因为 vLLM 二进制文件为此版本编译

安装其他依赖

根据你的具体用例安装剩余的依赖项,推荐使用 pip install -e ".[dev]" 安装开发模式下的依赖。

登录账户

登录 Hugging Face 和 Weights and Biases 账户

分别使用 huggingface-cli login 和 wandb login 命令登录。

安装 Git LFS (可选)

如果需要加载和推送模型/数据集到 Hugging Face Hub,请安装 Git LFS:git-lfs --version (检查是否已安装);sudo apt-get install git-lfs (如果未安装)。

2、使用方法

项目支持使用 DDP 或 DeepSpeed(ZeRO-2 和 ZeRO-3)训练模型。通过更改 configs 中的 accelerate YAML 配置文件路径来切换方法。

训练模型

SFT (监督微调)

提供了使用 accelerate 命令和 Slurm 作业提交脚本两种方式进行 SFT 训练的命令示例。 配置针对 8 个 H100 GPU (80GB) 的节点,其他硬件配置需要调整批大小和梯度累积步数。

T1、使用 accelerate 命令启动训练
ACCELERATE_LOG_LEVEL=info accelerate launch --config_file recipes/accelerate_configs/zero3.yaml src/open_r1/sft.py --config recipes/qwen/Qwen2.5-1.5B-Instruct/sft/config_full.yaml
T2、使用 Slurm 作业提交脚本

sbatch --output=/path/to/logs/%x-%j.out --err=/path/to/logs/%x-%j.err slurm/sft.slurm {model} {dataset} {accelerator}

GRPO (强化学习)

使用一个 GPU 运行 vLLM 进行快速生成,其余 GPU 用于训练。 提供了使用 accelerate 命令和 Slurm 作业提交脚本两种方式进行 GRPO 训练的命令示例,同样需要根据硬件配置调整参数。

T1、使用 accelerate 命令启动训练

ACCELERATE_LOG_LEVEL=info accelerate launch --config_file recipes/accelerate_configs/zero3.yaml --num_processes=7 src/open_r1/grpo.py --config recipes/qwen/Qwen2.5-1.5B-Instruct/grpo/confg_full.yaml (此例为 8 卡,使用 7 卡训练)

T2、使用 Slurm 作业提交脚本

sbatch --output=/path/to/logs/%x-%j.out --err=/path/to/logs/%x-%j.err slurm/grpo.slurm {model} {dataset} {accelerator}

评估模型

使用 lighteval 进行模型评估,自定义任务定义在 src/open_r1/evaluate.py 中。 支持单 GPU、数据并行和张量并行三种评估方式,并提供了相应的命令示例,针对不同硬件资源和模型大小的多种并行策略。 make evaluate 命令可以简化评估过程。

3、实践

复现 DeepSeek 的 MATH-500 评估结果

提供了复现 DeepSeek 在 MATH-500 基准测试上结果的命令示例,涵盖了不同大小的 Qwen 和 Llama 模型。 结果显示,该项目能够很好地复现 DeepSeek 的报告结果。可以使用 sbatch slurm/evaluate.slurm {model} math_500 命令复现结果,其中 {model} 为模型 ID,对于某些模型可能需要指定 tp 参数表示张量并行

ModelMATH-500 (HF lighteval)MATH-500 (DeepSeek Reported)
DeepSeek-R1-Distill-Qwen-1.5B81.683.9
DeepSeek-R1-Distill-Qwen-7B91.892.8
DeepSeek-R1-Distill-Qwen-14B94.293.9
DeepSeek-R1-Distill-Qwen-32B95.094.3
DeepSeek-R1-Distill-Llama-8B85.889.1
DeepSeek-R1-Distill-Llama-70B93.494.5

从小型蒸馏 R1 模型生成数据:使用 distilabel 库从小型模型生成数据

使用 distilabel 库从小型蒸馏 R1 模型生成数据的 Python 脚本示例 (pipeline.py),该脚本可以运行在单个H100 GPU 上。 需要安装 distilabel[vllm]>=1.5.2。可以指定模型、提示模板和输出位置等参数。生成的数据可以推送到 Hugging Face Hub。

现在将以下代码片段保存到名为的文件中pipeline.py,并使用 运行它python pipeline.py。它将为 10 个示例中的每一个生成 4 个输出(将存储库的用户名更改为你的组织/用户名):查看HuggingFaceH4/numina-deepseek-r1-qwen-7b中的示例数据集。

from datasets import load_dataset
from distilabel.models import vLLM
from distilabel.pipeline import Pipeline
from distilabel.steps.tasks import TextGeneration


prompt_template = """\
You will be given a problem. Please reason step by step, and put your final answer within \boxed{}:
{
  
  { instruction }}"""

dataset = load_dataset("AI-MO/NuminaMath-TIR", split="train").select(range(10))

model_id = "deepseek-ai/DeepSeek-R1-Distill-Qwen-7B"  # Exchange with another smol distilled r1

with Pipeline(
    name="distill-qwen-7b-r1",
    description="A pipeline to generate data from a distilled r1 model",
) as pipeline:

    llm = vLLM(
        model=model_id,
        tokenizer=model_id,
        extra_kwargs={
            "tensor_parallel_size": 1,
            "max_model_len": 8192,
        },
        generation_kwargs={
            "temperature": 0.6,
            "max_new_tokens": 8192,
        },
    )
    prompt_column = "problem"
    text_generation = TextGeneration(
        llm=llm, 
        template=prompt_template,
        num_generations=4,
        input_mappings={"instruction": prompt_column} if prompt_column is not None else {}
    )


if __name__ == "__main__":
    distiset = pipeline.run(dataset=dataset)
    distiset.push_to_hub(repo_id="username/numina-deepseek-r1-qwen-7b")

从 DeepSeek-R1 生成数据:使用Ray分布式计算框架从大型模型生成数据

使用 Slurm 作业提交脚本 (slurm/generate.slurm) 从 DeepSeek-R1 生成数据,指定数据集、温度、提示列、模型和输出数据集等参数。该过程使用 Ray 进行分布式计算,需要 2 个节点,每个节点有 8 个 H100 GPU。 需要安装 distilabel[vllm,ray,openai]>=1.5.2 和一个特殊的 vLLM 开发版 wheel。 运行过程中可以使用 SSH 隧道访问 Ray dashboard。

首先,安装依赖项:

pip install https://wheels.vllm.ai/221d388cc5a836fa189305785ed7e887cea8b510/vllm-1.0.0.dev-cp38-abi3-manylinux1_x86_64.whl --extra-index-url https://download.pytorch.org/whl/cu121

uv pip install "distilabel[vllm,ray,openai]>=1.5.2"

然后运行以下命令:

sbatch slurm/generate.slurm \
    --hf-dataset AI-MO/NuminaMath-TIR \
    --temperature 0.6 \
    --prompt-column problem \
    --model deepseek-ai/DeepSeek-R1 \
    --hf-output-dataset username/r1-dataset
 

open-r1的案例应用

持续更新中……

### DeepSeek R1 版本概述 DeepSeek R1 是由人工智能公司 DeepSeek-AI 于2025年1月20日正式发布的全新大语言模型,该版本连同其变体 DeepSeek R1-Zero 一同推出。此次发布代表了开源大型语言模型(LLMs)在推理能力方面的重要进展[^1]。 #### 技术创新亮点 核心技术创新之一在于采用了基于强化学习的方法来增强模型的推理能力。这种技术使得 DeepSeek R1 能够更高效地理解解决复杂的逻辑问题以及编程挑战。例如,在处理最大子数组的问题时,DeepSeek R1 展现出了接近甚至超越人类高级程序员的能力,这得益于它所采用的独特算法设计思路[^3]。 #### 性能表现 除了卓越的推理能力编程技巧外,DeepSeek R1 在自然语言处理领域同样表现出色。无论是理解上下文语境还是生成高质量文本内容,都达到了行业领先水平。此外,对于特定应用场景下的定制化需求,比如构建后端API服务,DeepSeek R1 可以为用户提供符合标准且高效的代码模板支持。 #### 获取途径与资源链接 为了方便广大开发者技术爱好者获取并利用这款先进的 AI 工具,官方提供了详细的文档指导及下载渠道: - **GitHub仓库**: [https://github.com/DeepSeek-AI/deepseek-r1](https://github.com/DeepSeek-AI/deepseek-r1) 请注意访问上述链接以获得最新版本的信息其他相关资料。 ```bash git clone https://github.com/DeepSeek-AI/deepseek-r1.git cd deepseek-r1 pip install . ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一个处女座的程序猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值