使用 LlamaFactory 进行模型微调

模型微调(Fine-tuning) 是指在一个已经训练好的大模型基础上,用特定领域或特定任务的数据继续训练,使模型在某类问题上表现得更好。

开源工具 LlamaFactory 可以轻松地对模型进行微调:https://github.com/hiyouga/LlamaFactory

部署 LlamaFactory

此处使用 Docker 基于 NVIDIA GPU 设备部署 LlamaFactory。

GPU 节点需要安装好 Nvidia 驱动,参考文档:https://warnerchen.github.io/2024/12/17/RKE-RKE2-%E8%8A%82%E7%82%B9%E9%85%8D%E7%BD%AE-Nvidia-Container-Toolkit/#GPU-%E8%8A%82%E7%82%B9%E5%AE%89%E8%A3%85-Nvidia-%E9%A9%B1%E5%8A%A8

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
root@gpu-0:~# nvidia-smi
Mon Jan 12 15:34:47 2026
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 550.163.01 Driver Version: 550.163.01 CUDA Version: 12.4 |
|-----------------------------------------+------------------------+----------------------+
| GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|=========================================+========================+======================|
| 0 Tesla P4 Off | 00000000:03:00.0 Off | 0 |
| N/A 42C P8 7W / 75W | 0MiB / 7680MiB | 0% Default |
| | | N/A |
+-----------------------------------------+------------------------+----------------------+

+-----------------------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=========================================================================================|
| No running processes found |
+-----------------------------------------------------------------------------------------+

驱动安装完成后,安装 Docker 和 Nvidia Container Runtime,安装方法参考官方文档:

1
2
3
4
5
6
7
root@gpu-0:~# docker info
Client: Docker Engine - Community
Version: 24.0.9
...
Server:
Server Version: 24.0.9
...

验证容器是否可以使用 Nvidia 设备:

1
docker run --rm --gpus=all nvidia/cuda:12.4.0-base-ubuntu22.04 nvidia-smi

部署 LlamaFactory:

1
docker run --rm -it --name llamafactory --gpus=all --ipc=host -p 7860:7860 -p 8000:8000 hiyouga/llamafactory:latest

随后在容器内执行如下命令开启 Web UI:

1
2
# USE_MODELSCOPE_HUB:使用国内魔搭社区加速模型下载,默认不使用
USE_MODELSCOPE_HUB=1 llamafactory-cli webui

选择模型

选择需要微调的模型 -> Chat -> 加载模型,检查模型是否可用(可以使用本地下载好的模型,或者从公网下载):

尝试问一个模型无法按预期回答的问题:

选择数据集

默认情况下容器内的 /app/data 目录下提供部分测试用的数据集,此处选择其中一个进行测试:

模型微调

为了让模型更好地学习数据知识,进行了以下调整:

  • 学习率改为 1e-4,属于偏大的学习率,适合小数据集和让模型明显改变行为
  • 训练轮数提高到 8 轮,让模型更容易记住数据集里的数据
  • 保存间隔设置为 50,方便回滚对比
  • LoRA 秩设置为 16,学习能力适中
  • LoRA 缩放系数设置为 32,改动力度偏明显

点击开始进行微调:

等待微调结束后,点击保存训练数据:

验证微调结果

选择刚刚微调生成的检查点,重新加载模型:

使用同样的问题,再次进行提问:

可以看到回答来自于数据集里的数据:

自定义数据集

如果需要使用自定义的数据集,可以将其存放在 /app/data 目录下,然后在 /app/data/dataset_info.json 填入自定义数据集的信息即可,例如:

1
2
3
"test_dataset": {
"file_name": "test_dataset.json"
}
Author

Warner Chen

Posted on

2026-01-12

Updated on

2026-01-13

Licensed under

You need to set install_url to use ShareThis. Please set it in _config.yml.
You forgot to set the business or currency_code for Paypal. Please set it in _config.yml.

Comments

You forgot to set the shortname for Disqus. Please set it in _config.yml.