Skip to content

约 3 分钟阅读

模型数值精度 ​

下载模型时,常会看见 FP32、FP16、BF16、INT4。同一个模型,文件大小可以相差好几倍,输出也可能略有变化。它们改动的第一件事很具体:用多少个二进制位,怎样保存模型里的每一个数。

这个系列沿着一个数走六步:先看怎样存,再比较能存多大、分得多细,然后观察误差怎样进入计算,最后理解混合精度和量化。只需会小数、乘法与加法,可以直接从第一篇开始。

有限的位,怎样装下一个数 ​

想象一把刻度尺。刻度密,能分清相邻的小差别;量程大,能容纳更大的数。浮点数这把尺的刻度还会随数量级变化,越大的数之间通常隔得越远。计算机给一个数分配的位数有限,浮点格式要在量程和刻度之间分配这份预算。FP16 与 BF16 都占 16 位,差别就在这份预算怎样分。

保存 1.0351每个数占用读回的数值
FP324 字节约 1.0350999832
FP162 字节1.03515625
BF162 字节1.03125

FP16 与 BF16 都只用一半空间,读回的小数却不同。后面的文章会把这张对照表里的每个差别推导出来。

按名称查看存储结构 ​

常见数值格式存储图解把 FP32、FP16、BF16、FP8、FP4、INT8、INT4 等逐个拆开:每种格式都有自己的字段图、位编号、编码例子和读回过程。NF4、MXFP4、NVFP4 与 GGUF 量化块也放在这里,方便遇到名称时随手查阅。

第一次学习,可以继续按下面六篇读;想先弄清某种格式的位怎样分,就直接进入图解。

从表示方式读到计算结果 ​

01—03:先把一个数看明白 ​

01. 数字怎样存进计算机从 0 和 1、字节与二进制小数讲起,亲手把 1.25 拆成浮点编码。

02. FP32、FP16 与 BF16比较三种格式的范围、刻度和空间。读完能解释:为什么同样是 16 位,BF16 能存更大的数,FP16 却能在 1 附近分得更细。

03. 舍入、溢出与计算误差在数轴上切换格式,观察 1.0351 落在哪个刻度,再看小增量为什么会在连续相加时消失。

04—06:再把数字放回模型 ​

04. 混合精度怎样计算从一次乘加认识权重、激活和累加,解释为什么同一模型会同时使用 BF16 和 FP32。

05. FP8、FP4 与整数量化用一组具体数值理解缩放因子,再比较浮点和整数刻度,读懂 W4A16、INT8 和分组量化。

06. 怎样选择与验证精度比较各类精度省下什么、付出什么代价,区分训练、推理和长对话的选择,再用 70 亿参数的显存预算案例和对照实验完成判断。

学完这六篇,看到一个精度名称,就可以继续问清楚:它用在哪些数上,保留多少范围与细节,计算时怎样累加,最终节省了什么、改变了什么。先从数字怎样存进计算机开始。

模型为什么要训练、梯度怎样更新参数,可按兴趣阅读模型训练入门;服务怎样安排显存、缓存与多人请求,见模型推理系列。

别急,先让缓存热一下。