【LLaMA-Factory 實戰系列】三、命令行篇 - YAML 配置與高效微調 Qwen2.5-VL

【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…