輕量化大模型微調工具XTuner指令微調實戰(下篇)

接著上篇文章《輕量化大模型微調工具XTuner指令微調實戰(上篇)》來接著寫教程。

一、模型轉換

模型訓練后會自動保存成 PTH 模型(例如?iter_500.pth),我們需要利用?xtuner?convert?pth_to_hf?將其轉換為 HuggingFace 模型,以便于后續使用。具體命令為:

xtuner convert pth_to_hf ${CONFIG_NAME_OR_PATH} ${PTH} ${SAVE_PATH}# 例如:xtuner convert pth_to_hf ./config.py ./iter_500.pth ./iter_500_hfxtuner convert pth_to_hf ./qwen1_5_1_8b_chat_qlora_alpaca_e3.py /root/autodl-tmp/project/day11/xtuner/work_dirs/qwen1_5_1_8b_chat_qlora_alpaca_e3/iter_4000.pth  /root/autodl-tmp/llm/hf

第1個參數CONFIG_NAME_OR_PATH:配置文件路徑,也就是執行微調指令的配置文件。

第2個參數PTH:XTuner微調生成文件,給絕對路徑。

第3個參數SAVE_PATH:模型轉換保存的地方,需手動創建一個目錄。

二、模型合并

如果您使用了 LoRA / QLoRA 微調,則模型轉換后將得到 adapter 參數,而并不包含原 LLM 參數。如果您期望獲得合并后的模型權重,那么可以利用?xtuner?convert?merge?:

xtuner convert merge ${LLM} ${ADAPTER_PATH} ${SAVE_PATH}
# 例如:xtuner convert merge internlm/internlm2-chat-7b ./iter_500_hf ./iter_500_merged_llmxtuner convert merge  /root/autodl-tmp/llm/Qwen/Qwen1.5-1.8B-Chat /root/autodl-tmp/llm/hf   /root/autodl-tmp/llm/Qwen1.5-1.8B-Chat-hf

第1個參數LLM:微調時選擇的原始的大模型;

第2個參數ADAPTER_PATH:模型轉換時保存的路徑;

第3個參數SAVE_PATH:模型合并成功保存的路徑,需手動創建一個目錄;

三、驗證模型效果

1、安裝和運行LMDeploy推理框架

安裝和運行的教程請看《Ollama、vLLM和LMDeploy這三款主流大模型部署框架》?。

2、Python寫一個chat對話

寫一個python代碼,名字為:chat_to_llm.py

#多輪對話
from openai import OpenAI#定義多輪對話方法
def run_chat_session():#初始化客戶端client = OpenAI(base_url="http://localhost:23333/v1/",api_key="token-abc123")#初始化對話歷史chat_history = []#啟動對話循環while True:#獲取用戶輸入user_input = input("用戶:")if user_input.lower() == "exit":print("退出對話。")break#更新對話歷史(添加用戶輸入)chat_history.append({"role":"user","content":user_input})#調用模型回答try:chat_complition = client.chat.completions.create(messages=chat_history,model="/root/autodl-tmp/llm/Qwen1.5-1.8B-Chat-hf")#獲取最新回答model_response = chat_complition.choices[0]print("AI:",model_response.message.content)#更新對話歷史(添加AI模型的回復)chat_history.append({"role":"assistant","content":model_response.message.content})except Exception as e:print("發生錯誤:",e)break
if __name__ == '__main__':run_chat_session()

LMDeploy默認的端口號是23333? ,api_key隨便填寫一個即可。

python chat_to_llm.py  # 運行python文件

用數據集里的input與大模型對話 ,效果還不錯。

注意:

1、之所以使用LMDeploy,是因為XTuner與LMDeploy都是一家公司出品,使用的對話模版是一致的。

2、若使用vLLM等其他推理框架,請確保對話模版要一致,可以將XTuner的對話模版轉成vLLM需要的jinja2格式的文件。

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

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

相關文章

pyTorch框架使用CNN進行手寫數字識別

目錄 1.導包 2.torchvision數據處理的方法 3.下載加載手寫數字的訓練數據集 4.下載加載手寫數字的測試數據集 5. 將訓練數據與測試數據 轉換成dataloader 6.轉成迭代器取數據 7.創建模型 8. 把model拷到GPU上面去 9. 定義損失函數 10. 定義優化器 11. 定義訓練…

強化學習課程:stanford_cs234 學習筆記(3)introduction to RL

文章目錄 前言7 markov 實踐7.1 markov 過程再敘7.2 markov 獎勵過程 MRP(markov reward process)7.3 markov 價值函數與貝爾曼方程7.4 markov 決策過程MDP(markov decision process)的 狀態價值函數7.4.1 狀態價值函數7.4.2 狀態…

操作系統 4.5-文件使用磁盤的實現

通過文件進行磁盤操作入口 // 在fs/read_write.c中 int sys_write(int fd, const char* buf, int count) {struct file *file current->filp[fd];struct m_inode *inode file->inode;if (S_ISREG(inode->i_mode))return file_write(inode, file, buf, count); } 進程…

libreoffice-help-common` 的版本(`24.8.5`)與官方源要求的版本(`24.2.7`)不一致

出現此錯誤的原因主要是軟件包依賴沖突,具體分析如下: ### 主要原因 1. **軟件源版本不匹配(國內和官方服務器版本有差距) 系統中可能啟用了第三方軟件源(如 PPA 或 backports 源),導致 lib…

使用Geotools中的原始方法來操作PostGIS空間數據庫

目錄 前言 一、原生PostGIS連接介紹 1、連接參數說明 2、創建DataStore 二、工程實戰 1、Maven Pom.xml定義 2、空間數據庫表 3、讀取空間表的數據 三、總結 前言 在當今數字化與信息化飛速發展的時代,空間數據的處理與分析已成為眾多領域不可或缺的一環。從…

訊飛語音合成(流式版)語音專業版高質量的分析

一、引言 在現代的 Web 應用開發中,語音合成技術為用戶提供了更加便捷和人性化的交互體驗。訊飛語音合成(流式版)以其高效、穩定的性能,成為了眾多開發者的首選。本文將詳細介紹在 Home.vue 文件中實現訊飛語音合成(流…

走進未來的交互世界:下一代HMI設計趨勢解析

在科技日新月異的今天,人機交互界面(HMI)設計正以前所未有的速度發展,不斷引領著未來的交互世界。從簡單的按鈕和圖標,到如今的智能助手和虛擬現實,HMI設計不僅改變了我們的生活方式,還深刻影響…

洛谷題單3-P1217 [USACO1.5] 回文質數 Prime Palindromes-python-流程圖重構

題目描述 因為 151 151 151 既是一個質數又是一個回文數&#xff08;從左到右和從右到左是看一樣的&#xff09;&#xff0c;所以 151 151 151 是回文質數。 寫一個程序來找出范圍 [ a , b ] ( 5 ≤ a < b ≤ 100 , 000 , 000 ) [a,b] (5 \le a < b \le 100,000,000…

學習筆記,DbContext context 對象是保存了所有用戶對象嗎

DbContext 并不會將所有用戶對象保存在內存中&#xff1a; DbContext 是 Entity Framework Core (EF Core) 的數據庫上下文&#xff0c;它是一個數據庫訪問的抽象層它實際上是與數據庫的一個連接會話&#xff0c;而不是數據的內存緩存當您通過 _context.Users 查詢數據時&…

本地命令行啟動服務并連接MySQL8

啟動服務命令 net start mysql8 關閉服務命令 net stop mysql8 本地連接MySQL數據庫mysql -u [用戶名] -p[密碼] 這里&#xff0c;我遇到了個問題 —— 啟動、關閉服務時&#xff0c;顯示 “發生系統錯誤 5。拒絕訪問。 ” 解法1&#xff1a;在 Windows 上以管理員身份打開…

數據蒸餾:Dataset Distillation by Matching Training Trajectories 論文翻譯和理解

一、TL&#xff1b;DR 數據集蒸餾的任務是合成一個較小的數據集&#xff0c;使得在該合成數據集上訓練的模型能夠達到在完整數據集上訓練的模型相同的測試準確率&#xff0c;號稱優于coreset的選擇方法本文中&#xff0c;對于給定的網絡&#xff0c;我們在蒸餾數據上對其進行幾…

【spring cloud Netflix】Ribbon組件

1.基本概念 SpringCloud Ribbon是基于Netflix Ribbon 實現的一套客戶端負載均衡的工具。簡單的說&#xff0c;Ribbon 是 Netflix 發布的開源項目&#xff0c;主要功能是提供客戶端的軟件負載均衡算法&#xff0c;將 Netflix 的中間層服務連接在一 起。Ribbon 的客戶端組件提供…

P1036 [NOIP 2002 普及組] 選數(DFS)

題目描述 已知 n 個整數 x1?,x2?,?,xn?&#xff0c;以及 1 個整數 k&#xff08;k<n&#xff09;。從 n 個整數中任選 k 個整數相加&#xff0c;可分別得到一系列的和。例如當 n4&#xff0c;k3&#xff0c;4 個整數分別為 3,7,12,19 時&#xff0c;可得全部的組合與它…

在響應式網頁的開發中使用固定布局、流式布局、彈性布局哪種更好

一、首先看下固定布局與流體布局的區別 &#xff08;一&#xff09;固定布局 固定布局的網頁有一個固定寬度的容器&#xff0c;內部組件寬度可以是固定像素值或百分比。其容器元素不會移動&#xff0c;無論訪客屏幕分辨率如何&#xff0c;看到的網頁寬度都相同。現代網頁設計…

二分查找與二叉樹中序遍歷——面試算法

目錄 二分查找與分治 循環方式 遞歸方式 元素中有重復的二分查找 基于二分查找的拓展問題 山脈數組的頂峰索引——局部有序 旋轉數字中的最小數字 找缺失數字 優化平方根 中序與搜索樹 二叉搜索樹中搜索特定值 驗證二叉搜索樹 有序數組轉化為二叉搜索樹 尋找兩個…

字符串——面試考察高頻算法題

目錄 轉換成小寫字母 字符串轉化為整數 反轉相關的問題 反轉字符串 k個一組反轉 僅僅反轉字母 反轉字符串里的單詞 驗證回文串 判斷是否互為字符重排 最長公共前綴 字符串壓縮問題 轉換成小寫字母 給你一個字符串 s &#xff0c;將該字符串中的大寫字母轉換成相同的…

現代復古電影海報品牌徽標設計襯線英文字體安裝包 Thick – Retro Vintage Cinematic Font

Thick 是一種大膽的復古字體&#xff0c;專為有影響力的標題和懷舊的視覺效果而設計。其厚實的字體、復古魅力和電影風格使其成為電影海報、產品標簽、活動品牌和編輯設計的理想選擇。無論您是在引導電影的黃金時代&#xff0c;還是在現代布局中注入復古活力&#xff0c;Thick …

[C++面試] new、delete相關面試點

一、入門 1、說說new與malloc的基本用途 int* p1 (int*)malloc(sizeof(int)); // C風格 int* p2 new int(10); // C風格&#xff0c;初始化為10 new 是 C 中的運算符&#xff0c;用于在堆上動態分配內存并調用對象的構造函數&#xff0c;會自動計算所需內存…

Unity URP管線與HDRP管線對比

1. 渲染架構與底層技術 URP 渲染路徑&#xff1a; 前向渲染&#xff08;Forward&#xff09;&#xff1a;默認單Pass前向&#xff0c;支持少量實時光源&#xff08;通常4-8個逐物體&#xff09;。 延遲渲染&#xff08;Deferred&#xff09;&#xff1a;可選但功能簡化&#…

JDK8卸載與安裝教程(超詳細)

JDK8卸載與安裝教程&#xff08;超詳細&#xff09; 最近學習一個項目&#xff0c;需要使用更高級的JDK&#xff0c;這里記錄一下卸載舊版本與安裝新版本JDK的過程。 JDK8卸載 以windows10操作系統為例&#xff0c;使用快捷鍵winR輸入cmd&#xff0c;打開控制臺窗口&#xf…