fp32(单精度浮点数,IEEE 754 定义的 32 位浮点格式)是深度学习训练与推理中长期作为基准的数值精度,包含 1 位符号、8 位指数和 23 位尾数,约 7 位十进制有效数字。它曾是 GPU 计算和模型权重的默认存储格式,但如今更多扮演“精度参照系”的角色:低精度格式在速度与显存上占优,而 fp32 则用于校验它们是否算得对。
fp32 与低精度格式的近期进展
数值精度对模型输出的影响正被更细致地量化。一项研究发现,大语言模型的推理输出会随数值精度变化,BF16 与 FP16 在相同输入下可能给出不同结果(研究发现 LLM 推理输出随数值精度变化:BF16 与 FP16 会产生不同结果)。这提示 fp32 之外的低精度路径并非等价替换,误差会在长链条推理中累积。
量化研究继续向更极端的压缩比推进。STEPQuant 提出基于 Delta 规则的循环状态量化方法,试图在循环网络中降低状态表示的位宽(STEPQuant:Delta规则循环状态量化研究);面向脑电解码的 ThinkNet 则关注紧凑模型选择与验证门控集成,在资源受限场景下平衡规模与精度(ThinkNet:面向跨被试MI-EEG解码的紧凑模型选择与验证门控集成框架)。这些工作共同说明,fp32 的“默认地位”正在被按场景拆解。
工程侧同样在围绕精度做取舍。Milvus 展示用 FP16 加 mmap,在不到 1GB 内存中承载 2500 万向量(Milvus 用不到 1GB 内存跑 2500 万向量:FP16 + mmap 实战);龙芯发布自研 GPU 加速计算平台首版软件,兼容 CUDA 并支持 AI 推理(龙芯发布自研GPU加速计算平台首版软件:兼容CUDA,支持AI推理),其精度支持范围将影响国产算力上 fp32 与低精度混合计算的可用性。此外,阶段重放分歧跟随 KV 缓存的研究涉及固定前缀精度控制与双向缓存移植(阶段重放分歧跟随KV缓存:固定前缀精度控制与双向缓存移植),BluTrain 则给出基于 C++/CUDA 的训练框架实践(BluTrain:基于C++/CUDA的AI训练框架)。
当前焦点与观察点
当前焦点不在于是否彻底抛弃 fp32,而在于哪些环节必须保留它。训练中的梯度累积、损失缩放和优化器状态通常仍需要 fp32 或等价的高精度缓冲,推理侧则更愿意用 int4、int8 或 FP16 换取吞吐与显存(量化 Quantization(int4、int8):如何用更少显存跑大模型)。观察点有三:低精度结果的偏差是否可预测、可补偿;国产 GPU 软件栈对 fp32 及各低精度的覆盖程度;以及量化方法在循环结构与长上下文场景下的稳定性。