以下是LlamaFactory 模型微调关键参数的详细解析表,涵盖参数含义、使用场景、解决的问题及建议取值,结合技术实践与搜索结果综合整理:
LlamaFactory 微调关键参数解析表
| 参数类别 | 参数名称 | 含义 | 使用场景 | 解决的问题 | 建议设置值 |
|---|---|---|---|---|---|
| 基础配置 | finetuning_type | 微调方法选择 | - 资源有限选lora/qlora- 显存充足选 full- 快速迭代选 freeze | 平衡效果与资源消耗 | lora(默认)或qlora(显存不足时) |
model_name_or_path | 预训练模型路径或 Hugging Face ID | 指定基础模型(如 LLaMA-3、Qwen) | 模型加载失败、路径错误 | 本地绝对路径或标准 HF 标识符(如meta-llama/Llama-3-8B) | |
cutoff_len | 输入序列最大 Token 长度 | - 短文本任务(分类):128-512- 长文本任务(生成): 1024-8192 | 长文本信息丢失、显存溢出 | 匹配模型上下文长度(如 LLaMA-3 设为8192) | |
| 训练效率 | learning_rate | 参数更新步长控制 | - 全参数微调:小学习率 - LoRA 微调:较大学习率 | 训练震荡(过大)或收敛慢(过小) | 1e-5(全参数)或1e-4(LoRA) |
per_device_train_batch_size | 单 GPU 批大小 | 根据 GPU 显存调整 | 显存不足(Batch 过大)或训练慢(Batch 过小) | 2-8(24GB 显存),配合梯度累积使用 | |
gradient_accumulation_steps | 梯度累积步数 | 模拟大批量训练(显存不足时) | 小 Batch 导致训练不稳定 | 8(Batch=2 时等效 Batch=16) | |
num_train_epochs | 训练轮次 | - SFT 任务:多轮次 - DPO/PPO 任务:少轮次 | 过拟合(轮次过多)或欠拟合(轮次过少) | 3-10(SFT)或1-3(DPO/PPO) | |
| LoRA 优化 | lora_rank | 低秩矩阵的秩(参数量) | 控制适配器复杂度 | 参数量过大(显存不足)或表达能力不足(秩过小) | 8-64(简单任务取小值,复杂任务取大值) |
lora_alpha | 适配器权重缩放系数 | 调节 LoRA 权重影响力 | 微调效果弱(Alpha 过小)或过拟合(Alpha 过大) | 2 * lora_rank(如 Rank=8 → Alpha=16) | |
lora_dropout | 适配器 Dropout 率 | 防止过拟合 | 训练集过拟合、泛化能力差 | 0.05-0.1(数据量少时启用) | |
quantization_bit | 量化为 4/8 位精度 | 显存极度紧张场景(如单卡 4090 训练 7B 模型) | 显存不足导致 OOM | 4(QLoRA)或8(平衡精度与显存) | |
| 结构控制 | lora_target | LoRA 作用的目标层 | 聚焦关键层(如注意力模块) | 无效参数更新(层选择错误) | q_proj,v_proj(注意力层)或all(全层) |
flash_attn | 启用 FlashAttention-2 加速 | 长序列或大模型训练 | 注意力计算慢、显存占用高 | auto(自动检测硬件支持) | |
rope_scaling | 扩展上下文长度的位置编码策略 | 处理超长文本(>8K Token) | 长文本位置编码溢出 | dynamic(动态 NTK)或yarn | |
| 验证与监控 | val_size | 验证集比例 | 监控过拟合 | 过拟合未被及时发现 | 0.1(数据量少)或0.05(数据量大) |
plot_loss | 绘制训练损失曲线 | 实时观察收敛情况 | 难以诊断训练异常(如 Loss 震荡) | True(必开启) |
关键参数组合建议
根据不同场景推荐配置模板:
- 显存有限场景(单卡 24GB 以下):
finetuning_type:qloraquantization_bit:4lora_rank:8lora_alpha:16gradient_accumulation_steps:8flash_attn:auto - 长文本任务(如文档生成):
cutoff_len:8192rope_scaling:dynamicflash_attn:on - 多 GPU 分布式训练:
device_count:4deepspeed_stage:2# ZeRO-2 优化器分片
注意事项
- 参数优先级:
- 显存优化 > 精度调整 > 结构扩展,即优先通过量化和 LoRA 解决资源问题,再调整学习率等超参数。
- 动态调整:
- 若训练损失震荡,降低学习率(×0.8)或增大梯度裁剪阈值(
max_grad_norm);若收敛慢,增加 Batch Size 或学习率(×1.2)。
- 若训练损失震荡,降低学习率(×0.8)或增大梯度裁剪阈值(
- 模板兼容性:
template参数(如llama3)必须与基础模型预训练格式一致,否则会导致输出乱码。
更多实践案例可参考 https://llamafactory.readthedocs.io/ 或社区教程。