【學習記錄】大模型微調之使用 LLaMA-Factory 微調 Qwen系列大模型,可以用自己的數據訓練

一、LoRA微調的基本原理

1、基本概念
  • LoRA(Low-Rank Adaptation)是一種用于大模型微調的技術,通過引入低秩矩陣來減少微調時的參數量。在預訓練的模型中,LoRA通過添加兩個小矩陣B和A來近似原始的大矩陣ΔW,從而減少需要更新的參數數量。具體來說,LoRA通過將全參微調的增量參數矩陣ΔW表示為兩個參數量更小的矩陣B和A的低秩近似來實現:
  • [ W_0 + \Delta W = W_0 + BA ]
  • 其中,B和A的秩遠小于原始矩陣的秩,從而大大減少了需要更新的參數數量。
2、思想
  • 預訓練模型中存在一個極小的內在維度,這個內在維度是發揮核心作用的地方。在繼續訓練的過程中,權重的更新依然也有如此特點,即也存在一個內在維度(內在秩)
  • 權重更新:W=W+^W
    ? 因此,可以通過矩陣分解的方式,將原本要更新的大的矩陣變為兩個小的矩陣
  • 權重更新:W=W+^W=W+BA
  • 具體做法,即在矩陣計算中增加一個旁系分支,旁系分支由兩個低秩矩陣A和B組成
3、原理
  • 訓練時,輸入分別與原始權重和兩個低秩矩陣進行計算,共同得到最終結果,優化則僅優化A和B
  • 訓練完成后,可以將兩個低秩矩陣與原始模型中的權重進行合并,合并后的模型與原始模型無異
    在這里插入圖片描述
4、為什么GPU支持AI訓練,且是最優選

CPU串行運算能力強(計算頻率高,核心數少)
GPU并行運算能力強(計算頻率低,核心數多(CUDA數量))

5、模型之間區別

1、模型預訓練:從頭開始訓練一個全新的模型。(全新的模型是指模型的參數完全隨機,不能處理任何問題。)

2、微調訓練(遷移學習):基于之前訓練好的模型,來繼續學習新的任務。微調的目的往往是讓模型具備新的或者特定的能力。

3、Lora微調屬于局部微調。

二、LLaMA-Factory介紹

github官網地址:https://github.com/hiyouga/LLaMA-Factory/blob/main/README_zh.md

1、基本介紹

LLaMA Factory 是一個簡單易用且高效的大型語言模型(Large Language Model)訓練與微調平臺。通過 LLaMA Factory,可以在無需編寫任何代碼的前提下,在本地完成上百種預訓練模型的微調,框架特性包括:

  • 模型種類:LLaMA、LLaVA、Mistral、Mixtral-MoE、Qwen、Yi、Gemma、Baichuan、ChatGLM、Phi 等等。

  • 訓練算法:(增量)預訓練、(多模態)指令監督微調、獎勵模型訓練、PPO 訓練、DPO 訓練、KTO 訓練、ORPO 訓練等等。

  • 運算精度:16 比特全參數微調、凍結微調、LoRA 微調和基于 AQLM/AWQ/GPTQ/LLM.int8/HQQ/EETQ 的 2/3/4/5/6/8 比特 QLoRA 微調。

  • 優化算法:GaLore、BAdam、DoRA、LongLoRA、LLaMA Pro、Mixture-of-Depths、LoRA+、LoftQ 和 PiSSA。

  • 加速算子:FlashAttention-2 和 Unsloth。

  • 推理引擎:Transformers 和 vLLM。

  • 實驗監控:LlamaBoard、TensorBoard(最好推薦)、Wandb、MLflow、SwanLab 等等。

2、安裝 LLaMA Factory(基于windows)
git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git
cd LLaMA-Factory
pip install -e ".[torch,metrics]"

1、創建一個conda環境

conda create -n llamaFactory python=3.12 -y
pip install -e .[torch,metrics]
或者pip install -e
上面的似乎沒有安裝cuda,所以訓練時會提示
Warning
CUDA environment was not detected.

因此安一下:

 pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121

2、啟動

llamafactory-cli webui

在這里插入圖片描述


如果是linux,建議使用vscode做ssh連接,這樣就方便外部訪問web端。


在這里插入圖片描述

在這里插入圖片描述

3.使用 LLaMA-Factory 微調 Qwen
選擇自己本地的大模型,記住路徑改為自己的本地路徑,否則會跑去huggingface去下載。
在這里插入圖片描述
自己的本地路徑
在這里插入圖片描述
Checkpoint path檢查點路徑就是如果你中途斷網了,比如你訓練了500次了,那么就可以從五百次繼續訓練。如果沒有訓練過,那么此處就不要填。
在這里插入圖片描述
繼續
在這里插入圖片描述
Dataset(數據集)
數據集必須放在LLaMA-Factory項目下的data文件夾里,記住是必須。

訓練輪次 最少300
在這里插入圖片描述
Cutoff length(截斷長度)越大 越耗資源,根據自己的數據量給出相應的長度
在這里插入圖片描述
Batch size(批次大小,根據自己的GPU決定)
在這里插入圖片描述
用的啥選啥,我用的lora,所以選LoRA configurations
在這里插入圖片描述
LoRA alpha設置為LoRA rank的2倍
在這里插入圖片描述
priview command(預覽命令)
可以復制到自己本地去跑,但是感覺有點多余。
在這里插入圖片描述
設備數量(device count),當你有幾臺設備就填幾
在這里插入圖片描述

之前沒有在conda安裝cuda,運行提示Warning
CUDA environment was not detected.
安裝以后不提示。
在這里插入圖片描述
正常訓練
在這里插入圖片描述
可以看到一些正常輸出了
在這里插入圖片描述
在這里插入圖片描述
如果你中斷訓練,后臺會報錯

raiseValueError("OutputdirectoryalreadyexistsandIsnotempty.Pleasesetovenarite_output_dir.")
ValueError: Output directory already exists and is not empty.
Please set overwrite_output_dir

如果要重新訓練,把LLaMA-Factory文件下的saves目錄下的之前的數據刪除就可以了
在這里插入圖片描述
這里設置日志打印,和保存批次
在這里插入圖片描述
填入自己的訓練數據point,就可以聊天了。
在這里插入圖片描述

**那什么時候可以訓練停止呢**?

loss損失,趨于平衡時。
在這里插入圖片描述

三、LLaMA-Factory微調數據集制作方法

1、modelscope下載數據集,然后通過代碼轉換成自己想要的格式的數據
比如我用弱智吧數據訓練:https://modelscope.cn/datasets/w10442005/ruozhiba_qa
數據下載下來以后
在這里插入圖片描述
用如下代碼轉成如下格式的數據

{"instruction": "計算這些物品的總費用。 ","input": "輸入:汽車 - $3000,衣服 - $100,書 - $20。","output": "汽車、衣服和書的總費用為 $3000 + $100 + $20 = $3120。"
}

代碼

import json# 讀取原始JSON文件
input_file = r"data\ruozhiba_qaswift.json"  # 你的JSON文件名
output_file = r"\data\ruozhiba_qaswift_train.json"  # 輸出的JSON文件名with open(input_file, "r", encoding="utf-8") as f:data = json.load(f)# 轉換后的數據
converted_data = []for item in data:converted_item = {"instruction": item["query"],"input": "","output": item["response"]}converted_data.append(converted_item)# 保存為JSON文件(最外層是列表)
with open(output_file, "w", encoding="utf-8") as f:json.dump(converted_data, f, ensure_ascii=False, indent=4)print(f"轉換完成,數據已保存為 {output_file}")

然后將轉換的數據放入LLaMA-Factory項目下的data下,同時更改dataset_info.json.
然后就可以訓練了。
在這里插入圖片描述

四、訓練評估

箭頭所指的地方為自己需要填的訓練checkpoint最終的批次路徑,和數據集
在這里插入圖片描述
需要安裝以下包,才可評估。

pip install jieba
pip install nltk
pip install rouge_chinese

五、量化導出

量化導出,默認為none,不用安裝包。如果量化到4,或者8,需要安裝一些包.不建議量化2和3,因為量化2和3,模型可能不好用或者不太能用。同時模型越小,越不建議量化,比如0.5B 不建議導出,因為0.5已經是最小的模型了,繼續量化反而效果不理想,能不量化 盡量不量化
在這里插入圖片描述

0.5B 不建議導出,因為0.5已經是最小的模型了,繼續量化反而效果不理想,如圖
在這里插入圖片描述

模型路徑為合并后的路徑,保存路徑自己定義
在這里插入圖片描述
量化安裝包

pip install optimum
pip install outo_gptq
pip install rouge_chinese

安裝out_gptq會報錯,它會與cuda環境不兼容,因此需要新建一個環境安裝
在這里插入圖片描述

根據您的CUDA 12.1環境,安裝AutoGPTQ(可能您指的outo_gptq是該工具的舊稱或筆誤)需要特殊處理。以下是詳細步驟:

方法:創建一個conda,建議3.10虛擬環境

1. 源碼安裝(兼容CUDA 12.1)

直接通過pip安裝可能無法獲取兼容版本,需從源碼安裝:

conda create -n llama python==3.10 -y

然后安裝

# 克隆倉庫
git clone https://github.com/PanQiWei/AutoGPTQ.git
cd AutoGPTQ
pip install outo_gptq
pip install auto-gptq -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install optimum -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install scipy -i https://pypi.tuna.tsinghua.edu.cn/simplecd LLaMA-Factory
pip install -e .
或者
pip install -e 
llamafactory-cli webui

2. 驗證安裝

安裝后運行以下Python代碼測試:

from autogptq import AutoGPTQ# 初始化量化器(無需實際量化,僅驗證加載)
quantizer = AutoGPTQ(model_path="your_model_path", device="cuda")
print("AutoGPTQ初始化成功!")

3. 常見問題處理
  • 依賴沖突:在虛擬環境中重新安裝numpytransformers
    pip uninstall numpy transformers -y
    pip install numpy==1.24.3 transformers==4.32.0
    
  • CUDA驅動問題:確保NVIDIA驅動版本 ≥ 530.30(CUDA 12.1最低要求)。

4. 備選方案

如果仍報錯,嘗試指定舊版AutoGPTQ

pip install git+https://github.com/PanQiWei/AutoGPTQ.git@v1.0.0

請按步驟操作后觀察是否解決兼容性問題。若遇到其他錯誤,請提供完整報錯日志以便進一步排查。


訓練圖分析

在這里插入圖片描述
y軸 loss為損失率
step為步數
original”(原始)和“smoothed”(平滑)
“original”(原始)和“smoothed”(平滑)。這種選項通常用于圖像處理或數據可視化中,允許用戶在原始數據或經過平滑處理的數據之間進行選擇。

  • Original(原始):選擇這個選項將顯示未經過任何處理的原始數據或圖像。
  • Smoothed(平滑):選擇這個選項將顯示經過平滑處理的數據或圖像,平滑處理通常用于減少噪聲或使數據更易于分析。
    兩者趨于重合且在一條線時,訓練可停止。Smoothed越高噪聲越大,通常需要增加訓練輪次來減少噪聲。
    通常情況下,平滑處理是為了減少噪聲,而不是增加噪聲。以下是一些可能的解釋:
  1. 平滑處理的目的

    • 平滑處理通常用于減少數據中的噪聲,使數據更加平滑和易于分析。
    • 在圖像處理和信號處理中,平滑處理可以幫助去除高頻噪聲,保留重要的低頻信息。
  2. 增加訓練輪次

    • 增加訓練輪次(epochs)通常是為了讓模型更好地學習數據中的模式,從而提高模型的性能。
    • 如果模型在訓練過程中表現出過擬合或欠擬合,增加訓練輪次可能有助于改善這些問題。
  3. 噪聲與平滑處理的關系

    • 如果平滑處理后噪聲反而增加,可能是因為平滑處理的方法或參數選擇不當。
    • 在某些情況下,過度的平滑處理可能會導致重要信息的丟失,反而使數據看起來更加嘈雜。
  4. 實際應用中的建議

    • 在進行平滑處理時,應選擇合適的平滑方法和參數,以確保既能有效減少噪聲,又能保留數據中的重要信息。
    • 如果增加訓練輪次是為了降低噪聲,可能需要同時調整其他超參數,如學習率、正則化參數等,以達到最佳效果。

總之,平滑處理通常是為了減少噪聲,而不是增加噪聲。如果在實際應用中遇到噪聲增加的問題,建議檢查平滑處理的方法和參數,或者考慮其他可能的因素。

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

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

相關文章

Vue 使用 xlsx 插件導出 excel 文件

安裝與引入 安裝 npm install xlsx npm install file-saver # 或者 yarn add xlsx yarn add file-saver 引入 import * as XLSX from xlsx; import FileSaver from file-saver 基本功能 讀取 Excel 文件 // 讀取文件內容 const workbook XLSX.readFile(path/to/file.xl…

vulntarget_a 訓練筆記

win 7 權限 利用任意文件上傳 getshell POST /module/ueditor/php/action_upload.php?actionuploadfile HTTP/1.1 User-Agent: Mozilla/5.0 (compatible; Baiduspider/2.0; http://www.baidu.com/search/spider.html) Accept: */* Accept-Language: zh-CN,zh;q0.9 Connectio…

無人機螺旋槳平衡標準

螺旋槳平衡是確保無人機(UAV)平穩運行、可靠性和使用壽命的關鍵過程。螺旋槳的不平衡會導致振動、噪音,并加速關鍵部件的磨損,從而對飛行性能產生負面影響。 ISO 21940-11:2016標準為旋翼平衡提供了一個廣泛引用的框架,定義了可接受的不平衡…

既生瑜何生亮?Nginx RTMP 模塊與 SRS RTMP服務器技術對比

在實時視頻流的場景中,RTMP 協議作為一種傳統且高效的流媒體傳輸協議,廣泛應用于各類直播和點播系統。兩款流行的開源 RTMP 服務器分別是基于 Nginx 的 Nginx RTMP 模塊 和 SRS(Simple Real-Time Server)。這兩者都在流媒體行業有…

MATLAB 批量移動 TIF 文件至分類文件夾

文章目錄 前言一、步驟二、代碼 前言 本代碼用于從指定的源文件夾 (sourceFolder) 中篩選所有 .tif 文件,并根據文件名的特定關鍵詞(Daynight 和 FDI)將其分類移動到相應的目標文件夾 (targetDaynightFolder 和 targetFDIFolder)。 一、步驟…

重溫Ubuntu 24.04 LTS

用戶調整 # 創建新用戶 sudo adduser newusername # 設置新用戶的密碼 sudo passwd newusername # 將新用戶添加到 sudo 組 sudo usermod -aG sudo newusername # 修改ssh訪問權限 sudo nano /etc/ssh/sshd_config # 將新用戶加入,此時root將無法訪問 AllowUsers n…

AWS Lambda 集成更新詳解:打造無縫云函數體驗

引言 AWS Lambda 作為一種無服務器計算服務,讓開發者能夠運行代碼而無需配置或管理服務器。隨著 AWS 不斷優化其服務,Lambda 的集成方式也在不斷更新和改進。本文將深入探討 Lambda 的最新集成選項,幫助您充分利用這一強大的無服務器計算平臺。 Lambda 集成類型概述 從圖…

基于Kubernetes部署Prometheus監控平臺

#作者:stackofumbrella 文章目錄 prometheus和k8s集群版本對照表架構Prometheus Operator簡介kube-prometheus下載地址 安裝修改鏡像地址修改Prometheus的service修改Grafana的service修改Alertmanager的service數據持久化執行安裝 Prometheus驗證Grafana驗證解決C…

Android之uCrop (裁剪) 的基本使用資料

Android 拍照、選擇圖片并裁剪 uCrop裁剪 uCrop裁剪2 uCrop裁剪3 1.權限檢查 private static final int REQUEST_CAMERA_PERMISSION 333; private void requestCameraPermission() {if (ContextCompat.checkSelfPermission(this, android.Manifest.permission.CAMERA)! …

STM32基礎教程——輸入捕獲模式測量PWM頻率

目錄 前言 技術實現 原理圖 連線圖 代碼實現 內容要點 PWM基本結構 開啟外設時鐘 配置GPIO端口 配置時基單元 初始化輸出比較單元 輸出比較通道重映射 輸入捕獲功能初始化 計算捕獲PWM的頻率 實驗結果 問題記錄 前言 IC(Input Capture)輸…

基于網啟PXE服務器的批量定制系統平臺(詳細版)

項目說明 該項目共分為2個子項目,由iventoy和定制安裝兩部分組成 該項目旨在復習鞏固系統服務部署使用、shell編程等知識,旨在讓學生增加知識面,提高項目實習經歷,充實簡歷 項目背景: 公司新購了一批服務器和臺式機…

旅游CMS選型:WordPress、Joomla與Drupal對比

內容概要 在旅游行業數字化轉型進程中,內容管理系統(CMS)的選擇直接影響網站運營效率與用戶體驗。WordPress、Joomla和Drupal作為全球主流的開源CMS平臺,其功能特性與行業適配性存在顯著差異。本文將從旅游企業核心需求出發&…

el-table下的復選框關聯勾選

效果展示&#xff1a; <el-table style"height: 500px;" :data"tableData" border empty-text"暫無數據" v-loading"loading":header-cell-style"{ text-align: center }" :cell-style"{ text-align: center }"…

解決Cubemx生產的 .ioc文件不能外部打開的方法

正常來說&#xff0c;cubemx生成的文件會有圖標 但是當圖標白色的時候&#xff0c;無法通過直接點擊這個文件進入cubemx 1.首先檢查java環境是不是裝的JAVA8&#xff0c;如果是的話進行第二步操作&#xff1b; 2.重新安裝一次cubemx&#xff0c;在安裝的時候選擇為我安裝&…

從零構建大語言模型全棧開發指南:第三部分:訓練與優化技術-3.1.3分布式數據加載與并行處理(PyTorch DataLoader優化)

?? 點擊關注不迷路 ?? 點擊關注不迷路 ?? 點擊關注不迷路 文章大綱 3.1.3 分布式數據加載與并行處理(`PyTorch DataLoader`優化)1. 大規模數據加載的挑戰與瓶頸分析1.1 數據加載流程的時間分解2. PyTorch DataLoader的深度優化策略2.1 核心參數調優2.2 分布式數據分片策…

K8S學習之基礎五十七:部署代碼掃描工具sonarqube

部署代碼掃描工具sonarqube 拉取postgres、sonarqube鏡像&#xff0c;在harbor上創建postgres、sonarqube項目&#xff0c;將鏡像上傳至harbordocker pull postgres docker pull sonarqube docker tat postgres:latest 172.16.80.140/postgres/postgres:latest docker tat sona…

RAG技術的進化:RQ-RAG查詢優化/化繁為簡Adaptive-RAG智能分類/精準出擊

嘿,親愛的算法探險家們!歡迎來到RAG技術的“奇幻冒險”之旅!?? 今天,咱們要一起探索的是如何讓大語言模型(LLM)從“呆萌小學生”進化成“機智博士生”的奇妙旅程! 想象一下,你正在和一個超級聰明的AI聊天,但它有時候會像個小迷糊,回答得讓你哭笑不得。這時候,RAG…

11:00開始面試,11:08就出來了,問的問題有點變態。。。

從小廠出來&#xff0c;沒想到在另一家公司又寄了。 到這家公司開始上班&#xff0c;加班是每天必不可少的&#xff0c;看在錢給的比較多的份上&#xff0c;就不太計較了。沒想到8月一紙通知&#xff0c;所有人不準加班&#xff0c;加班費不僅沒有了&#xff0c;薪資還要降40%…

滲透測試中發現ak/sk泄露時的驗證工具

項目地址&#xff1a;https://github.com/libaibaia/cloudsec啟動命令&#xff1a;java -jar cloudSec-1.2.2-SNAPSHOT.jar 訪問&#xff1a;http://localhost:8000/#/admin/login 默認用戶名密碼&#xff1a;admin/admin123 注&#xff1a;8000 端口運行&#xff0c;如占用先…

【藍橋杯】重點沖刺

【最高優先級】必考核心算法(占分60%以上) 動態規劃(DP) ?????? 背包問題:01背包、完全背包(必須掌握空間優化的一維寫法) 線性DP:最長上升子序列(LIS)、最長公共子序列(LCS) 路徑問題:網格路徑計數(含障礙物)、最小路徑和 經典模型:打家劫舍、股票買賣問…