A
Member
做大模型部署的时候,量化是绕不开的话题。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在通用对话任务上损失不大,但在数学推理和代码生成上能感觉到明显下降。
大家做模型部署的时候,量化方案都是怎么选的?
## 各种精度对比
| 精度 | 模型大小 | 推理速度 | 精度损失 | 适用场景 |
|---|---|---|---|---|
| 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在通用对话任务上损失不大,但在数学推理和代码生成上能感觉到明显下降。
大家做模型部署的时候,量化方案都是怎么选的?