大模型量化实战:GPTQ vs AWQ vs INT4 完整指南

AI Infra量化GPTQAWQINT4

大模型太大,显存不够?推理太慢?量化技术了解一下。

本文将深度解析主流量化方案:GPTQAWQINT4,帮你做出正确的技术选择。

什么是模型量化?

量化(Quantization)是将高精度浮点数(如 FP32、FP16)转换为低精度整数(如 INT8、INT4)的技术:

FP32: 3.1415926535  →  约等于  →  INT4: 10 (值域: 0-15)

收益:

  • 显存占用减少 50-75%
  • 推理速度提升 2-4 倍
  • 部署成本大幅降低

三大量化方案对比

方案量化精度压缩率精度损失速度推荐场景
GPTQINT4/INT34x<2%通用场景
AWQINT44x<1%最快注重精度
FP8FP82x极小最快H100+

1. GPTQ (Generative Pre-trained Transformer Quantization)

核心原理

GPTQ 基于**二阶信息(Hessian 矩阵)**进行逐层量化,最小化重建误差:

# GPTQ 量化示例
from transformers import AutoModelForCausalLM, AutoTokenizer
import auto_gptq

model = AutoModelForCausalLM.from_pretrained(
    "meta-llama/Llama-2-7b-hf",
    model_basename="*.safetensors",
    device="cuda:0",
    use_safetensors=True,
)

# INT4 量化
model.quantize(
    bits=4,
    group_size=128,  # 每 128 个参数为一组
    desc_act=False,
)

优缺点

优点缺点
精度较好量化速度慢(需要计算 Hessian)
生态成熟可能过拟合校准集
支持多种模型批次推理时可能有精度波动

2. AWQ (Activation-aware Weight Quantization)

核心原理

AWQ 认为重要的权重不应该被量化。通过分析激活值分布,找出”显著权重”并保护它们:

传统量化:所有权重一视同仁
AWQ:显著权重用更高精度,非显著权重用 INT4
# AWQ 量化示例
from awq import AutoAWQForCausalLM

model = AutoAWQForCausalLM.from_quantized(
    "meta-llama/Llama-2-7b-awq",
    w_bit=4,
    group_size=128,
)

优缺点

优点缺点
精度更好(尤其 INT4)不支持所有模型
量化速度快校准集选择很重要
对激活异常值鲁棒文档相对较少

3. INT4 实战部署

显存对比

模型FP16INT4减少
LLaMA-2-7B14GB3.5GB75%
LLaMA-2-13B26GB7GB73%
Qwen-2-14B28GB8GB71%

使用 llama.cpp 部署

# 转换 GGUF 格式
python llama.cpp/convert.py models/llama-2-7b-hf --outfile models/llama-2-7b-q4.gguf

# 量化
./llama.cpp/quantize models/llama-2-7b-q4.gguf models/llama-2-7b-q4_K_M.gguf q4_K_M

# 运行
./llama.cpp/main -m models/llama-2-7b-q4_K_M.gguf -n 256

vLLM 部署量化模型

from vllm import LLM

# 使用量化后的模型
llm = LLM(
    model="TheBloke/Llama-2-7B-GPTQ",
    quantization="gptq",
    dtype="float16",
)

量化参数调优

关键参数

参数说明推荐值
bits量化位数4
group_size组大小128
desc_act是否对激活排序False
sym对称/非对称量化True

组大小选择

  • group_size=128:精度更高,显存略高
  • group_size=64:精度略低,显存更低
  • group_size=-1:按通道量化(不推荐)

选型建议

选 GPTQ 当:

  • 需要快速部署
  • 追求生态成熟度
  • 通用场景

选 AWQ 当:

  • 注重精度(尤其是 INT4)
  • 量化速度要求高
  • 模型有激活异常值

选 FP8 当:

  • 使用 H100/H200
  • 需要最高性能
  • 模型支持 FP8

总结

场景推荐方案
入门体验GPTQ (TheBloke 预量化模型)
生产部署AWQ + vLLM
极致性能FP8 + TensorRT-LLM
本地运行GGUF + llama.cpp

量化为大模型落地打开了大门,INT4 让消费级 GPU 也能跑 7B 模型!根据你的场景选择合适的方案吧。


下期预告:TensorRT-LLM 深度优化指南