ChatGLM-6B与VisualGLM-6B:大语言模型在对话领域的应用
ChatGLM-6B

ChatGLM-6B与VisualGLM-6B:大语言模型在对话领域的应用

ChatGLM-6B是清华大学开源的大型语言模型,支持中英双语对话,具有62亿参数,基于通用的语言框架(GLM)训练,可在本地部署于消费级显卡上,提供Web UI以及Gradio接口。其作者提到,在Mac M1和Google Colab上运行时需要降低内存参数,且M1不支持GPU。项目官网提供了代码及依赖的下载,运行时需进入目录并安装依赖,运行web_demo_vision.py即可进行多模态对话。
手把手教你本地部署清华大学KEG的ChatGLM-6B模型——Windows+6GB显卡版本和CPU版本的本地部署
ChatGLM-6B

手把手教你本地部署清华大学KEG的ChatGLM-6B模型——Windows+6GB显卡版本和CPU版本的本地部署

ChatGLM-6B是清华大学知识工程和数据挖掘小组发布的一个类似ChatGPT的开源对话机器人,由于该模型是经过约1T标识符的中英文训练,且大部分都是中文,因此十分适合国内使用。本文原文来自DataLearner官方博客:https://www.datalearner.com/blog/1051680925189690ChatGLM-6B在DataLearner官方的模型卡信息:https://www.datalearner.com/ai-models/pretrained-models/ChatGLM-6B根据GitHub开源项目公开的信息,ChatGLM-6B完整版本需要13GB显存做推理,但是INT4量化版本只需要6GB显存即可运行,因此对于个人本地部署来说十分友好。遗憾的是,官方的文档中缺少了一些内容导致大家本地部署会有很多问题,本文将详细记录如何在Windows环境下基于GPU和CPU两种方式部署使用ChatGLM-6B,并说明如何规避其中的问题。安装前说明部署前安装环境1、下载官方代码,安装Python依赖的库2、下载INT4量化后的预训练结果文件Windows+GPU部署方案1、Windows+GPU方案的必备条件2、运行部署GPU版本的INT4量化的ChatGLM-6B模型Windows+CPU部署方案1、Windows+CPU方案的必备条件2、运行部署CPU版本的INT4量化的ChatGLM-6B模型总结安装前说明尽管ChatGLM-6B的GitHub上提供了安装部署的教程,但是由于其提供的代码、预训练模型、配置文件并不是统一在一个地方,因此对于一些新手来说很容易出现各种错误。此外,由于大多数人可能只有较少内存的GPU,甚至是只有CPU,那么只能部署量化版本的模型,这里也会有不一样的。最后,部署ChatGLM-6B目前涉及到从GitHub、HuggingFace以及清华云的地址,下面我们将详细说明如何操作。部署前安装环境在部署ChatGLM-6B之前,我们需要安装好运行的环境。下面2个步骤是不管你部署CPU还是GPU版本都需要做的。1、下载官方代码,安装Python依赖的库首先,我们需要从GitHub上下载ChatGLM的requirements.txt来帮助我们安装依赖的库。大家只需要在GitHub上下载requirements.txt即可。下载地址:https://github.com/THUDM/ChatGLM-6B文件如下图所示:这个文件记录了ChatGLM-6B依赖的Python库及版本,大家点击右上角Code里面有Download ZIP,下载到本地解压之后就能获取这个文件。然后执行如下命令即可:pip install –r requirements.txt注意,这是从cmd进入到requirements.txt文件所在的目录执行的结果,这部分属于Python基础,就不赘述了。需要注意的是,ChatGLM依赖HuggingFace的transformers库,尽管官方说:使用 pip 安装依赖:pip install -r requirements.txt,其中 transformers 库版本推荐为 4.27.1,但理论上不低于 4.23.1 即可。但是实际上,必须是4.27.1及以上的版本才可以,更低版本的transformers会出现如下错误:AttributeError:Loggerobject has no attribute “warning_once”所以,一定要查看自己的transformers版本是否正确。另外,ChatGLM-6B依赖torch,如果你有GPU,且高于6G内存,那么建议部署GPU版本,但是需要下载支持cuda的torch,而不是默认的CPU版本的torch。2、下载INT4量化后的预训练结果文件在上述的依赖环境安装完毕之后,大家接下来就要下载预训练结果。INT4量化的预训练文件下载地址:https://huggingface.co/THUDM/chatglm-6b-int4/tree/main需要注意的是,在GitHub上,官方提供了模型在清华云上的下载地址,但是那个只包含预训练结果文件,即bin文件,但实际上ChatGLM-6B的运行需要模型的配置文件,即config.json等,如下图所示:因此建议大家全部从HuggingFace上下载所有文件到本地。上述文件全部下载之后保存到本地的一个目录下即可,我们保存在:D:\\data\\llm\\chatglm-6b-int4Windows+GPU部署方案1、Windows+GPU方案的必备条件部署GPU版本的ChatGLM-6B需要安装cuda版本的torch,大家需要检测自己的torch是否正确,可以通过如下命令检查(下面是python代码):import torchprint(torch.cuda.is_available())如果以上代码输出的是True,那么恭喜你,你安装的是cuda版本的torch(注意,有显卡也需要大家下载cuda和cudann安装成功才可以,这部分大家可以去网上找教程)。如下图所示:注意,目前ChatGLM-6B有3个版本可以使用,没有量化的版本做推理需要13G的GPU显存,INT8量化需要8GB的显存,而INT4量化的版本需要6GB的显存。模型量化会带来一定的性能损失,经过测试,ChatGLM-6B 在 4-bit 量化下仍然能够进行自然流畅的生成。本机只有6GB的显存,只能使用INT4版本了。2、运行部署GPU版本的INT4量化的ChatGLM-6B模型GPU版本的模型部署很简单,上述两个步骤完成之后即可运行。代码如下:from transformers importAutoTokenizer,AutoModeltokenizer =AutoTokenizer.from_pretrained(“D:\\data\\llm\\chatglm-6b-int4”, trust_remote_code=True, revision=“”)model =AutoModel.from_pretrained(“D:\\data\\llm\\chatglm-6b-int4”, trust_remote_code=True, revision=“”).half().cuda()model = model.eval()response, history = model.chat(tokenizer,“你好”, history=[])print(response)注意,这里有几个地方需要和大家说明一下。首先,这里的地址都是D:\\data\\llm\\chatglm-6b-int4写法,即\\,不能写成D:/data/llm/chatglm-6b-int4。否则可能会出现如下错误:OSError:[WinError123]文件名、目录名或卷标语法不正确。:C:\\Users\\DataLearner\\.cache\\huggingface\\modules\\transformers_modules\\D:这是因为Windows版本路径分隔符的问题导致的。需要注意!此外,我们的代码中加了revision=””参数,主要是规避如下告警:Explicitly passing a revision is encouraged when loading a configuration...