Transformers documentation

选择一种方法

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

选择一种方法

如果您的检查点已经量化,则量化方法由检查点决定。请按照加载预量化检查点中所示的方式加载它。否则,请根据您的硬件以及加载后需要对模型执行的操作来选择方法。

从你的目标开始

每一行都推荐了一种首选尝试方法。在确定使用某一种方法之前,请先查看完整的对比表。

目标从为什么
以最少配置,用更少内存训练模型bitsandbytes在加载时进行 4 位或 8 位量化,无需校准,支持在 CUDA、XPU、HPU 和 CPU 上运行,并支持保存和微调。
使用 QLoRA 进行微调bitsandbytes支持使用 PEFT 进行 4 位 NF4 量化。HQQ、EETQ、GPTQ、SINQ 和 Quanto 也支持微调。
使用 torch.compile 加速推理torchaogenerate 会自动使用静态缓存来编译 torchao 模型,并且 torchao 为 CUDA、XPU 和 CPU 提供了 int4、int8 和 FP8 方案。
获取最佳的 4 位精度GPTQ在加载时于数据集上进行校准。若要改用 AWQ 或 AutoRound,请使用它们的库进行量化,然后加载检查点。
在 Ada、Hopper 或 Intel XPU 上运行 FP8细粒度 FP8需要 CUDA 计算能力 8.9 或更高,或 XPU。FBGEMM FP8 需要计算能力 9.0 或更高,或 XPU。
在 Blackwell 上运行 FP4NVFP4在加载时量化为 NVIDIA 的 4 位浮点格式。MXFP4 支持计算能力 7.5 或更高的设备、XPU 以及 CPU。
在 Apple silicon 上运行Metal在加载时,在 MPS 上量化为 2、4 或 8 位。GGUF 文件也可以在 MPS 上加载。
加载使用 llm-compressor 创建的检查点compressed-tensors以 compressed-tensors 格式加载 FP8、int4 和 int8 检查点。
压缩至 4 位以下HQQ 或 SINQ在加载时进行量化,无需校准即可量化至 2 位或 3 位。AQLM、VPTQ 和 SpQR 检查点可以量化到更低的位数,但必须使用它们各自的库进行量化。
Show the full comparison table
方法quant_method工作流位硬件保存微调自动编译
AQLMaqlm仅支持预量化1–2CUDA、CPU✅✅ 适用于 aqlm>=1.0.2❌
AutoRoundauto-round仅支持预量化2–8CUDA、XPU、CPU✅❌❌
AWQawq仅支持预量化4CUDA、ROCm、XPU、CPU✅ 除 ExLlama 后端外✅ 适用于 gptqmodel>=5.0.0❌
BitNetbitnet仅支持预量化1.58CUDA✅仅 autobitlinear 支持 online 模式❌
bitsandbytesbitsandbytes加载时4, 8CUDA、XPU、HPU、CPU✅✅❌
compressed-tensorscompressed-tensors仅支持预量化按检查点设置CUDA、XPU、MPS、CPU✅✅ 但 FP8 内核除外✅
EETQeetq加载时8CUDA✅✅❌
FBGEMM FP8fbgemm_fp8加载时8CUDA(计算能力 9.0+)、XPU✅❌❌
细粒度 FP8fp8, mxfp8加载时8CUDA(计算能力 8.9+)、XPU✅❌✅
四比六fouroversix加载时4CUDA(在 Blackwell 上速度最快),CPU✅仅在 keep_master_weights=True 时❌
FP-Quantfp_quant加载时4CUDA、XPU✅仅在 store_master_weights=True 时❌
GGUFgguf仅支持预量化1–8CUDA、MPS、XPU、CPU❌❌✅
GPTQgptq在加载过程中,进行校准2, 3, 4, 8CUDA、ROCm、XPU、CPU✅✅❌
HIGGShiggs加载时2, 3, 4CUDA✅❌❌
HQQhqq加载时1, 2, 3, 4, 8CUDA、XPU✅✅❌
Metalmetal加载时2, 4, 8MPS✅❌❌
MXFP4mxfp4加载时4CUDA(计算能力 7.5+)、XPU、CPU✅❌❌
NVFP4nvfp4加载时4一块 Blackwell GPU❌❌✅
Quantoquanto加载时2, 4, 8CUDA、MPS、XPU、CPU❌✅❌
Quarkquark仅支持预量化按检查点设置CUDA、ROCm、CPU❌❌❌
SINQsinq加载时2, 3, 4, 6, 8一个 CUDA GPU,CPU✅✅❌
SpQRspqr仅支持预量化3CUDA✅❌❌
torchaotorchao加载时4, 8CUDA、XPU、CPU✅仅 8 位方案✅
VPTQvptq仅支持预量化1–8CUDA✅❌❌

使用量化选择器检查内存

量化选择器会估算模型在每种精度下(包括 KV 缓存)是否能适配您的硬件。选择模型、您的硬件以及该方法需要实现的功能,Compare 视图将列出符合条件的方法。

基准测试

以下基准测试在 Llama 3.1 8B 和 70B 上比较了多种方法。它们报告了准确率、每秒 token 吞吐量、峰值内存(GB)以及量化时间。

Llama 3.1 70B 在 bf16 下运行于 2 块 NVIDIA A100 80GB GPU。FP8 方法运行于 1 块 NVIDIA H100 80GB GPU,其余所有方法均运行于 1 块 NVIDIA A100 80GB GPU。吞吐量在 batch size 为 1、生成 64 个 token 的条件下测量。结果包含 torch.compile 和 Marlin 内核(在方法支持的情况下)。

结果分为三个位范围。

位基准测试的方法内存与 bf16准确率
8bitsandbytes int8、HQQ、Quanto、torchao、FP8体积缩小约 2 倍非常接近 bf16
4AWQ、GPTQ、HQQ、bitsandbytes NF4、SINQ小约 4 倍高。AWQ 和 GPTQ 通常表现领先,但需要进行校准。
低于 4VPTQ、AQLM、2-bit GPTQ缩小 4 倍以上性能下降明显,尤其是在 2 bits 时。AQLM 和 VPTQ 的量化耗时较长。

在确定生产环境所用的方法之前,请先在您的任务和硬件上对准确率和速度进行基准测试。

Update on GitHub