大模型量化入门:从 FP16 到 INT4
最近想在消费级显卡上跑更大的模型,于是把模型量化(Quantization)的相关概念整理了一遍,顺便记录了实际部署时的几点体会。
一、为什么需要量化
模型权重默认通常是 FP16/BF16 存储,一个 7B 参数的模型仅权重就要占约 14GB 显存。量化就是把高精度浮点权重压缩成低比特整数表示(如 INT8、INT4),用一点精度损失换取显存占用和推理速度的大幅改善。INT4 量化后,7B 模型权重只需约 4GB,一张普通显卡就能跑得动。
二、常见量化粒度速记
- FP16 / BF16:半精度,训练的常客,精度无损但显存占用大。
- INT8:8 比特整数量化,显存减半,精度损失通常很小,是最稳妥的选择。
- INT4:4 比特量化,显存再减半,小模型上精度掉得明显,大模型上性价比极高。
- 更低的 2/3 bit:实验性质居多,日常使用需谨慎评估效果。
三、主流量化方法
- GPTQ:训练后逐层量化,用二阶信息校准误差,INT4 场景的经典方案,社区模型生态成熟。
- AWQ:激活感知的权重量化,保护对输出影响大的"显著权重",低比特下效果往往优于 GPTQ。
- GGUF:llama.cpp 生态的格式,支持 CPU/GPU 混合推理,本地跑模型的首选。
- SmoothQuant:把激活的量化难度"转嫁"给权重,适合 INT8 的 W8A8 全量化场景。
四、实践中的几点体会
- 显存够不够,除了看权重,还要算上 KV Cache 和激活值,长上下文场景后者才是大头。
- 量化只压权重不够时,可以连 KV Cache 一起量化(如 FP8 KV Cache),vLLM 等框架已支持。
- 同尺寸下,"更大的模型 + INT4"往往比"更小的模型 + FP16"效果好,选模型时可以优先考虑。
- 量化后一定要用自己的业务数据回归测试,通用 benchmark 的分数不代表实际体验。
小结
量化的核心就是一道权衡题:显存、速度、精度三者取其二。日常部署先从 INT8 起步,显存吃紧再上 GPTQ/AWQ 的 INT4,配合业务数据实测,基本不会踩大坑。