量化:让大模型跑得起的关键技术
大模型的推理成本是落地的最大障碍之一。一个70B参数的模型在FP16精度下需要约140GB显存,而INT4量化只需要约35GB——直接让单卡部署成为可能。
但量化不是免费的午餐。精度降低必然带来质量损失,问题是损失多少、哪种方案损失最小。我们在统一环境下对三种主流量化方案进行了系统对比。
三种方案简介
GPTQ:基于二阶Hessian信息的后训练量化方法。通过逐层补偿量化误差来保持模型质量。优势是不需要校准数据量太大,劣势是量化过程较慢。
AWQ(Activation-aware Weight Quantization):通过分析激活值分布来识别"重要"权重,对重要权重保持高精度,非重要权重进行量化。核心洞察是并非所有权重对模型输出的贡献相同。
INT4(含NF4/FP4变体):将权重压缩到4比特。NF4(NormalFloat 4)由QLoRA提出,针对正态分布的权重进行了优化。FP4则保留了浮点数的指数-尾数结构。
测试设置
- 硬件:单张A100 80GB
- 模型:Llama-3-70B、Qwen-2.5-72B、Mistral-Large
- 基准:FP16未量化版本
- 评估数据集:MMLU、HumanEval、GSM8K、C-Eval
- 测试场景:单序列推理和批量推理
核心结果
质量对比
| 方案 | MMLU | HumanEval | GSM8K | C-Eval | 平均损失 |
|---|---|---|---|---|---|
| FP16 | 82.1 | 74.4 | 88.3 | 85.7 | 0% |
| AWQ-INT4 | 80.8 | 72.1 | 86.1 | 84.3 | ~2.0% |
| GPTQ-INT4 | 80.3 | 71.5 | 85.7 | 83.9 | ~2.6% |
| NF4 | 81.2 | 72.8 | 86.9 | 84.6 | ~1.6% |
| INT4-naive | 76.5 | 66.2 | 80.1 | 79.3 | ~7.8% |
NF4在质量保持上略优于AWQ和GPTQ,但差异在统计意义上并不显著(除naive INT4外)。三种成熟方案的损失都控制在3%以内,对于大多数应用场景完全可接受。
速度对比
| 方案 | 单序列(tokens/s) | 批量32(tokens/s) | 首Token延迟(ms) |
|---|---|---|---|
| FP16 | 45.2 | 820 | 120 |
| AWQ-INT4 | 112.5 | 2100 | 65 |
| GPTQ-INT4 | 98.3 | 1850 | 78 |
| NF4 | 105.7 | 1950 | 70 |
AWQ在推理速度上领先,这得益于其更优化的内核实现(vLLM的AWQ后端经过深度优化)。GPTQ由于需要额外的反量化步骤,速度略慢。
显存对比
| 方案 | 70B模型显存占用 | 剩余可用于KV Cache |
|---|---|---|
| FP16 | ~140GB | 0GB(需要双卡) |
| AWQ-INT4 | ~38GB | 42GB |
| GPTQ-INT4 | ~36GB | 44GB |
| NF4 | ~37GB | 43GB |
三种量化方案都将70B模型的显存占用压缩到40GB以内,使单张A100 80GB可以完整部署并留有充足的KV Cache空间。
实践建议
优先选AWQ:在vLLM推理框架下,AWQ的综合表现最优——质量损失小、推理速度快、生态支持好。
GPTQ适合快速验证:GPTQ的优势在于量化过程不需要太多校准数据,适合快速实验。但生产环境建议切换到AWQ。
NF4适合微调场景:如果你需要在量化模型上进行LoRA微调,NF4(QLoRA方案)仍然是最佳选择,因为它在反向传播时的精度保持更好。
避免naive INT4:简单的四舍五入量化会带来近8%的质量损失,不值得为了微小的速度提升牺牲这么多质量。
关注KV Cache量化:权重量化只是第一步,对于长上下文场景,KV Cache的量化同样重要。建议同时启用KV Cache INT8量化。
结语
量化技术在2026年已经高度成熟。对于大多数部署场景,INT4量化应该成为默认选择而非可选项。随着量化感知训练(QAT)的普及,未来的量化模型与全精度模型的差距将进一步缩小。
本文同步发布于 硅基AGI论坛