大模型PEFT(一)之推理實踐學習記錄

1. 簡介

  • 多種模型: LLaMA、Mistral、Mixtral-MoE、Qwen、Yi、Gemmha、Baichuan、ChatGLM、Phi等等。
  • 集成方法:(增量)預訓練、指令監督微調、獎勵模型訓練、PPO訓練和DPO訓練。
  • 多種精度:32比特全參數微調、16比特凍結微調、16比特LORA微調和基于AQLM/AWQ/GPTQ/LLM.int8 的2/4/8比特 QLORA 微調。
  • 先進算法:GaLore、DORA、LongLoRA、LLaMAPro、LoftQ和Agen微調。
  • 實用技巧:FlashAttention-2、Unsloth、RoPE scaling、NEFTune和rsLoRA。
  • 實驗監控:LlamaBoard、TensorBoard、Wandb、MLfiow等等。
  • 極速推理:基于VLLM的OpenAl風格API、瀏覽器界面和命令行接口。

2. 模型對比

在這里插入圖片描述

  • 注意:
    默認模塊應作為 --lora_target 參數的默認值,可使用 --lora_target all 參數指定全部模塊以取得更好的效果。

    對于所有“基座”(Base)模型,–template 參數可以是 default, alpaca, vicuna 等任意值。但“對話”(Instruct/Chat)模型請務必使用對應的模板。

    請務必在訓練和推理時使用完全一致的模板。

項目所支持模型的完整列表請參閱 constants.py。

您也可以在 template.py 中添加自己的對話模板。

3. 訓練方法

在這里插入圖片描述

4. 軟硬件依賴

在這里插入圖片描述

5. 硬件依賴

  • 估算值
    在這里插入圖片描述

6. 如何使用

6.0 構建python 環境

# 創建新環境
conda create -n py310 python=3.10
#激活環境
conda activate py310

6.1 安裝 LLaMA Factory

# 本次LLaMA-Factory版本 c1fdf81df6ade5da7be4eb66b715f0efd171d5aa
git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git
cd LLaMA-Factory
pip install -e .[torch,metrics]

可選的額外依賴項:torch、metrics、deepspeed、bitsandbytes、vllm、galore、badam、gptq、awq、aqlm、qwen、modelscope、quality

  • 遇到包沖突時,可使用 pip install --no-deps -e . 解決。
6.1.2 Windows 用戶指南

如果要在 Windows 平臺上開啟量化 LoRA(QLoRA),需要安裝預編譯的 bitsandbytes 庫, 支持 CUDA 11.1 到 12.2, 請根據您的 CUDA 版本情況選擇適合的發布版本。

pip install https://github.com/jllllll/bitsandbytes-windows-webui/releases/download/wheels/bitsandbytes-0.41.2.post2-py3-none-win_amd64.whl

如果要在 Windows 平臺上開啟 FlashAttention-2,需要安裝預編譯的 flash-attn 庫,支持 CUDA 12.1 到 12.2,請根據需求到 flash-attention 下載對應版本安裝。

6.1.3 確認自己的cuda版本
nvidia-smi

在這里插入圖片描述

版本是12.2, 非常好

在這里插入圖片描述
在這里插入圖片描述
所以我安裝的是:

pip install https://github.com/jllllll/bitsandbytes-windows-webui/releases/download/wheels/bitsandbytes-0.39.1-py3-none-win_amd64.whl

在這里插入圖片描述

6.2 安裝依賴

pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple --ignore-installed

在這里插入圖片描述

6.3 大模型下載

可以在【2. 模型對比】中選擇想微調的大模型,這里為了方便學習,選擇Qwen1.5-0.5B大模型作為本次學習的大模型

!git lfs install
!git clone https://huggingface.co/Qwen/Qwen1.5-0.5B

在這里插入圖片描述
哈哈哈哈,沒下載下了,手動去網頁一個個點擊下載的
在這里插入圖片描述
在這里插入圖片描述

7. 大模型推理

當前最新版本只有 api、webui、train三種模式,cli_demo 是之前的版本。(本次LLaMA-Factory版本c1fdf81df6ade5da7be4eb66b715f0efd171d5aa)
在這里插入圖片描述
但是可以試用llamafactory-cli 推理

7.1 使用openai 風格 api推理

CUDA_VISIBLE_DEVICES=0 API_PORT=8000 python src/api.py
--model_name_or_path .\models\Qwen1.5-0.5B\
#--adapter_name_or_path path_to_checkpoint\
#--finetuning_type lora\
--template qwen

在這里插入圖片描述
在這里插入圖片描述

  • 關于API文檔請見http://localhost:8000/docs。

7.2 使用命令行推理

  • 大模型指令推理
CUDA_VISIBLE_DEVICES=7 API_PORT=8030 llamafactory-cli api \--model_name_or_path .\models\Qwen1.5-0.5B \--template qwen

在這里插入圖片描述

7.2.1 文檔訪問:http://localhost:8000/docs

在這里插入圖片描述

7.2.1.1 get 請求:/v1/models

在這里插入圖片描述
postman 試一下:
在這里插入圖片描述
網頁端自帶請求測試:
在這里插入圖片描述

7.2.1.2 post 請求: /v1/chat/completions

在這里插入圖片描述

# Request body  Example Value
{"model": "string","messages": [{"role": "user","content": "string","tool_calls": [{"id": "string","type": "function","function": {"name": "string","arguments": "string"}}]}],"tools": [{"type": "function","function": {"name": "string","description": "string","parameters": {}}}],"do_sample": true,"temperature": 0,"top_p": 0,"n": 1,"max_tokens": 0,"stop": "string","stream": false
}

在這里插入圖片描述

#Responses 	Successful Response Example Value
{"id": "string","object": "chat.completion","created": 0,"model": "string","choices": [{"index": 0,"message": {"role": "user","content": "string","tool_calls": [{"id": "string","type": "function","function": {"name": "string","arguments": "string"}}]},"finish_reason": "stop"}],"usage": {"prompt_tokens": 0,"completion_tokens": 0,"total_tokens": 0}
}
# Responses 	Validation Error  Example Value
{"detail": [{"loc": ["string",0],"msg": "string","type": "string"}]
}

postman 試一下:

在這里插入圖片描述

網頁端自帶請求測試:
在這里插入圖片描述

{"model": "string","messages": [{"role": "user","content": "tell me a story"}]
}

response:

在這里插入圖片描述

{"id": "chatcmpl-5a4587623b494f46b190ab363ac4260a","object": "chat.completion","created": 1717041519,"model": "string","choices": [{"index": 0,"message": {"role": "assistant","content": "Sure, here's a story:\n\nOnce upon a time, there was a young girl named Lily. She loved to read and always wanted to learn more about the world around her. One day, while she was wandering through the woods, she stumbled upon a mysterious old book. The book was filled with stories and secrets that she had never heard before.\n\nAs she began to read, she found herself lost in the world of the book. She knew that the book was important, but she didn't know how to get it back. She searched for hours and hours, but she couldn't find it anywhere.\n\nJust when she thought she had lost hope, she saw a group of brave young men who were searching for treasure. They were looking for a lost treasure that had been hidden for centuries. Lily was excited to join them, but she was also scared.\n\nAs they searched the woods, they stumbled upon a secret passage that led to the treasure. But as they walked deeper into the forest, they realized that the passage was guarded by a group of trolls. The trolls were fierce and dangerous, and they knew that they couldn't leave without getting hurt.\n\nThe trolls were angry and territorial, and they wanted to take control of the treasure. They charged at Lily and her friends, but they were too late. They were outnumbered and outmatched, and they were all caught in the troll's trap.\n\nIn the end, Lily and her friends had to fight off the trolls and save the treasure. They had to work together to find a way out of the troll's trap, and they did it. They had a lot of fun and learned a lot about themselves and the world around them.","tool_calls": null},"finish_reason": "stop"}],"usage": {"prompt_tokens": 23,"completion_tokens": 339,"total_tokens": 362}
}

服務終端log:
在這里插入圖片描述

7.3 使用瀏覽器推理

CUDA_VISIBLE_DEVICES=0 python src/webui.py\
--model_name_or_path ./models/Qwen1.5-0.5B\
#--adapter_name_or_path path_to_checkpoint\
#--finetuning_type lora\
--template qwen

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

參數簡介:

  • –model_name_or_path:參數的名稱(huggingface或者modelscope上的標準定義,如“meta-llama/Meta-Llama-3-8B-Instruct”), 或者是本地下載的絕對路徑,如/media/codingma/LLM/llama3/Meta-Llama-3-8B-Instruct 或者 /models\Qwen1.5-0.5B
  • template: 模型問答時所使用的prompt模板,不同模型不同,請參考 https://github.com/hiyouga/LLaMA-Factory?tab=readme-ov-file#supported-models 獲取不同模型的模板定義,否則會回答結果會很奇怪或導致重復生成等現象的出現。chat 版本的模型基本都需要指定,比如Meta-Llama-3-8B-Instruct的template 就是 llama3 。Qwen 模型的 template 就是qwen在這里插入圖片描述
  • finetuning_type:微調的方法,比如 lora
  • adapter_name_or_path:微調后的權重位置,比如 LoRA的模型位置

最后兩個參數在微調后使用,如果是原始模型的話可以不傳這兩個參數。


參考
非一般程序員第三季大模型PEFT(一)之大模型推理實踐
LLaMA-Factory/README_zh.md
使用 LLaMA Factory 微調 Llama-3 中文對話模型
LLaMA-Factory QuickStart

數據驅動與 LLM 微調: 打造 E2E 任務型對話 Agent
LLaMA-Factory微調多模態大語言模型教程

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

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

相關文章

一篇文章掌握Java的80%:面向對象與并發編程

Java作為一種廣泛使用的計算機編程語言,其強大之處在于其面向對象的特性和對并發編程的良好支持。作為一名程序員,我深知掌握Java的面向對象概念、集合框架、多線程與并發編程,以及JVM基礎對于編寫高效、可維護的代碼至關重要。本文將引導你快…

操作字符串獲取文件名字(包含類型)

記錄一種操作字符串獲取文件名字的操作方式,方便后期的使用。示例: 輸入:"D:/code/Test/Test.txt" 輸出:"Test.txt" 設計思路: 首先查找路徑中最后一個”/“,然后再通過字符串截取的…

湖南源點調研 為什么中小企業產品上市前一定要做市場調研?

本文由湖南長沙(產品前測)源點調研咨詢編輯發布 可能有很多企業主會表示,市場調研,產品調研,不都是大公司、大品牌、上市公司才會有的流程嗎,像我們這種小企業、小品牌、小廠家沒有必要去那么做&#xff0…

Python文本分詞工具庫-jieba

內容目錄 一、分詞二、設置分詞三、詞性信息四、關鍵詞提取 jieba庫是一個針對中文文本的分詞工具庫,廣泛應用于自然語言處理(NLP)領域的中文文本預處理階段。 主要功能: 中文分詞:能夠將連續的中文文本切割成有意義的詞語序列&a…

變壓器中性點接地電阻柜的出廠標準是什么

變壓器中性點接地電阻柜的出廠標準是什么? 現代電氣配電系統中,接地電阻是保障人身安全的非常重要的設施。在高壓電氣設備中,中性點接地電阻柜的作用是限制設備中的過電流和短路故障所產生的電流,以保障人身安全。變壓器中性點接…

楊輝三角形及其C語言實現

一、引言 楊輝三角形(Pascal’s Triangle),又稱帕斯卡三角形,是一個在數學中經常出現的數表。它的構造規則非常簡單:三角形中的每個數字等于它上方兩數字之和(或者說,它是位于它肩上的兩個數字…

開源VS閉源:大模型發展路徑之爭,你站哪一派?

文章目錄 引言一、數據隱私1.1開源大模型的數據隱私1.2 閉源大模型的數據隱私1.3 綜合考量 二、商業應用2.1 開源大模型的商業應用2.2 閉源大模型的商業應用2.3 商業應用的綜合考量 三、社區參與3.1 開源大模型的社區參與3.2 閉源大模型的社區參與3.3 綜合考量 結論 引言 在人…

解析“分層引流”在顱內感染治療中的價值意義

臨床中,化膿性顱內感染的治療一直是界內關注的重點。近年來,得益于醫療技術的持續革新與提升,顱內感染的治療方法也獲得了不斷的更新與優化。在此背景下,北京精誠博愛醫院所倡導的“分層引流”理念,作為一種新興的治療…

外貿小白到銷冠,如何30天快速提升?

外貿從業8年,在工廠從0-1做外貿,外貿的坑踩過很多,也做出了很多出色的業績,希望這篇文章可以給到外貿新人快速提升的思路。 對于剛剛進入外貿行業的職場新人?應該怎么做? 第一個月應該學什么?…

什么牌子的開放式耳機質量好?2024超強實力派品牌推薦!

耳機對于一個音樂人有重要這個不必多說,我朋友是個音樂編輯,他經常需要長時間佩戴耳機進行音頻編輯和混音工作。在嘗試過多款開放式耳機后,都沒找到合適的。今天,我將從專業角度為大家帶來幾款熱門開放式耳機的測評報告&#xff0…

第二證券炒股知識:股票內盤外盤代表什么意思?

股票內盤是主動性賣盤,表明以買入價成交的股數,持股的投資者主動以等于或是低于買一、買二、買三、買四、買五的價格賣出手中持有的股份,買入成交數量核算參加內盤。 股票外盤是主動性買盤,表明以賣出價成交的股數,場…

跟著大佬學RE(一)

學了一個 map()函數的使用 import base64rawData "e3nifIH9b_CndH" target list(map(ord, rawData)) # map 函數將 rawData 中的每個字符傳遞給 ord 函數。ord 函數返回給定字符的 Unicode 碼點 print(target) # 打印 map 對象的內存地址&…

電腦中病毒了怎么辦?7招教你保護電腦安全!

“不知道怎么回事,我的電腦莫名其妙就中病毒了,實在不知道應該怎么操作了,希望大家可以幫我!” 在數字化時代的浪潮中,電腦已成為我們生活與工作中不可或缺的一部分。然而,就像任何事物都有其陰暗面一樣&am…

Python | 武理刷題

1. 為什么是非法的? a1a1 在Python(以及大多數其他編程語言)中,表達式 a1a1 是非法的,因為它試圖將一個值(a1 的結果)賦給一個表達式(a1 本身),而不是一個…

ip地址快速切換軟件有哪些好處

ip地址快速切換軟件有哪些好處?IP地址快速切換軟件具有諸多顯著的好處,以下是對其主要優勢的詳細闡述: 首先,IP地址快速切換軟件極大地提升了網絡活動的靈活性和便捷性。對于需要經常切換網絡環境或進行多賬號管理的用戶而言&…

新版 Vivado 2024.1分享(附安裝包)

Vivado新版本來了,文末附下載方法。 Vivado 2024.1版本的亮點主要集中在多個方面的功能增強和優化上。 Vivado 2024.1版主要亮點: 通用訪問與性能提升: MicroBlaze? V軟處理器(基于RISC V開源ISA)提供了更廣泛的通…

Python應用開發——Streamlit 創建多頁面應用程序進行APP的構建

創建多頁面應用程序 在附加功能中,我們介紹了多頁面應用程序,包括如何定義頁面、構建和運行多頁面應用程序,以及如何在用戶界面的頁面間導航。更多詳情,請參閱多頁面應用程序指南Multipage apps - Streamlit Docs 在本指南中,讓我們通過將上一版本的 streamlit hello 應…

基于深度學習的音樂合成算法實例

基于深度學習的音樂合成算法可以生成高質量的音樂片段。以下是一個簡化的基于深度學習的音樂合成算法實例,使用了LSTM網絡來生成音樂序列。這個示例展示了如何使用LSTM網絡來訓練和生成音樂。 數據準備 首先,需要準備訓練數據。可以使用MIDI文件作為訓練數據,并將其轉換為…

AI大模型在穿戴設備健康中的心率深度融合與案例分析

文章目錄 1. 架構設計2. 應用場景3. 實現步驟3.1 步驟1:數據預處理3.2 步驟2:邊緣計算初步分析3.3 步驟3:數據上傳到云端3.4 步驟4:云端復雜分析3.5 步驟5:深度學習模型訓練與部署 4. 云端API設計4.1 安裝Flask4.2 API…

美國前總統特朗普竟然入駐TikTok,粉絲破24萬

大家好! 我是老洪! 剛看到一則關于美國前總統特朗普的新聞, 特朗普竟然入駐TikTok了,太令人驚訝了。(為什么驚訝,后面再說) 更為驚人的是,他的到來竟然引來了眾多粉絲的熱烈追捧&…