Transformers 中原生支持的量化方案概述

本文旨在对 transformers 支持的各种量化方案及其优缺点作一个清晰的概述,以助于读者进行方案选择。

目前,量化模型有两个主要的用途:

  • 在较小的设备上进行大模型推理

  • 对量化模型进行适配器微调

到目前为止,transformers 已经集成并 原生 支持了 bitsandbytes 和 auto-gptq 这两个量化库。请注意,🤗 optimum 还支持更多的量化方案,但本文不会涉及这一块内容。

要详细了解每种方案的更多信息,可查看下文列出的相关资源,或者阅读相应的 transformers 文档。

另请注意,下文内容仅适用于 PyTorch 模型, Tensorflow 和 Flax/JAX 模型不在讨论范围之内。

目录

  • 资源

  • bitsandbytes 与 auto-gptq 之比较

  • 深入研究速度基准

  • 总结与最后的话

  • 致谢

资源

  • GPTQ 博文 – 概述什么是 GPTQ 量化方法以及如何使用它。

  • bistandbytes 4 比特量化博文 - 本文介绍了 4 比特量化和 QLoRa,QLoRa 是一种高效的微调方法。

  • bistandbytes 8 比特量化博文 - 本文解释了如何与 bitsandbytes 配合使用 8 比特量化。

  • 有关 GPTQ 基础用法的 Google Colab 笔记本 - 本笔记本展示了如何使用 GPTQ 方法量化你自己的 transformer 模型,如何用量化模型进行推理,以及如何对量化模型进行微调。

  • 有关 bitsandbytes 基础用法的 Google Colab 笔记本 - 该笔记本展示了如何在推理中使用 4 比特模型及其所有变体,以及如何在免费的 Google Colab 实例上运行 GPT-neo-X (20B 模型)。

  • Merve 撰写的关于量化的博文 - 本文简要介绍了量化以及 transformers 中原生支持的量化方法。

bitsandbytes 与 auto-gptq 之比较

本节我们将讨论 bitsandbytes 和 gptq 量化各自的优缺点。请注意,这些比较主要基于社区的反馈,它们具有一定的时效性,会随着时间的推移而变化,比如说其中一些功能缺失已被纳入相应库的路线图中了。

bitsandbytes 有什么好处?

简单: bitsandbytes 依旧是量化任何模型的最简单方法,因为它不需要量化校准数据及校准过程 (即零样本量化)。任何模型只要含有 torch.nn.Linear 模块,就可以对其进行开箱即用的量化。每当在 transformers 中添加新架构时,只要其可以用 accelerate 库的 device_map="auto" 加载,用户就可以直接受益于开箱即用的 bitsandbytes 量化,同时该方法对性能的影响也是最小的。量化是在模型加载时执行的,无需运行任何后处理或准备步骤。

跨模态互操作性: 由于量化模型的唯一条件是包含 torch.nn.Linear 层,因此量化对于任何模态都可以实现开箱即用。用户可以开箱即用地加载诸如 Whisper、ViT、Blip2 之类的 8 比特或 4 比特模型。

合并适配器 (adapter) 时性能下降为 0: (如果你对此不熟悉,请参阅 此文 以获得有关适配器和 PEFT 的更多信息)。如果你在量化基础模型之上训练适配器,则可以将适配器合并在基础模型之上进行部署,而不会降低推理性能。你甚至还可以在反量化模型之上 合并 适配器!GPTQ 不支持此功

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值