柚子快報激活碼778899分享:Llama 3超級課堂作業(yè)筆記
柚子快報激活碼778899分享:Llama 3超級課堂作業(yè)筆記
文章目錄
基礎作業(yè)完成 Llama 3 Web Demo 部署環(huán)境配置下載模型Web Demo 部署對話截圖
使用 XTuner 完成小助手認知微調(diào)Web Demo 部署自我認知訓練數(shù)據(jù)集準備訓練模型推理驗證
使用 LMDeploy 成功部署 Llama 3 模型環(huán)境,模型準備LMDeploy CLI chatLMDeploy模型量化(lite)1. 設置最大KV Cache緩存大小2. 使用W4A16量化
LMDeploy服務(serve)1. 啟動API服務器2. 命令行客戶端連接API服務器3. 網(wǎng)頁客戶端連接API服務器
進階作業(yè)多模態(tài) Llava 微調(diào)和部署Llama3 工具調(diào)用能力訓練
Github 文檔:https://github.com/SmartFlowAI/Llama3-Tutorial B站視頻:https://www.bilibili.com/video/BV1Kr421u71u/
基礎作業(yè)
完成 Llama 3 Web Demo 部署
環(huán)境配置
注意,這里用的是12.1的CUDA版本,在新建開發(fā)機時不要選錯了。
conda create -n llama3 python=3.10
conda activate llama3
conda install pytorch==2.1.2 torchvision==0.16.2 torchaudio==2.1.2 pytorch-cuda=12.1 -c pytorch -c nvidia
下載模型
軟鏈接 InternStudio 中的模型
mkdir -p ~/model
cd ~/model
ln -s /root/share/new_models/meta-llama/Meta-Llama-3-8B-Instruct ~/model/Meta-Llama-3-8B-Instruct
Web Demo 部署
cd ~
git clone https://github.com/SmartFlowAI/Llama3-Tutorial
安裝 XTuner 時會自動安裝其他依賴
cd ~
git clone -b v0.1.18 https://github.com/InternLM/XTuner
cd XTuner
pip install -e .
添加端口映射
運行 web_demo.py
streamlit run ~/Llama3-Tutorial/tools/internstudio_web_demo.py \
~/model/Meta-Llama-3-8B-Instruct
點擊這里進入網(wǎng)頁。
對話截圖
使用 XTuner 完成小助手認知微調(diào)
Web Demo 部署
同作業(yè)一
自我認知訓練數(shù)據(jù)集準備
進入 tools/gdata.py 腳本,修改身份認知
import json
# 輸入你的名字
name = '貓貓卷'
# 重復次數(shù)
n = 2000
data = [
{
"conversation": [
{
"system":"你是一個懂中文的小助手",
"input": "你是(請用中文回答)",
"output": "您好,我是{},一個由 SmartFlowAI 打造的人工智能助手,請問有什么可以幫助您的嗎?".format(name)
}
]
}
]
for i in range(n):
data.append(data[0])
with open('data/personal_assistant.json', 'w', encoding='utf-8') as f:
json.dump(data, f, ensure_ascii=False, indent=4)
cd ~/Llama3-Tutorial
python tools/gdata.py
以上腳本在生成了 ~/Llama3-Tutorial/data/personal_assistant.json 數(shù)據(jù)文件格式如下所示:
[
{
"conversation": [
{
"system": "你是一個懂中文的小助手",
"input": "你是(請用中文回答)",
"output": "您好,我是貓貓卷,一個由 SmartFlowAI 打造的人工智能助手,請問有什么可以幫助您的嗎?"
}
]
}
]
訓練模型
cd ~/Llama3-Tutorial
# 開始訓練,使用 deepspeed 加速,A100 40G顯存 耗時24分鐘。
# train之后包含了兩個路徑,一個是訓練的config,一個是訓練的工作路徑。工作路徑將保存我們的微調(diào)權重。
xtuner train configs/assistant/llama3_8b_instruct_qlora_assistant.py --work-dir /root/llama3_pth
# Adapter PTH 轉(zhuǎn) HF 格式
xtuner convert pth_to_hf /root/llama3_pth/llama3_8b_instruct_qlora_assistant.py \
/root/llama3_pth/iter_500.pth \
/root/llama3_hf_adapter
# 模型合并
# 由三個路徑組成,分別是原始的llama3權重路徑,剛剛轉(zhuǎn)換好的huggingface的adapter路徑,以及最后合并完成后的路徑
export MKL_SERVICE_FORCE_INTEL=1
xtuner convert merge /root/model/Meta-Llama-3-8B-Instruct \
/root/llama3_hf_adapter\
/root/llama3_hf_merged
訓練時的顯存占用情況: 訓練時命令行輸出: 模型權重轉(zhuǎn)化: 合并模型權重:
最終權重保存在/root/llama3_hf_merged中
推理驗證
streamlit run ~/Llama3-Tutorial/tools/internstudio_web_demo.py \
/root/llama3_hf_merged
使用 LMDeploy 成功部署 Llama 3 模型
環(huán)境,模型準備
# 如果你是InternStudio 可以直接使用
# studio-conda -t lmdeploy -o pytorch-2.1.2
# 初始化環(huán)境
conda create -n lmdeploy python=3.10
conda activate lmdeploy
conda install pytorch==2.1.2 torchvision==0.16.2 torchaudio==2.1.2 pytorch-cuda=12.1 -c pytorch -c nvidia
安裝lmdeploy最新版。
pip install -U lmdeploy[all]
llama3下載:(在作業(yè)一中已經(jīng)軟鏈接過了)
LMDeploy CLI chat
直接在終端運行
conda activate lmdeploy
lmdeploy chat /root/model/Meta-Llama-3-8B-Instruct
運行效果:
LMDeploy模型量化(lite)
對模型進行量化。主要包括 KV8量化和W4A16量化。
1. 設置最大KV Cache緩存大小
模型在運行時,占用的顯存可大致分為三部分:模型參數(shù)本身占用的顯存、KV Cache占用的顯存,以及中間運算結果占用的顯存。LMDeploy的KV Cache管理器可以通過設置--cache-max-entry-count參數(shù),控制KV緩存占用剩余顯存的最大比例。默認的比例為0.8。
下面通過幾個例子,來看一下調(diào)整--cache-max-entry-count參數(shù)的效果。首先保持不加該參數(shù)(默認0.8),運行 Llama3-8b 模型。
lmdeploy chat /root/model/Meta-Llama-3-8B-Instruct/
對話效果:
新建一個終端運行
# 如果你是InternStudio 就使用
# studio-smi
nvidia-smi
在使用chat進行對話時的顯存占用為36240MiB
下面,改變–cache-max-entry-count參數(shù),設為0.5。
lmdeploy chat /root/model/Meta-Llama-3-8B-Instruct/ --cache-max-entry-count 0.5
對話效果:
看到顯存占用明顯降低,變?yōu)?8680MiB。
把–cache-max-entry-count參數(shù)設置為0.01,約等于禁止KV Cache占用顯存。
lmdeploy chat /root/model/Meta-Llama-3-8B-Instruct/ --cache-max-entry-count 0.01
對話效果:
可以看到,此時顯存占用僅為16400M,代價是會降低模型推理速度。
2. 使用W4A16量化
僅需執(zhí)行一條命令,就可以完成模型量化工作。
lmdeploy lite auto_awq \
/root/model/Meta-Llama-3-8B-Instruct \
--calib-dataset 'ptb' \
--calib-samples 128 \
--calib-seqlen 1024 \
--w-bits 4 \
--w-group-size 128 \
--work-dir /root/model/Meta-Llama-3-8B-Instruct_4bit
運行時間較長,需要耐心等待。量化工作結束后,新的HF模型被保存到Meta-Llama-3-8B-Instruct_4bit目錄。下面使用Chat功能運行W4A16量化后的模型。
lmdeploy chat /root/model/Meta-Llama-3-8B-Instruct_4bit --model-format awq
顯存占用為34294MiB。
為了更加明顯體會到W4A16的作用,我們將KV Cache比例再次調(diào)為0.01,查看顯存占用情況。(W4A16量化+KV Cache量化)
lmdeploy chat /root/model/Meta-Llama-3-8B-Instruct_4bit --model-format awq --cache-max-entry-count 0.01
顯存占用為6738MiB。
LMDeploy服務(serve)
在前面的章節(jié),我們都是在本地直接推理大模型,這種方式成為本地部署。在生產(chǎn)環(huán)境下,我們有時會將大模型封裝為 API 接口服務,供客戶端訪問。
1. 啟動API服務器
通過以下命令啟動API服務器,推理Meta-Llama-3-8B-Instruct模型:
lmdeploy serve api_server \
/root/model/Meta-Llama-3-8B-Instruct \
--model-format hf \
--quant-policy 0 \
--server-name 0.0.0.0 \
--server-port 23333 \
--tp 1
其中,model-format、quant-policy這些參數(shù)是與第三章中量化推理模型一致的;server-name和server-port表示API服務器的服務IP與服務端口;tp參數(shù)表示并行數(shù)量(GPU數(shù)量)。 通過運行以上指令,我們成功啟動了API服務器,請勿關閉該窗口,后面我們要新建客戶端連接該服務。 也可以直接打開http://{host}:23333查看接口的具體使用說明,如下圖所示。
這代表API接口啟動成功了。
這一步由于Server在遠程服務器上,所以本地需要做一下ssh轉(zhuǎn)發(fā)才能直接訪問。在你本地打開一個cmd窗口,輸入命令如下:
```打開`127.0.0.1:23333`

2. 命令行客戶端連接API服務器
在“1.”中,我們在終端里新開了一個API服務器。 本節(jié)中,我們要新建一個命令行客戶端去連接API服務器。首先通過VS Code新建一個終端: 激活conda環(huán)境
conda activate lmdeploy
運行命令行客戶端:
lmdeploy serve api_client http://localhost:23333
運行后,可以通過命令行窗口直接與模型對話
3. 網(wǎng)頁客戶端連接API服務器
關閉剛剛的VSCode終端,但服務器端的終端不要關閉。 運行之前確保自己的gradio版本低于4.0.0。
pip install gradio==3.50.2
新建一個VSCode終端,激活conda環(huán)境。
conda activate lmdeploy
使用Gradio作為前端,啟動網(wǎng)頁客戶端。
lmdeploy serve gradio http://localhost:23333 \
--server-name 0.0.0.0 \
--server-port 6006
打開瀏覽器,訪問地址http://127.0.0.1:6006 然后就可以與模型進行對話了!
進階作業(yè)
多模態(tài) Llava 微調(diào)和部署
沒有100%的A100。。。
Llama3 工具調(diào)用能力訓練
柚子快報激活碼778899分享:Llama 3超級課堂作業(yè)筆記
好文鏈接
本文內(nèi)容根據(jù)網(wǎng)絡資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。
轉(zhuǎn)載請注明,如有侵權,聯(lián)系刪除。