Transformers 文档

量化

量化

量化技术专注于用较少的信息表示数据,同时尽量不损失太多准确性。这通常意味着将数据类型转换为用更少的位数表示相同的信息。例如,如果您的模型权重存储为32位浮点数,并且它们被量化为16位浮点数,这将使模型大小减半,从而更容易存储并减少内存使用。较低的精度还可以加速推理,因为用较少的位数进行计算所需的时间更少。

有兴趣向Transformers添加新的量化方法吗?阅读HfQuantizer指南以了解如何操作!

如果您是量化领域的新手,我们建议您查看这些与DeepLearning.AI合作的关于量化的初学者友好课程:

何时使用什么?

社区已经为各种使用场景开发了许多量化方法。使用Transformers,您可以根据您的使用场景运行这些集成方法中的任何一种,因为每种方法都有其自身的优缺点。

例如,一些量化方法需要使用数据集对模型进行校准,以实现更准确和“极端”的压缩(高达1-2位量化),而其他方法则可以直接使用即时量化。

另一个需要考虑的参数是与目标设备的兼容性。您希望在CPU、GPU还是Apple芯片上进行量化?

简而言之,支持多种量化方法可以让您为特定用例选择最佳的量化方法。

使用下表帮助您决定使用哪种量化方法。

量化方法 即时量化 CPU CUDA GPU RoCm GPU (AMD) Metal (Apple Silicon) Intel GPU torch.compile() 支持 位数 支持微调(通过 PEFT) 可与 🤗 transformers 序列化 🤗 transformers 支持 库链接
AQLM 🔴 🟢 🟢 🔴 🔴 🔴 🟢 1 / 2 🟢 🟢 🟢 https://github.com/Vahe1994/AQLM
AWQ 🔴 🟢 🟢 🟢 🔴 🟢 ? 4 🟢 🟢 🟢 https://github.com/casper-hansen/AutoAWQ
bitsandbytes 🟢 🟡 * 🟢 🟡 * 🔴 ** 🟡 * 🔴 (即将推出!) 4 / 8 🟢 🟢 🟢 https://github.com/bitsandbytes-foundation/bitsandbytes
compressed-tensors 🔴 🟢 🟢 🟢 🔴 🔴 🔴 1 - 8 🟢 🟢 🟢 https://github.com/neuralmagic/compressed-tensors
EETQ 🟢 🔴 🟢 🔴 🔴 🔴 ? 8 🟢 🟢 🟢 https://github.com/NetEase-FuXi/EETQ
GGUF / GGML (llama.cpp) 🟢 🟢 🟢 🔴 🟢 🔴 🔴 1 - 8 🔴 查看 GGUF 部分 查看 GGUF 部分 https://github.com/ggerganov/llama.cpp
GPTQ 🔴 🔴 🟢 🟢 🔴 🔴 🔴 2 - 3 - 4 - 8 🟢 🟢 🟢 https://github.com/AutoGPTQ/AutoGPTQ
HQQ 🟢 🟢 🟢 🔴 🔴 🔴 🟢 1 - 8 🟢 🔴 🟢 https://github.com/mobiusml/hqq/
optimum-quanto 🟢 🟢 🟢 🔴 🟢 🔴 🟢 2 / 4 / 8 🔴 🔴 🟢 https://github.com/huggingface/optimum-quanto
FBGEMM_FP8 🟢 🔴 🟢 🔴 🔴 🔴 🔴 8 🔴 🟢 🟢 https://github.com/pytorch/FBGEMM
torchao 🟢 🟢 🔴 部分支持(仅限int4权重) 🔴 4 / 8 🟢🔴 🟢 https://github.com/pytorch/ao

* bitsandbytes 正在进行重构,以支持除 CUDA 之外的多种后端。目前,ROCm(AMD GPU)和 Intel CPU 的实现已经成熟,Intel XPU 正在开发中,预计将在 Q4/Q1 支持 Apple Silicon。有关安装说明和最新后端更新,请访问 此链接

我们重视您的反馈,以帮助在正式发布前识别错误!查看这些文档以获取更多详细信息和反馈链接。

** bitsandbytes 正在寻找贡献者来帮助开发和领导 Apple Silicon 后端。感兴趣吗?通过他们的仓库直接联系他们。赞助可能提供津贴。

< > Update on GitHub