非源码部署!!!! 未用docker,用的conda虚拟环境,Langchain-chatchat-v0.3+Xinference需要分别单独放进虚拟环境,要创建两个虚拟环境,防止包冲突。
1.Xinference环境配置
1.1 首先搭建一个xinference的虚拟环境
conda create -n xinfer python=3.10 conda activate xinfer
用的py3.10,调研了一下说好像稳定些。
另外附上conda镜像源配置:
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/conda config --set show_channel_urls yesconda config --show-source
因为是新服务器,遇到了创建新环境出错,报错镜像未配置,然后配置完又报错访问不到清华镜像之类的,最后发现是服务器未配置DNS的问题,ping不通,是网络问题,以为是镜像源的问题,尴尬。。。
1.2 在环境中安装xinference
用以下命令安装 Xinference ,本人只安装了transformers引擎,几乎包含了所有最新的llm,够用
pip install "xinference[transformers]" -i https://pypi.tuna.tsinghua.edu.cn/simplepip install "xinference[vllm]" -i https://pypi.tuna.tsinghua.edu.cn/simplepip install "xinference[transformers,vllm]" # 同时安装这两个引擎pip install "xinference[all]" -i https://pypi.tuna.tsinghua.edu.cn/simple
1.3 运行xinference
等待安装结束,xinference 默认会在本地启动服务,端口默认为 9997,因为这里配置了-H 0.0.0.0参数,非本地客户端也可以通过机器的 IP 地址来访问 xinference 服务。用下面代码运行,最好加个端口号,本人服务器端口映射有问题,额,访问不到默认的地址,导致每次启动都会变更端口号,麻烦。
XINFERENCE_MODEL_SRC=modelscope xinference-local --host 0.0.0.0 --port 59076
启动成功后,我们可以通过地址 http://服务器ip:59076来访问 xinference 的 WebGUI 界面了。
如图:
1.4 下载模型
点击左侧功能的Launch Model,在language models中搜索想要模型,搜索到想要模型,点击小卡片进入即可,进入后选择下载模型的配置参数(下图),然后点击小火箭下载运行模型即可。这里本人安装的qwen1.5-chat-72B-int4,下载了130个g左右,第一次下载时间较长。
这里如果当前路径下载模型内存不够的话,可以修改xinference的存储路径,代码如下:
vim .bashrc source ~/.bashrcexport TMPDIR=/dev/shm/tmp #这里把临时路径也改了export XINFERENCE_HOME=/dev/shm/tmp/xinference #xinference的路径,改成自己路径即可export MODELSCOPE_CACHE==/dev/shm/modelscope/hub #xinference的路径,改成自己路径即可
下载并运行完成后,点击左侧的Running models,可以看到正在运行的模型,点击下图中红色标识的小框,即可跳转webui界面。
1.5 下载Embeddings模型
在Launch Model中,选择Embedding Models,在里面选取自己想要的Embedding模型下载即可,本人下载的为bge-base-zh-v1.5
点击小火箭?运行就好。
2. Langchain-chatchat环境配置
2.1 首先搭建一个Langchain-chatchat的虚拟环境
同xinference,然后进入虚拟环境
conda create -n chatchat python=3.10 conda activate chatchat
2.2 在环境中安装Langchain-chatchat
未用Git源码的方式,直接运行以下代码即可:
pip install "langchain-chatchat[xinference]" -U -i https://pypi.tuna.tsinghua.edu.cn/simple
2.3 运行Langchain-chatchat
2.3.1 初始化
执行初始化命令,生成配置文件和默认的知识库文件
chatchat init
如下图所示:
这个生成的配置文件,当前用户在哪个目录(pwd查看当前目录),就会出现在哪个目录,不用配置。
2.3.2 修改配置文件
主要是修改model_settings.yaml这个文件,修改如下图所示:
2.3.3 初始化知识库
用以下代码初始化。
chatchat kb -r
注意!!!! 知识库初始化前,请确保已经启动模型推理框架及已下载的 Embedding 模型
未启动出现了这个错误:
| ERROR | chatchat.server.knowledge_base.kb_cache.faiss_cache:load_vector_store:140 - Error raised by inference endpoint: HTTPool(host='127.0.0.1', port=11434): Max retries exceeded with url: /api/embeddings (Caused by NewConnectionError('<urllib3.connection.HTTPConnection obj8f1eed18a0>: Failed to establish a new connection: [Errno 111] Connection refused'))| ERROR | chatchat.init_database:worker:61 - 向量库 samples 加载失败。
初始化知识库成功后,如下图所示
初始化知识库的时候,遇到了加载不到info.db的问题,
| ERROR | chatchat.init_database:worker:61 - (sqlite3.OperationalError) unable to open database file(Background on this error at: https://sqlalche.me/e/20/e3q8)
调研了下,有两种办法:
(1)在配置文件里,把这个路径换成相对路径(失败,我自己文件写的就是绝对路径)
(1)换个用户当前路径,再重新初始化配置文件(成功)
2.3.4 运行Langchain-chatchat
chatchat start -a
运行成功截图如下:
访问URL即可跳到WEBUI界面:
遇到的问题:
打开Langchain-chatchat的webUI输入对话内容的时候,提示xinference上的模型openAI访问被拒绝,重新运行xinference的时候换了个端口,就通了,额。。。。