如何微调DeepSeek-R1?cgft-llm训练数据构造与单机多卡并行加速深度实战
【免费下载链接】cgft-llmcgft-llm 是一个学习大语言模型(LLM)开发的开源资源。它提供代码、文档和视频教程,帮助用户通过实践掌握前沿核心 LLM 技术项目地址: https://gitcode.com/echonoshy/cgft-llm
本文将带你用开源项目cgft-llm完成一次完整的DeepSeek-R1 大模型微调实战:从LLaMA-Factory 微调环境搭建、训练数据构造(Alpaca/ShareGPT 格式与数据集注册),到单机多卡并行加速训练命令与关键参数调优,全程图文拆解,适合刚入门 LLM 微调的新手快速上手。
📄 本文对应的原始实战笔记:deepseek-r1-finetune.md,完整数据集整理指南见 llama-factory-training-dataset.md。
一、为什么用 LLaMA-Factory 微调 DeepSeek-R1?
微调 DeepSeek-R1 蒸馏模型(如 DeepSeek-R1-Distill-Qwen-7B),社区常见两条路线:
| 方案 | 特点 | 是否推荐 |
|---|---|---|
| Unsloth | 速度快,但对新版 R1 系模板/数据格式兼容性偶有问题 | ⚠️ 谨慎使用 |
| LLaMA-Factory | 生态成熟、模板全(含deepseek3模板)、Web UI + 命令行双模式 | ✅ 推荐 |
cgft-llm 的选择是LLaMA-Factory + LoRA:只用少量可训练参数(lora_rank: 8)就能显著改善模型在垂直领域的表现,7B 模型在消费级显卡上也能跑起来。
先克隆项目获取全部数据与配置:
git clone https://gitcode.com/echonoshy/cgft-llm二、环境准备:一张 24G 显存的卡起步
微调 7B 级 R1 蒸馏模型,硬件门槛并不高:
- GPU:单张 RTX 4090(24GB)即可 LoRA 训练;多卡可进一步加速
- 软件栈:Python 3.10+ / PyTorch 2.x / CUDA 12.x
- 框架:克隆 LLaMA-Factory 后执行
pip install -e ".[torch,metrics]"即可
安装时建议先配置模型下载镜像,避免网络问题:
pip install huggingface_hub export HF_ENDPOINT=https://hf-mirror.com随后用huggingface-cli download分别下载SFT 蒸馏数据集(11 万条中文对话)与DeepSeek-R1-Distill-Qwen-7B基座模型,放入训练目录即可。
三、DeepSeek-R1 训练数据构造:格式与数据集注册 📂
微调效果的一半取决于数据。LLaMA-Factory 支持两种主流格式:
- Alpaca 格式(单轮指令):
instruction+input→output,可带system与多轮history - ShareGPT 格式(多轮对话):
messages列表,由role/content组成;训练 function calling 能力时必须用它
项目内置的 fintech.json 就是一个标准 Alpaca 样例,第一条数据形如:
{ "instruction": "国际经济与贸易专业的就业前景是怎么样的?", "input": "", "output": "国际经济与贸易专业的就业面较为广阔……", "history": [["从事国际经济与贸易专业的人可以有哪些工作机会?", "……"]] }💡 数据处理三原则:人工复核剔除脏数据(不要全信 GPT 自动整理)、内容做简化、按需数据增广,详见 llama-factory-training-dataset.md。
注册数据集:dataset_info.json 一键配置
新数据放进 LLaMA-Factory 的data/目录后,只需在注册文件里加一段映射(项目示例:dataset_info.json):
"distill_r1_110k": { "file_name": "your_sft_data.json", "columns": { "prompt": "instruction", "query": "input", "response": "output", "history": "history" } }训练时用--dataset distill_r1_110k引用即可,模板务必指定--template deepseek3,这是 R1 系列微调最容易踩的坑。
微调后的 DeepSeek-R1 还能无缝接入 RAG 知识库:你的文档数据经索引后,与提示词一起送入 LLM 生成回答
四、单机多卡并行加速:3 张卡跑通 DDP 训练 🚀
单机多卡的核心思路:指定可用 GPU → 框架自动启用 DDP(Distributed Data Parallel)→ 每张卡各持一份模型与参数,梯度同步更新。
CUDA_VISIBLE_DEVICES=0,1,3 llamafactory-cli train \ --stage sft \ --model_name_or_path ./DeepSeek-R1-Distill-Qwen-7B \ --finetuning_type lora \ --template deepseek3 \ --dataset distill_r1_110k \ --cutoff_len 2000 \ --bf16 True \ --ddp_timeout 180000000多卡加速的 4 个关键点:
CUDA_VISIBLE_DEVICES=0,1,3:只挑空闲卡参与训练,坏卡/占用卡直接跳过bf16 True:混合精度,显存与速度双优化--ddp_timeout 180000000:数据预处理阶段耗时较长,调大 DDP 超时避免多卡"死等"报错flash_attn auto+gradient_accumulation_steps 8:注意力加速 + 梯度累积,等效放大 batch 而不爆显存
完整的训练命令(含学习率5e-05、cosine调度器、lora_target all等全部参数)已收录在 deepseek-r1-finetune.md,可直接复制复现;类似的 LoRA SFT 配置示例还有 train_llama3_lora_sft.yaml 可对照参考。
关键训练参数速查表
| 参数 | 示例值 | 作用 |
|---|---|---|
learning_rate | 5e-05 | LoRA 常用 1e-5 ~ 5e-5,过大易发散 |
per_device_train_batch_size | 1 | 单卡 batch,显存吃紧就调小 |
gradient_accumulation_steps | 8 | 与上项相乘 = 等效 batch |
cutoff_len | 2000 | R1 回答偏长,别设太小被截断 |
num_train_epochs | 1.0 | 11 万级数据先跑 1 轮看 loss |
lora_rank / lora_alpha | 8 / 16 | alpha 常取 rank 的 2 倍 |
save_steps / logging_steps | 100 / 5 | 便于保存中间 checkpoint、观察 loss 曲线 |
五、训练完成之后:LoRA 合并与验证 ✅
训练结束后output_dir下会产出 LoRA 适配器与trainer_log.jsonl损失曲线(--plot_loss True自动绘图)。
- 合并权重:把基座与 LoRA 合并为完整模型,配置参考 merge_llama3_lora_sft.yaml。⚠️ 注意:不要用量化模型或
quantization_bit参数来合并 LoRA - 对话验证:
llamafactory-cli webchat打开 Web 界面直接对话,或llamafactory-cli chat走终端 - API 部署:
llamafactory-cli api提供 OpenAI 风格接口,即可接入下游应用
微调不止于对话:配合 ShareGPT 格式数据,同一套流程还能训练出会自主决定"调用工具"的 R1 模型
六、新手避坑清单 📌
| 坑 | 解法 |
|---|---|
| 模型输出格式乱 | --template与基座不匹配,R1 系请用deepseek3 |
| 多卡训练中途报错超时 | 调大--ddp_timeout |
| 显存 OOM | 降per_device_train_batch_size,用梯度累积补等效 batch |
| 回答被截断 | 调大cutoff_len(R1 推理链较长) |
| 效果不佳 | 先查数据质量:脏数据、格式错误都会拖垮 loss |
总结
借助 cgft-llm 的完整素材,你只需要三步就能完成一次生产级的DeepSeek-R1 微调:
- 备数据:整理 Alpaca/ShareGPT 格式 SFT 数据并在
dataset_info.json注册 - 配环境:LLaMA-Factory + LoRA +
deepseek3模板 - 跑多卡:
CUDA_VISIBLE_DEVICES指定空闲卡,DDP 自动加速
掌握这套流程后,替换数据与基座模型,即可批量微调出属于你自己的垂直领域大模型。更多 LLM 部署与 RAG 实战,可继续阅读项目内 llama-factory/README.md 中的完整教程。
【免费下载链接】cgft-llmcgft-llm 是一个学习大语言模型(LLM)开发的开源资源。它提供代码、文档和视频教程,帮助用户通过实践掌握前沿核心 LLM 技术项目地址: https://gitcode.com/echonoshy/cgft-llm
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考