混合精度训练的优势!将自动混合精度用于主流深度学习框架

描述

传统上,深度神经网络训练采用的是IEEE单精度格式,但借助混合精度,可采用半精度进行训练,同时保持单精度的网络精度。这种同时采用单精度和半精度表示的技术被称为混合精度技术。

混合精度训练的优势

通过使用Tensor核心,可加速数学密集型运算,如线性和卷积层。

与单精度相比,通过访问一半的字节来加速内存受限的运算。

降低训练模型的内存要求,支持更大规模的模型或更大规模的批量训练。

启用混合精度包括两个步骤:移植模型,以适时使用半精度数据类型;以及使用损耗定标,以保留小梯度值。

仅通过添加几行代码,TensorFlow、PyTorch和MXNet中的自动混合精确功能就能助力深度学习研究人员和工程师基于NVIDIA Volta和Turing GPU实现高达3倍的AI训练加速。

神经网络

将自动混合精度用于主流深度学习框架

TensorFlow

NVIDIA NGC容器注册表中TensorFlow容器可提供自动混合精度功能。要在容器内启用此功能,只需设置一个环境变量:

export TF_ENABLE_AUTO_MIXED_PRECISION=1

或者,您也可以在TensorFlow Python脚本中设置环境变量:

os.environ['TF_ENABLE_AUTO_MIXED_PRECISION'] = '1'

自动混合精度使用单一环境变量,在TensorFlow内部应用这两个步骤,并在必要时进行更细粒度的控制。

PyTorch

GitHub的Apex存储库中提供了自动混合精度功能。可将以下两行代码添加至当前训练脚本中以启用该功能:

model, optimizer = amp.initialize(model, optimizer)

with amp.scale_loss(loss, optimizer) as scaled_loss:    scaled_loss.backward()

MXNet

我们正在构建适用于MXNet的自动混合精度功能。您可通过GitHub了解我们的工作进展。可将以下代码行添加至当前训练脚本中以启用该功能:

amp.init()amp.init_trainer(trainer)with amp.scale_loss(loss, trainer) as scaled_loss:   autograd.backward(scaled_loss)

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分