一、租用AutoDL云服务器,配置环境
1.1 配置AutoDL环境
注册好autodl账户之后,开始在上面租服务器,GPU我选择的是RTX4090*2,西北B区,基础镜像选择的是Pytorch-2.3.0-python-3.12(ubuntu22.04)- cuda版本12.1。
1.2 了解AutoDl学术加速的使用
进入JupyterLab,在/root目录下建立data文件夹,进行学术加速,提高在国外网站(github等学术网站)拉取文件的速度:
# 开启学术加速
source /etc/network_turbo# 取消学术加速:
unset http_proxy && unset https_proxy
1.3 基于AutoDL的虚拟环境激活
source ~/.bashrc
conda init
二、设置和安装Langchain-Chatchat及相关依赖
1.打开终端从github上将新版本的项目拉取下来,指令如下(如果学术加速不稳定,需要取消学术加速):
git clone https://github.com/chatchat-space/Langchain-Chatchat.git
2.新建一个虚拟环境(进入glm4_text前可能需要激活:source ~/.bashrc conda init)
conda create -n glm4_text python==3.11
conda activate glm4_text
3.安装 Langchain-Chatchat,从 0.3.0 版本起,Langchain-Chatchat 提供以 Python 库形式的安装方式,具体安装请执行:(请不要着急使用该命令,看下一条命令)
pip install langchain-chatchat -U -i https://pypi.tuna.tsinghua.edu.cn/simple
4.因模型部署框架 Xinference 接入 Langchain-Chatchat 时需要额外安装对应的 Python 依赖库,因此如需搭配 Xinference 框架使用时,建议使用如下指令进行安装:(因为我使用的就是Xinference框架)
pip install langchain-chatchat[xinference] -U -i https://pypi.tuna.tsinghua.edu.cn/simple
三、Xinference框架部署与大模型 & embidding模型加载
从 0.3.0 版本起,Langchain-Chatchat 不再根据用户输入的本地模型路径直接进行模型加载,涉及到的模型种类包括 LLM、Embedding、Reranker 及后续会提供支持的多模态模型等,均改为支持市面常见的各大模型推理框架接入,如 Xinference、Ollama、LocalAI、FastChat、One API 等。因此,请确认在启动 Langchain-Chatchat 项目前,首先进行模型推理框架的运行,并加载所需使用的模型。然后再正式启动 Langchain-Chatchat。
1.新开终端再次新建一个推理虚拟环境llm_tl并激活:
conda create -n llm_tl python==3.11
conda activate llm_tl
3.Xinference 在 Linux, Windows, MacOS 上都可以通过 pip 来安装。如果需要使用 Xinference 进行模型推理,可以根据不同的模型指定不同的引擎。
这一步骤请记得不要使用AutoDL中的无卡模式开机!不然会遇到进程杀死的错误!
pip install "xinference[all]" -i https://pypi.tuna.tsinghua.edu.cn/simple
报错:Failed to build llama-cpp-python
ERROR: ERROR: Failed to build installable wheels for some pyproject.toml based projects (llama-cpp-python)
当前虚拟机的 g++ --version,发现版本为“g++ (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0”,如果高于10的话就需要降级到10。降级后重新运行即可成功!
在创建的虚拟环境中更新需如下指令:
conda config --add channels conda-forgeconda install gxx_linux-64=10pip install "xinference[all]" -i https://pypi.tuna.tsinghua.edu.cn/simple
4.本地运行Xinference配置
让我们以一个经典的大语言模型 glm4-9b-chat 来展示如何在本地用 Xinference 运行大模型,我这里自定义了一个存储日志文件和大模型,embedding模型的路径,如果不自定义一个路径将会下载到默认的一个路径下,这样很容易将我们的系统盘给撑爆,以魔塔社区下载模型为例。
XINFERENCE_HOME=/root/autodl-tmp/xinference XINFERENCE_MODEL_SRC=modelscope xinference-local --host 0.0.0.0 --port 9997
5.新建一个终端依次输入如下代码:
进入llm_tl环境,输入如下指令下载embeding模型和glm4-chat模型。
xinference launch --model-name bge-large-zh-v1.5 --model-type embeddingxinference launch --model-engine vllm --model-name glm4-chat --size-in-billions 9 --model-format pytorch --quantization none
遗憾的是看不到下载过程(不知道下载过程报错时如何处理),下载完后,我们安装apt-get install tree后,进入目录/root/autodl-tmp/xinference/modelscope,通过tree把文件路径列出来:
sudo apt-get update
apt-get install tree
tree
(base) root@autodl-container-75ca4f8174-f38c15a5:~/autodl-tmp/xinference/modelscope# tree
.
└── hub├── Xorbits│ └── bge-large-zh-v1___5│ ├── 1_Pooling│ │ └── config.json│ ├── README.md│ ├── config.json│ ├── config_sentence_transformers.json│ ├── configuration.json│ ├── model.safetensors│ ├── modules.json│ ├── pytorch_model.bin│ ├── sentence_bert_config.json│ ├── special_tokens_map.json│ ├── tokenizer.json│ ├── tokenizer_config.json│ └── vocab.txt└── ZhipuAI└── glm-4-9b-chat├── LICENSE├── README.md├── README_en.md├── config.json├── configuration.json├── configuration_chatglm.py├── generation_config.json├── model-00001-of-00010.safetensors├── model-00002-of-00010.safetensors├── model-00003-of-00010.safetensors├── model-00004-of-00010.safetensors├── model-00005-of-00010.safetensors├── model-00006-of-00010.safetensors├── model-00007-of-00010.safetensors├── model-00008-of-00010.safetensors├── model-00009-of-00010.safetensors├── model-00010-of-00010.safetensors├── model.safetensors.index.json├── modeling_chatglm.py├── tokenization_chatglm.py├── tokenizer.model└── tokenizer_config.json6 directories, 35 files
6.以使用 --model-uid
或者 -u
参数指定模型的 UID,如果没有指定,Xinference 会随机生成一个 ID,下面的命令xinference list 可以看出UID分别为glm4-chat和bge-large-zh-v1.5:
四、启动项目
1.切换成我们最开始新建的虚拟环境,在启动项目之前确保首先进行模型推理框架的运行,并加载所需使用的模型,查看与修改 Langchain-Chatchat 配置
运行chatchat --help命令:
chatchat --help
2.可根据上述配置命令选择需要查看或修改的配置类型,以项目初始化init配置
为例,想要进行项目初始化
查看或修改时可以输入以下命令chatchat init --help获取帮助信息,如下图所示:
从返回信息可以看出,chatchat init可以指定API,LLM模型,Embedding模型等,使用如下命令指定默认llm和embedding。
chatchat init -l glm4-chat
chatchat init -e bge-large-zh-v1.5
3.初始化知识库(不初始化官方提供的知识库也没问题,后面直接在UI界面中操作自己的本地知识库就好!)。
chatchat kb -r
有一个报错:“ FileExistsError: 从文件 samples/test_files/langchain.pdf 加载文档时出错:[Errno 17] File exists: '/root/nltk_data/tokenizers' ” ,将文件'/root/data/Langchain-Chatchat/data/knowledge_base/samples/content/test_files/langchain.pdf'复制到'/root/nltk_data/tokenizers'即可。
4.启动项目
chatchat start -a
在本地服务器终端上运行:
ssh -p 46828 root@connect.westc.gpuhub.com -CNg -L 8501:127.0.0.1:8501 -o StrictHostKeyChecking=no
输入AutoDL上复制到密码,即在本地电脑上通过127.0.0.1:8501访问到chatchat,可以看到当前部署到版本为0.3.1.3。
9.11和9.9谁更大,也回答得比较合理:
其它功能后续再继续摸索。
本文非原创,参考了如下博客(表示感谢):
基于AutoDL部署langchain-chatchat-0.3.0-CSDN博客
langchain-chatchat-0.3.0小白保姆部署指南-CSDN博客