FP16 是什么:半精度浮点数的容量与数值边界
解释 FP16 的十六位浮点表示,区分 BF16 和混合精度,并说明模型精度标签与实际运行需要怎样核对。
先理解这个概念
FP16 通常指十六位半精度浮点格式,用较少位数近似表示数值。它与 FP32 的范围和精度不同,也不等于所有十六位格式;BF16 是另一种布局。模型标注 FP16 不表示整套服务只有权重占用,也不保证相对所有格式更快。采用时应核对设备支持与具体计算方式,再验证目标任务的数值和结果。
位数相同不代表数值范围相同
NVIDIA 的混合精度说明介绍半精度的符号、指数和有效数字表示,CUDA 数学接口也定义对应类型与运算。FP16 需要近似保存数值,过大或过小的量可能遇到表示边界。混合精度则在同一任务中使用多种格式,某些步骤保留更高精度,不是把所有数组强制改成 FP16。对于训练与推理,也不能直接套用相同资源比例。先核对模型权重类型和运行后端设置,文件名中的精度字样不能代替配置核对。
同一模型检查精度转换后的行为
例如用同一基础模型处理公开数字提取任务,比较转换前后的字段,再检查较长输入是否正常。若出现无效数值或加载错误,应保存输入与实际异常,区分数值问题和后端不兼容。不要因为文件变小就推断质量相同,也不要把某篇硬件说明中的加速结果当作自己的测试。本文没有转换权重或运行设备,例子说明可执行的检查方法。测试应固定模型版本和任务条件,让结果差异有可解释范围。
资源节省需要结合运行数据核算
FP16 权重所需空间只是总占用的一部分,缓存和临时计算可能使用其他格式。设备若没有合适执行路径,较少位数也不自动带来较低延迟。更新框架后重跑原有样本,确认支持与结果没有退化,保留可恢复版本。比较成本时包含转换和人工核对,不应只按位数比值推断整体费用。FP16 是一种数值工具,是否采用应由模型兼容和真实任务决定,而不是把“半精度”当作能力减半或完全无损的简单结论。
核对来源
以下资料用于核对概念和方法。文中的示例与测试范围分别注明,实际使用时请核对所用工具的版本。