HQQ简介
HQQ (Half-Quadratic Quantization) 是一种快速准确的模型量化器,无需校准数据即可在几分钟内量化最大的模型。它由 Mobius ML 团队开发,具有以下主要特点:
- 量化速度非常快
- 支持8、4、3、2、1比特量化
- 适用于各种模型(LLM、视觉模型等)
- 反量化步骤是线性操作,兼容各种优化的CUDA/Triton内核
- 与PEFT训练兼容
- 尝试与torch.compile完全兼容以加快推理和训练速度
官方资源
- GitHub仓库: mobiusml/hqq
- HQQ介绍博客: HQQ Blog
- HQQ+介绍博客: HQQ+ Blog
安装使用
- 安装HQQ:
pip install hqq
- 基本用法:
from hqq.core.quantize import *
# 量化设置
quant_config = BaseQuantizeConfig(nbits=4, group_size=64)
# 替换线性层
hqq_layer = HQQLinear(your_linear_layer,
quant_config=quant_config,
compute_dtype=torch.float16,
device='cuda')
进阶使用
与Transformers集成
HQQ可以与Hugging Face的Transformers库无缝集成:
from transformers import AutoModelForCausalLM, HqqConfig
quant_config = HqqConfig(nbits=4, group_size=64)
model = AutoModelForCausalLM.from_pretrained(
model_id,
torch_dtype=torch.float16,
device_map="cuda",
quantization_config=quant_config
)
自定义量化配置
HQQ支持为不同层设置不同的量化配置:
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,
})
更多资源
HQQ为大模型量化提供了一个高效、灵活的解决方案。通过本文提供的资源,相信读者可以快速上手并应用HQQ技术来优化自己的模型。如有任何问题,欢迎参考官方文档或在GitHub仓库中提出issue。