Windows PC上从零开始部署ChatGML-6B-int4量化模型

522 阅读4分钟

引言

ChatGLM-6B是清华大学知识工程和数据挖掘小组(Knowledge Engineering Group (KEG) & Data Mining at Tsinghua University)发布的一个开源的对话机器人。6B表示这是ChatGLM模型的60亿参数的小规模版本,约60亿参数。

ChatGML-6B-int4量化模型是针对ChatGML-6B做的优化版本,占用更少的资源,以便个人电脑进行部署测试和使用。

大模型的部署一般需要GPU资源,而个人电脑一般都是Windows操作系统,且没有独立的GPU。那么大模型如何部署在只有CPU的Windows机器上呢?需要额外安装一个叫TDM-GCC的软件。

下面详细阐述ChatGML-6B-int4量化模型在Windows PC上的操作过程:

环境准备

ChatGML-6B-int4量化模型部署需要提供python运行环境、安装好Git版本管理工具和TDM-GCC软件。

1. 安装Anaconda

Anaconda是可以便捷获取包且对包能够进行管理,同时对环境可以统一管理的发行版本。Anaconda包含了conda、Python在内的超过180个科学包及其依赖项。

下载安装

Anaconda官方下载地址:www.anaconda.com/download/ 下载之后,一路点击【next】,即可安装完成。

配置环境变量

在PC电脑的环境变量Path中增加Anaconda相关的环境变量。

E:\Anaconda 
E:\Anaconda\Scripts 
E:\Anaconda\Library\mingw-w64\bin
E:\Anaconda\Library\usr\bin 
E:\Anaconda\Library\bin

注意,其中E:\Anaconda改为Anaconda自己的安装根目录。

修改pip镜像源

修改pip安装软件的镜像源,可以加速依赖下载速度。

# 阿里源
pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/

2. 安装Git

Git Windows版本下载地址:git-scm.com/download/wi… 下载之后可以一路点击【next】即完成安装,通过如下命令查看版本信息:

git version

3. 安装TDM-GCC

TDM-GCC主要对模型一些C代码提供编译环境,下载地址:jmeubank.github.io/tdm-gcc/ 下载之后可以一路点击【next】即完成安装。

模型部署

1. 下载模型源码并安装依赖

(1)在你的工作目录打开命令提示窗口,默认下载到当前目录

git clone https://github.com/THUDM/ChatGLM-6B

(2)切换到chatGLM-6B目录

cd ChatGLM-6B

(3)创建conda的虚拟环境,指定Python的版本

conda create -n VENV310 python=3.10

(4)激活环境

conda activate VENV310

(5)下载依赖包

pip install -r requirements.txt

本节指定的版本非常重要,否则会在下载依赖包环节出现各种问题。 本节操作目的主要是为下面的量化模型提供运行脚本和运行环境。

2. 下载量化模型

ChatGML-6B-int4量化模型下载比较麻烦,需要到huggingface网站下载,需要用到科学上网。网上说国内魔搭社区下载的模型代码不完整。

在huggingface上下载又有两种方式:通过Git下载和浏览器下载。

(1)Git下载方式:

git lfs install 
git clone https://huggingface.co/THUDM/chatglm-6b-int4

可以将该工程下载到chatGLM-6B目录下面。

(2)浏览器下载: 在浏览器打开huggingface.co/THUDM/chatg…,将目录下的文件全部下载到如下目录:

chatGLM-6B/chatglm-6b-int4  #如果没有该目录则新建

3. 运行量化模型

模型运行脚本文件为:ChatGLM-6B\cli_demo.py,修改该文件的模型加载代码,改为加载chatglm-6b-int4量化模型。修改内容如下:

# tokenizer = AutoTokenizer.from_pretrained("THUDM/chatglm-6b", trust_remote_code=True)
# model = AutoModel.from_pretrained("THUDM/chatglm-6b", trust_remote_code=True).half().cuda()
tokenizer = AutoTokenizer.from_pretrained("chatglm-6b-int4", trust_remote_code=True)
model = AutoModel.from_pretrained("chatglm-6b-int4",trust_remote_code=True).float()

注意,量化模型目录chatglm-6b-int4一定要保证与当前文件在同一个父目录下。

运行出现的问题:

(1)在启动cli_demo的时候报错:No module named 'readline' 解决方案:下载pyreadline3,在当前激活的虚拟环境中执行如下命令:

python -m pip install pyreadline

(2)在启动cli_demo的时候报错:AttributeError: module 'collections' has no attribute 'Callable' 解决方案:这是pyreadline依赖包的文件py3k_compat.py有问题,需要修改依赖包的代码,把return isinstance(x, collections.Callable)改为 return isinstance(x, collections.abc.Callable)即可正常使用。

处理完上述问题之后,ChatGLM-6B\cli_demo.py该脚本可以正常运行,控制台会输出脚本内置问题的答案,由于电脑配置的问题,结果输出非常缓慢,且我的CPU使用率一直是100%,爆了!