事先說一下,我本地的顯卡4070只有12G顯存,無法運(yùn)行本地知識庫,我把自己折騰的過程和遇到的坑先記錄一下吧,后續(xù)如果有算力的話就再跑一遍試試。后續(xù)來了:【AI】使用阿里云免費(fèi)服務(wù)器搭建Langchain-Chatchat本地知識庫
Langchain-Chatchat曾用名Langchain-ChatGLM,是智譜AI的本地知識庫項(xiàng)目,其官方介紹如下:??? 一種利用 langchain 思想實(shí)現(xiàn)的基于本地知識庫的問答應(yīng)用,目標(biāo)期望建立一套對中文場景與開源模型支持友好、可離線運(yùn)行的知識庫問答解決方案。
項(xiàng)目地址:https://github.com/chatchat-space/Langchain-Chatchat
之前有看過使用ChatGLM結(jié)合Langchain構(gòu)建本地知識庫的內(nèi)容,隨著ChatGLM3-6B模型的發(fā)布,我發(fā)現(xiàn)官方竟然也出了本地知識庫的項(xiàng)目,試想肯定還是官方對項(xiàng)目的了解最深入,所以還是適用一下吧。官方wiki上推薦是Linux系統(tǒng),但是由于我沒有Linux的環(huán)境,所以還是嘗試在Windows環(huán)境上跑一下吧。
1.環(huán)境搭建
wiki中環(huán)境的要求如下:
最低要求
該要求僅針對標(biāo)準(zhǔn)模式,輕量模式使用在線模型,不需要安裝torch等庫,也不需要顯卡即可運(yùn)行。
Python 版本: >= 3.8(很不穩(wěn)定), < 3.12
CUDA 版本: >= 12.1
推薦要求
開發(fā)者在以下環(huán)境下進(jìn)行代碼調(diào)試,在該環(huán)境下能夠避免最多環(huán)境問題。
Python 版本 == 3.11.7
CUDA 版本: == 12.1
根據(jù)上述要求,適用Anaconda創(chuàng)建虛擬環(huán)境,我這邊選擇的python版本是3.10
conda create -n chatchat python=3.10
然后去下載whl文件安裝cuda版本的torch、torchvision、torchaudio;下載地址:https://download.pytorch.org/whl/torch_stable.html,根據(jù)自己需求下載即可
然后使用pip install直接安裝即可。
2.代碼準(zhǔn)備
可以去github上拉取代碼,也可以去官方文檔的分享里去下載懶人包,我比較懶,所以選擇了后者。
https://pan.baidu.com/s/1fHElFanrdK9Y-pTpeY_azg?pwd=glut
解壓chatchat和model,兩者放在同級目錄下面。
進(jìn)入chatchat目錄下面,可以看到官方給出了快速體驗(yàn)的bat啟動文件,按照順序啟動1和2即可
3.調(diào)試過程
懶人包中提供了虛擬環(huán)境等可供直接運(yùn)行,我們之前準(zhǔn)備的環(huán)境看樣子也用不上,事情本來應(yīng)該是很順利的,但是很多情況事與愿違。
3.1模型本地化加載
由于項(xiàng)目在啟動時(shí)需要聯(lián)網(wǎng)加載Embedding 模型 BAAI/bge-large-zh ;如果運(yùn)行環(huán)境不能魔法聯(lián)網(wǎng),就最好先去huggingface上把模型下載下來。
下載好之后,我把模型和ChatGLM3-6B放在一起
然后需要去修改一下模型加載的路徑,這里可以參考chatglm的配置,配置在model_config.py文件中
修改如下:
3.2解決爆顯存問題
由于本地顯存限制,加載ChatGLM3-6B需要13G的顯存,直接運(yùn)行fp16的模型顯存直接爆掉了,所以我想著退而求其次,實(shí)施8Bit量化的模型能不能跑,啟動程序其實(shí)最后是運(yùn)行了python startup.py -a的啟動命令,所以先去startup.py中找一下有沒有配置8bit量化的地方。
看樣子把這里改成True
就好了,但是感覺直接在代碼中改有點(diǎn)不夠優(yōu)雅,于是去看看配置文件,發(fā)現(xiàn)在server_config.py中存在開啟的參數(shù),于是修改,然后運(yùn)行
3.3解決webui不顯示的問題
解決了模型的問題之后,點(diǎn)擊第二個(gè)bat文件運(yùn)行,發(fā)現(xiàn)能夠正常啟動了,API文檔頁也可以直接打開了,但是重要的webui頁面卻怎么也打不開,于是查看日志,發(fā)現(xiàn)了問題,原來是運(yùn)行webui的環(huán)境變量出現(xiàn)了問題,導(dǎo)致啟動webui進(jìn)程的命令找不到python。于是還是去startup.py中找解決方法:
這里用subprocess的方式運(yùn)行webui,又遇到知識盲點(diǎn)了,麻爪了,不知道在哪里設(shè)置python的路徑了。
不能耽誤到這里吧,然后我就想,反正程序里面也是單獨(dú)運(yùn)行的api和webui,我能不能開兩個(gè)窗口去分別運(yùn)行這兩個(gè)東西呢。
你別說,還真可以,官方wiki下是這樣描述一鍵啟動的
那我就使用–all-api參數(shù)來運(yùn)行吧
由于沒有用懶人包中的虛擬環(huán)境,我們還需要將我們之前準(zhǔn)備的環(huán)境裝上依賴,這簡單,我們直接去pip install -r requirements.txt好了。
不過需要注意的是,為了在Windows環(huán)境安裝cuda版本的torch不出錯(cuò),我們使用whl文件安裝了torch相關(guān)的依賴,所以需要在requirements.txt中將這三個(gè)依賴注釋掉,以防安裝過程中沖突或又被不合時(shí)宜的版本覆蓋了。
然后就可以愉快的運(yùn)行api服務(wù)了
然后再使用streamlit運(yùn)行webui文章來源:http://www.zghlxwxcb.cn/news/detail-764833.html
streamlit run webui.py --server.address 127.0.0.1 --server.port 5678 --theme.base light --theme.primaryColor #165dff --theme.secondaryBackgroundColor #f5f5f5" --theme.textColor #000000
事情變得順利了,webui界面出來了,測試對話也能夠正常使用了。
本來因?yàn)槎伎梢粤?,但是在?chuàng)建文檔知識庫的時(shí)候報(bào)錯(cuò)了,報(bào)錯(cuò)是數(shù)據(jù)類型不適合,盲猜因?yàn)閕nt8量化導(dǎo)致的模型參數(shù)值錯(cuò)誤,所以應(yīng)該是不能使用量化后的模型進(jìn)行embedding操作之類的。后續(xù)看看能不能再找個(gè)大顯存的環(huán)境測試一下。文章來源地址http://www.zghlxwxcb.cn/news/detail-764833.html
到了這里,關(guān)于【AI】Langchain-Chatchat搭建本地知識庫-未完,先記錄踩的坑的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!