LLama-Factory微调DeepSeek-R1-Distill-Qwen-1.5B

LLama-Factory微调DeepSeek-R1-Distill-Qwen-1.5B
琴生- 框架: LLama-Factory
- 算法: LoRA
- 基座模型:DeepSeek-R1-Distill-Qwen-1.5B
- GPU:单卡4090
LLama-Factory安装部署
- 克隆仓库
1 | git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git |
- 切换到项目目录
1 | cd LLaMA-Factory |
- 修改配置,将 conda 虚拟环境安装到数据盘
1 | mkdir -p /root/autodl-tmp/conda/pkgs |
- 创建 conda 虚拟环境
1 | conda create -n llama-factory python=3.10 |
- 激活虚拟环境
1 | conda activate llama-factory |
- 在虚拟环境中安装 LLaMA Factory 相关依赖
1 | pip install -e ".[torch,metrics]" |
- 启动 LLama-Factory 的可视化微调界面
1 | llamafactory-cli webui |
从HuggingFace下载基座模型
- 创建文件夹统一存放所有基座模型
1 | mkdir Hugging-Face |
- 修改 HuggingFace 的镜像源
1 | export HF_ENDPOINT=https://hf-mirror.com |
- 修改模型下载的默认位置
1 | export HF_HOME=/root/autodl-tmp/Hugging-Face |
- 安装 HuggingFace 官方下载工具
1 | pip install -U huggingface_hub |
- 执行下载命令
1 | huggingface-cli download --resume-download deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B |
准备训练数据集
- 按格式准备用于微调的数据集java_method_name.json,示例:
1 | [ |
- 修改 dataset_info.json 文件,添加配置:
1 | "java_method_name": { |
- 将数据集java_method_name.json放到 LLama-Factory 的 data 目录下
进行相关设置开始微调
- 学习率(Learning Rate):模型每次更新时权重改变的幅度。过大可能错过最优解,过小学得慢或陷入局部最优解
- 训练轮数(Epochs):太小欠拟合(没学好),太大过拟合(学过头了)
- 最大梯度范数(Max Gradient Norm):当梯度的值超过这个范围时会被截断,防止梯度爆炸
- 最大样本数(Max Samples):每轮训练中最多使用的样本数
- 计算类型(Computation Type):训练时使用的数据类型,常见有 float32 和 float16。在性能和精度之间找平衡
- 截断长度(Truncation Length):处理长文本时如果太长超过这个阈值的部分会被截断掉,避免内存溢出
- 批处理大小(Batch Size):由于内存限制,每轮训练我们要将训练集数据分批次送进去,这个批次大小就是Batch Size
- 梯度累积(Gradient Accumulation):默认情况下模型会在每个 batch 处理完后进行一次更新一个参数。但可通过设置梯度累计,让其直到处理完多个小批次的数据后才进行一次更新
- 验证集比例(Validation Set Proportion):数据集分为训练集和验证集两部分,训练集用来学习训练,验证集用来验证学习效果
- 学习率调节器(Learning Rate Scheduler):在训练过程中自动调整优化学习率
微调结束评估效果
若微调效果不理想,可以:
- 使用更强的预训练模型
- 增加数据量
- 优化数据质量(数据清洗、数据增强等)
- 调整训练参数,如学习率、训练轮数、优化器、批次大小等
导出合并后的模型
- 为什么要合并:因为 LoRA 只是通过低秩矩阵调整原始模型的部分权重,而不直接修改原模型的权重。合并步骤将 LoRA 权重与原始模型权重融合生成一个完整的模型
- 创建目录,用于存放导出后的模型
1 | mkdir -p Models/deepseek-r1-1.5b-merged |
- 在页面配置路径导出
评论
匿名评论隐私政策
✅ 你无需删除空行,直接评论以获取最佳展示效果