Transformers 文档

VPTQ

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

VPTQ

向量后训练量化 (VPTQ) 是一种后训练量化 (PTQ) 方法,它利用向量量化以极低的位宽(<2 位)量化 LLM。VPTQ 可以在不重新训练的情况下将 70B 甚至 405B 模型压缩到 1-2 位,并仍然保持高精度。它是一种轻量级量化算法,量化一个 405B 模型大约需要 17 小时。VPTQ 具有灵活的量化推理,具有低解码开销、高吞吐量和首次令牌时间 (TTFT) 短的特点。

运行以下命令安装 VPTQ,它为 NVIDIA 和 AMD GPU 上的推理提供了高效的内核。

pip install vptq

VPTQ 社区 提供了一系列 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 在线演示 空间 中查看 VPTQ 的示例演示,或尝试运行 VPTQ 推理 notebook

欲了解更多信息,请阅读 VPTQ 论文

< > 在 GitHub 上更新