Transformers 文档

量化

Hugging Face's logo
加入 Hugging Face 社区

并获得增强文档体验

开始使用

量化

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

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

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

何时使用什么?

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

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

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

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

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

量化方法 动态量化 CPU CUDA GPU RoCm GPU (AMD) Metal (Apple 芯片) 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/
Quanto 🟢 🟢 🟢 🔴 🟢 🟢 2 / 4 / 8 🔴 🔴 🟢 https://github.com/huggingface/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 正在进行中,预计 Apple 芯片支持将在第四季度/第一季度发布。有关安装说明和最新的后端更新,请访问 此链接

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

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

< > 在 GitHub 上更新