6.微调实战
本章介绍如何使用 LLaMA-Factory 进行大模型微调的完整流程。
# 6.1 环境准备
# 6.1.1 硬件要求
| 微调方法 | 7B 模型显存需求 | 推荐 GPU |
|---|---|---|
| QLoRA(4-bit) | 6-8GB | RTX 3060 12GB |
| LoRA(FP16) | 16-24GB | RTX 3090/4090 |
| 全量微调 | 60GB+ | A100 80GB |
# 6.1.2 安装 LLaMA-Factory
git clone https://github.com/hiyouga/LLaMA-Factory.git
cd LLaMA-Factory
pip install -e ".[torch,metrics]"
1
2
3
2
3
# 6.1.3 启动 WebUI
llamafactory-cli webui
1
访问 http://localhost:7860 即可看到图形界面。
# 6.2 数据准备
# 6.2.1 数据格式
LLaMA-Factory 支持多种数据格式,最常用的是 Alpaca 格式:
[
{
"instruction": "请介绍一下人工智能",
"input": "",
"output": "人工智能(AI)是计算机科学的一个分支..."
}
]
1
2
3
4
5
6
7
2
3
4
5
6
7
ShareGPT 格式(多轮对话):
[
{
"conversations": [
{"from": "human", "value": "你好"},
{"from": "gpt", "value": "你好!有什么我可以帮助你的吗?"}
]
}
]
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# 6.2.2 注册数据集
在 data/dataset_info.json 中添加数据集信息:
{
"my_dataset": {
"file_name": "my_data.json",
"formatting": "alpaca"
}
}
1
2
3
4
5
6
2
3
4
5
6
将数据文件放入 data/ 目录即可。
# 6.3 训练配置
# 6.3.1 WebUI 配置
在 WebUI 中配置:
- 模型:选择基座模型,如 Qwen2.5-7B-Instruct
- 量化:选择 4-bit(QLoRA)或不量化
- 数据集:选择注册的数据集
- LoRA 参数:r=16, alpha=32
- 训练参数:learning_rate=2e-4, epochs=3
# 6.3.2 命令行配置
创建 YAML 配置文件:
### 模型
model_name_or_path: Qwen/Qwen2.5-7B-Instruct
quantization_bit: 4
### 方法
stage: sft
finetuning_type: lora
lora_rank: 16
lora_alpha: 32
lora_target: all
### 数据
dataset: my_dataset
template: qwen
cutoff_len: 2048
### 训练
output_dir: saves/my_model
per_device_train_batch_size: 4
gradient_accumulation_steps: 4
learning_rate: 2.0e-4
num_train_epochs: 3
bf16: true
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
启动训练:
llamafactory-cli train config.yaml
1
# 6.4 模型评估
# 6.4.1 WebUI 测试
在 WebUI 的 Chat 标签页加载模型和 LoRA 适配器进行测试。
# 6.4.2 命令行推理
llamafactory-cli chat inference_config.yaml
1
# 6.5 模型导出
# 6.5.1 合并 LoRA 权重
llamafactory-cli export merge_config.yaml
1
配置文件:
model_name_or_path: Qwen/Qwen2.5-7B-Instruct
adapter_name_or_path: saves/my_model
template: qwen
finetuning_type: lora
export_dir: models/merged_model
1
2
3
4
5
2
3
4
5
# 6.5.2 部署方式
| 方式 | 特点 |
|---|---|
| vLLM | 高性能推理,支持批处理 |
| Ollama | 简单易用,本地部署 |
| llama.cpp | CPU 推理,资源占用低 |
# 6.6 常见问题
# 6.6.1 显存不足
- 减小 batch_size
- 增加 gradient_accumulation_steps
- 使用 4-bit 量化
- 减小 cutoff_len
- 减小 LoRA rank
# 6.6.2 训练损失不下降
- 调整学习率(尝试 1e-4 ~ 5e-4)
- 检查数据格式是否正确
- 检查数据质量
# 6.6.3 模型输出质量差
- 增加高质量训练数据
- 适当增加训练轮数
- 检查数据是否覆盖目标场景
# 6.7 进阶技巧
# 6.7.1 多数据集混合
dataset: dataset1,dataset2,dataset3
dataset_ratio: 0.3,0.3,0.4
1
2
2
# 6.7.2 NEFTune 噪声增强
neftune_noise_alpha: 5
1
在嵌入层添加噪声,提升模型泛化能力。
# 6.7.3 多 GPU 训练
accelerate launch --num_processes 4 -m llamafactory.train config.yaml
1
编辑 (opens new window)
上次更新: 2025/12/19, 15:17:48