chatglm2-6B是最近比较火爆的大模型,可以在消费级显卡上部署使用,适合学习。但是一般人也不一定有那么高的硬件配置,所以部署个int4版本应该是大多数人的最好选择。我就在家里部署起了int4版本的chatglm2-6B,记录一下免得忘了。
几个步骤:
1. 安装pytorch-gpu, 这个可以看下前一个博客:win10安装pytorch GPU_相国的博客-CSDN博客
2. 下载chatglm2的源码,并安装它的依赖
创建新的python环境,然后上chatglm2-6B的官方github下载源码GitHub - THUDM/ChatGLM2-6B: ChatGLM2-6B: An Open Bilingual Chat LLM | 开源双语对话语言模型 直接右键下载打包的源码即可,解压到本地目录
里面 model 目录是新创建的,为了放chatglm2的模型文件。
然后在你的Python环境中 pip install -r requirements.txt 就行。 下载的库很多记得用国内pip源!
这里我直接用前一个博客pytorch的那个环境,正好chatglm2也是用pytorch 2.0.1 ,这样就少下载一个巨库。
3. 下载chatglm2-int4的模型文件
从THUDM/chatglm2-6b-int4 at main (huggingface.co)
下载里面的模型文件下来,放到上面的model目录里。
里面重点是那个3.9G的 pytorch_model.bin文件,据说下载速度比较慢,我是从清华大学云盘下载的:清华大学云盘 (tsinghua.edu.cn)
(其实模型文件放哪里无所谓,不提前下载也行,它会按huggingface transformer下载模型的方式下载到被本地的)
4. 修改使用模型的py脚本
清华官方提供了几种使用chatglm2的方式,有cli, http, gradio, streamlit, 根据你的需要打开相应的py的文件,修改 from_pretrained 函数那里,一共三处,以streamlit为的web_demo2.py例
所有的模型加载改成下面:
tokenizer = AutoTokenizer.from_pretrained(r"D:\LLM\ChatGLM2-6B-main\model", trust_remote_code=True)
model = AutoModel.from_pretrained(r"D:\LLM\ChatGLM2-6B-main\model", trust_remote_code=True).half().cuda()
图片可能有点长,需要打开来看。就是from_pretrained的两个路径地址,改为你保存模型的目录地址;另外一个是int4的启动方式,增加一个 .half() 。 原来chatglm2的官方源码里是没有这个的,我就按照THUDM/chatglm2-6b-int4 · Hugging Face 这里改。
不同客户端有不同启动方式,比如streamlit的是: streamlit run web_demo2.py
int4的速度确实是不怎么快 :(
5. 踩过的坑
看了一些博客写的部署过程,感觉不难,但实际操作起来还是有一些问题。
比如model的路径我之前直接用相对路径报了个模型找不到的错,于是我改成了绝对路径。
比如有博客是下载chatglm2模型的N个bin文件回来,修改量化启动方式有些不是用 .half() 的,这就不细说了。
最后一个启动访问客户端以后,命令行出现了缺少gcc ,但不影响使用,就没理它