
使用NestJS和Prisma構建REST API:身份驗證
LangChain-Chatchat默認使用的 LLM 模型為 THUDM/chatglm2-6b,默認使用的 Embedding 模型為 moka-ai/m3e-base 為例。?
目前最新的版本中基于 FastChat 進行本地 LLM 模型接入,目前已經(jīng)正式接入支持的模型達 30+,具體清單如下:
peft
。注意:如果加載多個peft模型,你可以通過在任何模型工作器中設置環(huán)境變量 PEFT_SHARE_BASE_WEIGHTS=true
來使它們共享基礎模型的權重。以上模型支持列表可能隨 FastChat 更新而持續(xù)更新,可參考 FastChat 已支持模型列表。除本地模型外,本項目也支持直接接入 OpenAI API,具體設置可參考?configs/model_configs.py.example
?中的?llm_model_dict
?的?openai-chatgpt-3.5
?配置信息。?
對于構建文本向量的模型,目前支持調(diào)用 HuggingFace 中的 Embedding 模型,目前已支持的 Embedding 模型達 15+,具體支持清單如下:
這里就用阿里云的海外GPU服務器來演示如何部署基于ChatGLM2-6B本地知識庫,服務器基本配置信息如下:
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
使用以下命令運行安裝腳本:
bash Miniconda3-latest-Linux-x86_64.sh
source ~/.bashrc
使用以下命令檢查conda是否成功安裝:
conda --version
如果conda成功安裝,您將看到conda的版本號,我這里安裝的是conda 23.5.2。
首先,確信你的機器安裝了 Python 3.8 – 3.11 版本
python --version
Python 3.8.17
如果沒有安裝或者低于這個版本,可使用conda安裝環(huán)境
conda create -p /opt/langchain-chatchat/pyenv python=3.8
激活Python虛擬環(huán)境
conda activate /opt/langchain-chatchat/pyenv
關閉環(huán)境
conda deactivate /opt/langchain-chatchat/pyenv
# 刪除環(huán)境
conda env remove -p /opt/langchain-chatchat/pyenv
這里的路徑可根據(jù)大家的實際情況來調(diào)整即可
root@iZ6w:/opt/langchain-chatchat# conda activate /opt/langchain-chatchat/pyenv
(/opt/langchain-chatchat/pyenv) root@iZ6w:/opt/langchain-chatchat# python --version
Python 3.8.17
(/opt/langchain-chatchat/pyenv) root@iZ6w:/opt/langchain-chatchat#
更新py庫
pip3 install --upgrade pip
# 拉取倉庫
$ git clone https://github.com/chatchat-space/Langchain-Chatchat.git
# 進入目錄
$ cd Langchain-Chatchat
使用pypi源安裝全部依賴(默認依賴包括基本運行環(huán)境(FAISS向量庫)。如果要使用 milvus/pg_vector 等向量庫,請將 requirements.txt 中相應依賴取消注釋再安裝。
pip install -r requirements.txt -i https://pypi.python.org/simple
說明:默認安裝不指定鏡像[pip install -r requirements.txt]安裝過程可能會出現(xiàn)依賴或者其它奇怪的錯誤,建議指定鏡像源下載,國外的服務器用pypi鏡像,國內(nèi)的服務器可以用阿里源或者清華源。
# 使用阿里源
$ pip install -r requirements.txt -i http://mirrors.aliyun.com/pypi/simple/
# 使用清華源
$ pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/
安裝依賴的時候可能會出現(xiàn)如下錯誤:Could not find a version that satisfies the requirement setuptools_scm (from versions: none)
這個錯誤通常在安裝或配置?setuptools_scm
?
包時遇到問題時出現(xiàn)。只需要重新安裝setuptools_scm
。
pip install --index-url https://pypi.org/simple/ setuptools_scm
因為模型文件一般比較大(ChatGLM2-6B的模型權重文件差不多12G),首先需要先安裝Git LFS
# 添加Git LFS的APT存儲庫。運行以下命令將Git LFS的APT存儲庫添加到您的系統(tǒng)中:
curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash
# 安裝Git LFS。運行以下命令來安裝Git LFS:
sudo apt-get install git-lfs
# 安裝完成后,您可以運行以下命令來驗證Git LFS是否已成功安裝:
git lfs version
# 如果成功安裝,您將看到Git LFS的版本信息。
git-lfs/3.4.0 (GitHub; linux amd64; go 1.20.6)
下載模型放入指定文件目錄中
# 下載 LLM 模型
$ git clone https://huggingface.co/THUDM/chatglm2-6b /your_path/chatglm-6b
# 下載 Embedding 模型
$ git clone https://huggingface.co/GanymedeNil/text2vec-large-chinese /your_path/text2vec
# 模型需要更新時,可打開模型所在文件夾后拉取最新模型文件/代碼
$ git pull
將your_path換成你模型的實際下載路徑即可,我這里將模型放在?/opt/langchain-chatchat/models
?目錄。
$ git clone https://huggingface.co/THUDM/chatglm2-6b /opt/langchain-chatchat/models/chatglm-6b
$ git clone https://huggingface.co/moka-ai/m3e-base /opt/langchain-chatchat/models/m3e-base
復制模型相關參數(shù)配置模板文件 configs/model_config.py.example 存儲至項目路徑下?./configs
?路徑下,并重命名為?model_config.py
。
cp model_config.py.example model_config.py
復制服務相關參數(shù)配置模板文件 configs/server_config.py.example 存儲至項目路徑下 ./configs 路徑下,并重命名為?server_config.py。
cp server_config.py.example server_config.py
在開始執(zhí)行 Web UI 或命令行交互前,請先檢查 configs/model_config.py
和 configs/server_config.py
中的各項模型參數(shù)設計是否符合需求:
llm_model_dict
對應模型的 local_model_path
屬性中,如:llm_model_dict={
"chatglm2-6b": {
"local_model_path": "/opt/langchain-chatchat/models/chatglm-6b",
"api_base_url": "http://localhost:8888/v1", # "name"修改為 FastChat 服務中的"api_base_url"
"api_key": "EMPTY"
}
}
請確認已下載至本地的 Embedding 模型本地存儲路徑寫在 embedding_model_dict
對應模型位置,如:
embedding_model_dict = {
"m3e-base": "/opt/langchain-chatchat/models/m3e-base",
}
如果你選擇使用OpenAI的Embedding模型,請將模型的?key
寫入?embedding_model_dict
中。使用該模型,你需要鞥能夠訪問OpenAI官的API,或設置代理。?
當前項目的知識庫信息存儲在數(shù)據(jù)庫中,在正式運行項目之前請先初始化數(shù)據(jù)庫(我們強烈建議您在執(zhí)行操作前備份您的知識文件)。
0.1.x
版本升級過來的用戶,針對已建立的知識庫,請確認知識庫的向量庫類型、Embedding 模型與 configs/model_config.py
中默認設置一致,如無變化只需以下命令將現(xiàn)有知識庫信息添加到數(shù)據(jù)庫即可:$ python init_database.py
如果您是第一次運行本項目,知識庫尚未建立,或者配置文件中的知識庫類型、嵌入模型發(fā)生變化,或者之前的向量庫沒有開啟?normalize_L2
,需要以下命令初始化或重建知識庫:
$ python init_database.py --recreate-vs
如需使用開源模型進行本地部署,需首先啟動 LLM 服務,如果啟動在線的API服務(如 OPENAI 的 API 接口),則無需啟動 LLM 服務。
這里選擇基于多進程腳本 llm_api.py 啟動 LLM 服務的方式,在項目根目錄下,執(zhí)行 server/llm_api.py 腳本啟動?LLM 模型服務:
$ python server/llm_api.py
如果部署服務器具備單張或者多張GPU顯卡,只需在 llm_api.py 中修改 create_model_worker_app 函數(shù)中,修改如下三個參數(shù):
gpus=None,
num_gpus=1,
max_gpu_memory="20GiB"
其中,gpus
?控制使用的顯卡的ID,如果 “0,1”;num_gpus
?控制使用的卡數(shù);max_gpu_memory
?控制每個卡使用的顯存容量。?
在線調(diào)用API服務的情況下,直接執(zhí)執(zhí)行 server/api.py 腳本啟動?API?服務;
python server/api.py
啟動 API 服務后,可訪問?localhost:7861
?或?{API 所在服務器 IP}:7861
?FastAPI 自動生成的 docs 進行接口查看與測試。
使用 Langchain-Chatchat 主題色啟動?Web UI?服務(默認使用端口?8501
)
$ streamlit run webui.py --theme.base "light" --theme.primaryColor "#165dff" --theme.secondaryBackgroundColor "#f5f5f5" --theme.textColor "#000000"
Web UI 對話界面:
Web UI 知識庫管理頁面:
如果想快速部署?LangChain-Chatchat?產(chǎn)品來體驗,可以選擇Docker一鍵部署的方式,比較簡單,只需要先安裝Docker 容器,在Unbuntu環(huán)境中如何安裝 Docker & Docker Compose,可以參考文章 《Quivr 基于GPT和開源LLMs構建本地知識庫 (更新篇)》中的3.2節(jié)。這里不過多贅述。Windows安裝Docker更簡單。
Docker鏡像使用的版本一般會稍微滯后一些,如果想快速體驗最新的版本按前面開發(fā)模式部署會更合適一點。LangChain-Chatchat?項目使用的 Docker 鏡像地址是:registry.cn-beijing.aliyuncs.com/chatchat/chatchat:0.2.0
docker run -d --gpus all -p 80:8501 registry.cn-beijing.aliyuncs.com/chatchat/chatchat:0.2.0
33.9GB
,使用 v0.2.0
,以 nvidia/cuda:12.1.1-cudnn8-devel-ubuntu22.04
為基礎鏡像embedding
模型:m3e-large
,內(nèi)置 chatglm2-6b-32k
NVIDIA Driver
以及 NVIDIA Container Toolkit
,請參考安裝指南docker logs -f <container id>
查看日志Waiting..
步驟,建議使用 docker exec -it <container id> bash
進入 /logs/
目錄查看對應階段日志本文章轉(zhuǎn)載微信公眾號@技術狂潮AI