SuperAPI AI 工具集

hqq-quantization

智能体与模型

查看项目

更新于 10-15 13:02

技能介绍

HQQ(Half-Quadratic Quantization,半二次量化)是一个面向大语言模型权重的免校准量化方案,支持 8/4/3/2/1 比特精度,并提供多种经过优化的推理后端。其代码以 pip 包 hqq 形式分发,遵循 Apache 2.0 许可,版本为 0.2.0+,仓库地址为 https://github.com/mobiusml/hqq。

用途 HQQ 适用于在不提供校准数据集的情况下对模型进行量化;需要快速完成量化;希望使用 vLLM 或 HuggingFace Transformers 部署;需要对量化模型进行 LoRA/PEFT 微调;以及进行 2 比特、1 比特等极端量化实验。资料同时给出替代方案建议:若需要基于校准的精度与生产级服务可选 AWQ;若可获得校准数据并追求最高精度可选 GPTQ;若只需简单的 8 比特/4 比特且不使用自定义后端可选 bitsandbytes;CPU 推理与 Apple Silicon 部署可选 llama.cpp/GGUF。

主要能力

  1. 免校准:无需样本数据即可对任意模型进行量化。
  2. 多后端:PyTorch、ATEN、TorchAO、Marlin、BitBlas、GemLite 等,用于优化推理。
  3. 灵活精度:8/4/3/2/1 比特,支持可配置的分组大小。
  4. 框架集成:原生支持 HuggingFace 与 vLLM。
  5. PEFT 兼容:可对量化模型进行 LoRA 微调。

安装方式 基础安装:pip install hqq。按后端安装:pip install hqq[torch](PyTorch 后端)、pip install hqq[torchao](TorchAO int4 后端)、pip install hqq[bitblas](BitBlas 后端)、pip install hqq[marlin](Marlin 后端)。

使用方式 基础量化通过 hqq.core.quantize 的 BaseQuantizeConfig 定义参数,包括 nbits(每权重比特数,1-8)、group_size(每个量化分组包含的权重数)、axis(0 为输入维度,1 为输出维度),再将其传入 HQQLinear 替换 nn.Linear。量化后的层可访问 W_q(量化权重)、scale(缩放因子)、zero(零点),并可通过 dequantize() 反量化检查。

在 HuggingFace 中使用时,通过 HqqConfig 构造量化配置,在 AutoModelForCausalLM.from_pretrained 中以 quantization_config 传入,并使用 device_map="auto" 加载;可直接从 Hub 加载预量化模型(资料给出的示例为 mobiuslabsgmbh/Llama-3.1-8B-HQQ-4bit),也可量化后通过 save_pretrained 保存或 push_to_hub 推送。资料还展示了按层类型的混合精度 dynamic_config(如 attn 用 4 比特、mlp 用 2 比特)以及按层名分别配置的 layer_configs。

在 vLLM 中,通过 LLM(model=..., quantization="hqq", dtype="float16") 加载 HQQ 量化模型,也可传入 quantization_config(如 nbits=4、group_size=64)。

PEFT/LoRA 方面,先加载 HQQ 量化模型,再通过 peft 的 LoraConfig(资料示例 r=16、lora_alpha=32、target_modules 为 q_proj/k_proj/v_proj/o_proj、lora_dropout=0.05、bias="none"、task_type="CAUSAL_LM")以 get_peft_model 包装,即可配合 Trainer 或自定义循环训练,资料同时给出 QLoRA 风格的 TrainingArguments 示例。

后端方面,可通过 HQQLinear.set_backend 全局设置,或对单层设置。资料列出的后端包括 pytorch(默认,兼容任意 GPU)、pytorch_compile(需 torch>=2.0)、aten(需 CUDA GPU)、torchao_int4(需安装 torchao,用于 4 比特推理)、gemlite(GemLite CUDA 内核)、bitblas(需安装 bitblas,支持灵活比特宽度)、marlin(需 Ampere+ GPU,面向 4 比特最大速度)。

典型工作流包括:快速模型压缩(配置、加载量化、验证质量、保存)、面向推理速度的优化(设置快速后端、torch.compile、基准测试)。

最佳实践(来自资料):从 4 比特开始;使用 group_size=64;合理选择后端(4 比特 Ampere+ 用 Marlin,追求灵活性用 TorchAO);量化后务必验证生成质量;采用混合精度(注意力保持较高精度、更多压缩 MLP);PEFT 训练建议 LoRA r=16-32。

常见问题与处理:量化时显存不足可用 device_map="sequential" 逐层加载(涉及 hqq.models.hf.base.AutoHQQHFModel);推理慢可切换优化后端或使用 torch.compile(model, mode="reduce-overhead");2 比特质量差可减小 group_size(如 16)。

限制与缺失信息:资料未提供具体精度损失数值、速度/显存基准的量化结果、受支持模型的完整列表、各后端的确切硬件与软件版本要求细节,也未提供价格或收费信息。