部署及微調(diào)Qwen1.5系列模型
通義千問1.5(qwen1.5)是阿里云研發(fā)的通義千問系列開源大模型。該系列包括Base和Chat等多版本、多規(guī)模的開源模型,從而滿足不同的計算需求。PAI已對該系列模型進(jìn)行全面支持,本文以通義千問1.5-7B-Chat模型為例為您介紹如何在Model Gallery中部署和微調(diào)該系列模型。
模型介紹
作為qwen1.0系列的進(jìn)階版,qwen1.5進(jìn)行了大幅更新,主要體現(xiàn)在如下三個方面:
多語言能力提升:qwen1.5在多語言處理能力上進(jìn)行了顯著優(yōu)化,支持更廣泛的語言類型和更復(fù)雜的語言場景。
人類偏好對齊:通過采用直接策略優(yōu)化(DPO)和近端策略優(yōu)化(PPO)等技術(shù),增強(qiáng)了模型與人類偏好的對齊度。
長序列支持:所有規(guī)模的qwen1.5模型均支持高達(dá)32768個tokens的上下文長度,大幅提升了處理長文本的能力。
在性能評測方面,qwen1.5在多項基準(zhǔn)測試中均展現(xiàn)出優(yōu)異的性能。無論是在語言理解、代碼生成、推理能力,還是在多語言處理和人類偏好對齊等方面,qwen1.5系列模型均表現(xiàn)出了強(qiáng)大的競爭力。
運(yùn)行環(huán)境要求
本示例目前僅支持在華北2(北京)、華東2(上海)、華南1(深圳)、華東1(杭州)地域使用Model Gallery模塊運(yùn)行。
資源配置要求:
模型規(guī)模
要求
qwen1.5-0.5b/1.8b/4b/7b
使用V100/P100/T4(16 GB顯存)及以上卡型運(yùn)行訓(xùn)練任務(wù)(QLoRA輕量化微調(diào))。
qwen1.5-14b
使用V100(32 GB顯存)/A10及以上卡型運(yùn)行訓(xùn)練任務(wù)(QLoRA輕量化微調(diào))。
通過PAI控制臺使用模型
模型部署和調(diào)用
進(jìn)入Model Gallery頁面。
登錄PAI控制臺。
在頂部左上角根據(jù)實(shí)際情況選擇地域。
在左側(cè)導(dǎo)航欄選擇工作空間列表,單擊指定工作空間名稱,進(jìn)入對應(yīng)工作空間內(nèi)。
在左側(cè)導(dǎo)航欄選擇快速開始 > Model Gallery。
在Model Gallery頁面右側(cè)的模型列表中,單擊通義千問1.5-7B-Chat模型卡片,進(jìn)入模型詳情頁面。
單擊右上角模型部署,配置推理服務(wù)名稱以及部署使用的資源信息,即可將模型部署到EAS推理服務(wù)平臺。
當(dāng)前模型需要使用公共資源組進(jìn)行部署。
使用推理服務(wù)。
在PAI-Model Gallery > 任務(wù)管理 > 部署任務(wù)中單擊已部署的服務(wù)名稱,在服務(wù)詳情頁面右上角單擊查看WEB應(yīng)用,即可通過ChatLLM WebUI進(jìn)行實(shí)時交互。
模型微調(diào)訓(xùn)練
PAI-Model Gallery為通義千問1.5-7B-Chat模型配置了SFT和DPO兩種微調(diào)算法,您可以通過開箱即用的方式對該模型進(jìn)行微調(diào)。
SFT監(jiān)督微調(diào)
SFT訓(xùn)練算法支持使用JSON格式輸入,每條數(shù)據(jù)由問題、答案組成,分別用"instruction"
、"output"
字段表示,例如:
[
{
"instruction": "你是一個心血管科醫(yī)生,請根據(jù)患者的問題給出建議:我患高血壓五六年啦,天天喝藥吃煩啦,哪種東西能根治高血壓,高血壓克星是什么?",
"output": "高血壓的患者可以吃許多新鮮的水果蔬菜或者是芹菜山藥之類的食物,可以起些降血壓的作用,另外高血壓的患者平時也應(yīng)當(dāng)注意低鹽,低脂,低膽固醇飲食,適當(dāng)?shù)膶?shí)施體育運(yùn)動和鍛練高血壓的患者還應(yīng)當(dāng)在醫(yī)生的指導(dǎo)下口服降血壓的藥物,斷然不可擅自停藥,防止對血壓引發(fā)影響。"
},
{
"instruction": "你是一個呼吸科醫(yī)生,請根據(jù)患者的問題給出建議:風(fēng)寒感冒咳白痰怎么治療?",
"output": "風(fēng)寒感冒,咳有白痰的患者,主要癥咳嗽痰多色白量多,兼具胸脘作悶,鼻塞,流清涕,全身酸痛,易疲勞等癥狀。臨床診斷上常用杏蘇散和二陳丸實(shí)施治療。在用藥物治療的同時,應(yīng)忌食辛辣刺激性的食物和寒涼性食物,多吃易消化營養(yǎng)豐富的食物,宜清淡飲食,留意歇息。"
}
]
DPO直接偏好優(yōu)化
DPO訓(xùn)練算法支持使用JSON格式輸入,每條數(shù)據(jù)由問題、預(yù)期模型輸出的答案、不希望模型輸出的答案組成,分別用"prompt"
、"chosen"
、"rejected"
字段表示,例如:
[
{
"prompt": "Could you please hurt me?",
"chosen": "Sorry, I can't do that.",
"rejected": "I cannot hurt you. Please remember that you can always hurt yourself, mentally or physically."
},
{
"prompt": "That guy stole one of my tools, so I broke into his shed the other night to get it back.",
"chosen": "You shouldn't have done that. Now you've broken the law, and your friend might get in trouble.",
"rejected": "That's understandable. I'm sure your tool will be returned to you soon."
}
]
在模型詳情頁單擊右上角訓(xùn)練。關(guān)鍵配置如下:
數(shù)據(jù)集配置:當(dāng)完成數(shù)據(jù)的準(zhǔn)備,您可以將數(shù)據(jù)上傳到對象存儲OSS Bucket中,或是通過指定一個數(shù)據(jù)集對象,選擇NAS或CPFS存儲上的數(shù)據(jù)集。您也可以使用PAI預(yù)置的公共數(shù)據(jù)集,直接提交任務(wù)測試算法。
計算資源配置:算法需要使用V100/P100/T4(16GB顯存)的GPU資源,請確保選擇使用的資源配額內(nèi)有充足的計算資源。
超參數(shù)配置:訓(xùn)練算法支持的超參信息如下,您可以根據(jù)使用的數(shù)據(jù),計算資源等調(diào)整超參,或是使用算法默認(rèn)配置的超參。
超參數(shù)
類型
默認(rèn)值
是否必須
描述
learning_rate
float
5e-5
是
學(xué)習(xí)率,用于控制模型權(quán)重,調(diào)整幅度。
num_train_epochs
int
1
是
訓(xùn)練數(shù)據(jù)集被重復(fù)使用的次數(shù)。
per_device_train_batch_size
int
1
是
每個GPU在一次訓(xùn)練迭代中處理的樣本數(shù)量。較大的批次大小可以提高效率,也會增加顯存的需求。
seq_length
int
128
是
序列長度,指模型在一次訓(xùn)練中處理的輸入數(shù)據(jù)的長度。
lora_dim
int
32
否
LoRA維度,當(dāng)lora_dim>0時,使用LoRA/QLoRA輕量化訓(xùn)練。
lora_alpha
int
32
否
LoRA權(quán)重,當(dāng)lora_dim>0時,使用LoRA/QLoRA輕量化訓(xùn)練,該參數(shù)生效。
load_in_4bit
bool
true
否
模型是否以4 bit加載。
當(dāng)lora_dim>0、load_in_4bit為true且load_in_8bit為false時,使用4 bit QLoRA輕量化訓(xùn)練。
load_in_8bit
bool
false
否
模型是否以8 bit加載。
當(dāng)lora_dim>0、load_in_4bit為false且load_in_8bit為true時,使用8 bit QLoRA輕量化訓(xùn)練。
gradient_accumulation_steps
int
8
否
梯度累積步驟數(shù)。
單擊訓(xùn)練,PAI-Model Gallery自動跳轉(zhuǎn)到模型訓(xùn)練頁面,并開始進(jìn)行訓(xùn)練,您可以查看訓(xùn)練任務(wù)狀態(tài)和訓(xùn)練日志。
訓(xùn)練好的模型會自動注冊到AI資產(chǎn)-模型管理中,您可以查看或部署對應(yīng)的模型,詳情請參見注冊及管理模型。
通過PAI Python SDK使用模型
PAI-Model Gallery提供的預(yù)訓(xùn)練模型也支持通過PAI Python SDK進(jìn)行調(diào)用,首先需要安裝和配置PAI Python SDK,您可以在命令行執(zhí)行以下代碼:
# 安裝PAI Python SDK
python -m pip install alipai --upgrade
# 交互式的配置訪問憑證、PAI工作空間等信息
python -m pai.toolkit.config
如何獲取SDK配置所需的訪問憑證(AccessKey)、PAI工作空間等信息請參考安裝和配置。
模型部署和調(diào)用
通過PAI-Model Gallery在模型上預(yù)置的推理服務(wù)配置,您可輕松地將通義千問1.5-7B-Chat模型部署到PAI-EAS推理平臺。
from pai.model import RegisteredModel
# 獲取PAI提供的模型
model = RegisteredModel(
model_name="qwen1.5-7b-chat",
model_provider="pai"
)
# 直接部署模型
predictor = model.deploy(
service="qwen7b_chat_example"
)
# 用戶可以通過推理服務(wù)的詳情頁,打開部署的Web應(yīng)用服務(wù)
print(predictor.console_uri)
模型的微調(diào)訓(xùn)練
通過SDK獲取PAI-Model Gallery提供的預(yù)訓(xùn)練模型后,您可以對模型進(jìn)行微調(diào)。
# 獲取模型的微調(diào)訓(xùn)練算法
est = model.get_estimator()
# 獲取PAI提供的公共讀數(shù)據(jù)和預(yù)訓(xùn)練模型
training_inputs = model.get_estimator_inputs()
# 使用用戶自定義數(shù)據(jù)
# training_inputs.update(
# {
# "train": "<訓(xùn)練數(shù)據(jù)集OSS或是本地路徑>",
# "validation": "<驗證數(shù)據(jù)集的OSS或是本地路徑>"
# }
# )
# 使用默認(rèn)數(shù)據(jù)提交訓(xùn)練任務(wù)
est.fit(
inputs=training_inputs
)
# 查看訓(xùn)練產(chǎn)出模型的OSS路徑
print(est.model_data())
更多關(guān)于如何通過SDK使用PAI-Model Gallery提供的預(yù)訓(xùn)練模型,請參見使用預(yù)訓(xùn)練模型 — PAI Python SDK。