数值精度格式(FP32 / FP16 / BF16 / FP8 / INT8 / INT4)
Numerical Precision Formats (FP32 / FP16 / BF16 / FP8 / INT8 / INT4)常用模型参数和计算用多少位、什么格式存数字,决定显存、速度和精度。
神经网络里的每个参数和中间结果都是数字,用多少位来存会直接影响显存、速度和精度。FP32 是 32 位单精度浮点,最稳但最占空间;FP16 半精度只有 16 位,数值范围小,训练时容易溢出,需要损失缩放;BF16 同样 16 位,但保留了和 FP32 一样的指数位,范围大、精度低,是现在大模型训练的默认选择;FP8 只有 8 位,需要 H100 这一代及以后的 GPU 支持;INT8、INT4 是整数格式,主要用于推理时的量化压缩。粗算显存:参数量乘每个数的字节数(FP32 为 4、BF16 为 2、INT8 为 1、INT4 为 0.5),所以 7B 模型用 BF16 存权重约需 14 GB,量化到 INT4 约 3.5 GB,这决定了 VLA 能否放进机载算力里跑。
例子OpenVLA 这类 7B 模型用 BF16 加载约占 15 GB 显存,量化到 4 位后可以在显存更小的显卡上推理,但动作精度可能下降。
- 也叫
- FP32、FP16、BF16、FP8、INT8、INT4、半精度、单精度
- 相关
- 混合精度训练、训练后量化、量化感知训练、GPU 显存、端侧部署、TensorRT
- 来源
- Wikipedia: bfloat16 floating-point format
NVIDIA Transformer Engine: Using FP8