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).
选择一种方法
如果您的检查点已经量化,则量化方法由检查点决定。请按照加载预量化检查点中所示的方式加载它。否则,请根据您的硬件以及加载后需要对模型执行的操作来选择方法。
从你的目标开始
每一行都推荐了一种首选尝试方法。在确定使用某一种方法之前,请先查看完整的对比表。
| 目标 | 从 | 为什么 |
|---|---|---|
| 以最少配置,用更少内存训练模型 | bitsandbytes | 在加载时进行 4 位或 8 位量化,无需校准,支持在 CUDA、XPU、HPU 和 CPU 上运行,并支持保存和微调。 |
| 使用 QLoRA 进行微调 | bitsandbytes | 支持使用 PEFT 进行 4 位 NF4 量化。HQQ、EETQ、GPTQ、SINQ 和 Quanto 也支持微调。 |
使用 torch.compile 加速推理 | torchao | generate 会自动使用静态缓存来编译 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 上运行 FP4 | NVFP4 | 在加载时量化为 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 | 工作流 | 位 | 硬件 | 保存 | 微调 | 自动编译 |
|---|---|---|---|---|---|---|---|
| AQLM | aqlm | 仅支持预量化 | 1–2 | CUDA、CPU | ✅ | ✅ 适用于 aqlm>=1.0.2 | ❌ |
| AutoRound | auto-round | 仅支持预量化 | 2–8 | CUDA、XPU、CPU | ✅ | ❌ | ❌ |
| AWQ | awq | 仅支持预量化 | 4 | CUDA、ROCm、XPU、CPU | ✅ 除 ExLlama 后端外 | ✅ 适用于 gptqmodel>=5.0.0 | ❌ |
| BitNet | bitnet | 仅支持预量化 | 1.58 | CUDA | ✅ | 仅 autobitlinear 支持 online 模式 | ❌ |
| bitsandbytes | bitsandbytes | 加载时 | 4, 8 | CUDA、XPU、HPU、CPU | ✅ | ✅ | ❌ |
| compressed-tensors | compressed-tensors | 仅支持预量化 | 按检查点设置 | CUDA、XPU、MPS、CPU | ✅ | ✅ 但 FP8 内核除外 | ✅ |
| EETQ | eetq | 加载时 | 8 | CUDA | ✅ | ✅ | ❌ |
| FBGEMM FP8 | fbgemm_fp8 | 加载时 | 8 | CUDA(计算能力 9.0+)、XPU | ✅ | ❌ | ❌ |
| 细粒度 FP8 | fp8, mxfp8 | 加载时 | 8 | CUDA(计算能力 8.9+)、XPU | ✅ | ❌ | ✅ |
| 四比六 | fouroversix | 加载时 | 4 | CUDA(在 Blackwell 上速度最快),CPU | ✅ | 仅在 keep_master_weights=True 时 | ❌ |
| FP-Quant | fp_quant | 加载时 | 4 | CUDA、XPU | ✅ | 仅在 store_master_weights=True 时 | ❌ |
| GGUF | gguf | 仅支持预量化 | 1–8 | CUDA、MPS、XPU、CPU | ❌ | ❌ | ✅ |
| GPTQ | gptq | 在加载过程中,进行校准 | 2, 3, 4, 8 | CUDA、ROCm、XPU、CPU | ✅ | ✅ | ❌ |
| HIGGS | higgs | 加载时 | 2, 3, 4 | CUDA | ✅ | ❌ | ❌ |
| HQQ | hqq | 加载时 | 1, 2, 3, 4, 8 | CUDA、XPU | ✅ | ✅ | ❌ |
| Metal | metal | 加载时 | 2, 4, 8 | MPS | ✅ | ❌ | ❌ |
| MXFP4 | mxfp4 | 加载时 | 4 | CUDA(计算能力 7.5+)、XPU、CPU | ✅ | ❌ | ❌ |
| NVFP4 | nvfp4 | 加载时 | 4 | 一块 Blackwell GPU | ❌ | ❌ | ✅ |
| Quanto | quanto | 加载时 | 2, 4, 8 | CUDA、MPS、XPU、CPU | ❌ | ✅ | ❌ |
| Quark | quark | 仅支持预量化 | 按检查点设置 | CUDA、ROCm、CPU | ❌ | ❌ | ❌ |
| SINQ | sinq | 加载时 | 2, 3, 4, 6, 8 | 一个 CUDA GPU,CPU | ✅ | ✅ | ❌ |
| SpQR | spqr | 仅支持预量化 | 3 | CUDA | ✅ | ❌ | ❌ |
| torchao | torchao | 加载时 | 4, 8 | CUDA、XPU、CPU | ✅ | 仅 8 位方案 | ✅ |
| VPTQ | vptq | 仅支持预量化 | 1–8 | CUDA | ✅ | ❌ | ❌ |
使用量化选择器检查内存
量化选择器会估算模型在每种精度下(包括 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 | 准确率 |
|---|---|---|---|
| 8 | bitsandbytes int8、HQQ、Quanto、torchao、FP8 | 体积缩小约 2 倍 | 非常接近 bf16 |
| 4 | AWQ、GPTQ、HQQ、bitsandbytes NF4、SINQ | 小约 4 倍 | 高。AWQ 和 GPTQ 通常表现领先,但需要进行校准。 |
| 低于 4 | VPTQ、AQLM、2-bit GPTQ | 缩小 4 倍以上 | 性能下降明显,尤其是在 2 bits 时。AQLM 和 VPTQ 的量化耗时较长。 |
Update on GitHub在确定生产环境所用的方法之前,请先在您的任务和硬件上对准确率和速度进行基准测试。