HF地址:https://huggingface.co/blog/overview-quantization-transformers
1. 量化模型主要用于两个目的:在较小的设备上运行大模型的推理;在量化模型的基础上微调adapter。
2. Huggingface Transformers中目前主要支持两种量化方案:bitsandbytes和auto-gptq。
3. bitsandbytes的优势:
– 使用简单,可以开箱即用对任何包含torch.nn.Linear模块的模型进行量化。
– 跨模态兼容性好,任意包含torch.nn.Linear的模型都可以直接量化,如Whisper、ViT、Blip2等。
– 与adapter合并后性能不降低。
4. auto-gptq的优势:
– 对文本生成速度快。
– 支持2-bit量化,但可能精度损失严重。
– 可以序列化任意bit数的模型。
– 支持AMD GPU。
5. bitsandbytes的改进空间:
– 对文本生成速度较慢。
– 4-bit模型目前不支持序列化。
6. auto-gptq的改进空间:
– 需要校准数据集,可能会让部分用户望而却步。
– 目前只支持语言模型量化。
7. 基准测试显示bitsandbytes更适合微调,auto-gptq更适合生成。
8. 一种获取更好合并模型的方法:
– 用bitsandbytes量化基模型
– 微调adapter
– 将adapter合并到基模型或反量化模型
– 用auto-gptq量化合并后的模型用于部署
9. 量化导致的性能下降很小,大模型下降更小。
10. 整体而言,两种量化方案各有优势,可以根据实际使用场景选择。