Qwen3 GPTQ 量化部署 — AutoGPTQ 4bit 量化方案
GPTQ vs AWQ
两者都是主流的 4bit 后训练量化方法,效果接近但原理不同:
| 方面 | GPTQ | AWQ |
|---|---|---|
| 核心思想 | 最小化每层的量化误差 | 保留最重要的权重为高精度 |
| 量化速度 | 较慢(需要逐层重算) | 较快 |
| 精度 | 好 | 略好 |
| 校准数据量 | 需要较少 | 需要较多 |
| 推理速度 | 快 | 快 |
| 生态 | 更成熟(ExLlama 等) | 快速发展中 |
安装
pip install auto-gptq transformers accelerate
验证安装:
from auto_gptq import AutoGPTQForCausalLM
print("GPTQ 安装成功")
加载 GPTQ 量化模型
Transformers
from auto_gptq import AutoGPTQForCausalLM, BaseQuantizeConfig
from transformers import AutoTokenizer
model_name = "Qwen/Qwen3-8B-Instruct-GPTQ" # 检查 HF 是否有
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoGPTQForCausalLM.from_quantized(
model_name,
use_safetensors=True,
device="cuda:0",
disable_exllama=False,
disable_exllamav2=False
)
ExLlamaV2(更高推理性能)
pip install exllamav2
ExLlamaV2 是专为 GPTQ 量化模型设计的高性能推理引擎。
vLLM
pip install auto-gptq
vllm serve Qwen/Qwen3-8B-Instruct-GPTQ \
--quantization gptq \
--port 8000
自己量化 GPTQ 模型
from auto_gptq import AutoGPTQForCausalLM, BaseQuantizeConfig
from transformers import AutoTokenizer
model_path = "Qwen/Qwen3-8B"
quant_path = "Qwen3-8B-GPTQ"
quant_config = BaseQuantizeConfig(
bits=4, # 4bit 量化
group_size=128, # 分组大小
desc_act=False, # 是否按激活排序(设为 False 更兼容)
)
# 加载原生模型
model = AutoGPTQForCausalLM.from_pretrained(
model_path,
quantized=False,
torch_dtype="auto",
device_map="auto"
)
tokenizer = AutoTokenizer.from_pretrained(model_path)
# 准备校准数据(少量文本即可)
examples = [
tokenizer(
"Qwen3 是阿里巴巴通义实验室发布的开源大语言模型。",
return_tensors="pt"
)
]
# 量化
model.quantize(
examples,
batch_size=1,
use_cache=True
)
# 保存
model.save_quantized(quant_path, use_safetensors=True)
tokenizer.save_pretrained(quant_path)
GPTQ 量化比 AWQ 慢,但校准数据要求更少。
GGUF vs GPTQ vs AWQ
三者都是量化格式,但生态不同:
| 格式 | 主要用户 | 优势 |
|---|---|---|
| GPTQ | Transformers / vLLM / SGLang | 精度好,生态成熟 |
| AWQ | Transformers / vLLM / SGLang | 量化快,激活感知 |
| GGUF | Ollama / LM Studio / llama.cpp | 跨平台,CPU/GPU 通吃 |
如果你用 Ollama 或 LM Studio,只能用 GGUF。如果用 Python 推理框架,AWQ 和 GPTQ 都可以。