DeepSeek R1 强化学习

2025年02月

Posted by franztao on February 1, 2025

DeepSeek R1 强化学习指导手册

参考工程:deep-learning-pytorch-huggingface/training/mini-deepseek-r1-aha-grpo.ipynb at main · philschmid/deep-learning-pytorch-huggingface

项目操作手册

  1. ++数据和模型准备++

本项目的训练任务为利用给定的几个数字数字使用”+-x÷”计算得到目标数字,类似于计算 24 点。使用的 base 模型为 Qwen2.5-1.5B-Instruct

  1. 数据集下载链接:https://huggingface.co/datasets/Jiayi-Pan/Countdown-Tasks-3to4

  2. base 模型下载链接:https://www.modelscope.cn/models/Qwen/Qwen2.5-1.5B-Instruct/

  3. 拉取镜像

docker pull
  1. 基于镜像启动容器,并挂载数据和模型所在的路径
docker run -d -it  --device=/dev/infiniband  --device=/dev/dri --device=/dev/mxcd --group-add video --network=host --security-opt seccomp=unconfined --security-opt apparmor=unconfined --shm-size 100gb --ulimit memlock=-1 --name mini-r1 -v /mnt:/mnt mini-deepseek-r1:v0.1 /bin/bash 
  1. 启动训练脚本

    1. 进入工作目录:cd /workspace/mini-deepseek-r1

    2. 修改数据集和模型路径:打开文件 grpo-1.5b.yaml 将下面两个字段分别改成当前容器中的模型的路径和数据集路径

image.png

  1. 启动训练脚本
bash train.sh 2>&1 | tee log.txt

 注:

  •  训练时间估计 10 个小时左右,前面几十个 step 速度较慢,需要 12~13 分钟才会出来一个 step,请耐心等待

  • 训练完成后保存的模型会在./runs/qwen-2.5-1.5b-r1-countdown 文件夹中,也可修改 grpo-1.5b.yaml 中的”output_dir”字段来修改保存的训练结果的路径

  1. 训练后的模型进行测试

打开 inference.py 将下面字段替换成测试模型的路径即可

image.png

最终会输出在 500 条测试数据集中的,模型预测的准确率。

注:测试数据是在训练的时候随机采样的 500 条数据,会在训练的时候单独保存在 /workspace/mini-deepseek-r1/test 目录下

强化学习训练结果

数据说明

本文使用的数据是在Countdown-Tasks-3to4中随机选取的 5 万条数据,然后在其中随机选取了 500 条作为测试数据。

测试结果

模型 测试集准确率
Qwen2.5-1.5B-Instruct 8/500
Qwen2.5-1.5B-r1(450 step) 72/500

说明:

  • Qwen2.5-1.5B-r1(450 step)表示经过 450 个 step 的强化学习训练后得到的模型。

  • 本次训练总共 450 个 step,使用 8 张 C500, 总耗时约 10 小时

结论

经过强化学习后的模型效果明显优于原 base 模型。优于训练的 step 过少,且 1.5B 模型原始的推理能力有限,后续还有很大优化空间。)m