【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: 100

4.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加入 Dropout
lora_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 = 16
learning_rate2.0e-4微调推荐学习率
bf16true建议启用混合精度训练

eval 模块

参数修改后说明
val_size0.1验证集划分
eval_strategysteps按步数验证
eval_steps100每100步验证一次

5. 执行训练

# 激活环境
conda activate llama_factory# (可选)加速模型下载
export USE_MODELSCOPE_HUB=1# 执行训练
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-4

6. 推理与测试

llamafactory-cli chat my_configs/qwen2.5vl_3b_pokemon_lora_sft.yaml

该命令会自动加载模型、适配器、模板,一站式部署后进入对话测试。

7. 总结

🎉 恭喜!您已经掌握了使用 LLaMA-Factory 命令行和 YAML 配置进行模型微调的完整流程。

核心要点回顾:

  • 命令行是王道:为了可复现性和自动化,命令行 + YAML 是更专业的选择。
  • 模板优先:复制修改官方模板,事半功倍。
  • 理解参数:认真理解 model, dataset, method, train 等关键模块。
  • 小步快跑:利用命令行覆盖参数,快速实验。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/911657.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/911657.shtml
英文地址,请注明出处:http://en.pswp.cn/news/911657.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

推荐:ToB销售B2B销售大客户营销大客户销售培训师培训讲师唐兴通讲销售技巧数字化销售销AI销售如何有效获取客户与业绩

站在AI浪潮之巅,重塑销售之魂 在AI时代,普通销售人员(TOB、TOC)除了传统的销售动作之外,还能做什么?怎么做? 这是《AI销冠》这本书想探讨的核心问题。 特别喜欢编辑老师总结的: 读者…

爬取小红书相关数据导入到excel

本期我们来进行实战,爬取小红书的相关数据导入到excel中,后续可进行些数据分析,今后或者已经在运营小红书的小伙伴应该比较喜欢这些数据。今天我们的主角是DrissionPage,相对于之前介绍的selenium省去了很多的配置,直接安装了就能使用。 DrissionPage 是一个基于 python …

c++面试题每日一学记录- C++对象模型与内存对齐深度原理详解

一、C++对象模型核心原理 1. 对象内存布局基础原理 设计哲学: 零开销原则:不为未使用的特性付出代价(如无虚函数则无vptr)兼容性:C结构体在C++中保持相同内存布局多态支持:通过虚函数表实现运行时动态绑定内存布局实现机制: 编译器处理步骤: 成员排列:严格按声明顺序…

Kafka 监控与调优实战指南(二)

五、Kafka 性能问题剖析 5.1 消息丢失 消息丢失是 Kafka 使用过程中较为严重的问题,可能由多种原因导致。在生产者端,如果配置不当,比如将acks参数设置为0,生产者发送消息后不会等待 Kafka broker 的确认,就继续发送…

Linux下SVN报错:Unable to connect to a repository at URL ‘svn://XXX‘

一、问题描述 Linux下通过SVN执行提交(commit)操作时报错:Unable to connect to a repository at URL svn://XXX: 二、解决方法 导致该问题的一个可能原因是远程仓库的URL发生变化了,即svn服务器的ip变更了。这时可…

Modbus 扫描 从站号、波特率

下载链接:https://pan.quark.cn/s/533ceb8e397d 下载链接: https://pan.baidu.com/s/1PQHn-MwfzrWgF2UrXQDoGg 提取码: 1111

Docker 容器通信与数据持久化

目录 简介 一、Docker 容器通信 1. Docker 网络模式 2. Bridge 模式 3. Host 模式 4. Container 模式 5. Overlay 模式 6. 端口映射:容器与外部的桥梁 7. 容器互联:从 --link 到自定义网络 二、Docker 数据持久化 1. 数据卷:Docke…

【教学类-89-08】20250624新年篇05——元宵节灯笼2CM黏贴边(倒置和正立数字 )

背景需求: 【教学类-89-06】20250220新年篇05——元宵节灯笼2CM黏贴边(3边形到50边形,一页1图、2图、4图,适合不同水平,适合不同阶段)-CSDN博客文章浏览阅读1.6k次,点赞35次,收藏27…

【DB2】SQL0104N An unexpected token “OCTETS“ was found following “……

db2创建表时报标题的错误,建表语句如下 db2 "CREATE TABLE YS.TEST_1(ID VARCHAR(64 OCTETS))"去掉octets就好了 经过测试,在9.7版本报错,在10.5.11没问题,怀疑版本差异导致 在官网查找资料,应该是10.5才…

暴雨以信创委员会成员单位身份参与南京专题活动

6月19日,中国电子工业标准化技术协会信息技术应用创新工作委员会(简称信创工委会)联合南京市工业和信息化局共同举办的“智启未来:AI赋能信息技术应用创新办公新势力”专题活动在南京成功举办。南京市工业和信息化局副局长代吉上、…

基于keepalived、vip实现高可用nginx (centos)

基于keepalived、vip实现高可用nginx (centos) 1、安装keepalived yum install keepalived2、选同一局域网空置ip作vip 我这里测试是: 主:192.168.163.134 副:192.168.163.135 vip:192.168.163.1403、ke…

使用 launch 启动 rviz2 并加载机器人模型

视频资料:《ROS 2机器人开发从入门到实践》6.2.2 在RViz中显示机器人_哔哩哔哩_bilibili 1、创建工作空间 chapt6_ws/src,创建包 fishrobot_description ros2 create fishrobot_description --build-type ament_cmake --license Apache-2.0 2、创建机器…

华为云Flexus+DeepSeek征文 | 基于CCE容器的AI Agent高可用部署架构与弹性扩容实践

华为云FlexusDeepSeek征文 | 基于CCE容器的AI Agent高可用部署架构与弹性扩容实践 🌟 嗨,我是IRpickstars! 🌌 总有一行代码,能点亮万千星辰。 🔍 在技术的宇宙中,我愿做永不停歇的探索者。 …

Python学习Day41

学习来源:浙大疏锦行 知识回顾 数据增强卷积神经网络定义的写法batch归一化:调整一个批次的分布,常用与图像数据特征图:只有卷积操作输出的才叫特征图调度器:直接修改基础学习率 卷积操作常见流程如下: …

数组题解——最长回文子串【LeetCode】

5. 最长回文子串 一、向右拓展 算法思路 你用res记录当前找到的最长回文子串。每次遍历到s[i]时,尝试找到以s[i]结尾的、比当前res更长的回文子串。 先尝试长度为len(res)2(即起点i-len(res)-1)的子串,看是不是回文。如果不是&…

✨从零搭建 Ubuntu22.04 + Python3.11 + PyTorch2.5.1 GPU Docker 镜像并上传 Docker Hub

🚀 从零搭建 Ubuntu22.04 Python3.11 PyTorch2.5.1 GPU Docker 镜像并上传 Docker Hub 在 AI 项目开发中,构建统一的运行环境是一件非常重要的事情。使用 Docker 可以极大地提升部署效率、保证环境一致性。本文将手把手带你: ✅ 构建一个…

纪念抗战胜利知识答题pk小程序

纪念抗战胜利知识答题PK小程序通常有以下功能: 一、基础答题功能 题目展示:清晰呈现题目内容,支持文字、图片、音频或视频等多种形式的题目素材,且能按选择题、填空题、判断题等不同题型分类展示。答案提交与判断:用…

AI模型本质与学习范式解析

从统计学习(也就是数学)的角度来分析深度学习模型的本质。 频率派与贝叶斯派对模型本质理解的差异:前者认为学习参数估计,后者认为学习后验分布。不过这个问题下概率分布的视角更本质。 三个核心部分:任务类型分类&a…

【AI落地应用实战】Chaterm:重新定义终端操作的AI智能工具

目录 一、AI Agent 终端新范式二、Chaterm安装与基础功能体验2.1、源码安装与配置2.2、基础功能体验 三、Chaterm运维案例实践四、从 Chaterm 看智能终端工具的演进方向4.1 更低门槛:面向“非专业人员”的运维民主化4.2 更强扩展性:从工具到平台的演化 五…

IO多路复用——Select底层原理深度分析(流程图)

文章目录 1.kern_select 参数验证和初始化流程2. do_select() 详细实现流程3. 位图数据结构详解4. 文件描述符处理详细流程5. Poll方法调用链6. 等待机制实现7. 用户态处理就绪事件8. 性能瓶颈分析9. 与其他I/O多路复用对比 Select 整体调用流程: #mermaid-svg-766A…