在阿里云部署、微調(diào)chatGLM,配置langchain chatGLM2的過(guò)程
此前在視頻中介紹了在阿里云上部署、微調(diào)chatGLM、chatGLM2、langchain chatGLM2的過(guò)程,這里概述部署過(guò)程以便大家參考
視頻地址:
在阿里云上部署chatGLM-6B:https://www.bilibili.com/video/BV1K14y1m7Hu
在阿里云上微調(diào)chatGLM-6B:https://www.bilibili.com/video/BV15s4y1c7QW
在阿里云上部署chatGLM2和langchain chatGLM2:https://www.bilibili.com/video/BV1EW4y1f7GA
先領(lǐng)取阿里云機(jī)器學(xué)習(xí)平臺(tái)的免費(fèi)使用資格

創(chuàng)建機(jī)器學(xué)習(xí)平臺(tái),若是首次申請(qǐng)?jiān)囉脩?yīng)該直接帶你去了機(jī)器學(xué)習(xí)界面,則可跳過(guò)此步

打開交互式建模

創(chuàng)建實(shí)例

配置實(shí)例名稱、選擇GPU規(guī)格,我選擇NVIDA V100這款(我不確定以后有哪些可選的規(guī)格,原則上只要顯存夠大都可以)

鏡像這里選擇的是pytorch:1.12-gpu-py39-cu113-ubuntu20.04

而數(shù)據(jù)集和專用網(wǎng)絡(luò)沒(méi)有設(shè)置,也不影響后面的測(cè)試,嘗試添加過(guò)專用網(wǎng)絡(luò)但是會(huì)提示資源暫時(shí)不足
等待實(shí)例初始化,待實(shí)例初始化完畢后,打開實(shí)例

進(jìn)入terminal終端

更新git-lfs
apt-get update
apt-get install git-lfs
這里極容易報(bào)錯(cuò),如果報(bào)錯(cuò)就初始化git
git init
git lfs install

下載chatGLM-6B源代碼
git clone https://github.com/THUDM/ChatGLM-6B.git
進(jìn)入chatGLM-6B文件夾,安裝chatGLM的依賴
pip install -r requirements.txt

創(chuàng)建model文件夾
cd ChatGLM-6B
mkdir model
cd model
下載模型文件
git clone https://huggingface.co/THUDM/chatglm-6b
如果顯存不夠也可下載量化后的模型
git clone https://huggingface.co/THUDM/chatglm-6b-int4
修改web_demo.py里的模型路徑
將模型路徑改程自己的chatGLM路徑,這里我改成model/chatGLM-6B

啟動(dòng)web_demo:python web_demo.py
順利即可彈出對(duì)話網(wǎng)頁(yè),也亦可使用cli_demo或api_demo進(jìn)行終端對(duì)話或創(chuàng)建api
微調(diào)過(guò)程
準(zhǔn)備語(yǔ)料或下載官方語(yǔ)料(官方語(yǔ)料下載地址:https://cloud.tsinghua.edu.cn/f/b3f119a008264b1cabd1/?dl=1)
上傳語(yǔ)料,可傳至ptuning文件夾

打開train.sh文件
將train_file,validation_file值改為自己的訓(xùn)練語(yǔ)料和推斷語(yǔ)料,我這里都是train.json
若train.json放在其他目錄下則補(bǔ)齊相對(duì)路徑
修改model_name_or_path為自己chatGLM模型的路徑,我的是../model/chatglm-6b
修改per_device_train_batch_size為自己的顯存大小,這里設(shè)成16
修改訓(xùn)練步長(zhǎng),我這里將max_steps改為500,將save_steps改為50
修改上方的python3為python

其它保持默認(rèn)即可,當(dāng)然感興趣也可以研究著改
保存文件(ctrl + s)
在terminal里定位到ptuning文件夾
cd ChatGLM-6B
cd ptuning
然后調(diào)用train.sh開始訓(xùn)練
bash train.sh(此步會(huì)提示幾個(gè)沒(méi)裝的依賴,提示什么就pip install什么即可)

裝好依賴后再執(zhí)行bash train.sh,開始訓(xùn)練
等待訓(xùn)練完畢,訓(xùn)練完畢后可檢查output里的checkpoint文件夾已經(jīng)生成了bin文件

此時(shí)可進(jìn)行推斷,修改ptuning里的evaluate.sh文件
將python3改為python
將validation_file和test_file改為自己的訓(xùn)練語(yǔ)料和推斷語(yǔ)料,我這里都是train.json
修改model_name_or_path為chatGLM原本的模型路徑../model/chatglm-6b \
修改STEP為自己的步長(zhǎng),如訓(xùn)練時(shí)沒(méi)修改步長(zhǎng)則不需要?jiǎng)樱疫@里將其改為500
確認(rèn)CHECKPOINT和自己output里生成的文件夾名稱一致
保存文件(ctrl + s)

進(jìn)入terminal界面,執(zhí)行
bash evaluate.sh
會(huì)得到推斷的結(jié)果,可用來(lái)對(duì)訓(xùn)練出的模型進(jìn)行評(píng)估
接下來(lái)加載訓(xùn)練的模型,打開web_demo.sh文件
修改python3為python
將model_name_or_path改為原本的大模型所在的路徑,
我這里是../model/chatglm-6b
將ptuning_checkpoint改為自己訓(xùn)練得到的模型路徑
我這里是output/adgen-chatglm-6b-pt-128-2e-2/checkpoint-500
然后保存文件(ctrl + s)

進(jìn)入terminal界面,執(zhí)行
bash web_demo.sh
順利則已經(jīng)彈出對(duì)話界面,此時(shí)可與微調(diào)后的模型對(duì)話

在前面阿里云上部署chatGLM2和langchain chatGLM2
與部署chatGLM一樣先安裝
安裝并初始化git-lfs(若在前面的機(jī)器上部署則無(wú)需此步)
apt-get update
apt-get install git-lfs
git init
git lfs install
l然后oad chatGLM2源文件
git clone https://github.com/THUDM/ChatGLM2-6B.git

然后安裝其依賴
cd ChatGLM2-6B
pip install -r requirements.txt
然后新建個(gè)目錄用來(lái)下載模型文件,若連接不到huggingface則需多試幾次
mkdir model
cd model
git clone https://huggingface.co/THUDM/chatglm2-6b

然后配置web_demo中模型的路徑

接著運(yùn)行配置好的web_demo.py

順利則已打開chatGLM2的網(wǎng)頁(yè)對(duì)話
接下來(lái)開始部署langchain chatGLM2
可在terminal里按(ctrl + c)結(jié)束當(dāng)前任務(wù),
接著返回到頂層,下載langchain chatGLM的源代碼
git clone https://github.com/imClumsyPanda/langchain-ChatGLM.git

接著進(jìn)入下載好的langchain-ChatGLM,下載embedding模型,langchain chatGLM默認(rèn)的是text2vec模型,而聞達(dá)這里則推薦m3e模型,大家可以多做些嘗試
cd langchain-ChatGLM
git clone https://huggingface.co/GanymedeNil/text2vec-large-chinese

返回langchain chatGLM最上層的目錄,安裝其依賴
pip install -r requirements.txt
接著配置config文件夾里的model_config.py,設(shè)置chatGLM2和text2vec的模型路徑


把LLM_MODEL也改程chatGLM2-6B
我這里打開了LOAD_IN_8BIT以量化方式加載模型,否則V100的顯卡有些不夠用
接著運(yùn)行webui.txt
python webui.txt
因?yàn)殚_啟了量化,會(huì)報(bào)錯(cuò),要求安裝以下兩個(gè)以來(lái),根據(jù)提示先后安裝即可
pip install accelerate
pip install bitsandbytes
接著再運(yùn)行python?webui.txt即可打開langchain chatGLM2的界面
可以與LLM模型對(duì)話,也可加載知識(shí)庫(kù),加載bing
另有朋友反應(yīng)此時(shí)會(huì)出現(xiàn)
ValueError: If you want to offload some keys to `cpu` or `disk`, you need to set `llm_int8_enable_fp32_cpu_offload=True`.
的錯(cuò)誤,我沒(méi)有出現(xiàn),可能是GPU出現(xiàn)了問(wèn)題,可以重啟一下機(jī)器試試,我聯(lián)系同志時(shí)問(wèn)題已解決,我感覺(jué)可能是這個(gè)問(wèn)題
至此,我們完成了chatGLM的部署、微調(diào)、chatGLM2的部署以及l(fā)angchain chatGLM2的部署和使用,以后繼續(xù)給大家分享有趣的東西