【自然語言處理與大模型】個人使用LLaMA Factory微調的記錄

一、魔塔社區免費服務器如何使用webui微調?

????????一上來我就得先記錄一下,使用魔塔社區的免費服務器的時候,因為沒有提供ssh而導致無法看到webui的遺憾如何解決的問題?

執行命令

如果點這個鏈接無法彈出微調的webui,則可以在啟動webui的命令之前設置了一些環境變量。

CUDA_VISIBLE_DEVICES=0 GRADIO_SHARE=1 GRADIO_SERVER_PORT=7860 llamafactory-cli webui
  • 通過?CUDA_VISIBLE_DEVICES=0,確保程序只使用編號為?0?的 GPU,避免占用其他 GPU 資源。
  • 使用?llamafactory-cli webui?啟動一個基于 Gradio 框架的 Web 用戶界面。
  • 通過?GRADIO_SHARE=1,生成一個公共 URL,允許其他人通過互聯網訪問你的 WebUI。
  • 通過?GRADIO_SERVER_PORT=7860,將 WebUI 的服務端口固定為?7860。?

【注】如果跳出來 Could not create share link. Missing file

那就按照它的提示,去下載這個文件,改名字,換路徑,并改成可執行。

無法創建共享鏈接。缺少文件:`/root/.cache/huggingface/gradio/frpc/frpc_linux_amd64_v0.3`。請檢查您的網絡連接。如果您的殺毒軟件阻止了該文件的下載,也可能導致此問題。您可以按照以下步驟手動安裝:1. 下載此文件:https://cdn-media.huggingface.co/frpc-gradio-0.3/frpc_linux_amd64
2. 將下載的文件重命名為:`frpc_linux_amd64_v0.3`
3. 將文件移動到以下位置:`/root/.cache/huggingface/gradio/frpc`
4. 給這個文件加上執行權限 chmod +x frpc_linux_amd64_v0.3

二、llamafactory工程文件目錄里面都有是些什么?

目錄結構

?“LLaMA-Factory”的項目目錄結構。以下是對各個文件夾和文件的簡要說明:

文件夾/文件簡要說明
assets通常用于存放項目的靜態資源,如圖片、樣式表等。
data用于存放數據集或模型訓練所需的數據。
docker包含與Docker相關的配置文件和腳本,用于容器化部署。
evaluation可能包含評估模型性能的腳本和工具。
examples示例代碼或使用案例,幫助用戶了解如何使用該項目。
scripts腳本文件,自動化任務或輔助工具。
src源代碼文件夾,存放項目的主程序代碼。
tests測試文件夾,存放單元測試和其他測試腳本。
CITATION.cff引用格式文件,指導如何正確引用此項目。
LICENSE許可證文件,說明項目的使用許可條款。
Makefile構建文件,定義了編譯和構建項目的規則。
MANIFEST.inPython打包工具(如setuptools)使用的文件,指定哪些文件應該被包含在發布包中。
pyproject.tomlPython項目配置文件,用于管理項目依賴和構建設置。
README.md項目的英文README文件,提供項目介紹和使用指南。
README_zh.md項目的中文README文件,提供項目介紹和使用指南。
requirements.txt列出項目運行所需的Python包及其版本。
setup.pyPython項目的安裝腳本,用于打包和安裝項目。

三、webui里面的微調參數的都是什么意思??

雖然把界面設置成中文,基本都能讀懂,但還是有必要對一些參數做點說明:

名字

解釋

補充

模型路徑

一般是服務器中存放模型的絕對路徑。也可以是huggingface上面的模型標識符。

建議自己下載到本地,然后用本地服務器的絕對路徑。

微調方法

常用就2個,LoRA和QLoRA

檢查點路徑

訓練過后保存模型權重的路徑,方便你做增量訓練

量化等級

具體要損失多少精度,提升多少推理速度,常用有8bit、4bit量化等級

量化方法

實現量化的具體技術,比如線性量化或非線性量化

一般使用bitstandbytes開源量化庫

對話模板

構建提示詞使用的模板,要和你想微調的模型保持一致

日志間隔

默認是每5輪epoch保存一次日志

保存間隔

默認是每100epoch保存一次模型權重

會在每次保存權重之前,去跑一次驗證

輸出路徑

輸出路徑就是保存你訓練好的LoRA模型參數的路徑。

一般是在一個叫做save/模型名字/lora下面,用chekpoint來命名,LoR模型無法單獨使用

配置路徑

配置路徑的意思就是webui設置好的參數,生產一個yaml文件,可以用這個文件去等效的用在命令行中做微調訓練

將webui的配置保存成一個yaml

驗證集比例

在每一次保存權重之前做驗證的時候用到

量化數據集

用來衡量量化前后

LoRA

LoRA訓練中的秩大小,影響LoRa訓練中自身數據對模型作用程度,秩越大作用越大,需要依據數據量選擇合適的秩。

一般設置32到128之間默認8

LoRA縮放系數

LoRa訓練中的縮放系數,用于調整初始化訓練權重,使其與預訓練權重接近或保持一致。

一般是LoRA兩倍,一般設置個128、256

截斷長度

單個訓練數據樣本的最大長度,超出配置長度將自動截斷。

批處理大小

批次大小代表模型訓練過程中,模型更新模型參數的數據步長,模型每看多少數據即更新一次模型參數。

合適batch size可以加速訓練

deepspeed stage

選擇分布式多卡訓練模式

三種模式一般第二種

deepspeed offload

一部分數據顯存放到內存

耗時間

四、直接使用webchat來和指定模型對話

????????雖然可以在webui的chat中和指定的模型去對話。但llamafactory還單獨給了一個命令,能夠起一個webchat來加載模型進行對話。

llamafactory-cli webchat --model_name_or_path MODEL_NAME_OR_PATH
執行命令
llamafactory自帶的webchat

五、使用cli train進行黑窗口微調訓練的時候如何配置訓練參數?

????????這個問題看上去很簡單,查一下官方文檔不就好咯~或者看看example里面的yaml例子唄!說的很好!我們先來學習一下這兩種方式:

(1)參考官方文檔的配置文件

想直接看官方文檔的請點擊這里:llamafactory SFT 訓練

llamafactory-cli train examples/train_lora/llama3_lora_sft.yaml

????????通過上面這行命令來開始訓練,你會發現好簡單,但緊接著就困惑了ymal配置文件里面的key都有哪些呀?都是什么意思呢?其實這一部分的答案就在官方文檔中,官方貼心的給了一個小字提醒“重要訓練參數”,還列了個表格方便你查閱。我就不要臉的直接復制在下面:

名稱

描述

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方法的目標模塊,默認值為?all

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

學習率曲線,可選?linear,?cosine,?polynomial,?constant?等。

num_train_epochs

訓練周期數

bf16

是否使用 bf16 格式

warmup_ratio

學習率預熱比例

warmup_steps

學習率預熱步數

push_to_hub

是否推送模型到 Huggingface

【注】關鍵的問題來了——如果我還想配置得更細來進行訓練呢?

(2)參考examples文件夾里面的yaml配置文件

# 全參數量微調的配置文件
LLaMA-Factory/examples/train_full# LoRA微調的配置文件
LLaMA-Factory/examples/train_lora# QLoRA微調的配置文件
LLaMA-Factory/examples/train_qlora

????????配置文件的路徑我給大家列出來了。里面有很多配置文件供你參考。但正是因為太多了,我都分不清這些配置文件都對應什么作用呀!?

????????其實,人家倉庫里面早就考慮到你會懵逼,所以貼心的在README.md文件里面寫清楚了。這里拿最常用的LoRA舉例子。

任務類型命令
(增量)預訓練llamafactory-cli train examples/train_lora/llama3_lora_pretrain.yaml
指令監督微調llamafactory-cli train examples/train_lora/llama3_lora_sft.yaml
多模態指令監督微調llamafactory-cli train examples/train_lora/qwen2vl_lora_sft.yaml
DPO/ORPO/SimPO 訓練llamafactory-cli train examples/train_lora/llama3_lora_dpo.yaml
多模態 DPO/ORPO/SimPO 訓練llamafactory-cli train examples/train_lora/qwen2vl_lora_dpo.yaml
獎勵模型訓練llamafactory-cli train examples/train_lora/llama3_lora_reward.yaml
PPO 訓練llamafactory-cli train examples/train_lora/llama3_lora_ppo.yaml
KTO 訓練llamafactory-cli train examples/train_lora/llama3_lora_kto.yaml
預處理數據集llamafactory-cli train examples/train_lora/llama3_preprocess.yaml
在 MMLU/CMMLU/C-Eval 上評估llamafactory-cli eval examples/train_lora/llama3_lora_eval.yaml

(3)參考webui生成的配置命令

????????其實我最想講的是這個!比如我訓練到500輪保存了檢查點后想休息一下,下次接著訓練,但是我又不知道配置文件中怎么進行配置,才能實現接著上次的檢查點訓練。你或許會說你都有webui了為啥多次一舉?那就是有這樣的需求萬一無法使用webui,只能用黑窗口,但又不知道怎么配置。這時候你可以用另一臺可以使用webui的電腦,在webui上選好配置,然后生成

在去到配置文件中加上就行!

?后續持續更新有關使用llamafactory過程中的我覺得值得記錄的內容。?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/902629.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/902629.shtml
英文地址,請注明出處:http://en.pswp.cn/news/902629.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【官方正版,永久免費】Adobe Camera Raw 17.2 win/Mac版本 配合Adobe22-25系列軟

Adobe Camera Raw 2025 年 2 月版(版本 17.2)。目前為止最新版新版已經更新2個月了,我看論壇之前分享的還是2024版,遂將新版分享給各位。 Adobe Camera Raw,支持Photoshop,lightroom等Adobe系列軟件&#…

leetcode:1295. 統計位數為偶數的數字(python3解法)

難度:簡單 給你一個整數數組 nums,請你返回其中位數為 偶數 的數字的個數。 示例 1: 輸入:nums [12,345,2,6,7896] 輸出:2 解釋: 12 是 2 位數字(位數為偶數) 345 是 3 位數字&…

使用Handsontable實現動態表格和下載表格

1.效果 2.實現代碼 首先要加載Handsontable,在示例中我是cdn的方式引入的,vue的話需要下載插件 let hot null;var exportPlugin null;function showHandsontable(param) {const container document.getElementById("hot-container");// 如果…

2.1 基于委托的異步編程方法

基于委托的異步編程模型是 .NET 早期版本中實現異步操作的一種方式,主要通過 BeginInvoke 和 EndInvoke 方法來實現。這種基于委托的異步模式已被 Task 和 async/await 模式取代,但在維護舊代碼時仍可能遇到這種模式。 委托的方法中:Invoke用…

【Bluedroid】藍牙 HID 設備信息加載與注冊機制及配置緩存系統源碼解析

本篇解析Android藍牙子系統加載配對HID設備的核心流程,通過btif_storage_load_bonded_hid_info實現從NVRAM讀取設備屬性、驗證綁定狀態、構造描述符并注冊到BTA_HH模塊。重點剖析基于ConfigCache的三層存儲架構(全局配置/持久設備/臨時設備),其通過動態持久化判定策略和LRU…

Linux 下的網絡管理(附加詳細實驗案例)

一、簡單了解 NM(NetworkManager) 在 Linux 中,NM 是 NetworkManager 的縮寫。它是一個用于管理網絡連接的守護進程和工具集。 在 RHEL9 上,使用 NM 進行網絡配置,ifcfg (也稱為文件)將不再…

長連接、短連接與WebSocket的基本知識

目錄 前言正文 前言 🤟 找工作,來萬碼優才:👉 #小程序://萬碼優才/r6rqmzDaXpYkJZF 爬蟲神器,無代碼爬取,就來:bright.cn Java基本知識: java框架 零基礎從入門到精通的學習路線 附…

2026《數據結構》考研復習筆記四(緒論)

緒論 前言時間復雜度分析 前言 由于先前筆者花費約一周時間將王道《數據結構》知識點大致過了一遍,圈畫下來疑難知識點,有了大致的知識框架,現在的任務就是將知識點逐個理解透徹,并將leetcode刷題與課后刷題相結合。因此此后的過…

Vmware安裝centos7和Redis

2025最詳細vmware安裝centos 7 教程_嗶哩嗶哩_bilibili 1.上面是B站安裝Centos7參考視頻 2.安裝完成需要配置網絡 (新手教程)VMware安裝CentOS7_嗶哩嗶哩_bilibili 重啟網絡服務: ping www.baidu.com ip addr 查看ip地址 兩種重啟方式 3.關閉防火墻 依次執行如下三條命令 …

二進制部署Kubernetes1.32.4最新版本高可用集群及附加組件

一、前言 在云原生技術席卷全球的今天,Kubernetes(K8s)已成為容器編排領域的事實標準。當大家都習慣了kubeadm、kubeasz等自動化工具一鍵部署的便利時,選擇通過二進制方式手動搭建K8s集群更像是一場"知其然亦知其所以然&qu…

樹莓派系統中設置固定 IP

在基于 Ubuntu 的樹莓派系統中,設置固定 IP 地址主要有以下幾種方法: 方法一:使用 Netplan 配置(Ubuntu 18.04 及以上版本默認使用 Netplan) 查看網絡接口名稱 在終端輸入ip link或ip a命令,查看當前所使…

主流單片機與編程調試工具對應關系表梳理

單片機系列/型號 | 官方IDE/工具鏈 | 調試器/燒錄器 | 第三方支持工具 |調試接口協議 | 特點與適用場景| | STMicroelectronics (STM32) STM32全系列 STM32CubeIDE ST-LINK/V2/V3 - PlatformIO (VS Code插件) SWD/JTAG 官方集成開發環境,支持HAL庫,免費…

VulnHub-DarkHole_2靶機滲透教程

1.靶機部署 [Onepanda] Mik1ysomething 靶機下載:https://download.vulnhub.com/darkhole/darkhole_2.zip 直接使用VMware導入打開就行 注意:靶機的網絡連接模式必須和kali一樣,讓靶機跟kali處于同一網段,這樣kali才能掃出靶機…

USO服務器操作系統手動升級GCC 12.2.0版本

1. 從 GNU 官方 FTP 服務器下載 GCC 12.2.0 的源碼包,并解壓進入源碼目錄。 wget https://ftp.gnu.org/gnu/gcc/gcc-12.2.0/gcc-12.2.0.tar.gz tar -zxvf gcc-12.2.0.tar.gz cd gcc-12.2.0 2. 運行腳本下載并配置 GCC 編譯所需的依賴庫。此步驟會自動下載如 GMP…

設計模式基礎概念(行為模式):觀察者模式(Observer)

概述 我們可以發現這樣一個場景:如果你訂閱了一份雜志或報紙, 那就不需要再去報攤查詢新出版的刊物了。 出版社 (即應用中的 “發布者(publisher)”) 會在刊物出版后 (甚至提前) 直…

JavaFX實戰:從零到一實現一個功能豐富的“高級反應速度測試”游戲

大家好!今天我們不搞簡單的“紅變綠就點”了,來點硬核的!我們要用 JavaFX 從頭開始,構建一個更復雜、更有趣也更考驗能力的“高級反應速度測試”游戲。這個版本將引入選擇反應時 (Choice Reaction Time) 的概念——你需要在多個干…

CSS 選擇器介紹

CSS 選擇器介紹 1. 基本概念 CSS(層疊樣式表)是一種用于描述 HTML 或 XML 文檔外觀的語言。通過 CSS,可以控制網頁中元素的布局、顏色、字體等視覺效果。而 CSS 選擇器則是用來指定哪些 HTML 元素應該應用這些樣式的工具。 2. 基本選擇器 …

Vue3父子組件數據同步方法

在 Vue 3 中&#xff0c;當子組件需要修改父組件傳遞的數據副本并同步更新時&#xff0c;可以通過以下步驟實現&#xff1a; 方法 1&#xff1a;使用 v-model 和計算屬性&#xff08;實時同步&#xff09; 父組件&#xff1a; vue <template><ChildComponent v-mo…

el-table中el-input的autofocus無法自動聚焦的解決方案

需求 有一個表格展示了一些進度信息&#xff0c;進度信息可以修改&#xff0c;需要點擊進度信息旁邊的編輯按鈕時&#xff0c;把進度變為輸入框且自動聚焦&#xff0c;當鼠標失去焦點時自動請求更新接口。 注&#xff1a;本例以vue2 element UI為例 分析 這個需求看著挺簡單…

用高斯濺射技術跨越機器人模擬與現實的鴻溝:SplatSim 框架解析

在機器人領域&#xff0c;讓機器人在現實世界中精準執行任務是大家一直追求的目標。可模擬環境和現實世界之間存在著不小的差距&#xff0c;特別是基于 RGB 圖像的操作策略&#xff0c;從模擬轉移到現實時總是狀況百出。 今天咱們就來聊聊 SplatSim 框架&#xff0c;看看它是怎…