Transformers 文档
VPTQ
加入 Hugging Face 社区
并获得增强的文档体验
开始使用
VPTQ
Vector Post-Training Quantization (VPTQ) 是一种后训练量化 (PTQ) 方法,它利用向量量化以极低的位宽(<2-bit)量化 LLM。VPTQ 可以将 70B 甚至 405B 模型压缩到 1-2 位,而无需重新训练,并且仍然保持高精度的水平。它是一种轻量级的量化算法,量化一个 405B 模型大约需要 17 个小时。VPTQ 具有敏捷的量化推理功能,具有低解码开销、高吞吐量和首个令牌时间 (TTFT)。
运行以下命令安装 VPTQ,它为 NVIDIA 和 AMD GPU 上的推理提供了高效的内核。
pip install vptq
VPTQ-community 提供了一系列 VPTQ 量化模型。模型名称包含有关其位宽的信息(不包括 cookbook、参数和填充开销)。以 [Meta-Llama-3.1-70B-Instruct-v8-k65536-256-woft] 模型为例。
- 模型名称为 Meta-Llama-3.1-70B-Instruct。
- 质心数由 65536 (2^16) 给出。
- 残差质心数由 256 (2^8) 给出。
等效位宽计算如下。
- 索引:log2(65536) = 16 / 8 = 2 位
- 残差索引:log2(256) = 8 / 8 = 1 位
- 总位宽:2 + 1 = 3 位
由此,通过将 70B * 3 位 / 8 位/字节相乘来估算模型大小,总计为 26.25GB。
使用 from_pretrained() 加载 VPTQ 量化模型。
from transformers import AutoTokenizer, AutoModelForCausalLM
quantized_model = AutoModelForCausalLM.from_pretrained(
"VPTQ-community/Meta-Llama-3.1-70B-Instruct-v16-k65536-65536-woft",
torch_dtype="auto",
device_map="auto"
)
要量化您自己的模型,请参阅 VPTQ 量化算法教程 教程。
基准测试
VPTQ 在不同尺寸的模型中实现了更好的精度和更高的吞吐量,以及更低的量化开销。以下实验结果仅供参考;VPTQ 可以在合理的参数下实现更好的结果,尤其是在模型精度和推理速度方面。
模型 | 位宽 | W2↓ | C4↓ | AvgQA↑ | tok/s↑ | 内存 (GB) | 成本/小时↓ |
---|---|---|---|---|---|---|---|
LLaMA-2 7B | 2.02 | 6.13 | 8.07 | 58.2 | 39.9 | 2.28 | 2 |
2.26 | 5.95 | 7.87 | 59.4 | 35.7 | 2.48 | 3.1 | |
LLaMA-2 13B | 2.02 | 5.32 | 7.15 | 62.4 | 26.9 | 4.03 | 3.2 |
2.18 | 5.28 | 7.04 | 63.1 | 18.5 | 4.31 | 3.6 | |
LLaMA-2 70B | 2.07 | 3.93 | 5.72 | 68.6 | 9.7 | 19.54 | 19 |
2.11 | 3.92 | 5.71 | 68.7 | 9.7 | 20.01 | 19 |
资源
在 VPTQ 在线演示 Space 上查看 VPTQ 的示例演示,或尝试运行 VPTQ 推理 notebook。
有关更多信息,请阅读 VPTQ 论文。
< > 在 GitHub 上更新