大模型量化部署对比:INT8、INT4 与 FP16 怎么选
量化部署的核心取舍是显存和精度。
同一张显卡上,FP16 能跑的模型最小,INT8 大约能把权重显存减半,INT4 再减半,但精度损失和工具链兼容性会随位数降低而增加。
选哪种,先看显存预算和业务对输出稳定性的要求,而不是直接选最低位宽。
先算显存,再谈量化格式
模型权重显存有个粗略估算方式:参数量 × 每参数字节数。
FP16 每参数约 2 字节,INT8 约 1 字节,INT4 约 0.5 字节。
一个 70 亿参数模型,FP16 权重约 14GB,INT8 约 7GB,INT4 约 3.5GB。
但权重只是显存的一部分。
推理时还要留出 KV Cache、激活值和框架开销。
实际部署中,INT4 模型在 8GB 显存卡上仍然可能因为上下文长度增加而爆显存。
判断条件可以这样记:
- 显存小于 8GB:优先考虑 INT4,并限制上下文长度和并发数。
- 显存 8GB 到 16GB:INT8 通常更稳,INT4 可作为提高并发的备选。
- 显存 24GB 以上:如果业务对精度敏感,先用 FP16;需要提高吞吐时再试 INT8。
三种量化格式的实际差异
FP16 是半精度浮点,兼容性最好,主流推理框架都直接支持,输出质量也最接近原始模型。
缺点是显存占用高,同卡并发能力弱。
INT8 把权重和激活值量化到 8 位整数,显存约减半,多数场景下精度损失较小,适合做通用部署。
需要注意,INT8 量化通常需要校准数据,校准集和实际业务分布差太远时,效果可能不稳定。
INT4 进一步压缩到 4 位,显存优势明显,但精度损失更依赖量化算法和模型结构。
部分模型在 INT4 下会出现重复输出、指令遵循变差或长文本连贯性下降。
它适合显存受限、且业务能接受人工抽检兜底的场景,不适合直接用于高准确率要求的抽取或审核任务。
工具链支持决定落地成本
选量化格式时,不能只看理论显存。
要确认推理框架是否支持目标模型的量化版本,以及是否支持你需要的并发和流式输出。
以常见部署方式为例,使用 llama.cpp 部署 GGUF 量化模型时,INT4 和 INT8 都有对应量化文件,启动命令里通过 -ngl 控制卸载到 GPU 的层数:
./llama-server -m model-q4_k_m.gguf -ngl 99 -c 4096 --host 0.0.0.0 --port 8080
如果使用 vLLM 或 TensorRT-LLM,要查看对应版本是否支持 AWQ、GPTQ 等量化格式。
不同框架对量化格式的命名和支持程度不一样,部署前先在测试环境加载一次模型,确认能正常返回结果,再考虑上生产。
量化后必须做的效果验证
量化不是部署完就结束。
建议准备一组固定测试问题,覆盖你的实际业务类型,比如信息抽取、摘要、多轮问答,分别用原始模型和量化模型跑同一批输入,对比输出。
验证时重点看三类指标:
- 输出是否出现重复、截断或格式错乱。
- 关键字段抽取的准确率是否明显下降。
- 长上下文场景下是否更容易丢指令。
如果 INT4 版本在测试集上出现明显退化,不要靠调温度或提示词硬压,优先回退到 INT8 或缩短上下文。
量化带来的显存收益,要建立在业务可接受的效果之上。
常见疑问
量化后推理速度一定更快吗?
不一定。低精度可以减少显存带宽压力,但反量化计算和框架实现也会影响速度。实际吞吐要以目标硬件上的压测为准。
INT4 模型能不能直接替换 FP16 模型?
接口层面可以替换,但输出质量不一定等价。建议保留 FP16 版本作为对照,灰度切换。
量化需要重新训练吗?
多数训练后量化方法不需要重新训练,但需要校准数据。校准数据应尽量贴近真实业务输入。
大模型量化部署对比的结论可以归结为一句话:显存够且精度优先选 FP16,通用场景选 INT8,显存紧张且能接受抽检兜底再选 INT4。
上线前用业务样本做一次对照验证,比只看显存数字更可靠。