Transformers documentation

HQQ

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

and get access to the augmented documentation experience

to get started

HQQ

Half-Quadratic Quantization (HQQ) 支持 8、4、3、2 位甚至 1 位的快速即时量化。它无需校准数据,并且兼容任意模型模态(LLM、视觉等)。

HQQ 还支持使用 PEFT 进行微调,并且与 torch.compile 完全兼容,可实现更快的推理和训练速度。

使用以下命令安装 HQQ,以获取最新版本,并在您使用 cuda 设备时构建其对应的 CUDA 内核。它还支持 Intel XPU,采用纯 PyTorch 实现。

pip install hqq

您可以选择使用相同的量化配置替换模型中的所有线性层,或者为特定的线性层指定特定的量化配置。

替换所有层
仅特定层

通过创建一个 HqqConfig 并指定 nbits 和 group_size,对模型的所有线性层(torch.nn.Linear)进行替换,从而量化该模型。

import torch
from transformers import AutoModelForCausalLM, AutoTokenizer, HqqConfig

quant_config = HqqConfig(nbits=8, group_size=64)
model = AutoModelForCausalLM.from_pretrained(
    "meta-llama/Llama-3.1-8B", 
    dtype=torch.float16, 
    device_map="auto", 
    quantization_config=quant_config
)

后端

HQQ 支持多种后端,包括纯 PyTorch 和自定义反量化 CUDA 内核。这些后端适用于较旧的 GPU 以及 PEFT/QLoRA 训练。

from hqq.core.quantize import *

HQQLinear.set_backend(HQQBackend.PYTORCH)

为了获得更快的推理速度,HQQ 支持在模型量化后使用 4 位融合内核(torchao 和 Marlin)。在单张 4090 上,这些内核的速度最高可达 200 tokens/sec。下面的示例演示了如何启用 torchao_int4 后端。

from hqq.utils.patching import prepare_for_inference

prepare_for_inference("model", backend="torchao_int4")

有关更多详细信息,请参阅 Backend 指南。

资源

阅读 大型机器学习模型的半二次量化 博客文章,了解更多关于 HQQ 的详细信息。

Update on GitHub