HQQ
半二次量化(HQQ)通过快速鲁棒优化实现即时量化。它不需要校准数据,并且可以用于量化任何模型。
请参考官方包以获取更多详细信息。
对于安装,我们建议您使用以下方法来获取最新版本并构建其相应的CUDA内核:
pip install hqq
要对模型进行量化,您需要创建一个HqqConfig。有两种方法可以实现:
from transformers import AutoModelForCausalLM, AutoTokenizer, HqqConfig
# Method 1: all linear layers will use the same quantization config
quant_config = HqqConfig(nbits=8, group_size=64)
# Method 2: each linear layer with the same tag will use a dedicated quantization config
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,
})
第二种方法对于量化专家混合模型(MoEs)特别有趣,因为专家受较低量化设置的影响较小。
然后你只需如下量化模型
model = transformers.AutoModelForCausalLM.from_pretrained(
model_id,
torch_dtype=torch.float16,
device_map="cuda",
quantization_config=quant_config
)
优化运行时
HQQ 支持多种后端,包括纯 PyTorch 和自定义反量化 CUDA 内核。这些后端适用于较旧的 GPU 和 peft/QLoRA 训练。 为了更快的推理,HQQ 支持 4 位融合内核(TorchAO 和 Marlin),在单个 4090 上可以达到每秒 200 个令牌。 有关如何使用后端的更多详细信息,请参阅 https://github.com/mobiusml/hqq/?tab=readme-ov-file#backend
< > Update on GitHub