在神经网络中执行重计算的方法和计算设备技术

技术编号:34188655 阅读:21 留言:0更新日期:2022-07-17 14:52
本公开提供了一种在神经网络中执行重计算的方法和计算设备。该方法包括:在所述神经网络的一个中间层,在前向方向上,基于装载所述中间层的一个中间子层的输入数据的成本、利用所述中间子层的输入数据计算输出数据的成本以及装载所述中间子层的输出数据的成本来确定是否存储所述中间子层的输出数据;如果确定存储所述中间子层的输出数据,在得到所述中间子层的输出数据之后将所述中间子层的输出数据缓存到所述计算核的片上缓存和/或存储到片外存储器中;以及如果确定不存储所述中间子层的输出数据,在得到所述中间子层的输出数据之后将所述中间子层的输出数据缓存到所述计算核的片上缓存或寄存器,以供下一中间层或下一中间子层立刻使用。一中间子层立刻使用。一中间子层立刻使用。

【技术实现步骤摘要】
在神经网络中执行重计算的方法和计算设备


[0001]本公开概括而言涉及神经网络计算领域,更具体地,涉及一种在神经网络中执行重计算的方法和计算设备。

技术介绍

[0002]当前,神经网络已经广泛应用于图像分类、对象识别等领域。在这些领域中,可以利用预先获取的图像样本等对神经网络进行训练,以得到相应的训练后的神经网络模型。该训练后的神经网络模型可以用于对新的图像数据进行识别或分类等。
[0003]神经网络的训练是一个复杂的过程,网络的前面层的微小的改变都会累积放大到后面的层,从而前面层训练参数的更新将导致后面层输入数据分布的变化。为此,在神经网络中引入了批量归一化(Batch Normalization,BN)的概念,其中在对每一层的输入数据进行处理之前,首先对这些输入数据进行批量归一化,以将输入数据的特征强制性地变换到均值为0、方差为1的数学模型下。
[0004]神经网络的各个层的尺寸可能不同,在同一层计算该层的反向传播激励和反向传播权重可能造成运算负载不稳定以及对存储空间的需求不平衡。
[0005]此外,在前向方向上总是存储各个子层的输出数据不仅占用较多存储空间,而且有可能增大反向方向上读取这些输出数据的时间开销。

技术实现思路

[0006]针对上述问题,本公开提供了一种在神经网络中执行重计算的方法,其通过在前向方向上确定是否对中间子层的输出数据进行缓存,使得反向方向上的时间开销最小。
[0007]根据本公开的一个方面,提供了在神经网络中执行重计算的方法。该方法包括:在所述神经网络的一个中间层,在前向方向上,基于装载所述中间层的一个中间子层的输入数据的成本、利用所述中间子层的输入数据计算输出数据的成本以及装载所述中间子层的输出数据的成本来确定是否存储所述中间子层的输出数据;如果确定存储所述中间子层的输出数据,在得到所述中间子层的输出数据之后将所述中间子层的输出数据缓存到所述计算核的片上缓存和/或存储到片外存储器中;以及如果确定不存储所述中间子层的输出数据,在得到所述中间子层的输出数据之后将所述中间子层的输出数据缓存到所述计算核的片上缓存或寄存器,以供下一中间层或下一中间子层立刻使用。
[0008]根据本公开的另一个方面,提供了一种计算设备。该计算设备包括计算核,所述计算核被配置为执行如上所述的方法。
[0009]在一些实施例中,所述方法还包括:存储所述中间子层之前的另一中间子层的输出数据。
[0010]在一些实施例中,所述方法还包括:在所述神经网络的反向方向上,利用所存储的所述另一中间子层的输出数据计算所述中间子层的输出数据。
[0011]在一些实施例中,所述中间子层是所述中间层的激活子层,并且所述另一中间子
层是所述中间层的卷积子层或者BN子层。
[0012]在一些实施例中,在所述另一中间子层是所述中间层的卷积子层的情况下,所述方法还包括:在所述神经网络的反向方向上,所述计算核利用所述卷积子层的输出数据计算反向BN子层的输出数据以进一步计算所述中间层的BN子层的参数的梯度值。
[0013]在一些实施例中,在所述另一中间子层是所述中间层的BN子层的情况下,所述方法还包括:在所述神经网络的反向方向上,对所述中间层的BN子层的输出数据进行BN逆运算,然后基于BN逆运算的结果计算反向BN子层的输出数据以进一步计算所述中间层的BN子层的参数的梯度值。
[0014]在一些实施例中,确定是否存储所述中间子层的输出数据包括:基于装载所述中间子层的输入数据的成本与计算所述中间子层的输出数据的成本之和是否小于装载所述中间子层的输出数据的成本来确定是否存储所述中间子层的输出数据。
[0015]在一些实施例中,装载所述中间子层的输入数据的成本取决于所述输入数据的数据量和所述输入数据的存储位置;装载所述中间子层的输出数据的成本取决于所述输出数据的数据量和所述输出数据的存储位置;以及计算所述输出数据的成本取决于所述中间子层的总的操作数和所述计算核的硬件数据通道宽度。
附图说明
[0016]通过参考下列附图所给出的本公开的具体实施方式的描述,将更好地理解本公开,并且本公开的其他目的、细节、特点和优点将变得更加显而易见。
[0017]图1示出了根据本公开的神经网络的结构示意图。
[0018]图2示出了根据本专利技术实施例的计算核的示意性硬件结构图。
[0019]图3示出了根据现有技术的反向传播过程的示意图。
[0020]图4示出了根据本专利技术的实施例的反向传播过程的示意图。
[0021]图5示出了根据本专利技术的在神经网络中执行的重计算方法的流程图。
[0022]图6示出了在前向方向上存储卷积子层的输出数据的数据流的示意图。
[0023]图7示出了在前向方向上存储BN子层的输出数据的数据流的示意图。
[0024]图8示出了根据本专利技术的计算设备的示意图。
具体实施方式
[0025]下面将参照附图更详细地描述本公开的优选实施例。虽然附图中显示了本公开的优选实施例,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
[0026]在本文中使用的术语“包括”及其变形表示开放性包括,即“包括但不限于”。除非特别申明,术语“或”表示“和/或”。术语“基于”表示“至少部分地基于”。术语“一个实施例”和“一些实施例”表示“至少一个示例实施例”。术语“另一实施例”表示“至少一个另外的实施例”。术语“第一”、“第二”等等可以指代不同的或相同的对象。
[0027]图1示出了根据本公开的神经网络100的结构示意图。如图1中所示,神经网络100可以包括输入层110、多个中间层120(图1中示意性地示出了M个中间层120

1、120

2、120

3、
……
120

M,其中M是大于2的整数)和一个实现为全连接层的输出层130。其中,每个中间层120包括卷积子层122、批量归一化(BN)子层124和激活子层126。在前向方向上,卷积子层122用于对输入数据执行卷积处理,BN子层124用于对输入数据进行批量归一化,激活子层126用于向归一化的输入数据施加激励函数(例如Relu函数)以产生激励(activations)。也就是说,在前向方向上,每个中间层120可以对输入数据进行处理以产生该中间层的激励作为输出。其中,在该中间层120是神经网络100的首个中间层的情况下,该中间层120的输入数据可以是输入给神经网络100的训练数据;在该中间层120不是神经网络100的首个中间层的情况下,该中间层120的输入数据是前一中间层120产生的激励。
[0028]神经网络100的输入层110、多个中间层120和输出层130可以实现在一个计算核上,如图2中所示的计算核200。图2示出了根本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种在神经网络中执行重计算的方法,包括:在所述神经网络的一个中间层,在前向方向上,基于装载所述中间层的一个中间子层的输入数据的成本、利用所述中间子层的输入数据计算输出数据的成本以及装载所述中间子层的输出数据的成本来确定是否存储所述中间子层的输出数据;如果确定存储所述中间子层的输出数据,在得到所述中间子层的输出数据之后将所述中间子层的输出数据缓存到所述计算核的片上缓存和/或存储到片外存储器中;以及如果确定不存储所述中间子层的输出数据,在得到所述中间子层的输出数据之后将所述中间子层的输出数据缓存到所述计算核的片上缓存或寄存器,以供下一中间层或下一中间子层立刻使用。2.如权利要求1所述的方法,还包括:存储所述中间子层之前的另一中间子层的输出数据。3.如权利要求2所述的方法,还包括:在所述神经网络的反向方向上,利用所存储的所述另一中间子层的输出数据计算所述中间子层的输出数据。4.如权利要求1所述的方法,其中所述中间子层是所述中间层的激活子层,并且所述另一中间子层是所述中间层的卷积子层或者BN子层。5.如权利要求4所述的方法,其中在所述另一中间子层是所述中间层的卷积子层的情况下,所述方法还包括:在所述神经...

【专利技术属性】
技术研发人员:ꢀ七四专利代理机构
申请(专利权)人:上海壁仞智能科技有限公司
类型:发明
国别省市:

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

1