LLaMA-Factory配置文件详解:YAML参数调优指南
你是否还在为LLM微调时的参数配置感到困惑?是否因参数设置不当导致训练效率低下或模型效果不佳?本文将系统解析LLaMA-Factory的YAML配置文件结构,通过实际案例演示关键参数调优方法,帮助你在10分钟内掌握高效微调的配置技巧。读完本文后,你将能够独立编写优化的配置文件,解决90%的常见微调参数问题。
配置文件基础结构
LLaMA-Factory采用模块化的YAML配置系统,将微调任务划分为5个核心配置区块。这种结构设计使参数管理更清晰,也便于不同任务间的配置复用。典型的配置文件结构如下:
### model # 模型基础配置
### method # 微调方法配置
### dataset # 数据集处理配置
### output # 训练输出配置
### train # 训练过程配置
### eval # 评估相关配置(可选)
项目中提供了大量配置示例,覆盖从基础SFT到高级RLHF的各类任务。例如:
- LoRA微调示例:examples/train_lora/llama3_lora_sft.yaml
- QLoRA量化微调:examples/train_qlora/llama3_lora_sft_awq.yaml
- DPO对齐训练:examples/train_lora/llama3_lora_dpo.yaml
核心参数详解与调优
模型配置(model)
模型配置区块定义基础模型选择及相关技术参数,是微调的基础设置。关键参数包括:
model_name_or_path: meta-llama/Meta-Llama-3-8B-Instruct # 模型路径或HF模型ID
trust_remote_code: true # 是否信任远程代码(自定义模型必需)
rope_scaling: linear # RoPE scaling策略,解决长文本处理问题
flash_attn: auto # 是否启用FlashAttention加速
调优建议:
- 对于7B/13B模型,建议设置
flash_attn: true,可提升30%训练速度 - 处理超过2k tokens的长文本时,添加
rope_scaling: linear和rope_factor: 2.0 - 量化训练时需额外配置量化参数,如4-bit量化:
quantization_method: BNB quantization_bit: 4 quantization_type: nf4
模型参数的完整定义可参考源码:src/llamafactory/hparams/model_args.py
微调方法配置(method)
方法配置区块决定微调模式和关键算法参数,直接影响微调效果。LLaMA-Factory支持多种微调方法,常用配置如下:
stage: sft # 微调阶段:sft/dpo/kto/ppo/pretrain等
do_train: true # 是否进行训练
finetuning_type: lora # 微调类型:lora/full/qlora等
lora_rank: 8 # LoRA秩,控制适配器容量
lora_target: all # LoRA目标层,可选'all'或指定层名列表
调优矩阵:
| 微调场景 | finetuning_type | lora_rank | 推荐硬件 |
|---|---|---|---|
| 快速原型验证 | lora | 4-8 | 12GB显存 |
| 生产级微调 | lora | 16-32 | 24GB显存 |
| 全参数微调 | full | - | 80GB+显存 |
| 低资源量化 | qlora | 8-16 | 8GB显存 |
注意:当使用QLoRA时,需确保量化参数与方法配置匹配,具体可参考examples/train_qlora/目录下的量化配置示例。
数据集配置(dataset)
数据集配置控制数据加载和预处理流程,对模型效果有直接影响。核心参数包括:
dataset: identity,alpaca_en_demo # 数据集名称,多个用逗号分隔
template: llama3 # 对话模板,需与模型匹配
cutoff_len: 2048 # 文本截断长度
max_samples: 1000 # 最大样本数,用于快速测试
preprocessing_num_workers: 16 # 数据预处理进程数
关键技巧:
- 模板选择必须与模型匹配,如Llama3使用
llama3模板,Qwen使用qwen模板 - 多轮对话数据建议设置
cutoff_len: 4096,并启用packing: true - 可通过
dataset_dir参数指定本地数据集路径,格式参考data/dataset_info.json
训练过程配置(train)
训练过程配置直接影响训练效率和模型收敛质量,需要根据硬件条件仔细调整:
per_device_train_batch_size: 1 # 单设备批大小
gradient_accumulation_steps: 8 # 梯度累积步数
learning_rate: 1.0e-4 # 学习率
num_train_epochs: 3.0 # 训练轮数
lr_scheduler_type: cosine # 学习率调度策略
warmup_ratio: 0.1 # 预热比例
bf16: true # 是否使用bf16混合精度
优化公式:
- 有效批大小 = per_device_train_batch_size × gradient_accumulation_steps × 设备数
- 推荐有效批大小:7B模型为32-128,13B模型为64-256
- 学习率设置指南:
- LoRA微调:1e-4 ~ 2e-4
- 全参数微调:2e-5 ~ 5e-5
- 预热步数通常设为总步数的5%-10%
高级调优策略
内存优化配置
针对显存受限场景,可通过以下参数组合实现高效训练:
# 基础内存优化
load_in_4bit: true
gradient_checkpointing: true
# 高级优化(适合12GB以下显存)
use_unsloth: true # 启用unsloth优化
unsloth_cache_dir: ./cache/unsloth
shift_attn: true # 启用S^2-Attn长注意力
这些参数在examples/extras/目录下的特殊优化配置中有更详细示例,如examples/extras/fsdp_qlora/llama3_lora_sft.yaml展示了FSDP+QLoRA的极致内存优化方案。
训练稳定性优化
训练不稳定时,可尝试以下调优参数:
# 解决梯度爆炸
max_grad_norm: 1.0
# 解决训练波动
adam_beta2: 0.95
# 数据不平衡处理
class_weight: true
# 学习率预热
warmup_steps: 100
配置案例与最佳实践
场景1:Llama3-8B LoRA快速微调
### model
model_name_or_path: meta-llama/Meta-Llama-3-8B-Instruct
trust_remote_code: true
flash_attn: true
### method
stage: sft
do_train: true
finetuning_type: lora
lora_rank: 16
lora_alpha: 32
lora_dropout: 0.05
### dataset
dataset: alpaca_zh_demo,identity
template: llama3
cutoff_len: 2048
max_samples: 5000
### output
output_dir: saves/llama3-8b/lora/sft
logging_steps: 10
save_steps: 200
plot_loss: true
### train
per_device_train_batch_size: 2
gradient_accumulation_steps: 4
learning_rate: 1.5e-4
num_train_epochs: 3.0
lr_scheduler_type: cosine
warmup_ratio: 0.1
bf16: true
场景2:低资源量化微调(8GB显存)
### model
model_name_or_path: meta-llama/Meta-Llama-3-8B-Instruct
trust_remote_code: true
quantization_method: BNB
quantization_bit: 4
quantization_type: nf4
### method
stage: sft
do_train: true
finetuning_type: lora
lora_rank: 8
lora_target: q_proj,v_proj
### dataset
dataset: alpaca_en_demo
template: llama3
cutoff_len: 1024
max_samples: 2000
### train
per_device_train_batch_size: 1
gradient_accumulation_steps: 8
learning_rate: 2e-4
num_train_epochs: 5.0
gradient_checkpointing: true
use_unsloth: true
配置文件调试与常见问题
配置验证工具
LLaMA-Factory提供了配置验证功能,可在启动训练前检查配置文件合法性:
python src/train.py --config examples/train_lora/llama3_lora_sft.yaml --dry_run
常见错误与解决方法
-
模型加载失败
- 检查
model_name_or_path是否正确 - 私有模型需配置
hf_hub_token - 添加
trust_remote_code: true(自定义模型)
- 检查
-
显存溢出
- 降低
per_device_train_batch_size - 启用梯度检查点
gradient_checkpointing: true - 切换到QLoRA量化训练
- 降低
-
训练 loss 异常
- 检查
template是否与模型匹配 - 调整学习率(通常降低1-2个数量级)
- 验证数据集格式是否正确
- 检查
总结与进阶资源
本文详细介绍了LLaMA-Factory配置文件的核心结构和关键参数调优方法,包括模型设置、微调方法、数据集处理和训练过程优化。通过合理配置这些参数,可显著提升微调效率和模型性能。
为进一步提升配置水平,建议参考:
- 官方配置示例库:examples/
- 高级调优指南:README_zh.md
- 模型参数定义:src/llamafactory/hparams/model_args.py
掌握YAML配置文件的优化技巧是LLM微调的基础,建议结合实际任务反复实验不同参数组合,形成适合特定场景的最佳配置方案。收藏本文以备日后调参参考,关注项目更新获取更多高级配置技巧。
下期预告:《LLaMA-Factory高级调优:从SFT到RLHF的全流程优化》
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



