模型的数值和量化

半兽人 发表于: 2026-03-16   最后更新时间: 2026-03-16 15:35:05  
{{totalSubscript}} 订阅, 18 游览

数值表示(numeric precision)量化(quantization) 两个概念。

模型权重本质上是一堆数字,而 FP16 / INT8 / INT4 只是“数字如何存储” 的方式。

一、先理解:模型其实就是大量数字

神经网络里的权重本质上是:

0.183827
-0.993728
0.002134

如果用不同的数据类型存储,同一个数字会变成不同精度。

二、FP16 / FP32 是“浮点数”

浮点数可以表示小数和很大的范围

常见类型:

类型 位数 特点
FP32 32bit 精度最高
FP16 16bit 精度较高
BF16 16bit AI训练常用
FP8 8bit 新GPU优化

例子:

FP32
0.18382721

变成

FP16
0.1838

精度降低一点,但基本不影响模型。

三、INT8 / INT4 是“整数”

整数格式不能直接表示小数

INT8范围:

-128 到 127

INT4范围:

-8 到 7

所以必须做一步操作:

量化(Quantization)

四、量化在干什么

原始权重:

-0.92
-0.13
0.45
0.88

通过缩放映射到整数:

-92
-13
45
88

存储时:

INT8

计算时再恢复:

weight = int_value * scale

这就叫:

Quantization

五、为什么要 INT8 / INT4

核心原因只有一个:

省显存 + 提高速度

看一个例子。

假设模型:

100B 参数

不同精度占用:

类型 每参数字节 总大小
FP32 4B 400GB
FP16 2B 200GB
INT8 1B 100GB
INT4 0.5B 50GB

所以:

INT4 可以把模型缩小 8 倍。

六、为什么精度会下降

因为小数被压缩了。

例如:

真实值:

0.183827

INT4可能变成:

0.19

误差变大。

所以:

精度 模型质量
FP16 最好
INT8 基本不变
INT4 可能下降
INT2 下降明显

七、推理框架支持的精度

不同框架支持不同量化:

框架 常见精度
vLLM FP16 / BF16 / FP8
TensorRT-LLM FP8 / INT8
AutoGPTQ INT4
llama.cpp INT4 / INT5 / INT6

八、真实部署怎么选

工程上通常这样选:

高端 GPU(H100)

推荐

FP8

原因:

  • 速度快
  • 精度接近 FP16
  • 显存减少一半

普通服务器 GPU

推荐

INT8

平衡:

  • 精度
  • 显存

消费级 GPU

只能

INT4

否则显存不够。

九、为什么会看到这么多格式

因为模型发布者通常会提供:

FP16 原版
FP8 推理版
INT8 企业版
INT4 轻量版
GGUF 本地版

本质只是:

同一个模型,不同压缩率。

更新于 2026-03-16
在线,9小时前登录

查看LLM更多相关的文章或提一个关于LLM的问题,也可以与我们一起分享文章