当前位置: 首页 > 专利查询>辉达公司专利>正文

用于以降低精度进行深度神经网络训练的损失缩放制造技术

技术编号:21739549 阅读:64 留言:0更新日期:2019-07-31 20:52
在使用降低的精度训练深度神经网络时,梯度计算在较大的值上操作而不影响训练过程的其余部分。一种训练深度神经网络的技术,产生损失值、缩放所述损失值、以降低的精度计算梯度,并减小计算梯度的大小以补偿所述损失值的缩放。在一个示例性非限制性布置中,训练正向传递将损失值缩放某个因子S,并且权重更新将权重梯度贡献减少1/S。可以使用几种技术来选择缩放因子S并调整权重更新。

Loss Scaling for Deep Neural Network Training with Reduced Accuracy

【技术实现步骤摘要】
【国外来华专利技术】用于以降低精度进行深度神经网络训练的损失缩放相关申请的交叉引用本申请要求2017年5月5日提交的62/502,333号和2017年9月21日提交的62/561,499号美国临时专利申请的权益;以及要求2018年5月4日提交的15/971,884的美国非临时申请的权益,所有这些申请都通过引用并入本文。关于联邦政府资助的研究或开发的声明没有。
该技术涉及深度神经网络(“DNN”),并且涉及使用降低的精度计算能力来有效地训练这样的网络。
技术介绍
在软件开发实践中,程序员应尽早并经常学习使用正确工具用于工作的重要性。在数值计算方面,这一点尤其重要,其中在精度、准确度和性能之间的权衡在选择数据的最佳表示中非常有用。许多技术和高性能计算应用程序需要使用32位(单浮点或FP32)或64位(双浮点或FP64)浮点表示和计算的高精度计算。但是有许多应用程序对于其较低精度的运算足够。例如,处于快速发展的深度学习领域的研究人员发现深度神经网络架构由于训练它们时使用的反向传播算法而具有自然的错误恢复能力,并且有些人认为16位浮点(半精度或FP16)足够用于训练此类网络。与更高精度的FP32(全精度)或FP64(双精度)相比,存储表示为FP16(半精度)的数据减少了神经网络的内存使用,可能允许训练和部署更大的网络。FP16数据传输比FP32或FP64传输花费的时间更少。对于许多网络,甚至可以使用8位整数计算执行某些深度学习推理,而不会对准确度产生重大影响。众所周知,将在计算方法或平台中组合使用不同的数值精度称为“混合精度”。虽然计算方法的不同时期或阶段可能使用不同精度的计算硬件,但是许多平台和计算设备现在提供混合精度能力作为配置选项。例如,通过用额外的将多个低精度运算打包到同一个32位数据通道中的向量指令补充更高精度的32位指令,NVIDIAPascal架构提供旨在为可以利用低精度计算的应用程序提供更高的性能的功能。这样的指令可以例如在16位浮点数据(“半精度或”FP16“)或8位和16位整数数据(AINTA和INT16)下操作。因此可以通过使用这种降低精度的能力来获得速度优势。例如,由GP100GPU驱动的NVIDIATeslaP100可以在吞吐量是FP32的两倍的情况下执行FP16算法。NVIDIATeslaP100支持双向向量半精度融合乘加(FMA)指令,该指令可以以与32位FMA指令相同的速率发出。例如,实现信息,参见例如标题为“可配置执行32位或双16位浮点操作的逻辑电路(LogicCircuitryConfigurabletoPerform32-BitorDual16-bitFloating-PointOperations)”的共同转让US20150169289,其通过引用结合于此。这意味着在P100上半精度运算具有单精度运算两倍的吞吐量。这些指令对于实现高效深度学习推理以及其他应用程序非常有用。尽管过去已经完成了一些将降低精度应用到机器学习和训练的工作,但是进行进一步的改进是可能且需要的。附图的简要说明本专利或申请文件包含至少一幅彩色附图。具有彩色附图的本专利或专利申请公开的副本将根据请求并支付必要费用后由主管局提供。下面结合附图阅读对示例性非限制性说明性实施例进行的详细描述:图1是示例神经元的简化示意图。图2是示例神经网络层的简化示意图。图3示出示例深度神经网络(DNN)的简化示意图。图4示出使用损失值的示例DNN训练的简化示意图。图5A示出全精度和半精度的示例Resnet50激活梯度的(彩色)直方图。图5B示出全精度和半精度的示例Resnet50权重梯度的(彩色)直方图。图6是使用降低的精度,缩放和缩放补偿的示例性非限制性实现的简化流程图。图6A是使用降低的精度,缩放和缩放补偿的示例性非限制性实现的简化示意图。图7是示出用于多次迭代中的梯度计算的示例性缩放和缩放补偿的流程图。图8是示例性非限制性软件结构的示意图。图9是使用用户指定的(超参数分配的)缩放因子S的示例性非限制性训练过程的示意性流程图。图10是使用自动选择缩放因子S的示例性非限制性训练程序的示意流程图。图11是使用默认但可修改的缩放因子S的示例性非限制性训练程序的示意流程图。图12是使用缩放结果测试的示例性非限制性训练程序的示意流程图。图13A-13D示出了示例性的不同梯度缩放补偿技术。图14是示例机器学习混合精度计算架构的示意图。图15是示例机器学习系统的示意图。示例性非限制性实现的详细描述在下面的描述中,阐述了许多具体细节以提供更透彻的理解,但是对于本领域普通技术人员来说显而易见的是,可以在没有这些具体细节中的一个或更多个的情况下实践本文的技术。没有描述众所周知的特征以避免模糊所公开的非限制性实现。能够在降低精度的硬件上有效且准确地执行深度神经网络机器学习计算是有利的。例如,截至该文档,可以在能够以全(例如,32位)精度执行浮点运算计算的硬件上执行典型的并行处理机器学习。但是,为了提高效率和机器利用率,使用诸如半精度的降低的精度计算能力(即,具有16位精度的浮点运算)有效地执行深度神经网络学习的至少一些方面可能是有利的。降低精度的硬件不覆盖广范围的表示为全精度的数值,但这种计算在硬件中实现和执行起来更便宜。这允许在硅的相同面积的上具有更多并行运算计算管线,并且相应地增加并行处理和机器学习速度。然而,当使用降低精度的硬件进行机器学习时,会出现某些数值问题。神经元的简化视图图1示出人工神经元100(计算机实现的神经网络的一部分)的机器实现的简化视图。图1的人工神经元100将输入值(x0,x1,x2,...,xn)与权重(w0,w1,w2,...,wn)相乘,并对乘积求和以产生输出(yo)。人工神经元100通过训练学习权重(w0,wl,w2,...,wn)的值。示例DNN的简化视图如图2所示,人工神经元100可以“前馈”,因此一个人工神经元的输出可以作为连续m个人工神经元中的下一个的输入,其中m是任何非负整数。这种人工神经元100可以分层组织以形成神经网络。在层输入和层输出之间可以存在任何数量的互连,其中人工神经元具有多个输入或者向其他人工神经元提供多个输出(为简单起见未示出)。深度神经网络(“DNN”)是m个层的集合,彼此相互馈入或者由一个馈入到下一个。一般而言,深度神经网络(DNN)是在输入和输出层之间具有多个隐藏的单元层的人工神经网络(ANN)。图3示出包括m个层100(1),100(2),......100(m)的示例DNN200。有时将图2中所示类型的DNN200称为深度前馈神经网络或多层感知器。这些网络被称为“前馈”,因为信息流经函数,该函数从x1到共同用于定义函数f的中间层(“隐藏层”),并最终到输出y来评估。深度神经网络200的每个层100具有其自身的权重。例如,权重w1与层100(1)相关联,权重w2与层100(2)相关联,等等。训练DNN200的目的是学习DNN所有层的权重w。DNN训练的简化视图图4示出示例性非限制性训练,其中损失计算L300处理DNN输出以提供训练。损失计算300(有时称为目标函数或标准,并且因为通常将其最小化,通常将其称为成本、损失或误差函数)将网络200的输出与我们希望它产生的输出进行比本文档来自技高网...

【技术保护点】
1.一种用于训练神经网络的系统,包括:至少一个数值计算电路,配置为基于损失值计算梯度;以及降低精度的选择器,所述降低精度的选择器耦合到所述至少一个数值计算电路,所述降低精度的选择器控制所述至少一个数值计算电路有选择地以降低精度的计算模式运行;其中,所述至少一个数值计算电路还配置为在基于使用所述降低精度的模式计算的梯度调整权重时缩放所述损失值。

【技术特征摘要】
【国外来华专利技术】2017.05.05 US 62/502,333;2017.09.21 US 62/561,499;1.一种用于训练神经网络的系统,包括:至少一个数值计算电路,配置为基于损失值计算梯度;以及降低精度的选择器,所述降低精度的选择器耦合到所述至少一个数值计算电路,所述降低精度的选择器控制所述至少一个数值计算电路有选择地以降低精度的计算模式运行;其中,所述至少一个数值计算电路还配置为在基于使用所述降低精度的模式计算的梯度调整权重时缩放所述损失值。2.如权利要求1所述的系统,其中所述至少一个数值计算电路配置为通过以与所述缩放成反比的方式减小所述权重梯度贡献来补偿所述缩放。3.如权利要求1所述的系统,其中所述至少一个数值计算电路配置为至少部分地基于超参数来缩放所述损失值。4.如权利要求1所述的系统,其中所述至少一个数值计算电路配置为通过自动选择的缩放因子来缩放所述损失值。5.如权利要求1所述的系统,进一步包括至少一个处理器,所述至少一个处理器配置为基于在上一次迭代中确定的最大幅度权重梯度,为所述神经网络训练的每次迭代自动选择所述缩放因子。6.如权利要求5所述的系统,其中所述至少一个处理器计算所述缩放因子的上限u=log2(215-x)。7.如权利要求6所述的系统,其中所述至少一个处理器还通过常数减小缩放因子以防止溢出。8.如权利要求6所述的系统,其中,所述至少一个处理器还配置为测试由所述神经网络的训练迭代确定的权重梯度,并且以所述测试结果为条件以减小的缩放因子重复所述迭代。9.如权利要求1所述的系统,其中,在使用权重梯度值进行权重更新之前,所述至少一个数值计算电路对每个权重梯度值进行与所述缩放因子成反比的量的修改。10.如权利要求1所述的系统,其中,所述至少一个数值计算电路通过将所述梯度与基于所述缩放调整的另一参数相组合来执行权重更新。11.权利要求10的系统,其中所述参数包括学习速率。12.权利要求10的系统,其中所述参数包括梯度限幅阈值。13.如权利要求10所述的系统,其中所述参数包括权重衰减。14.一种训练深度神经网络的过程,包括:(a)通过深度神经网络正向处理训练数据以产生损失值;(b)通过缩放因子缩放所述损失值;(c)通过深度神经网络反向传播所述缩放的损失值以计算梯度;以及(d)基于计算的梯度以补偿缩放的方式调整深度神经网络的权重。15.如权利要求14所述的过程,其中所述补偿包括在使用计算的梯度调整权重之前通过缩放因子减小所述计算的梯度。16.如权利要求14所述的过程,进一步包括使用降低的精度计算所述梯度。17.如权利要求14所述的过程,进一步包括以比与训练数据的正向处理相关联的至少一些计算所使用的精度更低的精度计算所述梯度。18.如权利要求14所述的过程,进一步包括使用半精度计算梯度,同时恢复零值并规范化由于所述半精度的非正常值。19.一种存储指令的非暂时性存储器,所述指令在由至少一个处理器执行时控制所述至少一个处理器以执行步骤,包括:(a)利用深度神经网络处理数据以产生损失值;(b)通过缩放因子缩放所述损失值;(c)通过所述深度神经网络反向传播所述缩放的损失值以计算梯度;(d)使用计算的梯度来调整所述深度神经网络的权重。20.一种混合精度计算组件,包括:能够以降...

【专利技术属性】
技术研发人员:吴昊J·阿尔本P·米齐可维休斯
申请(专利权)人:辉达公司
类型:发明
国别省市:美国,US

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1