SFT 训练¶
命令行¶
您可以使用以下命令使用 examples/train_lora/qwen3_lora_sft.yaml 中的参数进行微调:
llamafactory-cli train examples/train_lora/qwen3_lora_sft.yaml
也可以通过追加参数更新 yaml 文件中的参数:
llamafactory-cli train examples/train_lora/qwen3_lora_sft.yaml \
learning_rate=1e-5 \
logging_steps=1
备注
LLaMA-Factory 默认使用所有可见的计算设备。根据需求可通过 CUDA_VISIBLE_DEVICES 或 ASCEND_RT_VISIBLE_DEVICES 指定计算设备。
examples/train_lora/qwen3_lora_sft.yaml 提供了微调时的配置示例。该配置指定了模型参数、微调方法参数、数据集参数以及评估参数等。您需要根据自身需求自行配置。
### examples/train_lora/qwen3_lora_sft.yaml
model_name_or_path: Qwen/Qwen3-4B-Instruct-2507
trust_remote_code: true
stage: sft
do_train: true
finetuning_type: lora
lora_rank: 8
lora_target: all
dataset: identity,alpaca_en_demo
template: qwen3_nothink
cutoff_len: 2048
max_samples: 1000
preprocessing_num_workers: 16
dataloader_num_workers: 4
output_dir: saves/qwen3-4b/lora/sft
logging_steps: 10
save_steps: 500
plot_loss: true
overwrite_output_dir: true
save_only_model: false
report_to: none
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
ddp_timeout: 180000000
resume_from_checkpoint: null
# eval_dataset: alpaca_en_demo
# val_size: 0.1
# per_device_eval_batch_size: 1
# eval_strategy: steps
# eval_steps: 500
备注
模型 model_name_or_path 、数据集 dataset 需要存在且与 template 相对应。
名称 |
描述 |
|---|---|
model_name_or_path |
模型名称或路径 |
stage |
训练阶段,可选: rm(reward modeling), pt(pretrain), sft(Supervised Fine-Tuning), PPO, DPO, KTO, ORPO |
do_train |
true用于训练, false用于评估 |
finetuning_type |
微调方式。可选: freeze, lora, full |
lora_target |
采取LoRA方法的目标模块,默认值为 |
dataset |
使用的数据集,使用”,”分隔多个数据集 |
template |
数据集模板,请保证数据集模板与模型相对应。 |
output_dir |
输出路径 |
logging_steps |
日志输出步数间隔 |
save_steps |
模型断点保存间隔 |
overwrite_output_dir |
是否允许覆盖输出目录 |
per_device_train_batch_size |
每个设备上训练的批次大小 |
gradient_accumulation_steps |
梯度积累步数 |
max_grad_norm |
梯度裁剪阈值 |
learning_rate |
学习率 |
lr_scheduler_type |
学习率曲线,可选 |
num_train_epochs |
训练周期数 |
bf16 |
是否使用 bf16 格式 |
warmup_ratio |
学习率预热比例 |
warmup_steps |
学习率预热步数 |
push_to_hub |
是否推送模型到 Huggingface |