Skip to content

大模型浮点数精度与混合精度训练

内容整理自学习笔记,仅供面试备考参考;不构成录用、培训或考试承诺。

1. FP32 和 FP16 的区别,混合精度的原理

FP32 vs FP16 对比

对比维度FP32(单精度)FP16(半精度)
位数32位16位
字节占用4字节2字节
精度高精度相对较低,但许多情况下仍足够
内存占用较大较小
计算速度较慢较快

混合精度原理

混合精度指的是在模型训练中同时使用 FP16 和 FP32,以在计算中提高效率。

组件使用精度
模型参数FP16
梯度FP32
累积值FP32

优势:混合精度可以减少内存占用和计算开销,加速训练过程,同时通过 FP32 保持关键计算的精度。

2. 半精度是什么?

半精度是指使用 16位二进制浮点数(half-precision floating point)来表示数字的数据类型,可以加速计算和减小内存占用。

3. 半精度的理论原理是什么?

半精度使用 16 位二进制浮点数来表示数字,其位分配如下:

组成部分位数说明
符号位(Sign)1位表示正负号
指数(Exponent)5位表示数值的范围
尾数(Mantissa)10位表示数值的精度

与其他精度的对比

类型总位数符号位指数位尾数位表示范围精度
半精度(FP16)16位1位5位10位较小较低
单精度(FP32)32位1位8位23位较大较高
双精度(FP64)64位1位11位52位最大最高

总结:相比于单精度(32位)和双精度(64位)的浮点数,半精度的表示范围和精度更小,但可以通过降低内存占用和加速计算来实现高效的运算。