浮点数据类型主要分为双精度(Fp64)、单精度(Fp32)、半精度(FP16)。
首先来看看为什么需要混合精度。使用FP16训练神经网络,相对比使用FP32带来的优点有:
- 减少内存占用:FP16的位宽是FP32的一半,因此权重等参数所占用的内存也是原来的一半,节省下来的内存可以放更大的网络模型或者使用更多的数据进行训练。
- 加快通讯效率:针对分布式训练,特别是在大模型训练的过程中,通讯的开销制约了网络模型训练的整体性能,通讯的位宽少了意味着可以提升通讯性能,减少等待时间,加快数据的流通。
- 计算效率更高:在特殊的AI加速芯片如华为Ascend 910和310系列,或者NVIDIA VOTAL架构的Titan V and Tesla V100的GPU上,使用FP16的执行运算性能比FP32更加快。
但是使用FP16同样会带来一些问题,其中最重要的是1)精度溢出和2)舍入误差。
- 数据溢出:数据溢出比较好理解,FP16的有效数据表示范围为
服务器托管网 6.10
10
−
5
∼
655046.10
1
服务器托管网0
−
5
∼
65504
6.1010−5∼655046.10times10^{-5} sim 65504
1.4
10
−
451.7
10381.4
1
0
−
45
1.7
1
0
38
1.410−45 1.710381.4times10^{-45} ~ 1.7times10^{38}
- 舍入误差:Rounding Error指示是当网络模型的反向梯度很小,一般FP32能够表示,但是转换到FP16会小于当前区间内的最小间隔,会导致数据溢出。如0.00006666666在FP32中能正常表示,转换到FP16后会表示成为0.000067,不满足FP16最小间隔的数会强制舍入。
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
相关推荐: openGauss学习笔记-141 openGauss 数据库运维-例行维护-例行重建索引
文章目录 openGauss学习笔记-141 openGauss 数据库运维-例行维护-例行重建索引 141.1 背景信息 141.2 重建索引 141.3 操作步骤 openGauss学习笔记-141 openGauss 数服务器托管网据库运维-例行维护-例…