每日看点!低显存本地搭建chatglm int4量化版

来源:哔哩哔哩

正式标题:修复chatglm int4 gpu环境下加载cpu量化内核错误

大概说说原因和流程,水水字数,记录踩坑流程

chatglm模型太大,完整版和int8量化对8G显存设备不友好,8G适合使用int4量化减少显存不足情况。


(相关资料图)

chatglm webui自动下载的是全量模型大概13个G,使用GPU计算,全量模型先加载进内存,再cpu自动量化到int4,这期间浪费内存浪费cpu,而且也不缓存量化后的模型,如果内存不够或许加载都是问题。

对了,这十几个G都在C盘空间,还是个缓存文件夹,非常无语。

但可惜quantization.py写了一堆cpu内核处理代码,这会导致报错,而且搜不到正确的解决方案,也没有整合包。

闻达似乎有整合,但百度云太慢了,huggingface下载速度飞快,几十秒下完。

内核报错解决方案:

内核报错即运行到quantization.py时反复编译cup kernel,然后反复加载失败的问题。

启动文件我是照着启动的bat改写了一个启动方式,本质上只是做了指定模型路径的微小工作。

然后修改quantization.py文件,位置如图。手动指定so位置。

然后就能正常加载内核和正常启动了。

加载速度和系统占用比起完整模型得到了极大改善!

那么这个so文件怎么来的?

我不知道这个编译文件是不是通用的,如果通用的话明明可以直接提供,不用用户编译。如果是这样那就太蠢了。

装mingw,这是c++的编译器,网上搜即可,然后设置下环境变量。

启动webui 在找不到量化内核(quantization kernels)时,会自行执行编译,然后会在这里缓存。把它随便放个短路径的位置或者丢进模型文件夹,然后前面提到的修改的quantization.py的路径写对就行。

这可以看到明明已经正确编译了,可是原始程序偏偏因为无法读取而报错,这太蠢了。

所以就有了上面的方案,手动指定内核路径。

因为最初是写解决问题的,但想了想还是写下如何本地搭建,所以就成倒叙了。

搭建:

1.安装 git

2.找个空文件夹

3.输入 git clone https://github.com/Akegarasu/ChatGLM-webui

4.然后下载模型:

如果显存大如16G,就下载全量的chatglm-6b,12G用int8。

8G显存玩int8量化不稳,适合int4,即使int4也容易在十几轮后爆显存

5.启动方式后面加--model-path 用于指定模型文件夹路径

如图,我的文件夹是glm-int4,完整写法就是python webui.py --model-path "glm-int4"

6.使用webui-start.cmd启动,将自动安装环境。

使用和上面一样的方法修改模型所在路径。

如果不修改,默认将会下载13G的模型,那就违背优化加载初衷了。

正式使用

不过这个ai的智商就…很感人…很不稳定。而且输出公式会导致非常卡。

能跑就行,能跑就行

参数解释

top-p

模型不断生成回复时,它有许多可选字词。top-p低了候选就多,高了候选就少。

Temperature

温度用于调整随机程度的数字,小了模型输出结果尽可能一致,高了则更随机。

不过调这俩参数在这个模型和webui上我感觉没啥区别,重复问它只是不断复读。

关键词:

推荐

精彩放送

创投更多》

科技更多》

云计算