文 / NVIDIA
混合精度训练利用半精度来加速训练,在某些情况下,能够获得与使用相同超参数进行单精度训练相同的精度。内存要求也因此降低,从而可以运行更大的模型和进行小批量处理。
启用混合精度需要完成两个步骤:移植模型,以在适当的时候使用半精度数据类型;使用损失缩放技术保留小的梯度值。我们为 TensorFlow 引入自动混合精度功能(现可在 1.x 中使用,不久后即可在 2.x 中使用),该功能使用 NVIDIA Volta 和 Turing GPU 中的 Tensor Core 进行修改,以提升训练性能。自动混合精度在 TensorFlow 内部通过 NVIDIA NGC Container 中的一个环境变量完成这两个步骤,并在必要时采取更精细的控制。
为现有的 TensorFlow 模型脚本启用此功能需要设置一个环境变量,或者只需更改几行代码。我们发现对于数学运算量大的模型,运算速度提高了 3 倍,但具体能获得多少程度的加速取决于模型架构。现在,TensorFlow 容器内提供自动混合精度功能,而 TensorFlow 容器可在 NVIDIA NGC 容器注册表 中取得(https://ngc.nvidia.com/catalog/containers/nvidia:tensorflow)。
要在容器中启用此功能,只需设置一个环境变量即可:
export TF_ENABLE_AUTO_MIXED_PRECISION=1
或者,您也可以在 TensorFlow Python 脚本中设置该环境变量:
os.environ[‘TF_ENABL