概述
混合精度为业内通用的性能提升方式,通过降低部分计算精度提升数据计算的并行度。混合精度训练方法是通过混合使用float16和float32数据类型来加速深度神经网络训练的过程,并减少内存使用和存取,从而可以训练更大的神经网络,同时又能基本保持使用float32训练所能达到的网络精度。
用户可以在脚本中通过配置“precision_mode”参数或者“precision_mode_v2”参数开启混合精度。例如:
- precision_mode参数配置为allow_mix_precision_fp16/allow_mix_precision。
- precision_mode_v2参数配置为mixed_float16。
“precision_mode”参数与precision_mode_v2参数不能同时使用,建议使用“precision_mode_v2”参数。
“precision_mode”与“precision_mode_v2”参数的详细说明可参见精度调优。
开启“自动混合精度”的场景下,推荐使用Loss Scale,从而补偿降低精度带来的精度损失;若后续进行Profiling数据进行分析时,发现需要手工调整某些算子的精度模式,可以参考修改混合精度黑白灰名单自行指定哪些算子允许降精度,哪些算子不允许降精度。
父主题: 混合精度训练