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 并指定 `nbits` 和 `group_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 个 Token。下面的示例演示了如何启用 torchao_int4 后端。

from hqq.utils.patching import prepare_for_inference

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

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

资源

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

< > 在 GitHub 上更新