Langchain-Chatchat部署总结
读前须知:该项目不是大模型,只是为大模型提供一个集合和可交互的界面
更多详细内容请查看官方文档:Langchain-Chatchat-Wiki
一、环境配置
该项目运行最佳坏境为
- Linux Ubuntu 22.04.5
- Python 版本 == 3.11.7
- CUDA 版本: == 12.1
- torch==2.1.2
1.创建conda环境
conda create -n Chat python=3.11.7
2.激活环境
source activate Chat
3.更新py库
pip3 install --upgrade pip
二、安装项目及其依赖
1.拉取仓库
git clone --recursive https://github.com/chatchat-space/Langchain-Chatchat.git
2.安装全部依赖
pip install -r requirements.txt
三、模型下载及配置
项目中是至少需要一个 LLM 模型和一个Embedding 模型:
具体支持模型请参考官方文档:Langchain-Chatchat支持列表
1.下载模型
这里是参考官方文档下载的LLM 模型 THUDM/ChatGLM3-6B 与 Embedding 模型 BAAI/bge-large-zh,但是实际使用时可根据自己的需求进行模型下载
$ git lfs install
$ git clone https://huggingface.co/THUDM/chatglm3-6b
$ git clone https://huggingface.co/BAAI/bge-large-zh
2.配置模型文件
在Langchain-Chatchat/configs
目录下面找到model_config.py.example
修改其中的模型配置
#这里填入你存放Embedding和LLM模型的路径
MODEL_ROOT_PATH = ""
# 选用的 Embedding 名称(修改成你使用的名称,这里使用的是bge-large-zh)
EMBEDDING_MODEL = "bge-large-zh"
# Embedding 模型运行设备。设为"auto"会自动检测,也可手动设定为"cuda","mps","cpu"其中之一。(这里优先使用gpu)
EMBEDDING_DEVICE = "cuda"
# 要运行的 LLM 名称,可以包括本地模型和在线模型。列表中本地模型将在启动项目时全部加载。
LLM_MODELS = ["chatglm3-6b", "zhipu-api", "openai-api"]
# LLM 运行设备。设为"auto"会自动检测,也可手动设定为"cuda","mps","cpu"其中之一。(也建议改成gpu)
LLM_DEVICE = "cuda"
#根据需要填入api_key
ONLINE_LLM_MODEL = {
# 线上模型。请在server_config中为每个在线API设置不同的端口
········
}
MODEL_PATH = {
"embed_model": {
#路径改为你的Embedding模型的路径
"bge-large-zh": "../bge-large-zh",
#其他模型根据需要修改路径
}
"llm_model": {
#路径改为你的llm模型的路径
"chatglm3-6b": "../chatglm3-6b",
#其他模型根据需要修改路径
}
}
四、初始化知识库和配置文件
1.转换文件格式
python copy_config_example.py
2.初始化知识库
-
第一次运行本项目
python init_database.py --recreate-vs
如果在最后一步时出现报错可以执行一下下面的代码测试以下知识库是否已经建立好了,如果在执行下面代码后没有出现报错则就时正常生成知识库
-
已经有创建过知识库
python init_database.py --create-tables
五、Langchain-Chatchat,启动!
python startup.py -a
可选参数包括 -a (或--all-webui)
, --all-api
, --llm-api
, -c (或--controller)
, --openai-api
, -m (或--model-worker)
, --api
, --webui
,其中:
--all-webui
为一键启动 WebUI 所有依赖服务;--all-api
为一键启动 API 所有依赖服务;--llm-api
为一键启动 Fastchat 所有依赖的 LLM 服务;--openai-api
为仅启动 FastChat 的 controller 和 openai-api-server 服务;- 其他为单独服务启动选项。
若想指定非默认模型,需要用 --model-name
选项,示例:
$ python startup.py --all-webui --model-name Qwen-7B-Chat
更多信息可通过 python startup.py -h
查看。
六、更多
1.多卡加载
项目支持多卡加载,需在 startup.py 中的 create_model_worker_app 函数中,修改如下三个参数:
gpus=None,
num_gpus= 1,
max_gpu_memory="20GiB"
其中,gpus
控制使用的显卡的ID,例如 “0,1”;
num_gpus
控制使用的卡数;
max_gpu_memory
控制每个卡使用的显存容量。
注1:server_config.py的FSCHAT_MODEL_WORKERS字典中也增加了相关配置,如有需要也可通过修改FSCHAT_MODEL_WORKERS字典中对应参数实现多卡加载,且需注意server_config.py的配置会覆盖create_model_worker_app 函数的配置。
注2:少数情况下,gpus参数会不生效,此时需要通过设置环境变量CUDA_VISIBLE_DEVICES来指定torch可见的gpu,示例代码:
CUDA_VISIBLE_DEVICES=0,1 python startup.py -a
.py的配置会覆盖create_model_worker_app 函数的配置。
注2:少数情况下,gpus参数会不生效,此时需要通过设置环境变量CUDA_VISIBLE_DEVICES来指定torch可见的gpu,示例代码:
CUDA_VISIBLE_DEVICES=0,1 python startup.py -a