如何从零打造一个极简的DeepSeek-R1大模型

如何从零打造一个极简的DeepSeek-R1大模型

本文旨在记录和分享如何依据开源项目minimind,从零开始完整地训练一个极简的大语言模型。minimind这个开源项目的目标是以极低的成本(约3块钱)和极短的时间(2小时)训练出一个仅有25.8M的超小型语言模型MiniMind。

这篇文章将重点关注整个大模型训练的完整流程,而非追求模型的极致性能。

一、 准备工作:高性价比的算力平台

要训练模型,首先需要GPU算力。本次实践选用的是GpuGeek算力市场。

• 选择GPU:平台提供了多种GPU选项,其中 RTX-A5000-24G 显卡性价比极高。它的单精度浮点性能达到27.8 TFLOPS,显存带宽768 GB/s,性能约为RTX 3090的80%,但价格却便宜很多,非常适合个人开发者和算法工程师进行模型迭代。

• 创建实例:在GpuGeek官网注册并完成实名认证后,进入控制台创建一个GPU实例。选择RTX-A5000-24G显卡,系统会自动创建容器实例,并支持SSH、JupyterLab等多种登录方式。

• 扩展数据盘:为了确保后续数据集和模型权重的存储空间充足,可以根据需要扩展数据盘。例如,扩展100GB的成本非常低廉。

二、 数据集准备:MiniMind开源数据集

minimind项目非常贴心地开源了预训练、微调和强化学习所需的全部数据集,省去了繁琐的数据预处理工作。

• 数据集简介:

◦ pretrain_hq.jsonl: 用于模型预训练阶段。

◦ sft_mini_512.jsonl: 用于SFT(监督微调)阶段,整合了匠数科技SFT数据和Qwen2.5蒸馏数据。

◦ dpo.jsonl: 用于RLHF(强化学习)阶段。

◦ r1_mix_1024.jsonl: DeepSeek-R1-1.5B蒸馏数据,这是训练推理模型的关键。

你可以打开这些数据集的具体内容,以便领会每个训练阶段的数据集不同格式。

• 下载数据集:

  1. 安装modelscope库:pip install modelscope。

  2. 进入数据盘目录(如 /gz-data),使用以下命令下载完整数据集:

  3. GpuGeek平台的网络速度很快,可以有效避免下载焦虑。

下面的流程图让我们对每个数据集在训练阶段的作用更加清晰:

三、 训练流程:三步构建大模型

首先,需要下载minimind项目代码,并准备好运行环境。

  1. 克隆项目代码:

  2. 这里使用了ghfast.top来加速GitHub的下载。

  3. 安装依赖:

  4. 注意:为了避免安装失败,建议去掉requirements.txt文件中各个库的版本号限制。

  5. 移动数据集:将下载好的数据集文件移动到项目代码的dataset目录下。

接下来,就可以按照大模型训练的经典三阶段流程开始训练了。所有训练脚本都位于trainer目录下。

第一阶段:预训练 (Pre-training) - 学知识

此阶段让模型学习语言的基本规律和世界知识。

执行后会得到预训练权重文件 pretrain_*.pth。

第二阶段:指令微调 (SFT) - 学对话

此阶段教模型理解并遵循人类的指令,进行对。

执行后会得到全参数微调后的权重文件 full_sft_*.pth。

第三阶段:强化学习 (RLHF) - 学偏好

通过DPO(Direct Preference Optimization)算法,让模型的回答更符合人类的偏好。

四、 核心技巧:训练符合特定格式的推理模型

为了让模型能像DeepSeek-R1那样生成带有和标签的回复,需要进行蒸馏训练。

• 回复模板:推理模型R1的回复遵循以下模板:

• 这个模板通过在强化学习阶段设置规则奖励函数来约束模型。

• 损失惩罚技巧:实验发现,仅通过SFT式的蒸馏,模型很难稳定地遵循上述模板。minimind项目采用了一个小技巧:在训练脚本 train_distill_reason.py 中,对标记位置的token(如)增加损失惩罚。通过提高这些关键token的损失权重,强制模型学会生成指定的格式。

下面是类似R1的训练数据格式:

在训练数据里有和两个部分,训练之后,我们可以在out目录得到四个模型权重:

五、 测试与总结

训练完成后,out目录下会生成四个模型权重。可以使用eval_model.py脚本来测试模型的效果。尽管由于参数量小,模型的回答可能比较简短,但它已经能够成功回答问题,完整地走完了整个训练流程。

通过这个项目,我们不仅可以动手实践大模型的完整训练过程,还能深入理解其背后的源码实现,例如其基于Transformer并包含MoE(混合专家系统)功能的MiniMind模型架构。

建议对源码进行深入阅读,以获得更深刻的理解。

相关推荐
江畔柳前堤1 小时前
大语言模型分布式训练:从并行策略到万卡工程的系统梳理
人工智能·分布式·深度学习·算法·目标检测·机器学习·语言模型
Shockang1 小时前
智能体环路工程实战
人工智能
美摄科技1 小时前
美摄美颜特效SDK Skill:以AI赋能智能视音频新视界
人工智能
Web3_Daisy2 小时前
Pump.fun 与 FOMO 竞争背后的 Meme 市场变局
大数据·人工智能·金融·web3·区块链
AI创界者2 小时前
MiniMax-H3 本地一键部署整合包:8G 显存玩转文图生视频、视频参考、角色替换与超分补帧全流程
人工智能·深度学习
江畔柳前堤2 小时前
HBM:大语言模型时代的「算力血液」——从内存墙到带宽革命的深度拆解
服务器·人工智能·windows·目标检测·语言模型·自然语言处理·软件工程
美摄科技2 小时前
视频一键成片SDK Skill:AI智能分析与语义理解
人工智能
fthux3 小时前
装闭 RenoPit 源码解析(05):FastAPI与Celery如何执行AI装修分析
人工智能·ai·开源·github·open source·renopit
格数致用3 小时前
数据库设计与表结构详解|信息化项目全流程管理系统源码逐行精讲(五)
人工智能·政务·数据库设计·外键约束