量化
量化技术侧重于用较少的信息表示数据,同时试图不损失太多精度。这通常意味着将数据类型转换为使用更少的位来表示相同的信息。例如,如果模型权重存储为 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 芯片后端。有兴趣?请通过他们的仓库直接联系他们。通过赞助可能提供津贴。