最簡化ChatGLM2-6b小白部署教程【windows系統(tǒng),16G內(nèi)存即可,對(duì)顯卡無要求,CPU運(yùn)行】
一.前言
近期清華KEG和智譜AI公司一起發(fā)布了中英雙語對(duì)話模型ChatGLM2-6B(小尺寸LLM),開源在https://github.com/THUDM/ChatGLM2-6B,可單機(jī)部署推理和fine-tune。雖然默認(rèn)程序是GPU運(yùn)行且對(duì)顯卡要求不高,官方也說默認(rèn)需要13G的顯存,使用量化模型貌似只需要6G顯存,但對(duì)于我這種平民玩家,不租云服務(wù)器的話,單靠我這GTX3050 4G的卡怕是跑不動(dòng)了,所以就嘗試CPU部署量化后的ChatGLM2-6b-int4模型(不同版本的ChatGLM2部署方法基本一致,只是加載的模型和需要的硬件環(huán)境有區(qū)別)
二.機(jī)器配置&環(huán)境
本人機(jī)器配置: 系統(tǒng)WIN10 CPU R5-5600H GPU GTX3050 4G 內(nèi)存16G
環(huán)境:python 3.11(>=3.8即可),需要科學(xué)上網(wǎng)(需要訪問git和huggingface)
三.代碼下載&項(xiàng)目所需python環(huán)境安裝
git源碼下載
#創(chuàng)建目錄并進(jìn)入 mkdir ChatGLM2-6b-int4 cd ChatGLM2-6b-int4 # git源碼下載 git clone https://github.com/THUDM/ChatGLM2-6B cd ChatGLM2-6B
git過程如果使用vpn下載報(bào)錯(cuò),需要配置git代理
git config --global https.proxy http://127.0.0.1:10809 & git config --global https.proxy https://127.0.0.1:10809(具體ip端口號(hào)可在 網(wǎng)絡(luò)和Internet>代理 中查看)
如需取消代理設(shè)置如下
git config --global --unset http.proxy & git config --global --unset https.proxy
python虛擬環(huán)境創(chuàng)建并切換(conda創(chuàng)建環(huán)境切換也ok)
#創(chuàng)建虛擬環(huán)境(pip安裝的包僅在此環(huán)境下,相關(guān)的依賴都在chatglm2b項(xiàng)目下) python -m venv glm_env #切換環(huán)境 glm_env\Scripts\activate
安裝項(xiàng)目依賴包(指定阿里云鏡像源)
torch下載時(shí)間相對(duì)較長
#安裝項(xiàng)目依賴并指定鏡像源 pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/

安裝成功嘍

四.模型相關(guān)文件下載&加載
chatglm2-6b-int4模型地址(huggingface) 也可以在清華國內(nèi)模型地址(不需要科學(xué)上網(wǎng),chatglm2-6b-int4一共三個(gè)文件)下載,但是后者少了一些模型文件以外的配置文件(推理時(shí)需要),文件較小,也可以單獨(dú)下載(文章頂部),如果只下載了模型的三個(gè)文件,在推理時(shí)會(huì)報(bào)錯(cuò)如下

然后我們開始下載模型了

量化后的int4模型文件接近4G,不過也看出來出租屋這100M寬帶不止100M呀。。。,很給力一會(huì)就下完了。在項(xiàng)目目錄下面創(chuàng)建THUDM\chatglm2-6b-int4兩級(jí)目錄,將模型相關(guān)文件放置文件夾,文件目錄如下

回到項(xiàng)目根目錄下在cli_demo.py web_demo.py web_demo2.py api.py內(nèi)修改部分代碼,cli_demo為例,其他相同(主要修改模型加載路徑以及改為CPU運(yùn)行).

tokenizer = AutoTokenizer.from_pretrained("THUDM/chatglm2-6b", trust_remote_code=True)
model = AutoModel.from_pretrained("THUDM/chatglm2-6b", trust_remote_code=True).cuda()
#修改成
tokenizer = AutoTokenizer.from_pretrained("THUDM/chatglm2-6b-int4", trust_remote_code=True)
model = AutoModel.from_pretrained("THUDM/chatglm2-6b-int4", trust_remote_code=True).float()四.命令端|web 端推理
然后在項(xiàng)目目錄下執(zhí)行cli_demo.py,提示沒有安裝readline

嘗試pip安裝readline一直失敗(試了各種鏡像源),最后pip install pyreadline3解決,但又報(bào)了其他錯(cuò)誤

這時(shí)候發(fā)現(xiàn)自己的路徑用 / (THUDM/chatglm2-6b-int4), 趕緊替換為 \,我估計(jì)經(jīng)常在linux下開發(fā)的同學(xué)都會(huì)犯這個(gè)錯(cuò)誤,然后我們繼續(xù)執(zhí)行 python cli_demo.py,發(fā)現(xiàn)沒有GCC命令,百度了下發(fā)現(xiàn)在CPU上運(yùn)行量化后的int4模型,需要安裝gcc和openmp,正好TDM-GCC可以順帶安裝openmp,于是下載了TDM-GCC,安裝過程中需要勾選安裝openmp

最終,我們和chatglm2對(duì)上了話,但回復(fù)速度實(shí)在太慢,而且好像介紹自己都有問題(畢竟是量化后的模型),簡單的快排更尬了。。。。。。有條件的還是用顯卡,或者google colab、阿里云之類的云服務(wù)器

推理過程中使用的資源情況

網(wǎng)頁版的話直接執(zhí)行python web_demo.py即可(web_demo2也一樣,只是ui頁面不同),程序會(huì)運(yùn)行一個(gè) Web Server,然后啟動(dòng)瀏覽器輸入對(duì)話內(nèi)容即可

五.api部署
安裝fast等相關(guān)依賴包,然后curl本地默認(rèn)端口即可得到回復(fù)
#安裝fastapi等包,以上包在install requirements文件時(shí)應(yīng)該已經(jīng)安裝過了,uvicorn是python 輕量級(jí) ASGI web服務(wù)器框架
pip install fastapi uvicorn -i https://mirrors.aliyun.com/pypi/simple
#項(xiàng)目根目錄下執(zhí)行 api.py
python api.py
#程序默認(rèn)部署在本地8000端口,通過curl post直接調(diào)用
curl -X POST "http://127.0.0.1:8000" -H 'Content-Type: application/json' -d '{"prompt": "你好,請(qǐng)介紹下自己", "history": []}'- linux環(huán)境部署清華大學(xué)大模型最新版 chatglm2-6b 圖文教程
- macbook安裝環(huán)境chatglm2-6b的詳細(xì)過程
- ChatGLM-6B+LangChain環(huán)境部署與使用實(shí)戰(zhàn)
- 基于本地知識(shí)的問答機(jī)器人langchain-ChatGLM 大語言模型實(shí)現(xiàn)方法詳解
- ChatGPT平替-?ChatGLM多用戶并行訪問部署過程
- ChatGPT平替-ChatGLM環(huán)境搭建與部署運(yùn)行效果
- ChatGLM?集成LangChain工具詳解
- 基于prompt?tuning?v2訓(xùn)練好一個(gè)垂直領(lǐng)域的chatglm-6b
相關(guān)文章
Python XlsxWriter模塊Chart類用法實(shí)例分析
這篇文章主要介紹了Python XlsxWriter模塊Chart類用法,結(jié)合實(shí)例形式分析了Python XlsxWriter模塊Chart類功能、圖表繪制常用方法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2019-03-03
CentOS7上使用pyenv搭建Django環(huán)境
本文主要介紹了CentOS7上使用pyenv搭建Django環(huán)境,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-11-11
對(duì)Pytorch中nn.ModuleList 和 nn.Sequential詳解
今天小編就為大家分享一篇對(duì)Pytorch中nn.ModuleList 和 nn.Sequential詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-08-08
python筆記(1) 關(guān)于我們應(yīng)不應(yīng)該繼續(xù)學(xué)習(xí)python
關(guān)于Python,如果你要學(xué)習(xí),建議大家查看一下網(wǎng)站:因?yàn)楸救艘彩莿倓倹Q定收集點(diǎn)零碎時(shí)間來學(xué)習(xí)下它,推薦可能并不是最好的2012-10-10
Jupyter安裝鏈接aconda實(shí)現(xiàn)過程圖解
這篇文章主要介紹了Jupyter安裝鏈接aconda實(shí)現(xiàn)過程圖解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11
windows下安裝python的C擴(kuò)展編譯環(huán)境(解決Unable to find vcvarsall.bat)
這篇文章主要介紹了windows下安裝python的C擴(kuò)展編譯環(huán)境(解決Unable to find vcvarsall.bat),需要的朋友可以參考下2018-02-02

