[ PROMPT_NODE_22794 ]
awq-quantization
[ SKILL_DOCUMENTATION ]
# AWQ (激活感知权重量化)
4-bit 量化技术,通过激活模式保留显著权重,在极小精度损失下实现 3 倍加速。
## 何时使用 AWQ
**在以下情况使用 AWQ:**
- 需要 4-bit 量化且精度损失 <5%
- 部署指令微调或聊天模型(AWQ 泛化能力更好)
- 相比 FP16 期望获得约 2.5-3 倍的推理加速
- 在生产环境中使用 vLLM 进行服务部署
- 拥有 Ampere 及以上架构的 GPU(A100, H100, RTX 40xx)以支持 Marlin 内核
**在以下情况改用 GPTQ:**
- 需要最大的生态兼容性(更多工具支持 GPTQ)
- 专门使用 ExLlamaV2 后端
- 拥有不支持 Marlin 的旧款 GPU
**在以下情况改用 bitsandbytes:**
- 需要零校准开销(即时量化)
- 想要使用 QLoRA 进行微调
- 偏好更简单的集成方式
## 快速开始
### 安装
bash
# 默认(Triton 内核)
pip install autoawq
# 带有优化的 CUDA 内核 + Flash Attention
pip install autoawq[kernels]
# Intel CPU/XPU 优化
pip install autoawq[cpu]
**要求**:Python 3.8+, CUDA 11.8+, 计算能力 7.5+
### 加载预量化模型
python
from awq import AutoAWQForCausalLM
from transformers import AutoTokenizer
model_name = "TheBloke/Mistral-7B-Instruct-v0.2-AWQ"
model = AutoAWQForCausalLM.from_quantized(
model_name,
fuse_layers=True # 启用融合注意力以提升速度
)
tokenizer = AutoTokenizer.from_pretrained(model_name)
# 生成
inputs = tokenizer("Explain quantum computing", return_tensors="pt").to("cuda")
outputs = model.generate(**inputs, max_new_tokens=200)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))
### 量化你自己的模型
python
from awq import AutoAWQForCausalLM
from transformers import AutoTokenizer
model_path = "mistralai/Mistral-7B-Instruct-v0.2"
# 加载模型和分词器
model = AutoAWQForCausalLM.from_pretrained(model_path)
tokenizer = AutoTokenizer.from_pretrained(model_path)
# 量化配置
quant_config = {
"zero_point": True, # 使用零点量化
"q_group_size": 128, # 分组大小(推荐 128)
"w_bit": 4, # 4-bit 权重
"version": "GEMM" # GEMM 用于批处理,GEMV 用于单 token
}
# 量化(默认使用 pileval 数据集)
model.quantize(tokenizer, quant_config=quant_config)
# 保存
model.save_quantized("mistral-7b-awq")
tokenizer.save_pretrained("mistral-7b-awq")
**耗时**:7B 模型约 10-15 分钟,70B 模型约 1 小时。
## AWQ 与