网站运营与网络推广方案,做网站3年3万,网站建设书生商友,wordpress增加搜索框【LLaMA-Factory 实战系列】三、命令行篇 - YAML 配置与高效微调 Qwen2.5-VL 1. 引言2. 为什么从 WebUI 转向命令行#xff1f;3. 准备工作#xff08;回顾#xff09;4. 核心#xff1a;创建并理解训练配置文件4.1 选择并复制基础模板4.2 逐一解析与修改配置文件4.3 参数详… 【LLaMA-Factory 实战系列】三、命令行篇 - YAML 配置与高效微调 Qwen2.5-VL 1. 引言2. 为什么从 WebUI 转向命令行3. 准备工作回顾4. 核心创建并理解训练配置文件4.1 选择并复制基础模板4.2 逐一解析与修改配置文件4.3 参数详解与修改说明 5. 执行训练命令行参数覆盖 6. 推理与测试7. 总结核心要点回顾 1. 引言
在上一篇教程【LLaMA-Factory 实战系列】二、WebUI 篇 - Qwen2.5-VL 多模态模型 LoRA 微调保姆级教程 中我们通过图形化界面成功对 Qwen2.5-VL-3B-Instruct 模型进行了 LoRA 微调。WebUI 固然直观便捷但在许多场景下命令行CLI配合配置文件的方式更具优势。
本教程将详细介绍如何使用 llamafactory-cli train 命令结合精心编写的 .yaml 配置文件来微调我们的宝可梦图文识别模型。这种方式不仅是可复现研究和自动化实验的基石也是在没有图形化界面的远程服务器上进行训练的标准做法。
2. 为什么从 WebUI 转向命令行
如果您已经熟悉了 WebUI可能会问为什么还要学习命令行
可复现性一个 .yaml 文件完整地记录了模型、数据集、超参数等所有配置。您可以将它与代码一同提交到 Git任何人都能用完全相同的设置复现您的实验结果。自动化与批处理您可以通过编写 Shell 脚本轻松地启动一系列不同超参数的训练任务而无需手动在 WebUI 上逐个点击。这对于调参和对比实验至关重要。版本控制对 .yaml 文件的每一次修改都可以被 Git 追踪让您清晰地看到每次实验的配置变动。远程服务器友好在只有 SSH 终端的服务器上命令行是唯一也是最高效的交互方式。
3. 准备工作回顾
在开始之前请确保您已经完成了前两篇教程中的准备工作
环境已搭建已按照教程安装 LLaMA-Factory 并创建了 llama_factory conda 环境。数据集已备好pokemon_sharegpt 数据集已按要求放在 LLaMA-Factory 的根目录下目录结构如下
LLaMA-Factory/
├── pokemon_sharegpt/
│ ├── dataset_info.json
│ ├── images/
│ └── pokemon_sharegpt.json
└── ... (其他项目文件)数据集已声明dataset_info.json 文件已正确配置将我们的数据集命名为 pokemon_multimodal。
4. 核心创建并理解训练配置文件
LLaMA-Factory 在 examples/ 目录下提供了丰富的配置文件模板。我们的策略是找到一个最相似的模板复制并修改它而不是从零开始。
4.1 选择并复制基础模板
根据我们的目标使用 LoRA 微调 Qwen2.5-VL最合适的模板是
examples/train_lora/qwen2.5vl_lora_sft.yaml我们来创建一个专门存放我们自己配置的目录并把模板复制过去。
# 确保在 LLaMA-Factory-main 根目录下
mkdir -p my_configs
cp examples/train_lora/qwen2.5vl_lora_sft.yaml my_configs/qwen2.5vl_3b_pokemon_lora_sft.yaml这样做的好处是不污染官方示例并且能让我们的配置一目了然。
4.2 逐一解析与修改配置文件
打开 my_configs/qwen2.5vl_3b_pokemon_lora_sft.yaml 文件并根据我们的“宝可梦”任务进行修改。
修改后的完整配置如下
# model
model_name_or_path: Qwen/Qwen2.5-VL-3B-Instruct
image_max_pixels: 262144
video_max_pixels: 16384
trust_remote_code: true# method
stage: sft
do_train: true
finetuning_type: lora
lora_rank: 64
lora_alpha: 128
lora_dropout: 0.1
lora_target: all# dataset
dataset: pokemon_multimodal
dataset_dir: pokemon_sharegpt
template: qwen2_vl
cutoff_len: 4096
max_samples: 1000
overwrite_cache: true
preprocessing_num_workers: 16
dataloader_num_workers: 4# output
output_dir: saves/qwen2.5vl-3b-lora-pokemon/sft-cli
logging_steps: 10
save_steps: 500
plot_loss: true
overwrite_output_dir: true
save_only_model: false
report_to: none# train
per_device_train_batch_size: 2
gradient_accumulation_steps: 8
learning_rate: 2.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
val_size: 0.1
per_device_eval_batch_size: 2
eval_strategy: steps
eval_steps: 1004.3 参数详解与修改说明
model 模块
参数修改后说明model_name_or_pathQwen/Qwen2.5-VL-3B-Instruct使用 Hugging Face 的3B模型image_max_pixels262144图像最大像素trust_remote_codetrue允许在使用 Hugging Face Transformers 库时控制是否信任从远程下载的配置文件
method 模块
参数修改后说明stagesft监督微调finetuning_typelora使用 LoRA 微调lora_rank64LoRA 矩阵秩lora_alpha128通常为 rank 的 2 倍lora_dropout0.1加入 Dropoutlora_targetall应用于所有线性层
dataset 模块
参数修改后说明datasetpokemon_multimodal数据集名称dataset_dirpokemon_sharegpt数据集根目录templateqwen2_vl对应 Qwen 模型的模板max_samples10000单个数据集中最大可加载的样本数
output 模块
参数修改后说明output_dirsaves/qwen2.5vl-3b-lora-pokemon/sft-cli输出目录logging_steps10日志打印频率save_steps500模型保存频率plot_losstrue绘制训练曲线
train 模块
参数修改后说明per_device_train_batch_size2单卡批次大小gradient_accumulation_steps8有效 batch size 16learning_rate2.0e-4微调推荐学习率bf16true建议启用混合精度训练
eval 模块
参数修改后说明val_size0.1验证集划分eval_strategysteps按步数验证eval_steps100每100步验证一次
5. 执行训练
# 激活环境
conda activate llama_factory# 可选加速模型下载
export USE_MODELSCOPE_HUB1# 执行训练
llamafactory-cli train my_configs/qwen2.5vl_3b_pokemon_lora_sft.yaml命令行参数覆盖
llamafactory-cli train my_configs/qwen2.5vl_3b_pokemon_lora_sft.yaml \--learning_rate 1e-4 \--output_dir saves/qwen2.5vl-3b-lora-pokemon/sft-lr-1e-46. 推理与测试
llamafactory-cli chat my_configs/qwen2.5vl_3b_pokemon_lora_sft.yaml该命令会自动加载模型、适配器、模板一站式部署后进入对话测试。
7. 总结 恭喜您已经掌握了使用 LLaMA-Factory 命令行和 YAML 配置进行模型微调的完整流程。
核心要点回顾
命令行是王道为了可复现性和自动化命令行 YAML 是更专业的选择。模板优先复制修改官方模板事半功倍。理解参数认真理解 model, dataset, method, train 等关键模块。小步快跑利用命令行覆盖参数快速实验。