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).
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
)通过创建一个字典来量化模型,该字典指定了要量化的线性层的 nbits 和 group_size。将它们传递给 HqqConfig,并使用该配置设置要量化的层。这种方法对于量化混合专家模型(MoE)特别有用,因为它们受较低量化设置的影响较小。
q4_config = {'nbits':4, 'group_size':64}
q3_config = {'nbits':3, 'group_size':32}
quant_config = HqqConfig(dynamic_config={
'self_attn.q_proj':q4_config,
'self_attn.k_proj':q4_config,
'self_attn.v_proj':q4_config,
'self_attn.o_proj':q4_config,
'mlp.gate_proj':q3_config,
'mlp.up_proj' :q3_config,
'mlp.down_proj':q3_config,
})
model = transformers.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