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

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐