前言
如果能够本地自己搭建一个ChatGPT的话,训练一个属于自己知识库体系的人工智能AI对话系统,那么能够高效的处理应对所属领域的专业知识,甚至加入职业思维的意识,训练出能够结合行业领域知识高效产出的AI。这必定是十分高效的生产力工具,且本地部署能够保护个人数据隐私,能够内网搭建办公使用也十分的方便。
而对于ChatGLM来说最大的优点就是本地能快速部署且需要资源较比与ChatGPT相当低,还要什么自行车,够用就好。甚至能够在一些性能较高的服务器单点部署,INT4 量化级别下最低只需 6GB 显存。而且我们根本不需要那么宽泛的知识面,只需要垂直一个知识领域深度就足够应对较多业务场景,故ChatGLM确实是较好的二次开发基础工具。
那么不继续发表意见了,本地部署ChatGLM还是会遇到较多问题,建议各位先弄清楚本地开发环境以及电脑配置再根据我给出的组件兼容表对照,不同的配置和环境需要采用不同的安装策略。当然我也只有一台电脑部署很多情况没遇到也不知道如何处理,若是大家根据我的文章部署遇到困难请在评论区或者私信告知我,谢谢各位的支持。
部署依赖
1.硬件需求
这是ChatGLM的开源项目:https://github.com/Fanstuck/ChatGLM-6B。里面可以看到硬件需求,这是硬性要求如果不满足肯定是部署不了的,只能升级电脑配置了:
2.环境需求
再看依赖文件requirements.txt:
很多人这里就已经开始pip install -r requirements.txt,但是这里需要注意的是torch下载会出问题,而且大概率下载的会是cpu版本。我这里不建议直接pip install,对于有GPU的同学来说肯定下载GPU版本的torch最优,且不清楚自己cuda的版本下很容易下载的torh和cudnn版本不兼容,所以这里单独说一下torch该如何安装合适的版本。
首先先看一下NVIDIA支持最高的cuda版本:
cmd输入nvidia-smi就可以看到:
这里显示我的cuda版本为11.7,下载比这低的版本就好了。
但是这里需要注意cuda版本和torch版本是对应的:
pytorch历史版本下载:
https://pytorch.org/get-started/previous-versions/,只要低于11.7版本的torch都是可以的。
若是pip下载time out的下载wheel:https://download.pytorch.org/whl/torch_stable.html
模型下载
下载ChatGLM有两种方式,一种是通过transformers直接下载,通过调用代码就可以下载到本地,下载默认本地的目录为:
C:\Users.cache\huggingface\modules\transformers_modules
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()
当然下载太慢的话也可以在Hugging Face Hub里面下载:https://huggingface.co/THUDM/chatglm-6b
不需要frok直接clone就可以了。版主还提供了不同编译后的版本可供下载,我这边就下载了已经编译后的int4版本,我的内存只有16G且显存128M很低故带不起原生模型。
这样的话文件不需要下载到C盘下面,可以自己选择要下载的目录。
下载完成之后里面提供了两个demo可以测试,需要修改函数AutoTokenizer.from_pretrained中的THUDM/chatglm-6b,也就是pretrained_model_name_or_path更换成你下载chatGLM的目录就可以使用了。
如果你的显存配置有限的话可以选择以量化方式加载模型,比如:
# 按需修改,目前只支持 4/8 bit 量化
model = AutoModel.from_pretrained("THUDM/chatglm-6b", trust_remote_code=True).quantize(4).half().cuda()
模型量化会带来一定的性能损失,经过测试,ChatGLM-6B 在 4-bit 量化下仍然能够进行自然流畅的生成。
量化过程需要在内存中首先加载 FP16 格式的模型,消耗大概 13GB 的内存。如果你的内存不足的话,可以直接加载量化后的模型,仅需大概 5.2GB 的内存:
model = AutoModel.from_pretrained("THUDM/chatglm-6b-int4", trust_remote_code=True).half().cuda()
我这边直接下载的int4模型不需要再加载整个模型了。
如果你没有 GPU 硬件的话,也可以在 CPU 上进行推理,但是推理速度会更慢。使用方法如下,需要大概 32GB 内存:
model = AutoModel.from_pretrained("THUDM/chatglm-6b", trust_remote_code=True).float()
模型使用
以我的计算机来说平常内存就有
11G占用了,运行该模型肯定会报OOM,推荐大家把一些暂时不需要的进程杀掉尽可能多的留多点内存再跑模型:
这里推荐在终端上面运行不要用pycharm,内存更多:
使用web_demo.py可以直接在网站上面对话:
我这里直接OOM了没有办法,大家计算机好点就没问题。