大模型量化详解:FP16、Q8、Q5、Q4 到 Q2 怎么选?

系统讲清大模型量化的核心概念、常见版本差异与按显存选型方法,帮你在效果、速度和资源成本之间找到最佳平衡。

量化的核心目标很简单:用少量精度损失,换取更小体积、更低显存占用和更快推理速度。
对本地部署用户来说,选对量化版本,往往比盲目追求大参数更重要。

什么是量化

量化是指把模型参数从高精度格式(如 FP16)压缩为更低位宽格式(如 Q8Q4)。

可以把它理解为:

  • 原始模型:像高精度照片,清晰但文件大。
  • 量化模型:像压缩照片,细节略损但更轻更快。

常见量化版本对比

量化版本 精度/位宽 体积 质量损失 推荐场景
FP16 16 位浮点 最大 几乎无损 研究、评测、追求极致质量
Q8_0 8 位整数 较大 几乎无损 高配电脑,兼顾质量与性能
Q5_K_M 5 位混合 中等 轻微损失 日常主力,平衡方案
Q4_K_M 4 位混合 较小 可接受损失 通用默认,性价比高
Q3_K_M 3 位混合 很小 明显损失 低配设备,能跑优先
Q2_K 2 位混合 最小 较大损失 极限资源场景,临时可用

量化命名规则

gemma-4:4b-q4_k_m 为例:

  • gemma-4:4b:模型名称与参数规模。
  • q4:4 位量化。
  • k:K-quants(改进量化方法)。
  • m:medium(中等级别,常见还有 s/small、l/large)。

如何按显存快速选型

内存/显存 推荐量化
4 GB Q3_K_M / Q2_K
8 GB Q4_K_M
16 GB Q5_K_M / Q8_0
32 GB+ FP16 / Q8_0

建议先从能稳定跑起来的版本开始用,再逐步提高精度,而不是一上来就追求最大模型。

实战建议

  1. 默认从 Q4_K_M 开始,先验证真实任务效果。
  2. 如果答案质量不够,再升到 Q5_K_MQ8_0
  3. 如果主要瓶颈是显存或速度,再降到 Q3_K_M
  4. 每次切换量化版本,都用同一批测试问题做对比。

用 llama-quantize 生成量化 GGUF

输入应优先使用 FP16、BF16 或 F32 GGUF。不要把重度量化文件再次量化;--allow-requantize 可能进一步破坏质量。

1
2
3
4
./build/bin/llama-quantize \
  model-bf16.gguf \
  model-Q4_K_M.gguf \
  Q4_K_M

Windows 构建通常使用:

1
2
3
4
.\build\bin\Release\llama-quantize.exe `
  .\model-bf16.gguf `
  .\model-Q4_K_M.gguf `
  Q4_K_M

量化前后记录文件大小和哈希:

1
2
ls -lh model-bf16.gguf model-Q4_K_M.gguf
sha256sum model-Q4_K_M.gguf

显存估算为什么不能只看位宽

权重之外还要给 KV cache、计算缓冲区、多模态 projector、桌面程序和后端开销留空间。因此,理论上接近 8GB 的模型并不代表一定能完整装入 8GB 显卡。建议预留 10% 到 20%,再通过后端日志确认 GPU offload。

做一次可比较的验收

用相同模型、后端、上下文和提示词分别运行两个版本:

1
2
llama-cli -m model-Q4_K_M.gguf -c 4096 -n 128 \
  -p "Summarize the trade-offs of model quantization."
项目 需要记录的值
模型 完整文件名与哈希
后端 CUDA、ROCm、Metal、Vulkan 或 CPU
上下文 -c 与实际 prompt token
内存 峰值 RAM、VRAM、是否部分 offload
速度 prompt processing 与 generation token/s
质量 固定问题的错误、格式和遗漏

代码、数学、长上下文和结构化输出对量化更敏感。不要用单次聊天就宣称某种量化“几乎无损”。

结论

  • 质量优先:FP16Q8_0
  • 平衡优先:Q5_K_M
  • 通用默认:Q4_K_M
  • 低配兜底:Q3_K_MQ2_K

选型的本质不是“越大越好”,而是“在你的硬件条件下,达到最稳定可用的效果”。

参考资料