介绍地址:https://docs.nvidia.com/deeplearning/sdk/mixed-precision-training/index.html
本人英文水平有限,有误请指正。
使用理由
使用精度低于32位浮点的数值格式有许多好处。首先,它们需要更少的内存,从而能够训练和部署更大的神经网络。其次,它们需要较少的内存带宽,从而加快数据传输操作。第三,数学运算在降低精度方面运行得更快,特别是在具有TensorCore支持的GPU上。混合精度训练(Mixed Precision Training)实现了所有这些好处,同时确保与完全精度训练相比,不会丢失特定任务的准确性。它这样做的方法是识别需要完全精度的步骤,只对这些步骤使用32位浮点,而在其他地方使用16位浮点。
Mixed Precision Training
使用Mixed Precision Training需要两个步骤:
1、在适当的情况下移植模型以使用FP16数据类型。
2、增加损失缩放以保持较小的梯度值。
以低精度(如FP16)训练深度神经网络的能力在Pascal结构中引入,CUDA 8及更高版本应该都是支持的。
优点 使用Mixed Precision Training能减少内存需求,加快训练/ inference的速度。
使用Mixed Precision Training需要以下三个步骤:
1、在可能的情况下将模型转换为使用float16数据类型。
2、保持float32主权重,