赞
踩
默认情况下,大多数深度学习框架(包括PyTorch)都采用32位浮点(FP32)算法进行训练。但是,对于许多深度学习模型而言,这对于获得完全准确性不是必需的。2017年,NVIDIA研究人员开发了一种用于混合精度训练的方法,该方法在训练网络时将单精度(FP32)与半精度(例如FP16)格式结合在一起,并使用相同的超参数实现了与FP32训练相同的精度, NVIDIA GPU的其他性能优势:
为了简化为研究人员和从业人员提供的混合精度训练的用户体验,NVIDIA在2018年开发了Apex,这是具有自动混合精度(AMP)功能的轻型PyTorch扩展。此功能可将某些GPU操作从FP32精度自动转换为混合精度,从而在保持精度的同时提高性能。
对于PyTorch 1.6版本,NVIDIA和Facebook的开发人员将混合精度功能作为AMP软件包torch.cuda.amp移入了PyTorch核心。torch.cuda.amp
与apex.amp
。相比,更加灵活和直观。能够解决的一些apex.amp
已知痛点torch.cuda.amp
:
随着AMP被添加到PyTorch Core,我们已经开始弃用过程,apex.amp.
我们已经apex.amp
进入维护模式,将为客户提供支持。apex.amp.
但是,我们强烈鼓励apex.amp
客户torch.cuda.amp
从PyTorch Core过渡到使用。
请参阅官方文档以了解用法:
例:
import torch# Creates once at the beginning of trainingscaler = torch.cuda.amp.GradScaler()for data, label in data_iter:optimizer.zero_grad() # Casts operations to mixed precisionwith torch.cuda.amp.autocast():loss = model(data) # Scales the loss, and calls backward() # to create scaled gradientsscaler.scale(loss).backward() # Unscales gradients and calls # or skips optimizer.step()scaler.step(optimizer) # Updates the scale for next iterationscaler.update()
在本节中,我们将讨论在最新的NVIDIA GPU A100和上一代V100 GPU上使用AMP进行混合精度训练的准确性和性能。在NGC的NVIDIA pytorch:20.06-py3容器中运行深度学习工作负载时,将混合精度性能与FP32性能进行了比较。
使用AMP进行深度学习训练的优势在于,模型可以收敛到相似的最终精度,同时提供改进的训练效果。为了说明这一点,对于Resnet 50 v1.5训练,我们看到以下精度结果,越高越好。请注意,下面的准确度数字是样本数,该样本数之间的差异最大为0.4%。包括BERT,Transformer,ResNeXt-101,Mask-RCNN,DLRM在内的其他型号的精度数字可在 NVIDIA深度学习示例Github中找到。
训练精度:NVIDIA DGX A100(8x A100 40GB)
训练精度:NVIDIA DGX-1(8x V100 16GB)
带FP16的AMP是V100上进行DL训练的最高性能的选择。在表1中,我们可以看到,对于各种型号,V100上的AMP的速度比V100上的FP32快1.5倍至5.5倍,同时收敛到相同的最终精度。
在NVIDIA 8xV100上混合精度训练与在8xV100 GPU上FP32训练的性能对比。条形图表示V100 AMP相对于V100 FP32的加速因子。越高越好
带有FP16的AMP仍然是A100上进行DL训练的最高性能的选择。在下图中,我们可以看到,对于各种型号,A100上的AMP的速度比V100上的AMP快1.3倍至2.5倍,同时收敛到相同的最终精度。
在NVIDIA 8xA100与8xV100 GPU上进行混合精度训练的性能。条形图表示A100相对于V100的加速因子。越高越好。
AMP为Nvidia Tensor Core GPU(尤其是最新一代的Ampere A100 GPU)上的深度学习训练工作负载提供了健康的加速。您可以开始针对NVIDIA深度学习示例中可用的A100,V100,T4和其他GPU的启用AMP的模型和模型脚本进行实验。PyTorch NGC容器版本20.06可提供具有本地AMP支持的NVIDIA PyTorch 。我们强烈建议现有apex.amp
客户过渡到使用torch.cuda.amp
最新PyTorch 1.6版本中可用的PyTorch Core 。
接下来,给大家介绍一下租用GPU做实验的方法,我们是在智星云租用的GPU,使用体验很好。具体大家可以参考:智星云官网: http://www.ai-galaxy.cn/,淘宝店:https://shop36573300.taobao.com/公众号: 智星AI
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。