chatglm3-6b安装部署
一、安装****Anaconda3****(互联网)
1.因为不同大模型的webui会对python版本和pip模块不同需求,所以需要安装Anaconda来管理不同的python版本和pip模块。
sudo chmod 755 Anaconda3-2023.07-2-Linux-x86_64.sh //授权
sudo sh Anaconda3-2023.07-2-Linux-x86_64.sh //安装
2.按回车观看更多许可信息,按 Q 键跳过
4.是否接受许可条款, 输入yes回车
5. 是否将Anaconda安装在当前路径下,可以输入新的路径回车安装,如果直接回车安装在默认路径下
6. 输入conda -V 查看安装版本
7. 输入conda list 查看已安装科学包
8. *创建一个名字为langchain的python3.11.7虚拟环境,为大模型运行坐准备
conda create --name langchain python==3.11.7 -y
9.安装完毕后,通过以下命令激活python虚拟环境
conda activate langchain
二、大模型安装部署
大模型安装部署也可直接参考官网:https://github.com/chatchat-space/Langchain-Chatchat?tab=readme-ov-file
1.环境检查
-
首先,确保机器安装了 Python 3.8 - 3.11 (官网推荐使用 Python3.11)。
-
$ python --version Python 3.11.7
2.下载Langchain-chatchat,大模型,向量库
下载langchain chatchat webui
项目地址:https://github.com/chatchat-space/Langchain-Chatchat
//拉取命令
cd /data/webui //在自己的电脑创建此目录
git clone https://github.com/chatchat-space/Langchain-Chatchat.git
mv Langchain-Chatchat langchainchatchat #去掉文件名中的横杠,防止程序报错
3.下载chatglm3-6b大模型
项目地址:https://modelscope.cn/models/ZhipuAI/chatglm3-6b/files
//拉取命令
cd /data/models
git install lfs
git clone https://www.modelscope.cn/ZhipuAI/chatglm3-6b.git
mv chatglm3-6b chatglm36b #去掉文件名中的横杠,防止程序报错
注意:一定注意检查拉取下来的项目是否完整,若有遗漏请访问项目地址进行单独下载拉取。通过git拉取可能会遗漏.safetensors、.bin、.model
4.下载bge-large-zh向量模型
项目地址:https://modelscope.cn/models/AI-ModelScope/bge-large-zh/files
//拉取命令
cd /data/models
git install lfs
git clone https://www.modelscope.cn/AI-ModelScope/bge-large-zh.git
mv bge-large-zh bgelargezh #去掉文件名中的横杠,防止程序报错
注意:一定注意检查拉取下来的项目是否完整,若有遗漏请访问项目地址进行单独下载拉取。通过git拉取可能会遗漏.bin
5.安装langchain-chatchat pip依赖组件
cd /data/webui/langchainchatchat
pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/
6.检查torch,cuda是否安装正确
安装完成后,进入python命令行,使用如下命令检查torch,cuda。
python
import torch
torch.__version__
torch.cuda.is_available()
如果发现不是cu版本呢,可能是因为nvidia显卡的驱动以及cuda版本没有安装正确,解决方案是去官方下载对应显卡的驱动,nvidia-tool kit, cuda,python等。
至此langchain-chatchat的基础运行环境安装完毕。
7.配置、启动langchain-chatchat
配置文件修改,生成默认配置文件
cd /data/webui/langchainchatchat
python copy_config_example.py
此命令会在/data/webui/langchainchatchat/langchainchatchat/config下生成一份默认配置文件,如下图:
主要修改model_config.py这个文件。
cd /data/webui/langchainchatchat/langchainchatchat/config
vi model_config.py
1.第9行, 修改成EMBEDDING_MODEL = “bge-large-zh”
2.第29行,只保留chatglm3-6b即可
3.第155行,修改bge-large-zh向量模型路径,改成本地实际存储路径,如本文中的/data/models/bgelargezh
4.168行,chatglm3-6b模型路径,改成本地实际存储路径,如本文中的/data/models/chatglm36b,如果使用其他模型,对应改下模型名称后面的路径即可。
8.初始化向量库
删除默认知识库中的知识文件,然后初始化向量库。
cd /data/webui/langchainchatchat
rm -rf knowledge_base/samples
python init_database.py --recreate-vs
初始化向量库执行结果类似下图:
9.启动大模型
python startup.py -a
当看到
You can now view your Streamlit app in your browser.
URL: http://0.0.0.0:8501时,表明大模型已经加载启动完毕,这时可以通过浏览器打开 http://ip:8501 访问了
9.创建新的知识库
点击左侧“知识库管理”,在右侧,新建知识库,输入知识库名(只能使用英文),知识库简介(可以使用中英文),向量库类型 faiss, embedding模型 bge-large-zh,点击新建。
三、Anaconda完全离线环境迁移(A互联网机器,B离线机器)
1.检查A机环境中的包是否存在不兼容现象
命令:Pip check
具体问题具体分析,建议用conda装(对于依赖的检测安装功能更加强大)
2.用conda 导出依赖清单
conda list
conda env export > your_env.yaml
如下,可以看到这里分别有conda依赖清单和pip依赖清单。
dependencies:
- alabaster=0.7.12=py_0
- astroid=2.4.2=py36h9f0ad1d_0
- async_generator=1.10=py_0
- attrs=20.2.0=pyh9f0ad1d_0
- babel=2.8.0=py_0
- backcall=0.2.0=pyh9f0ad1d_0
- backports=1.0=py_2
- backports.functools_lru_cache=1.6.1=py_0
- bleach=3.2.1=pyh9f0ad1d_0
- ca-certificates=2021.5.30=h5b45459_0
- certifi=2021.5.30=py36ha15d459_0
- chardet=3.0.4=py36h9f0ad1d_1007
- colorama=0.4.3=py_0
- cudnn=6.0=0
- decorator=4.4.2=py_0
- defusedxml=0.6.0=py_0
- docutils=0.16=py36h9f0ad1d_1
- entrypoints=0.3=py36h9f0ad1d_1001
- webencodings=0.5.1=py_1
- wheel=0.35.1=pyh9f0ad1d_0
- widgetsnbextension=3.5.1=py36h9f0ad1d_1
- wincertstore=0.2=py36_1003
- winpty=0.4.3=4
- wrapt=1.11.2=py36h68a101e_0
- zeromq=4.3.2=h6538335_2
- zipp=3.3.0=py_0
- zlib=1.2.11=h2fa13f4_1004
- pip:
- absl-py==0.10.0
- altgraph==0.17
- argon2-cffi==20.1.0
- astor==0.8.1
- atomicwrites==1.4.0
- autopep8==1.5.4
- bcrypt==3.2.0
- blessings==1.7
- cachetools==4.1.1
- cffi==1.14.3
- cloudpickle==1.6.0
- cryptography==3.4.7
- cycler==0.10.0
- dataclasses==0.8
```
3.修改依赖列表清单
- 在A机上建立一个txt文件,命名为conda.yaml,其中复制入dependencies中的依赖名称(不包含dependencies)。并将“XXX
-”替换为“”(XXX表示空格,替换为空),如果不修改,安装时报错。记事本编辑\替换可以完成这个操作。如下:
alabaster=0.7.12=py_0
astroid=2.4.2=py36h9f0ad1d_0
async_generator=1.10=py_0
attrs=20.2.0=pyh9f0ad1d_0
babel=2.8.0=py_0
backcall=0.2.0=pyh9f0ad1d_0
backports=1.0=py_2
backports.functools_lru_cache=1.6.1=py_0
bleach=3.2.1=pyh9f0ad1d_0
ca-certificates=2020.6.20=hecda079_0
certifi=2020.6.20=py36h9f0ad1d_0
chardet=3.0.4=py36h9f0ad1d_1007
colorama=0.4.3=py_0
cudatoolkit=10.0.130=0
cudnn=7.6.0=cuda10.0_0
decorator=4.4.2=py_0
- 2.在A机上再建立一个txt文件,命名为pip.txt。在其中复制入pip:内的部分。按照1步中的方法,将“ -”替换为“”。如下:
absl-py==0.10.0
altgraph==0.17
argon2-cffi==20.1.0
astor==0.8.1
atomicwrites==1.4.0
autopep8==1.5.4
bcrypt==3.2.0
blessings==1.7
cachetools==4.1.1
cffi==1.14.3
cloudpickle==1.6.0
cryptography==3.4.7
cycler==0.10.0
4.获取依赖安装包
- 获取conda依赖安装包
进入A机anaconda安装根目录中的pkgs(注意不是环境中的),拷贝出所有的“.conda”,“.tar.bz2”文件到‘condafile’,上面的文件为这些包的解压文件。这些文件就是以前用conda安装时下载的安装包文件。 - 下载pip依赖安装包 在A机上利用pip根据pip.txt中的清单下载依赖包。这里我cd到了Desktop,-r表示依赖清单,-d表示存储依赖的路径。
pip download -r pip.txt -d pipfile
- 之后将这两部分的文件拷贝到另一个文件下,可以命名为pipfile。 最终在A机上建立如下结构的文件:
--\transference
--\condafile
--\conda.yaml
--\pipfile
--\pip.txt
5.B机安装依赖
在B机上安装好anaconda之后,离线创建环境,并进入环境:
conda create -n csdntest --offline
conda activate csdntest
5.1 Conda依赖安装
将前面的transference拷贝到B机桌面上,cd到该路径下,按照conda.yaml从transference离线安装依赖。
- 1.将condafile里面的所有文件拷贝到anaconda安装根目录下的pkgs,重复的文件复制或替换,这个目录就是conda的安装的缓存目录。
- 2.cd 到conda.yaml 的目录下
- 3. 安装依赖
conda install --file conda.yaml --offline
- 4.安装过程中可能会报错,可能是由于安装了其他python版本的包,或者是其依赖库没有找到。具体问题具体分析,下载相对应的库。可以看到conda的软件已经全部安装,当然包括python和pip,这样一下步就可以使用pip安装了。
5.2 Pip依赖安装
同样的操作:
- cd 到pip.txt 的路径下。
- 安装依赖
Pip install -r pip.txt --no-index --find-links=. --user
导入第三方包,测试表明,环境顺利迁移!
小问题:
如果使用pip freeze > requirements.txt 命令导出已安装的模块,其中部分模块显示了 @ file:///…,而不是具体的版本号。
原因:
这是 pip 安装软件包的一种特殊语法(自19.1开始受支持)PEP404,但是该此种路径取决于环境,file:///URL 仅在本地文件系统上可用,你不能将生成的 requirements.txt 文件提供给其他人使用
解决:
当遇到此类问题时,可以暂时考虑使用如下命令生成 requirements.txt 文件
pip list --format=freeze > requirements.txt
使用上述命令导出的文件中,会包含如下几个包:distribute,pip,setuptools,wheel,建议手动删除!