[ PROMPT_NODE_22828 ]
hqq-quantization
[ SKILL_DOCUMENTATION ]
# HQQ - 半二次量化 (Half-Quadratic Quantization)
快速、无需校准的权重量化技术,支持 8/4/3/2/1-bit 精度,并提供多种优化后端。
## 何时使用 HQQ
**在以下场景使用 HQQ:**
- 无需校准数据即可量化模型(无需数据集)
- 需要快速量化(相比 GPTQ/AWQ 的数小时,HQQ 仅需几分钟)
- 使用 vLLM 或 HuggingFace Transformers 进行部署
- 使用 LoRA/PEFT 微调量化模型
- 尝试极端量化(2-bit, 1-bit)
**主要优势:**
- **无需校准**:无需样本数据即可即时量化任何模型
- **多种后端**:支持 PyTorch, ATEN, TorchAO, Marlin, BitBlas 以实现优化推理
- **灵活精度**:支持 8/4/3/2/1-bit 及可配置的分组大小
- **框架集成**:原生支持 HuggingFace 和 vLLM
- **兼容 PEFT**:支持使用 LoRA 微调量化模型
**建议使用替代方案的场景:**
- **AWQ**:需要基于校准的精度,用于生产环境服务
- **GPTQ**:在有校准数据时追求最高精度
- **bitsandbytes**:无需自定义后端,简单的 8-bit/4-bit 量化
- **llama.cpp/GGUF**:CPU 推理,Apple Silicon 部署
## 快速开始
### 安装
bash
pip install hqq
# 安装特定后端
pip install hqq[torch] # PyTorch 后端
pip install hqq[torchao] # TorchAO int4 后端
pip install hqq[bitblas] # BitBlas 后端
pip install hqq[marlin] # Marlin 后端
### 基础量化
python
from hqq.core.quantize import BaseQuantizeConfig, HQQLinear
import torch.nn as nn
# 配置量化
config = BaseQuantizeConfig(
nbits=4, # 4-bit 量化
group_size=64, # 量化分组大小
axis=1 # 沿输出维度量化
)
# 量化线性层
linear = nn.Linear(4096, 4096)
hqq_linear = HQQLinear(linear, config)
# 正常使用
output = hqq_linear(input_tensor)
### 使用 HuggingFace 量化完整模型
python
from transformers import AutoModelForCausalLM, HqqConfig
# 配置 HQQ
quantization_config = HqqConfig(
nbits=4,
group_size=64,
axis=1
)
# 加载并量化
model = AutoModelForCausalLM.from_pretrained(
"meta-llama/Llama-3.1-8B",
quantization_config=quantization_config,
device_map="auto"
)
# 模型已量化并可直接使用
## 核心概念
### 量化配置
HQQ 使用 `BaseQuantizeConfig` 定义量化参数:
python
from hqq.core.quantize import BaseQuantizeConfig
# 标准 4-bit 配置
config_4bi