从头开始:快速部署ChatCLM模型的完整指南
介绍
ChatGLM-6B 是一个开源的、支持中英双语的对话语言模型,基于 General Language Model (GLM) 架构,具有 62 亿参数。结合模型量化技术,用户可以在消费级的显卡上进行本地部署(INT4 量化级别下最低只需 6GB 显存)。 ChatGLM-6B 使用了和 ChatGPT 相似的技术,针对中文问答和对话进行了优化。经过约 1T 标识符的中英双语训练,辅以监督微调、反馈自助、人类反馈强化学习等技术的加持,62 亿参数的 ChatGLM-6B 已经能生成相当符合人类偏好的回答,更多信息请参考我们的博客。
为了方便下游开发者针对自己的应用场景定制模型,我们同时实现了基于 P-Tuning v2 的高效参数微调方法 (使用指南) ,INT4 量化级别下最低只需 7GB 显存即可启动微调。
不过,由于 ChatGLM-6B 的规模较小,目前已知其具有相当多的局限性,如事实性/数学逻辑错误,可能生成有害/有偏见内容,较弱的上下文能力,自我认知混乱,以及对英文指示生成与中文指示完全矛盾的内容。请大家在使用前了解这些问题,以免产生误解。更大的基于 1300 亿参数 GLM-130B 的 ChatGLM 正在内测开发中。
硬件需求
量化等级 | 最低 GPU 显存(推理) | 最低 GPU 显存(高效参数微调) |
---|---|---|
FP16(无量化) | 13 GB | 14 GB |
INT8 | 8 GB | 9 GB |
INT4 | 6 GB | 7 GB |
示例配置
- 操作系统:CentOS 7.9
- 显卡型号:Tesla V100 32G显存。
- 显卡驱动:NVIDIA-SMI 470.161.03 Driver Version: 470.161.03 CUDA Version: 11.4
环境准备
CentOS 7.9 自带的Python版本过低,这里使用Anaconda部署,Python版本为3.10.9,Nvidia显卡可以通过运行
nvidia-smi
命令检查驱动是否成功安装
- Anaconda
- Python 3.10+、pip
- Git
下载Anaconda安装脚本,根据提示完成安装
wget -P /usr/local/conda https://repo.anaconda.com/archive/Anaconda3-2023.03-Linux-x86_64.sh && cd /usr/local/conda && bash Anaconda3-2023.03-Linux-x86_64.sh
创建虚拟环境
[[ Conda 命令说明 ]]
# 从base环境克隆虚拟环境到chatglm
conda create -n chatglm --clone base
# 进入chatglm虚拟环境
conda activate chatglm
# 检查Pyton版本
python -V
安装ChatGLM
克隆ChatGLM源代码,并下载依赖
# 安装git
yum -y install git
# 切换工作目录到/usr/local
cd /usr/local
# 克隆源代码
git clone https://github.com/THUDM/ChatGLM-6B.git
# 切换工作目录到/usr/local/ChatGLM-6B
cd ChatGLM-6B
# 安装依赖
pip install -r requirements.txt
# 安装 Gradio
pip install gradio fastapi uvicorn
# 运行web_demo.py,会自动下载模型
python web_demo.py
# 下载完成后,会提示Torch not compiled with CUDA enabled,参考文末解决办法
# 检查torch.cuda.is_available(),如输出为True,则重新运行
python web_demo.py
安装ChatGLM-webui
克隆ChatGLM-webui源代码,并下载依赖
# 克隆ChatGLM-webui
git clone https://github.com/Akegarasu/ChatGLM-webui.git
# 切换工作目录到/usr/local/ChatGLM-webui
cd ChatGLM-webui
# 安装依赖
bash install.sh
# 启动webui
python webui.py
webui 启动参数
--model-path
: 指定模型路径。如果不手动指定此参数,则默认值为THUDM/chatglm-6b
. Transformers会自动从huggingface下载模型。
--listen
: 以 0.0.0.0 作为服务器名称启动 gradio,允许其他设备访问。
--port
: webui端口
--share
: 使用 gradio 分享
--precision
:fp32(仅 CPU)、fp16、int4、int8
--cpu
: 使用CPU
常见错误
- AssertionError: Torch not compiled with CUDA enabled
AssertionError: Torch not compiled with CUDA enabled
提示Torch未在启用CUDA的情况下编译,检查pytorch是否为GPU版本,torch.cuda.is_available()
输出应该是True
python
import torch
torch.cuda.is_available()
如果输出为False,则执行下面指令安装
pip install torch==1.13.1+cu117 torchvision==0.14.1+cu117 -f https://mirror.sjtu.edu.cn/pytorch-wheels/torch_stable.html -i https://mirrors.bfsu.edu.cn/pypi/web/simple
- ImportError: /lib64/libstdc++.so.6: version `CXXABI_1.3.9'
python webui.py --listen --precision=fp16
Traceback (most recent call last):
......
ImportError: /lib64/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by /usr/local/anaconda3/envs/chatglm/lib/python3.10/site-packages/pandas/_libs/window/aggregations.cpython-310-x86_64-linux-gnu.so)
运行bash install.sh
脚本时,由于脚本安装依赖换源导致,切换默认源重新安装即可
- ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts. torchvision 0.14.1+cu117 requires torch==1.13.1, but you have torch 2.0.0 which is incompatible.