离线环境安装langchain-ChatGLM

需要联网安装好后实施。用于部署到无法联网的设备中使用。

完整环境安装可以参考我的另一篇文章:https://www.idealx.cn/archives/langchain-ChatGLM-install

1. 准备安装包

  • CUDA(对应版本)

Nvidia CUDA 全部版本:https://developer.nvidia.com/cuda-toolkit-archive

  • Anaconda3(对应版本)

Anaconda 官网最新版本:https://www.anaconda.com/download#downloads
镜像站(以清华镜像为例):https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/

  • langchain-ChatGLM项目源文件(联网下载最新或本地准备)
# 从git仓库中获取最新的langchain-ChatGLM项目代码
git clone https://github.com/imClumsyPanda/langchain-ChatGLM.git
# 或者拉取特定的版本(例如Tag为0.1.12的版本)
git clone https://github.com/imClumsyPanda/langchain-ChatGLM.git -b v0.1.12
  • ChatGLM模型文件(联网下载最新或本地准备)
# 需要安装 Git LFS
git clone https://huggingface.co/THUDM/chatglm-6b

注:在新版的langchain-ChatGLM项目加入了Vue构建的前端展示,并使用fastapi构建的后端,本篇文章暂未涉及Vue相关基础环境的安装。

2. Conda环境打包/解包

打包环境的操作系统必须与目标的操作系统匹配,即在Windows系统上构建的环境不能重新部署到Linux或MacOS。

  1. 安装conda-pack

访问https://conda.github.io/conda-pack/index.html官网获得更多资料

常见的使用场景是在一台机器上打包一个环境,分发给可能未安装conda/python的其他机器。

从PyPI安装

pip install conda-pack

或者从conda安装

conda install conda-pack
conda install -c conda-forge conda-pack
  1. 在源机器上对环境打包
# 根据需求三选一
# 1. 把虚拟环境 my_env 打包为 my_env.tar.gz
conda pack -n my_env
# 2. -o 参数指定打包路径和名称,把虚拟环境 my_env 打包为 out_name.tar.gz
conda pack -n my_env -o out_name.tar.gz
# 3. 把某个特定路径的虚拟环境打包为 my_env.tar.gz
conda pack -p /path/to/my_env
  1. 在目标机器上对环境解包并激活
# 创建目录 `my_env`,并将环境解压至该目录
mkdir -p my_env
tar -xzvf my_env.tar.gz -C my_env

# 使用python而不激活或修复前缀。
# 大多数 python 库可以正常工作,但需要处理前缀的部分将失败。
./my_env/bin/python

# 激活环境,同时这步操作会将路径 `my_env/bin` 添加到环境变量 path
source my_env/bin/activate

# 在环境中运行python
(my_env) $ python

# 从激活环境中清除前缀。
# 也可以在不激活环境的情况下运行此命令,只要机器上已经安装了某个版本的python。
(my_env) $ conda-unpack

# 此时,环境与在此路径直接使用 conda 安装的环境完全相同。
# 所有脚本都应该工作正常。
(my_env) $ ipython --version

# 停用环境以将其从环境变量 path 中删除
(my_env) $ source my_env/bin/deactivate

执行了以上关于激活环境的代码后,即可在conda环境列表中查找到

# 显示conda的环境列表
conda env list
# 或者 conda info --envs
# 或者缩写参数 conda info -e

# 激活环境
conda activate my_env

# 取消激活环境
conda deactivate my_env

3. 迁移

  • (传输到无法联网的设备)使用物理介质传输,到达目标机器后解包
  • (Linux)使用FTP/HTTP传输,例如scp命令,到达目标机器后解包

4. 修改相关配置并启动

进入文件目录后,修改关于本地模型的数据,并按需启动

# 启动WEBUI
python webui.py

参考资料