大模型之用LLaMA-Factory微调Deepseek-r1-8b模型实践

前期尝试用Unsloth微调大模型(大模型之用Unsloth微调医疗大模型实践),但整体步骤比较多,对初学者不太友好,下面介绍一款戏相对比较简单的大模型微调框架------LLaMA-Factory。

一、微调环境准备

1、安装Anaconda

介绍Anaconda安装的文章比较多,这里就不详细介绍了。可以参见:Anaconda安装

(1)创建名称为"llama_factory"的虚拟环境。

复制代码
conda create -n llama_factory python=3.11

(2)查看已创建的虚拟环境列表。

复制代码
conda env list

(3)激活虚拟环境llama_factory,

复制代码
conda activate llama_factory

2、安装LLaMA-Factory

(1)从GitHub下载LLaMA-Factory,

复制代码
git clone https://github.com/hiyouga/LLaMA-Factory.git

(2)在LLaMA-Factory目录下安装所需的Python包

复制代码
cd C:\Users\Win10\llama-factory

pip install -e .[metrics]

注意:该命令必须在LLaMA-Factory安装目录中执行。

......

(3)检验LLaMA-Factory是否安装成功

python 复制代码
llamafactory-cli webui

如出现以下提示和LLaMA-Factory页面表示已成功安装。

3、安装torch

(1)查看CUDA版本(需提前安装CUDA),

复制代码
nvidia-smi

CUDA安装可参考(CUDA安装教程)。

(2)接下来选择合适的CUDA版本安装torch。

复制代码
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124

具体可参考(Python/torch/深度学习------环境安装)。

(3)检验torch是否安装成功

python 复制代码
import torch 
torch.cuda.current_device() 
torch.cuda.get_device_name(0) 
torch.__version__

以下显示表示torch已经成功安装。

二、基座模型准备

1、下载基座模型

创建一个文件夹存放基座模型,这里以下载魔搭社区的DeepSeek-R1-Distill-Llama-8B模型为例。

python 复制代码
cd D:\AI\LLaMA-Factory\model_base
git clone https://www.modelscope.cn/models/deepseek-ai/DeepSeek-R1-Distill-Llama-8B

2、测试模型推理

python 复制代码
llamafactory-cli webchat --model_name_or_path D:/AI/LLaMA-Factory/model_base/DeepSeek-R1-Distill-Llama-8B --template deepseekr1

注意:不同的模型需要使用不同的模版,具体见(LLaMaFactory - 支持的模型和模板 && 常用命令)当然,也可以通过"llamafactory-cli webui"命令在LLaMA-Factory页面进行测试。

这里我们先对微调前的模型进行提问,并保留其结果,方便与微调后的模型推理进行对比。

三、训练数据准备

1、下载训练数据

下载训练数据集并复制到llama-factory\data文件夹下,我这里使用的是huggingface上的"FreedomIntelligence/medical-o1-reasoning-SFT"数据集(方便与前期用Unsloth微调进行对比,使用了相同的模型和数据集)。

数据集格式如下:

2、修改数据集配置文件

打开llama-factory\data\dataset_info.json文件,在文件最后添加以下代码:

python 复制代码
 "traindata_local": {
    "file_name": "medical/medical_o1_sft_Chinese.json",
    "columns": {
      "prompt": "Question",
      "response": "Response"
    },
    "tags": {
      "reasoning": "Complex_CoT"
    }
  }

四、微调模型

1、方式一(Web页面)

执行以下代码进入LLaMA-Factory页面。

python 复制代码
llamafactory-cli webui

分别填写基础模型、训练数据等参数,填写完成后可以选择"预览命令"查看微调命令,同时可"保存训练参数",以备下次直接导入使用。具体参数设置可参见(LlamaFactory可视化微调大模型 - 参数详解)。

配置完成就可以开始执行,如遇错误可根据提示信息修改完善配置参数的设置,直到训练完成。微调训练过程中可以观察训练进度条和损失曲线。

2、方式二(命令行)

可在命令行模式下直接执行以下命令进行微调。

python 复制代码
llamafactory-cli train `
    --stage sft `
    --do_train True `
    --model_name_or_path D:\AI\LLaMA-Factory\model_base\DeepSeek-R1-Distill-Llama-8B `
    --preprocessing_num_workers 16 `
    --finetuning_type lora `
    --template deepseekr1 `
    --flash_attn auto `
    --dataset_dir C:\Users\Win10\LLaMA-Factory\data `
    --dataset traindata_local `
    --cutoff_len 1024 `
    --learning_rate 5e-05 `
    --num_train_epochs 3.0 `
    --max_samples 50 `
    --per_device_train_batch_size 1 `
    --gradient_accumulation_steps 4 `
    --lr_scheduler_type cosine `
    --max_grad_norm 1.0 `
    --logging_steps 5 `
    --save_steps 100 `
    --warmup_steps 0 `
    --packing False `
    --enable_thinking True `
    --report_to none `
    --output_dir saves\DeepSeek-R1-8B-Distill\lora\train_2025-10-05-19-46-10 `
    --bf16 True `
    --plot_loss True `
    --trust_remote_code True `
    --ddp_timeout 180000000 `
    --include_num_input_tokens_seen True `
    --optim adamw_torch `
    --quantization_bit 8 `
    --quantization_method bnb `
    --double_quantization True `
    --lora_rank 8 `
    --lora_alpha 16 `
    --lora_dropout 0 `
    --lora_target all 

模型微调完成后会在对应位置自动创建的saves文件夹。

五、测试微调后模型

下面合并基础模型和LoRA微调进行推理。

1、方式一(Web页面)

微调结束后,可直接在Web下选择"Chat"页面,然后设置"模型路径"(基座模型)和"检查点路径","检查点路径"为刚训练好的模型,再点击加载模型即可开始合并推理。

2、方式二(命令行)

执行以下命令:

python 复制代码
llamafactory-cli webchat `
----model_name_or_path D:\AI\LLaMA-Factory\model_base\DeepSeek-R1-Distill-Llama-8B `
--adapter_name_or_path saves\DeepSeek-R1-8B-Distill\lora\train_2025-10-03-21-59-27 `
--template deepseekr1 `
--finetuning_type lora

输入与微调前测试的相同问题进行微调后推理,可以观察前后回答不同,当然具体效果与数据集质量和微调参数设置密切相关。

六、微调模型合并

在Web下选择"Export"页面,然后设置"模型路径"(基座模型)、"检查点路径"(微调模型)、"导出目录",即可开始合并基座模型和微调模型,合并完成后即可在"Chat"页面直接使用。

七、评估与优化

在Web下选择"Export"页面,然后设置"模型路径"(基座模型)、"检查点路径"(微调模型)、"数据路径"(验证数据集),即可开始进行模型评估。

评估完成后会在界面上显示验证集的分数,其中ROUGE分数衡量了模型输出答案(predict)和验证集中标准答案(label)的相似度,ROUGE分数越高代表模型学习得更好。

相关推荐
老兵发新帖9 小时前
推理平台ONNX性能对比PyTorch原生格式
人工智能
犀思云9 小时前
企业端到端NaaS连接的优势与应用
网络·人工智能·机器人·智能仓储·专线
Keep_Trying_Go9 小时前
基于GAN的文生图算法详解ControlGAN(Controllable Text-to-Image Generation)
人工智能·python·深度学习·神经网络·机器学习·生成对抗网络·文生图
Spey_Events9 小时前
星箭聚力启盛会,2026第二届商业航天产业发展大会暨商业航天展即将开幕!
大数据·人工智能
JoySSLLian9 小时前
IP SSL证书:一键解锁IP通信安全,高效抵御网络威胁!
网络·人工智能·网络协议·tcp/ip·ssl
AC赳赳老秦9 小时前
专利附图说明:DeepSeek生成的专业技术描述与权利要求书细化
大数据·人工智能·kafka·区块链·数据库开发·数据库架构·deepseek
小雨青年9 小时前
鸿蒙 HarmonyOS 6 | AI Kit 集成 Core Speech Kit 语音服务
人工智能·华为·harmonyos
懒羊羊吃辣条9 小时前
电力负荷预测怎么做才不翻车
人工智能·深度学习·机器学习·时间序列
前进的程序员9 小时前
2026年IT行业技术发展前瞻性见解
人工智能
汽车仪器仪表相关领域9 小时前
MTX-A 模拟废气温度(EGT)计 核心特性与车载实操指南
网络·人工智能·功能测试·单元测试·汽车·可用性测试