[THUDM/ChatGLM-6B][Feature] 如何贡献GPTQ相关的代码以及模型

2024-06-12 797 views
8

Hi,我目前已经用GPTQ对ChatGLM-6B做了8/4bit的量化,量化后的模型依旧能够流畅对话。想问一下如果如果贡献这部分内容的话,该怎么操作。我想了一些可能的形式哈:

  1. 直接贡献GPTQ calibrated 的模型参数,并适配ChatGLM的推理流程。
  2. 我对GPTQ做了一定的工具化,可以把这部分内容直接直接贡献到.quantize接口里来

上面两种方法背后都还有一些待讨论的点,例如GPTQ理论上应该是比min/max的算法要好,但是他需要一定的calibration set,我手边没有相关数据集来采样calibration set,也没办法定量说明GPTQ calibrated的模型精度好于min/max。以及GPTQ的校准过程会有更高的内存/显存的要求。

回答

9

我觉得可以采用方法2,然后我们来完成calibration的过程?

2

我觉得可以采用方法2,然后我们来完成calibration的过程?

那我先适配一下quantize接口然后把代码传上来

0

我已经把初版代码pr到hf的repo里了,见这里。目前测下来还有个显存残留的问题,量化好的模型显存占用还是偏大,save&reload之后显存就正常了,我还在查找原因。

2

@duzx16 显存的问题目前已经解决了~

8

@duzx16 显存的问题目前已经解决了~

好的,我明天看一下

8

@duzx16 显存的问题目前已经解决了~

有GPTQ量化后的模型地址吗,体验下

0

@duzx16 写了一份 GPTQ int4 group32 的分组量化,实现方式和按行的有点区别,算子模仿 GPTQ-for-llama 用 openai triton 实现的。效果上体感和 float16 无异,仓库在这里,自己量化的模型在 readme 链接里。