DeepSeek-671B 推理方案目前相对比较成熟,如何微调满血版本实践案例较少,今天介绍一个 由中国科学院自动化研究所与中科闻歌联合推出的 全参数微调开源项目,能够给开发者微调DeepSeek给予一些参考。该项目不仅提供了从模型训练到推理的完整代码和脚本,还分享了实际训练中的经验总结与优化建议。
项目亮点包括:
- 完整训练逻辑代码
基于 DeepSeek-V3 论文,结合 DeepSeek-V2 代码,确保与官方架构兼容。 2. 高效并行训练策略
支持数据并行(DeepSpeed ZeRO)与序列并行(SP),在 32 台H100 服务器集群上完成 671B 模型的微调。 3. 实战经验总结
提供多组实验配置对比,推荐最优训练参数,助开发者少走弯路。
硬件配置方面,
单台服务器配置如下表,
CUDA 版本为 12.6 。整个
集群中共有 32 台相同配置的机器,共享 100TB 的存储空间,挂载在
/nfs
,
基于 Ubuntu 22.04 操作系统,使用 IB 网络和 NVLink 进行通信,
环境配置上,项目基于 xtuner 框架,支持 Deepseek V3/R1 模型架构的全参数微调。项目提供了详细的安装指南和训练步骤,包括环境配置、数据准备、启动训练等。例如,在数据准备 阶段,项目基于 OpenAI 标准数据格式进行扩展以兼容 reasoning 数据,并提供了转换后的数据样例文件供参考。
以下是官方给出的在不同并行策略和配置下进行的几项实验的结论,包括模型训练的可行性。训练数据量约为 100k,训练上下文长度为 32k。表格报告了使用的机器数量(节点)、序列并行性(sp)、数据并行性方法(dp)、单卡批量大小(bs)、迭代次数(epoch)、学习率(lr)、单卡内存(mem)、实验记录和备注(notes)。
以下是训练过程中的截图。在对构建推理数据进行完全微调 DeepSeek V3 时,初始损失通常约为 3.5,经过 1 个训练周期后,损失收敛到约 1.2 左右。
同时,DeepSeek-671B-SFT-Guide 还提供了模型权重转换和推理部署的指导,使用户能够轻松地将训练好的模型应用于实际场景。例如,在模型推理部署阶段,项目使用 vLLM 对全参数微调后的模型进行简单部署测试,并提供了详细的操作步骤。
随着DeepSeek的行业深入应用,微调是一个绕不开的话题,该项目为开发提供了很好的参考和实践经验,是一个很好的起点。
项目地址: https://github.com/ScienceOne-AI/DeepSeek-671B-SFT-Guide
新书推荐:
公众号回复“进群”入群讨论。