Transformers 文档

HQQ

Hugging Face's logo
加入 Hugging Face 社区

并获取增强的文档体验

开始使用

HQQ

半精度二次量化 (HQQ) 支持对 8、4、3、2 甚至 1 位进行快速即时量化。它不需要校准数据,并且与任何模型模态(LLM、视觉等)兼容。

HQQ 进一步支持使用 PEFT 进行微调,并且完全兼容 torch.compile,以实现更快的推理和训练。

使用以下命令安装 HQQ 以获取最新版本并构建其对应的 CUDA 内核。

pip install hqq

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

替换所有层
仅特定层

通过创建 HqqConfig 并指定 nbitsgroup_size 来量化模型,以替换模型的所有线性层 (torch.nn.Linear)。

from transformers import AutoModelForCausalLM, AutoTokenizer, HqqConfig

quant_config = HqqConfig(nbits=8, group_size=64)
model = transformers.AutoModelForCausalLM.from_pretrained(
    "meta-llama/Llama-3.1-8B", 
    torch_dtype=torch.float16, 
    device_map="cuda", 
    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。下面的示例演示了启用 torchao_int4 后端。

from hqq.utils.patching import prepare_for_inference

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

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

资源

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

< > 在 GitHub 上更新