OpenPPL / ppq

PPL Quantization Tool (PPQ) is a powerful offline neural network quantization tool.
Apache License 2.0
1.56k stars 236 forks source link

想利用PPQ做大模型量化的一些疑问 #498

Open ehuaa opened 1 year ago

ehuaa commented 1 year ago

大佬好,现在想利用PPQ实现一些大模型量化的方法,有以下几个问题:

  1. 看之前的代码貌似是有PPLCUDA_INT4_Quantizer,int4量化的,这个移除的原因是什么呢,是因为这个quantizer量化的效果不佳么
  2. 假如基于ppq实现了3bit 4bit模型的量化存到onnx里面了,想问下怎么存储权重呢,是不是用make_tensor的时候把权重encode到8bit里面存成bytes,onnx make_tensor的时候放到raw_data里面呢?
ZhangZhiPku commented 1 year ago
  1. 你不能用PPQ完成大语言模型的量化,大语言模型的量化方案与传统模型不同,我们没有在PPQ里实现相关内容。
  2. PPLCUDA_INT4_Quantizer已经被移除,因为PPL CUDA后续的开发计划中没有了INT4的开发规划。
  3. 3bit, 4bit量化无法用onnx表示。
ehuaa commented 1 year ago

多谢回复

对于1,我其实是想基于PPQ的结构二次开发做LLM的量化,目前的想法是比如将Llama 转成onnx然后送到 ppq中,自定义将FuseAttention等操作变成一个pass封装到ppq的流程里面(从而借助ppq对很多onnx算子的forward实现以及成熟的工程化实现),因为很多的硬件部署现在其实还是对onnx模型支持的比较好。

对于3,想问下大佬你们目前做4bit量化的中间结果保存用的什么格式呢 是类似 https://github.com/onnx/onnx/issues/4192 这种pack的方式么 谢谢 @ZhangZhiPku

Jasonzzt commented 1 year ago

多谢回复

对于1,我其实是想基于PPQ的结构二次开发做LLM的量化,目前的想法是比如将Llama 转成onnx然后送到 ppq中,自定义将FuseAttention等操作变成一个pass封装到ppq的流程里面(从而借助ppq对很多onnx算子的forward实现以及成熟的工程化实现),因为很多的硬件部署现在其实还是对onnx模型支持的比较好。

对于3,想问下大佬你们目前做4bit量化的中间结果保存用的什么格式呢 是类似 onnx/onnx#4192 这种pack的方式么 谢谢 @ZhangZhiPku

想问下,基于PPQ的结构二次开发做LLM的量化 这个思路现在测试过可行吗?