langchainchatchat0.2大模型win11/centos7本地部署及内网迁移

448 阅读5分钟

最近试了一下在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部署

本人项目目录结构:

image.png

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

image.png

这幅图就可以看出这里采用的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版本

image.png

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…

image.png

分别把下载的文件放到目录下,执行pip install 对应文件名即可

5.编辑配置文件

本代码库已把配置文件已设置好, 编辑langchain/configs/下的model_configs.py

image.png

image.png

将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",

image.png

注意在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

进入页面无法访问,尝试以下解决方法:

  1. 关闭系统防火墙
  2. 修改configs/server_configs.py 将DEFAULT_BIND_HOST改为127.0.0.1

image.png 3. 这个最抽象:运行到最后可能会显示一个email,让输入email,输入完回车就打开了

参考:github.com

微信图片_20240925182747.png

显存占用情况:

6bfd4582321b095b20852e28b287902.png

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。

image.png

初始化及运行

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 已拒绝连接

  1. 尝试关闭系统防火墙
  2. 修改configs/server_configs.py将DEFAULT_BIND_HOST改为127.0.0.1或0.0.0.0
  3. 输入email,参考:github.com/chatchat-sp…

image.png

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