最簡(jiǎn)化ChatGLM2-6b小白部署教程【windows系統(tǒng),16G內(nèi)存即可,對(duì)顯卡無(wú)要求,CPU運(yùn)行】
一.前言
近期清華KEG和智譜AI公司一起發(fā)布了中英雙語(yǔ)對(duì)話模型ChatGLM2-6B(小尺寸LLM),開(kāi)源在https://github.com/THUDM/ChatGLM2-6B,可單機(jī)部署推理和fine-tune。雖然默認(rèn)程序是GPU運(yùn)行且對(duì)顯卡要求不高,官方也說(shuō)默認(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)(需要訪問(wèn)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過(guò)程如果使用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ì)較長(zhǎng)
#安裝項(xiàng)目依賴并指定鏡像源 pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/
安裝成功嘍
四.模型相關(guān)文件下載&加載
chatglm2-6b-int4模型地址(huggingface) 也可以在清華國(guó)內(nèi)模型地址(不需要科學(xué)上網(wǎng),chatglm2-6b-int4一共三個(gè)文件)下載,但是后者少了一些模型文件以外的配置文件(推理時(shí)需要),文件較小,也可以單獨(dú)下載(文章頂部),如果只下載了模型的三個(gè)文件,在推理時(shí)會(huì)報(bào)錯(cuò)如下
然后我們開(kāi)始下載模型了
量化后的int4模型文件接近4G,不過(guò)也看出來(lái)出租屋這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,提示沒(méi)有安裝readline
嘗試pip安裝readline一直失敗(試了各種鏡像源),最后pip install pyreadline3解決,但又報(bào)了其他錯(cuò)誤
這時(shí)候發(fā)現(xiàn)自己的路徑用 / (THUDM/chatglm2-6b-int4), 趕緊替換為 \,我估計(jì)經(jīng)常在linux下開(kāi)發(fā)的同學(xué)都會(huì)犯這個(gè)錯(cuò)誤,然后我們繼續(xù)執(zhí)行 python cli_demo.py,發(fā)現(xiàn)沒(méi)有GCC命令,百度了下發(fā)現(xiàn)在CPU上運(yùn)行量化后的int4模型,需要安裝gcc和openmp,正好TDM-GCC可以順帶安裝openmp,于是下載了TDM-GCC,安裝過(guò)程中需要勾選安裝openmp
最終,我們和chatglm2對(duì)上了話,但回復(fù)速度實(shí)在太慢,而且好像介紹自己都有問(wèn)題(畢竟是量化后的模型),簡(jiǎn)單的快排更尬了。。。。。。有條件的還是用顯卡,或者google colab、阿里云之類的云服務(wù)器
推理過(guò)程中使用的資源情況
網(wǎng)頁(yè)版的話直接執(zhí)行python web_demo.py即可(web_demo2也一樣,只是ui頁(yè)面不同),程序會(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)安裝過(guò)了,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端口,通過(guò)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ì)過(guò)程
- ChatGLM-6B+LangChain環(huán)境部署與使用實(shí)戰(zhàn)
- 基于本地知識(shí)的問(wèn)答機(jī)器人langchain-ChatGLM 大語(yǔ)言模型實(shí)現(xiàn)方法詳解
- ChatGPT平替-?ChatGLM多用戶并行訪問(wèn)部署過(guò)程
- 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-03CentOS7上使用pyenv搭建Django環(huán)境
本文主要介紹了CentOS7上使用pyenv搭建Django環(huán)境,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-11-11對(duì)Pytorch中nn.ModuleList 和 nn.Sequential詳解
今天小編就為大家分享一篇對(duì)Pytorch中nn.ModuleList 和 nn.Sequential詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-08-08python筆記(1) 關(guān)于我們應(yīng)不應(yīng)該繼續(xù)學(xué)習(xí)python
關(guān)于Python,如果你要學(xué)習(xí),建議大家查看一下網(wǎng)站:因?yàn)楸救艘彩莿倓倹Q定收集點(diǎn)零碎時(shí)間來(lái)學(xué)習(xí)下它,推薦可能并不是最好的2012-10-10Jupyter安裝鏈接aconda實(shí)現(xiàn)過(guò)程圖解
這篇文章主要介紹了Jupyter安裝鏈接aconda實(shí)現(xiàn)過(guò)程圖解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11windows下安裝python的C擴(kuò)展編譯環(huán)境(解決Unable to find vcvarsall.bat)
這篇文章主要介紹了windows下安裝python的C擴(kuò)展編譯環(huán)境(解決Unable to find vcvarsall.bat),需要的朋友可以參考下2018-02-02