大模型量化对效果有什么影响?INT8、INT4 什么时候能用?

第 1236 题 约 2 分钟读完

本文目录
  1. 面试怎么回答
  2. 量化是什么
  3. 代价:精度损失
  4. 怎么决定能不能用
  5. 常见的选择

面试怎么回答

量化是用更少的位数表示模型权重,以及可选的激活值和 KV Cache,INT8 显存约为 FP16 的一半,INT4 约四分之一,好处是能用更少的卡、留更多显存给 KV Cache,Decode 阶段读取数据少了速度也更快。代价是精度损失,取决于位数、量化方法、模型大小和任务类型:8 位通常损失很小,4 位更明显;GPTQ、AWQ 这类用校准数据的方法比简单取整好;大模型比小模型更耐量化;数学、代码、长推理比分类问答更敏感。决定时不能凭经验,要在自己的评测集上按任务类型对比 FP16、INT8、INT4 的效果和吞吐延迟。一般核心场景用 BF16 或 FP8,大部分在线服务用 INT8 或 FP8,资源受限的简单任务充分评测后可以用 INT4。

先把这段讲顺;面试官追问时,再展开下面的原理和细节。

详细讲解

私有化部署一个模型,FP16 精度需要两张卡,量化成 INT4 一张卡就够了,速度还更快。但效果会不会变差?面试官问量化,想看你理解量化的原理和代价,并且知道怎么用评测来决定。

量化是什么

模型权重通常以 16 位浮点数(FP16 / BF16)存储。量化是用更少的位数表示权重(以及可选的激活值和 KV Cache):

  • INT8 / FP8:8 位,显存约为 FP16 的一半;
  • INT4:4 位,显存约为四分之一。

好处:

  • 显存占用下降,同样的卡能部署更大的模型,或者留出更多显存给 KV Cache,提升并发;
  • Decode 阶段主要受显存带宽限制,读取的数据量少了,速度会提升。

代价:精度损失

用更少的位数表示,必然有误差。影响程度取决于:

  • 位数:8 位的损失通常很小,很多场景几乎无感;4 位的损失更明显;
  • 量化方法:GPTQ、AWQ 这类方法会利用校准数据,尽量减少对重要权重的影响,比简单的四舍五入好得多;
  • 模型大小:一般来说,越大的模型对量化越不敏感;小模型量化到 4 位损失更大;
  • 任务类型:数学计算、代码生成、长链推理这类对精度要求高的任务,退化往往比简单的分类、问答更明显。

怎么决定能不能用

不要凭经验,要用评测:

  1. 在自己的评测集上,对比 FP16、INT8、INT4 的效果;
  2. 按任务类型分别看:分类、抽取、问答、SQL 生成、推理;
  3. 同时测性能:吞吐、首 Token 延迟、每 Token 延迟;
  4. 看效果下降是否在可接受范围内,换来的成本节省是否值得。

常见的选择

  • 对效果要求高的核心场景:FP16 / BF16,或 FP8(在支持的硬件上效果和速度兼顾);
  • 大部分在线服务:INT8 / FP8 通常是不错的平衡;
  • 资源受限、任务简单:INT4 可以考虑,但必须充分评测;
  • KV Cache 也可以单独量化,用来支持更长的上下文和更高的并发。