一、ChatGLM-6B模型介绍
最近,由ChatGPT带起了一波大模型的热潮,大家都想在本地部署一个类似ChatGPT的大模型。据官方介绍,ChatGLM-6B 是一个开源的、支持中英双语的对话语言模型,基于 General Language Model (GLM) 架构,具有 62 亿参数,结合模型量化技术,用户可以在消费级的显卡上进行本地部署(完整版的需要13GB显存,INT8版本的需要8GB显存,而INT4版本仅需要6GB的显存)。大家可以先查询一下本地CPU或GPU的显存大小,再下载相应的版本。
ChatGLM-6B 使用了和 ChatGPT 相似的技术,针对中文问答和对话进行了优化。经过约 1T 标识符的中英双语训练,辅以监督微调、反馈自助、人类反馈强化学习等技术的加持,62 亿参数的 ChatGLM-6B 已经能生成相当符合人类偏好的回答,想了解更多可以参考官方博客https://chatglm.cn/blog和GitHubGitHub - THUDM/ChatGLM-6B: ChatGLM-6B: An Open Bilingual Dialogue Language Model | 开源双语对话语言模型
二、环境安装
首先推荐用conda新建一个虚拟环境,然后在GitHub的文件中找到requirements.txt这个文件。这个文件里面是环境中需要安装的包,可以将GitHub中的文件一并下载到ChatGLM-6B文件中,然后cd到这个文件夹下,直接使用以下命令来安装所需要的包
pip install -r requirements.txt
可以分开安装,这里推荐使用清华镜像源来安装,网速较快,如:
pip install xxxx -i https://pypi.tuna.tsinghua.edu.cn/simple/
requirements.txt文件中共有以下几个包:,其中官方推荐的版本为protobuf==3.20.0、transformers==4.27.1。pytorch的话可以查看一下服务器的cuda版本,然后在pytorch官网安装对应版本,这里要求至少为1.10以上。
三、模型下载
完成了测试环境的部署,就可以去官网下载模型了。ChatGLM-6B根据其量化等级共有三个版本的模型,如图所示:
大家可以根据自己电脑的配置来选择模型,硬件配置比较高的建议选择完整模型,量化模型主要是对 ChatGLM-6B 中的28个GLM Block进行了不同等级的量化,与完整版相比可能性能略差。这里将不同模型的hugging下载地址附上:
FP16:THUDM/chatglm-6b at main (huggingface.co)
INT8:THUDM/chatglm-6b-int8 at main (huggingface.co)
INT4:THUDM/chatglm-6b-int4 at main (huggingface.co)
本文选择的是FP16,并将其在服务器上部署。Hugging的下载页面如图所示:
注意这里有一些bin,py文件和config.json配置文件等,所以最好全部下载下来。将所有文件下载到名为THUDM的文件夹中,并上传到服务器。
四、模型运行
完成环境配置和模型下载工作后可以直接开始进行模型的运行测试工作了,在终端切换到对应环境后,输入python进行python代码编译界面,然后依次输入以下代码:
from transformers import AutoTokenizer, AutoModel
tokenizer = AutoTokenizer.from_pretrained("THUDM/chatglm-6b", trust_remote_code=True)
model = AutoModel.from_pretrained("THUDM/chatglm-6b", trust_remote_code=True).half().cuda()
model = model.eval()
其中,AutoTokenizer.from_pretrained()
是Hugging Face Transformers 库中的一种方法,它允许加载一个特定模型架构的预训练分词器。该方法接受模型名称作为字符串,并返回相应分词器类的实例,使用该模型的正确设置进行初始化,可以节省时间和精力,中间需要花费一些时间,静静等待一下就行。
模型加载完毕就可以进行测试了,输入如下代码即可得到对应的输出。
response, history = model.chat(tokenizer, "输入内容", history=[])
接下来就可以开始愉快的测试啦!