做大模型部署的时候,量化是绕不开的话题。BF16、FP16、INT8、INT4,还有GPTQ、AWQ、GGUF这些量化方法,到底怎么选?

## 各种精度对比

| 精度 | 模型大小 | 推理速度 | 精度损失 | 适用场景 |
|---|---|---|---|---|
| FP32 | 100% | 1x | 无 | 训练 |
| BF16/FP16 | 50% | 1.2x | 几乎无 | 推理首选 |
| INT8 | 25% | 1.5-2x | 很小 | 生产部署 |
| INT4 | 12.5% | 2-3x | 中等 | 边缘/端侧 |

## 量化方法对比

**GPTQ:**
- 训练后量化(PTQ)
- 速度快,精度损失可控
- 广泛支持(vLLM、TensorRT-LLM)

**AWQ:**
- 激活感知权重量化
- 比GPTQ精度略好
- 推理速度快

**GGUF:**
- llama.cpp生态
- 适合CPU和边缘部署
- 量化粒度细(Q4_K_M、Q5_K_M等)

## 我们的选择

服务器生产部署:BF16起步,显存不够就INT8+AWQ,追求性价比就INT4+GPTQ。

端侧/本地部署:GGUF格式,Q4_K_M量化。7B模型量化后约4GB,笔记本就能跑。

## 实际测试感受

7B模型在A100上:
- BF16:14GB显存,3000 tokens/s
- INT8 AWQ:7GB显存,5000 tokens/s
- INT4 GPTQ:3.5GB显存,7000 tokens/s

精度方面,INT4在通用对话任务上损失不大,但在数学推理和代码生成上能感觉到明显下降。

大家做模型部署的时候,量化方案都是怎么选的?