作者:asher
在人工智能的浪潮中, 凭借其卓越的性能与潜力,成为众多开发者和研究人员眼中的 “香饽饽”。本地训练作为深入挖掘和优化模型的关键环节,却因各种适配性问题,让不少人望而却步。面对网上那些看似详尽却又总少了关键一环的复现文章,你是否也在苦苦摸索 “本地训练” 的正确打开方式?别担心,今天就为你带来一篇超实用的干货文章,手把手带你打通 DeepSeek R1 本地训练的 “任督二脉”,让训练流程变得简单易懂,轻松上手!
许多关于 DeepSeek R1 的复现文章,主要聚焦在“rewards的设计、训练指标的变化、benchmark测评”这些内容,但是对于“本地训练”这个开启深度探索的关键前置步骤,却很少有人深挖。
可能有人觉得,照着readme操作就能轻松训练了吧?太天真啦!实际动手就会发现,和自家的环境各种水土不服,大模型不是训不起来就是训的太慢,问题多到让人头大。
为了解决本地训练的适配性问题,今天挑选HuggingFace的开源项目open-r1,为大家带来一场全流程实操演示,从怎么在8卡A100(40G)上跑通基于Qwen-14B的DeepSeek R1复现,到分享超实用的环境镜像,还有满满踩坑经验,再到手把手教你改造代码适配自己的任务数据,助大家光速开启DeepSeek R1在自定义数据上的训练探索之旅。
显卡驱动与CUDA适配要点
open-r1明确要求cuda12.4,得先瞅瞅自己机器的显卡驱动版本(如下图),要是版本太老,那可就得升级才能适配适配cuda12.4,我亲测,显卡驱动版本为470以上就能正常运行,我的版本是535。
快速搞定环境安装
与readme里的uv相比,我还是习惯使用conda管理虚拟环境:
导致OOM的原因有这么多
以grpo训练为例,使用Qwen-14B在A100上训练很容易报错OOM,原因有多种,让我来为大家一一分析:grpo任务可以分为两部分:一部分是模型训练(7卡),一部分是模型推理(1卡),OOM报错的原因就来自这两部分。
那么如何识别自己的OOM报错是出自训练还是推理呢?直接看报错的GPU卡号,因为默认是最后一张卡用于推理,如下图既然是GPU 7 内存不足,那就推理出了问题,只需要调整上述提到的两个参数即可。
针对Qwen-14B在8卡A100(40G)训练对应的配置文件,我已经调教好了放在本文最后,供大家参考。
reward函数的形参命名有讲究
在设计reward函数,有个注意:reward函数声明的形参很重要,不是随便起的,要求与dataset的列名是一致的。比如下面这个reward函数的两个形参,completions表示模型生成的内容,ground_truth表示dataset中”ground_truth“列的值,这里的形参ground_truth就是要求与dataset列名字对齐。
数据先行!准备业务数据要点
离线构造业务数据集data.json,注意字段名为problem与solution,与官方给的示例数据字段名一致,这样可以少去很多改代码的麻烦
巧妙变身!轻松更改数据读取方式
修改grpo.py中数据读取方式,由读取hub数据改为读取离线数据
个性定制!手把手自定义reward函数
注意这里函数声明中solution形参要与dataset的字段保持一致
一键启动!畅爽开启DeepSeek R1训练
recipes/accelerate_configs/zero3.yaml
recipes/Qwen2.5-14B-Instruct/grpo/config_simple_rl.yaml
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/220839.html