最近试了一下在win11和centos7上部署大模型,利用langchain-chatchat效果还不错,也适合在内网办公的情况下使用。因为需要在无网络环境使用,就不用0.3版本了,还需要搭建Xinference等等框架很麻烦。 本文使用@stonedst的0.2版本,解决了官方代码中configs包无法导入的问题,gitee地址:langchain-0.2: 使用开源的langchain搭建本地大模型 (gitee.com)
分别在win11和centos7上试用了通义千问的1.8b和0.5b大模型,windows的运行配置:
- 操作系统:windows11
- cpu: i5-11400F
- gpu: rtx2060 6G
- 嵌入模型:m3e-base
- 大模型: Qwen1.5-1.8B-chat
centos7是在虚拟机的cpu上跑起来的,忘了型号,分配的8g内存基本占满,嵌入模型:m3e-small 大模型: Qwen1.5-0.5B-chat。
python均使用3.10版本。
win11部署
本人项目目录结构:
1.搭建虚环境
#搭建虚环境
python -m venv myenv
#激活虚拟环境:
myenv\Scripts\activate
2.克隆代码
git clone https://gitee.com/stonedst/langchain.git
3.下载大模型
用魔塔社区进行下载,速度很快
git lfs install
#下载嵌入模型m3e-base
git clone https://www.modelscope.cn/Jerry0/m3e-base.git
#下载大模型Qwen1.5-1.8B-Chat
git clone https://www.modelscope.cn/Qwen/Qwen1.5-1.8B-Chat.git
4.安装依赖
建议使用清华pip源
cd langchain
pip install -r requirements.txt
pip install -r requirements_api.txt
pip install -r requirements_webui.txt
pip安装完后注意调用GPU需要安装GPU的pytorch, requirements.txt中的版本如下:
torch==2.1.2
torchvision==0.16.2
torchaudio==2.1.2
tourch版本要CUDA和python版本一致,否则在后面调用cuda运行模型时将报错。
查看自己已安装的pytorch:
pip list
这幅图就可以看出这里采用的CUDA版本号为12.1,所以没有显示"+cuxxx",那么环境里面没有安装GPU版本的torch。
1.卸载已安装的pytorch
pip uninstall torch
2.查看自己的python版本
python -V
3.下载对应版本pytorch、cuda
先下载CUDA版本(别下载最新的,可能没有对应pytorch):developer.nvidia.com/cuda-toolki…
下载成功后执行nvcc -V来查看cuda版本
cuda使用的是121,cp是310的window文件,找到python对应的版本,就可以在下面的这个网站中选择现在对应的torch版本torch212,注意我们选择下载torch时要注意python的版本号,并且在选择的时候选择cu开头的链接下载,cu对应的CUDA的版本,比如这里的python版本为3.10就是310,最后就是操作系统的版本。
分别下载好torch/torchvision/torchaudio三个whl包。
下载网址:download.pytorch.org/whl/torch_s…
分别把下载的文件放到目录下,执行pip install 对应文件名即可
5.编辑配置文件
本代码库已把配置文件已设置好, 编辑langchain/configs/下的model_configs.py
将EMBEDDING_MODEL改为m3e-base,LLM_MODELS改为Qwen-1_8B-Chat,考虑到自己显卡内存很小,就用cpu来跑嵌入模型,gpu跑大模型。
在后面的MODEL_PATH中输入大模型所在目录:
"m3e-base": "D:\\lang\\m3e-base",
"Qwen-1_8B-Chat": "D:\\lang\\Qwen-1_8B-Chat",
注意在Windows中将目录的/改为\,并加入转义符\。
6.初始化数据库
python init_database.py --recreate-vs
报错:# ModuleNotFoundError: No module named ‘pwd‘
创建pwd.py文件,内容如下
from os import *
from pwd import *
def get_username():
return getpwuid(getuid())[0]
根据报错信息放在python目录的Lib下
7. 运行web页面
python init_database.py -a
进入页面无法访问,尝试以下解决方法:
- 关闭系统防火墙
- 修改configs/server_configs.py 将DEFAULT_BIND_HOST改为127.0.0.1
3. 这个最抽象:运行到最后可能会显示一个email,让输入email,输入完回车就打开了
参考:github.com
显存占用情况:
centos7部署
与win步骤基本相同:
# 使用conda 搭建环境
conda create -n my_env python=3.10
conda activate my_env
# 拉取代码
git clone https://gitee.com/stonedst/langchain.git
git lfs install
# 下载嵌入模型m3e-small
git clone https://www.modelscope.cn/Jerry0/m3e-small.git
# 下载大模型Qwen1.5-0.5B-Chat
git clone https://www.modelscope.cn/Qwen/Qwen1.5-0.5B-Chat.git
# 安装依赖
cd langchain
pip install -r requirements.txt
pip install -r requirements_api.txt
pip install -r requirements_webui.txt
修改配置指定cpu运行,修改configs/model_config.py。
configs/server_config.py中的FSCHAT_MODEL_WORKERS项也可以进行指定运行设备,优先于model_config。
初始化及运行
python init_database.py --recreate-vs
python init_database.py -a
内网迁移
将centos7内的大模型迁移到内网。
1. 打包模型文件及langchain-chatchat
tar czvf m3e-small.tar.gz m3e-small
tar czvf Qwen1.5-0.5B-Chat.tar.gz Qwen1.5-0.5B-Chat
tar czvf langchain.tar.gz langchain
2. conda环境迁移
# 安装conda-pack包
pip install conda-pack
# my_env环境打包生成一个my_env.tar.gz 的压缩文件,保存在当前路径下
conda pack -n my_env
# 复制打包的压缩文件到新的电脑上,并解压到conda的envs目录下
mkdir my_env
tar -xzvf my_env -C ~/conda/envs/my_env
# 检查环境,并激活
conda env list
conda activate myenv
3. pip包全部离线下载
conda activate myenv
# 在该环境下,把已安装的pip包信息输出到 requirements.txt
pip freeze > requirements.txt
#从网络上下载清单中的包(此命令依赖外网环境)
pip install–download ../packages -r requirements.txt
# 将下载后的包压缩打包导入内网
tar czvf packages.tar.gz packages
# packages文件夹拷贝到内网的项目目录下
tar xzvf packages.tar.gz
# 离线安装依赖包
pip install --no-index --find-links=../packages -r requirements.txt
其他步骤和之前步骤相同。
遇到的问题汇总
1.初始化数据库ImportError: cannot import name 'EMBEDDING_MODEL' from 'configs'
官方0.2版本代码执行python copy_config_example.py后自动生成配置文件,接着执行python init_database.py --recreate-vs时报错,只有在configs下面配置init.py才行,使用@stonedst的代码gitee.com/stonedst/la… 可以直接使用。
2. win下初始化数据库报错ModuleNotFoundError: No module named ‘pwd‘
解决方法:blog.csdn.net/good_good_s…
3. win下启动服务报错:AssertionError: Torch not compiled with CUDA enabled
参考win安装步骤的4.3重新安装pytorch。
4. 服务启动后访问127.0.0.1/0.0.0.0 已拒绝连接
- 尝试关闭系统防火墙
- 修改configs/server_configs.py将DEFAULT_BIND_HOST改为127.0.0.1或0.0.0.0
- 输入email,参考:github.com/chatchat-sp…
5. 服务启动报错Error: ENOSPC: System limit for number of file watchers reached
文件监视程序的系统产生了限制,达到了默认的上限,需要增加限额
echo fs.inotify.max_user_watches = 524288 | sudo tee -a /etc/sysctl.conf
sudo sysctl -p