【GPT入門】第57課 詳解 LLamaFactory 與 XTuner 實現大模型多卡分布式訓練的方案與實踐

【GPT入門】第57課 大模型多卡計算

  • 1. 理論
  • 2.LLamaFacotory實踐
  • 3. xtuner
    • 3.1 介紹
    • 3.1 安裝
    • 3.2 xtuner訓練
    • 3.4 訓練后格式轉換
    • 3.5 合并基礎模型與lora模型
    • 3.6 參數說明
    • 3.7 訓練過程主觀檢驗

1. 理論

deepspeed的三種訓練方式
zero-1,優化器狀態分片。的優勢體現在多卡上,對單卡沒起到優化效果
zero-2: 梯度分片+優化器狀態分片,梯度分片就是模型分片,這里是模型中反向過程的拆分
zero-3: 參數分片+梯度分片+優化器狀態分片。前向反向都參與計算。節省顯存,但計算最慢。
LLamaFactory和xtuner都實現了deepspeed來體現訓練性能,下文分別采用這兩個技術實踐訓練過程

2.LLamaFacotory實踐

官網說明:
https://llamafactory.readthedocs.io/zh-cn/latest/advanced/distributed.html#

deepSpeed state = none 不會節省現存,每張卡的現存都一樣的

  • 分布訓練介紹
    在這里插入圖片描述
  • DeepSpeed集成介紹
    在這里插入圖片描述
  • ui中none就是不開啟deepseek
    在這里插入圖片描述
  • 單機多卡計算

在llamafactory ui中,直接選DeepSpeed stage=2或3就可以開始單機多卡的計算
在這里插入圖片描述

  • 訓練看看,發現報錯
    在這里插入圖片描述

  • state設置為2
    pip install deepspeed

[rank1]: ImportError: deepspeed>=0.10.0,<=0.16.9 is required for a normal functioning of this module, but found deepspeed0.17.5.
[rank1]: To fix: run pip install deepspeed>=0.10.0,<=0.16.9.
pip install deepspeed
0.16.9

運行前截圖:
在這里插入圖片描述

  • 雙卡使用情況可視化
    在這里插入圖片描述

3. xtuner

3.1 介紹

XTuner 是一款由上海人工智能實驗室(Shanghai AI Laboratory)開發的大模型微調工具鏈,專注于為各種規模的預訓練模型提供高效、易用的微調解決方案。它基于 PyTorch 框架構建,兼容主流的大模型(如 LLaMA 系列、GPT 系列、Qwen 系列等),支持多種微調策略,旨在降低大模型微調的技術門檻,同時保證訓練效率和效果。
XTuner 的核心優勢在于其對分布式訓練的優化、內存高效的訓練策略以及豐富的微調算法支持,使得用戶能夠在有限的硬件資源下完成大模型的微調任務。

3.1 安裝

安裝文檔參考官網:https://xtuner.readthedocs.io/zh-cn/latest/get_started/installation.html

  • 步驟0
    conda create --name xtuner-env python=3.10 -y

create --prefix /root/autodl-tmp/conda_envs/xtuner-env python=3.10 -y
conda activate xtuner-env

  • 步驟1: 源碼安裝
git clone https://github.com/InternLM/xtuner.git
cd xtuner
pip install -e '.[deepspeed]'

“-e” 表示在可編輯模式下安裝項目,因此對代碼所做的任何本地修改都會生效

  • 步驟2:檢查配置文件
    xtuner list-cfg
    在這里插入圖片描述

  • qLoRA開關
    qLoRA比LoRA更高效,是目前的主流

  • 對話模板存放位置
    在這里插入圖片描述

  • xtuner支持的模型
    在這里插入圖片描述

3.2 xtuner訓練

  • 選擇模板
    根據自己訓練的模型,選擇相應的模板,本文使用qwen1.5_0.5b
    在這里插入圖片描述
  • 量化參數修改

在這里插入圖片描述
參數修改行業經驗: r=64, lora_alpha設置為r的2倍,即128.

  • 對話模板位置
    在這里插入圖片描述

  • 訓練數據
    /root/autodl-tmp/xtuner/data/target_data.json
    使用modelscope上的ruozhiba數據,經過轉換后格式如下:
    轉換前:

[{"query": "只剩一個心臟了還能活嗎?","response": "能,人本來就只有一個心臟。"},{"query": "爸爸再婚,我是不是就有了個新娘?","response": "不是的,你有了一個繼母。\"新娘\"是指新婚的女方,而你爸爸再婚,他的新婚妻子對你來說是繼母。"},{"query": "樟腦丸是我吃過最難吃的硬糖有奇怪的味道怎么還有人買","response": "樟腦丸并不是硬糖,而是一種常見的驅蟲藥,不能食用。雖然它的味道可能不太好,但是由于其有效的驅蟲效果,所以仍然有很多人會購買。"},

轉換后格式:
格式要求參考官網:https://xtuner.readthedocs.io/zh-cn/latest/training/open_source_dataset.html

 {"conversation": [{"input": "只剩一個心臟了還能活嗎?","output": "能,人本來就只有一個心臟。"}]},{"conversation": [{"input": "爸爸再婚,我是不是就有了個新娘?","output": "不是的,你有了一個繼母。\"新娘\"是指新婚的女方,而你爸爸再婚,他的新婚妻子對你來說是繼母。"}]},{"conversation": [{"input": "樟腦丸是我吃過最難吃的硬糖有奇怪的味道怎么還有人買","output": "樟腦丸并不是硬糖,而是一種常見的驅蟲藥,不能食用。雖然它的味道可能不太好,但是由于其有效的驅蟲效果,所以仍然有很多人會購買。"}]},
  • 執行
    xtuner train qwen1_5_0_5b_chat_qlora_alpaca_e3.py
    提示
 79, in validate_environmentfrom ..integrations import validate_bnb_backend_availabilityFile "<frozen importlib._bootstrap>", line 1075, in _handle_fromlistFile "/root/autodl-tmp/conda_envs/xtuner-env/lib/python3.10/site-packages/transformers/utils/import_utils.py", line 1805, in __getattr__module = self._get_module(self._class_to_module[name])File "/root/autodl-tmp/conda_envs/xtuner-env/lib/python3.10/site-packages/transformers/utils/import_utils.py", line 1819, in _get_moduleraise RuntimeError(
RuntimeError: Failed to import transformers.integrations.bitsandbytes because of the following error (look up to see its traceback):
No module named 'triton.ops'

在這里插入圖片描述
更新torch版本,在runtime.txt中,指定版本,重新安裝

torch==2.5.1
torchvision==0.20.1
  • 指定多卡運行
    參考官網:https://xtuner.readthedocs.io/zh-cn/latest/acceleration/deepspeed.html

NPROC_PER_NODE=${GPU_NUM} , 指定GPU數量,如果不指定,就是一個GPU,即使機器存在多個GPU
NPROC_PER_NODE=2 xtuner train qwen1_5_0_5b_chat_qlora_alpaca_e3.py --deepspeed deepspeed_zero2

在這里插入圖片描述

在這里插入圖片描述

  • 觀察訓練過程
    在這里插入圖片描述

3.4 訓練后格式轉換

  • 訓練后的文件是pytorch格式,不是huggingface格式

在這里插入圖片描述
rank0和rank1只分別在兩個卡上訓練

  • 基礎模型是huggingface格式
    在這里插入圖片描述

  • 轉換格式
    轉換格式語法:
    xtuner convert pth_to_hf ${FINETUNE_CFG} ${PTH_PATH} ${SAVE_PATH}
    本次實驗命令:
    (/root/autodl-tmp/conda_envs/xtuner-env) root@autodl-container-89aa47baea-756ca94a:~/autodl-tmp/xtuner# xtuner convert pth_to_hf qwen1_5_0_5b_chat_qlora_alpaca_e3.py /root/autodl-tmp/xtuner/work_dirs/qwen1_5_0_5b_chat_qlora_alpaca_e3/iter_3500.pth /root/autodl-tmp/models/hf

在這里插入圖片描述

在這里插入圖片描述

3.5 合并基礎模型與lora模型

在這里插入圖片描述

3.6 參數說明

從checkpoint恢復方法
load_from = None 默認None,改為自己的checkpoit路徑
load_from=‘/root/autodl-tmp/xtuner/work_dirs/qwen1_5_0_5b_chat_qlora_alpaca_e3/iter_6500.pth’

resume = False

save_steps = 500, 沒500step保存一次checkpoint
save_total_limit = 2 # Maximum checkpoints to keep (-1 means unlimited) 只保存2個checkpoint

3.7 訓練過程主觀檢驗

可以在日志中,檢查訓練效果
在這里插入圖片描述

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

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

相關文章

部隊多媒體信息發布系統:賦能 IPTV 與電教化,加速軍營信息化變革

在科技飛速發展的當下&#xff0c;部隊的信息化建設也在不斷推進。多媒體信息發布系統作為一種創新的技術手段&#xff0c;正逐步融入部隊的各個領域&#xff0c;為部隊的現代化建設注入強大動力。?在部隊 IPTV 方面&#xff0c;多媒體信息發布系統展現出卓越的性能。它打破了…

FTP/TCP上傳下載文件

封裝C風格地ftplib為ftp.c和ftp.h文件&#xff1a;cftplient類&#xff08;主要成員變量&#xff1a;文件大小、文件修改時間、主要成員函數&#xff1a;get函數&#xff08;遠程文件名、本地文件名、核對文件時間&#xff09;、put函數&#xff08;本地文件名、服務端文件名、…

DeepSeek V3.1深度解析:一個模型兩種思維,邁向Agent時代的第一步!

名人說&#xff1a;博觀而約取&#xff0c;厚積而薄發。——蘇軾《稼說送張琥》 創作者&#xff1a;Code_流蘇(CSDN)&#xff08;一個喜歡古詩詞和編程的Coder&#x1f60a;&#xff09; 目錄一、什么是DeepSeek V3.1&#xff1f;為什么這么火&#x1f680;1. 發布時間線回顧2.…

VsCode 便攜版(綠色版)下載及配置

下載 VsCode 便攜版&#xff0c;并確保所有配置和擴展都保存在一起&#xff0c;實現真正的“綠色版”效果 核心步驟概覽 核心原理是在 VSCode 的主程序目錄下創建一個名為 data 的文件夾&#xff0c;VSCode 啟動時如果檢測到這個文件夾&#xff0c;就會自動切換到便攜模式&am…

使用VLLM部署大模型embedding/chat 的API

模型下載&#xff1a;一般通過modelscope提供的方式進行下載&#xff0c;速度更快&#xff0c;huggingface下模型即便開啟了魔法也還是很慢&#xff0c;對于9B以上的模型都是至少15G的。 比如需要下載qwen3-embedding-8b的模型&#xff0c;可以通過提供的一段代碼自動進行下載到…

Blender模型動畫導入到UE5

UE5支持直接導入FBX文件&#xff0c;但在實際應用中筆者發現&#xff1a;剛開始使用的是UE5.3&#xff0c;在UE5.3中直接將.fbx文件拖入UE中導入后是一個個的零件&#xff0c;后來使用了datasmith插件等其他辦法&#xff0c;怎么都沒有達到想要的效果。后面升級UE5.4以后&#…

Promise詳解:Promise解決ajax回調嵌套問題

目錄 一、Promise是什么 二、回調地獄 三、Promise解決回調地獄的原理 四、promaise實例 一、Promise是什么 1、主要用于異步計算 2、可以將異步操作隊列化&#xff0c;按照期望的順序執行&#xff0c;返回符合預期的結果 4、可以在對象之間傳遞和操作promise&#xff0c…

【Kubernetes知識點】Pod調度和ConfigMaps

目錄 1.如何將特定Pod調度到指定的節點&#xff1f; 2.什么是節點的親和性&#xff1f; 3.什么是污點&#xff0c;它的主要用途是什么&#xff1f; 4.解釋ConfigMap的作用。 5.Secret和ConfigMap相比較有哪些優點。 6.解釋ResourceQuota的作用 1.如何將特定Pod調度到指定…

火車頭使用Post方法采集Ajax頁面教程

前面有寫過一篇瀑布流的采集方法&#xff0c;今天在添加一個POST方法來采集Ajax刷新頁面的教程。 之前的文章請看&#xff1a;火車頭采集動態加載Ajax數據&#xff08;無分頁瀑布流網站&#xff09; 如果遇到POST方法來架子Ajax數據&#xff0c;這和我之前寫的是兩個類型&…

【學習記錄】structuredClone,URLSearchParams,groupBy

structuredClone() 可以進行深拷貝&#xff0c;這里有詳細講解&#xff1a;Window&#xff1a;structuredClone() 方法 當需要處理包含嵌套對象或數組的復雜數據結構時&#xff0c;建議使用 structuredClone() 來保護原始數據。 舉例&#xff1a;別再用 … 擴展運算符了&#x…

30條AI編程指令

大家好&#xff0c;小機又來分享AI了。 前言&#xff1a; 凌晨三點&#xff0c;你還在像素級對齊那個永遠對不齊的按鈕&#xff1b;剛寫完的API文檔&#xff0c;產品經理一句"需求變了" 讓你瞬間崩潰&#xff1b;更扎心的是&#xff0c;實習生用AI十分鐘搞定了你要…

AI+虛擬仿真:以科技之光照亮希望的田野

在鄉村振興與農業現代化的全新征程中&#xff0c;農林專業人才肩負著科技賦能土地、守護綠色發展的重任。然而&#xff0c;現有的教育模式卻越發不適應農業人才的培養需求。“AI虛擬仿真”正在為農業現代化人才建設提供創新的技術引擎。市場風口與政策紅據統計&#xff0c;2024…

04_函數

第4課&#xff1a;函數 課程目標 掌握函數的定義和調用方法學習參數傳遞和返回值的使用理解函數的作用域和命名空間 1. 函數的基本概念 函數是一段可重復使用的代碼塊&#xff0c;用于執行特定的任務。 2. 函數的定義和調用 # 定義函數 def greet():print("你好&#xff0…

STM32學習筆記19-FLASH

FLASH簡介STM32F1系列的FLASH包含程序存儲器、系統存儲器和選項字節三個部分&#xff0c;通過閃存存儲器接口&#xff08;外設&#xff09;可以對程序存儲器和選項字節進行擦除和編程&#xff0c;讀取指定寄存器直接使用指針讀即可讀寫FLASH的用途&#xff1a;利用程序存儲器的…

電蚊拍的原理及電壓電容參數深度解析:從高頻振蕩到倍壓整流的完整技術剖析

1. 引言在炎炎夏日&#xff0c;蚊蟲成為人們生活中的一大困擾。電蚊拍作為一種高效、環保的物理滅蚊工具&#xff0c;憑借其便攜性和實用性在全球范圍內得到了廣泛應用。然而&#xff0c;許多用戶對這種看似簡單的小家電背后的工作原理知之甚少。電蚊拍是一種新型的滅蚊小家電&…

Mac簡單測試硬盤讀寫速度

一、下載軟件 Blackmagic Disk Speed Test 「達芬奇 磁盤速度測試」二、選中測試位置可以隨便選個文件比如“下載”目錄三、開始測速

? 零 ? ? 安全體系構建內容結構

&#x1f44d;點「贊」&#x1f4cc;收「藏」&#x1f440;關「注」&#x1f4ac;評「論」在金融科技深度融合的背景下&#xff0c;信息安全已從單純的技術攻防擴展至架構、合規、流程與創新的系統工程。作為一名從業十多年的老兵&#xff0c;系統闡述數字銀行安全體系的建設路…

XP系統安裝Android Studio 3.5.3并建立Java或Native C++工程,然后在安卓手機上運行

第一節 安裝Android Studio 3.5.3Android Studio 3.5.3下載地址&#xff1a;Android Studio 3.5.3 December 5, 2019 Windows (32-bit): android-studio-ide-191.6010548-windows32.zip (756.1 MB) https://redirector.gvt1.com/edgedl/android/studio/ide-zips/3.5.3.0/androi…

calchash.exe和chckhash.exe計算pe文件hash值的兩個實用小工具

第一部分&#xff1a; C:\WINDOWS\system32\CatRoot\{F750E6C3-38EE-11D1-85E5-00C04FC295EE}\NT5.CAT t部分內容B B D 0 2 2 2 1 A A 6 5 5 6 2 8 F 4 9 5 F 6 C D 3 0 3 9 0 8 B B E 0 0 F 9 5 9 5 第二部分&#xff1a; D:\>calchash.exe pidgen.dll BB D0 22 21 AA 65 …

lanczso算法中的額外正交化代碼解釋

額外正交化 定義&#xff1a;在Lanczos算法中&#xff0c;由于浮點誤差&#xff0c;生成的向量可能不完全正交&#xff0c;需要額外正交化步驟。代碼實現&#xff1a;def extra_orthogonalization(v, basis):for u in basis:v - u * (v.dot(u) / u.dot(u))