近期,由
中国科学院自动化研究所
与
中科闻歌
联合推出的 DeepSeek-V3/R1 671B 全参数微调开源方案正式发布!该项目完整公开了从模型训练到推理的全流程代码与脚本,并附带了实际训练中的经验总结与优化建议,为大模型开发者提供了一套可直接落地实战的解决方案。
1、完整训练逻辑代码:
基于DeepSeek-V3论文,并结合DeepSeek-V2代码,该项目实现了包含训练核心逻辑的
modeling_deepseek.py
文件,确保与官方架构兼容。
2、高效并行训练策略:
支持
数据并行(DeepSpeed ZeRO)
与
序列并行(SP)
,在32台H100服务器集群上完成671B模型的满血版模型全参数微调。
3、训练实战经验总结:
提供多组实验配置对比(如不同超参数、并行策略选择下的显存占用),推荐最优训练参数,助开发者少走弯路。
技术角度:通过全参数微调,DeepSeek 模型能更好地训练并拟合目标任务模式和数据分布,整体训练效果优于 LoRA 等低资源微调方案。
应用角度:针对模型在预训练阶段已具备基础知识的领域,全参数微调能够挖掘模型在特定垂直领域(如社会计算、媒体领域等)各种下游任务的性能潜力。
单台服务器配置如下表,集群共有 32 台相同配置的机器,共享 100TB 存储空间,挂载路径为
/nfs
。机器操作系统为 Ubuntu 22.04,机器之间使用 IB 网络进行通信,GPU 之间通过 NVLink 通信,CUDA 版本为 12.6。
本项目基于 xtuner 框架进行扩展和改进,使其支持 Deepseek V3/R1(即
DeepseekV3ForCausalLM
模型架构)的全参数微调,支持数据并行(DeepSpeed ZeRO based DP)和序列并行(Sequence Parallel, SP)。安装 Python 环境,可根据项目中
requirements.txt
安装依赖包,并将
./code/xtuner
与
DeepseekV3ForCausalLM
训练相关的核心代码覆盖原始 xtuner package 的对应代码即可。
conda create -n ds_env python=3.10
conda activate ds_env
pip install -r requirements.txt
YOUR_ENV_PATH='/nfs/miniconda3/envs/ds_env/lib/python3.10/site-packages'
cp -r ./code/xtuner $YOUR_ENV_PATH
该项目基于 OpenAI 标准数据格式进行扩展以兼容 reasoning 数据,每条原始训练数据格式如下。如果有思考过程,则 assistant 角色的 reasoning_content 字段非空。
{
"messages": [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "用户问题"},
{"role": "assistant", "content": "最终回答", "reasoning_content": "思考过程"}
]
}
为了简化处理逻辑,该项目将 reasoning_content 和 content 按照 Deepseek 的训练格式合并到 content 字段中。此外,为了兼容多轮对话的训练逻辑,还为 assistant 角色的每轮添加了 loss 字段,仅对值为 true 的 content 内容计算 loss。
{
"messages": [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "用户问题"},
{"role": "assistant", "content": "\n思考过程\n\n\n最终回答", "loss": true}
]
}
为了更清晰地展示数据存储格式,该项目提供了一份转换后的数据样例文件 ./data/train_example.json 以供参考。在实际训练时,程序会根据 Deepseek V3/R1 的训练模版自动转换为如下格式,这里仅供展示:
<|begin▁of▁sentence|>You are a helpful assistant.<|User|>用户问题<|Assistant|><think>\n思考过程\nthink>\n\n最终回答<|end▁of▁sentence|>
该项目提供了训练代码和训练启动脚本,其中: