CN117808045A - 用于对神经网络中的卷积层执行通道均衡的方法和系统 - Google Patents
用于对神经网络中的卷积层执行通道均衡的方法和系统 Download PDFInfo
- Publication number
- CN117808045A CN117808045A CN202311227627.6A CN202311227627A CN117808045A CN 117808045 A CN117808045 A CN 117808045A CN 202311227627 A CN202311227627 A CN 202311227627A CN 117808045 A CN117808045 A CN 117808045A
- Authority
- CN
- China
- Prior art keywords
- channel
- per
- layer
- tensor
- convolutional layer
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/0495—Quantised networks; Sparse networks; Compressed networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/0464—Convolutional networks [CNN, ConvNet]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/048—Activation functions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Evolutionary Computation (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Computational Linguistics (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Neurology (AREA)
- Complex Calculations (AREA)
- Image Processing (AREA)
Abstract
本申请涉及用于对神经网络中的卷积层执行通道均衡的方法和系统。用于根据神经网络处理数据的方法和系统,该神经网络包括层序列,该层序列包括第一卷积层、第二卷积层以及该第一卷积层与该第二卷积层之间的零个、一个或多于一个中间层。该方法包括:使用硬件逻辑,在第一卷积层之后和第二卷积层之前,通过一组每通道激活缩放因子在每通道的基础上对神经网络中的张量进行缩放;以及使用硬件逻辑,利用已经通过一组每通道激活缩放因子的倒数在每输入通道的基础上缩放的权重来实现第二卷积层。
Description
技术领域
本申请涉及用于对神经网络中的卷积层执行通道均衡的方法和系统。
背景技术
深度神经网络(DNN)是人工神经网络的一种形式,包括可用于机器学习应用程序的多个互连层。特别地,DNN可用于信号处理应用程序,包含但不限于图像处理和计算机视觉应用程序。图1示出了包括多个层(例如,第一层102、第二层104、第三层106)的示例DNN100。每一层102、104、106接收输入数据,并且根据层来处理输入数据以产生输出数据。输出数据作为输入数据被提供给另一层,或者作为DNN的最终输出数据被输出。例如,在图1的DNN 100中,第一层102接收到针对DNN 100的原始输入数据108,并且根据第一层102来处理输入数据以产生输出数据110。第一层102的输出数据110成为第二层104的输入数据,并且第二层104根据第二层104处理输入数据(即,第一层102的输出数据110)以产生输出数据112。第二层104的输出数据112成为第三层106的输入数据,并且第三层106根据第三层106处理输入数据(即,第二层104的输出数据112)以产生输出数据114。然后,第三层106的输出数据114作为DNN的最终输出数据输出。在DNN用于分类的情况下,最终输出数据是长度向量A,其中A是类别的数量,并且向量中的每个值表示某个类别的概率。
输入到DNN的层以及从该层输出的数据可以被描述为张量200。如本领域技术人员所知,张量是向量和矩阵的统称,并且可以被视为n维阵列。向量是一维张量,并且矩阵是二维张量。DNN中的张量通常是四维的,但不一定是四维的。参考图2,其示出了示例性四维(4D)张量200,其中为了可视化目的,已经抑制了(例如,对应于批量大小的)一个维度。4D张量200可以被描述为包括一个或多个3D张量,其中每个3D张量包括Cin个数据平面,其中每个平面的尺寸为W×H。每个平面可以被称为张量的通道。3D张量的数量可以被称为批量大小。例如,每个3D张量可以是图像。张量的元素可以被称为张素(tensel),类似于图片的元素被称为像素。
对层的输入数据执行的处理取决于层的类型。例如,DNN的每一层可以是多种不同类型中的一种类型。示例DNN层类型包含但不限于卷积层、激活层、归一化层、池化层,以及全连接层。对于本领域技术人员将显而易见的是,这些是示例DNN层类型,并且这不是详尽的列表,并且可存在其他DNN层类型。
对于卷积层,将输入数据与与所述层相关联的权重进行卷积。具体地,每个卷积层与多个权重k1…kg相关联,所述多个权重还可以被称为滤波器权重或系数。权重被分组以形成一个或多个滤波器或内核,并且每个滤波器可以与偏移量偏置bias相关联。每个滤波器的尺寸可为KW×KH×Cin(即,每个滤波器可包括一组KW×KH×Cin个权重k),并且可根据在W方向和H方向上跨步sW和步sH的卷积运算被应用于输入数据,如图2所示。步长sW和sH可以被称为卷积的步幅。滤波器的数量和尺寸和/或每个滤波器的权重的数量可在卷积层之间变化。卷积神经网络(CNN)是一种有效的图像识别和分类方法,它是DNN的一种特殊类型,一般包括多个卷积层。
通常但不一定在卷积层之后的激活层将一个或多个激活函数应用于到层的输入数据。激活函数接收输入张量,并对输入张量中的每个值或元素执行特定的非线性数学运算。换句话说,激活函数分别对输入张量中的每个值或元素进行运算。在一些示例中,激活层可通过实现ReLU函数充当整流线性单元(ReLU),或者可通过实现LReLU函数充当泄漏整流线性单元(LReLU)。
归一化层被配置成对输入数据执行归一化函数,诸如局部响应归一化(LRN)函数。池化层执行池化函数(诸如max函数、min函数或average函数)以汇总输入数据的子集。因此,池化层的目的是减小表示的空间大小,以减少网络中参数和计算的数量,并且因此还控制过度拟合。
通常但不一定在多个卷积和池化层之后的全连接层获取输入数据值的二维张量(例如,具有批量大小和通道维度的张量)并且输出二维张量(例如,具有批量大小维度和通道维度的张量)。在DNN用于分类的情况下,输出可以具有A个通道,其中A是类别的数量,并且张量中的每个值可以表示某个类别的概率。输出张量通过一组权重的矩阵乘法来生成,可选地后面是偏差偏移量。因此,全连接层接收一组权重并且可接收偏差。
因此,DNN的每一层接收输入数据值(例如,输入张量)并生成输出数据值(例如,输出张量);并且一些层(诸如但不限于卷积层和全连接层)也接收权重和/或偏差。DNN的各层的输入数据值、输出数据值、权重和偏差可统称为DNN的网络参数。
为了实现神经网络,神经网络的参数以数字格式表示。两种常见的数字格式是定点数格式和浮点数格式。如本领域的技术人员所知,定点数格式在基数点(例如,小数点或二进制点)之后具有固定数量的数位。相反,浮点数格式没有固定的基数点(即,可以“浮动”)。换句话说,基数点可被放置在数字内的多个位置。也有类似于定点数格式的其他格式,但其中指数是(以浮点格式存储的)固定实数而不是整数。对于这些格式,2exponent通常被称为“缩放”。这种格式也可以拥有“零点”,其充当存储值的偏移量,以允许不对称的数字范围。存储值xint对应于值x=scale*(xint-zero point)。虽然以浮点数格式表示DNN的网络参数可以允许产生更准确或更精确的输出数据,但是以浮点数格式处理网络参数是复杂的,这往往会增加实现神经网络的硬件的硅面积、功耗、内存和带宽消耗以及复杂性。因此,网络参数中的至少一些网络参数可以以另一种格式(诸如定点数格式)表示,以减少实现神经网络的硬件的硬件面积、功耗、内存和带宽消耗以及复杂性。
一般来说,用于表示DNN的网络参数(例如,输入数据值、权重、偏差和输出数据值)的位越少,可实现DNN的效率越高。然而,通常用于表示DNN的网络参数(例如,输入数据值、权重、偏差和输出数据值)的位越少,DNN变得越不准确。因此,希望使用减少的位数来实现DNN,而不损害DNN的准确度。
下面描述的实施方案仅以示例的方式提供,并且不限制解决用于实现DNN的方法和系统的任何或所有缺点的实施方式。
发明内容
提供本发明内容是为了以简化形式介绍下文在具体实施方式中进一步描述的一系列概念。本发明内容不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用以限制所要求保护的主题的范围。
本文描述了用于根据神经网络处理数据的方法和系统,该神经网络包括层序列,该层序列包括第一卷积层、第二卷积层以及该第一卷积层与该第二卷积层之间的零个、一个或多于一个中间层。该方法包括:使用硬件逻辑,在第一卷积层之后和第二卷积层之前,通过一组每通道激活缩放因子在每通道的基础上对神经网络中的张量进行缩放;以及使用硬件逻辑,利用已经通过一组每通道激活缩放因子的倒数在每输入通道的基础上缩放的权重来实现第二卷积层。
第一方面提供了一种根据神经网络处理数据的方法,该神经网络包括层序列,该层序列包括第一卷积层、第二卷积层以及该第一卷积层与该第二卷积层之间的零个、一个或多于一个中间层,该方法包括:使用硬件逻辑,在第一卷积层之后和第二卷积层之前,通过一组每通道激活缩放因子在每通道的基础上对神经网络中的张量进行缩放;以及使用硬件逻辑,利用已经通过一组每通道激活缩放因子的倒数在每输入通道的基础上缩放的权重来实现第二卷积层。
该神经网络可以包括第二层序列,该第二层序列包括第三卷积层、第四卷积层以及该第三卷积层与该第四卷积层之间的零个、一个或多于一个中间层,并且该方法还包括:在第三卷积层之后和第四卷积层之前,通过第二组每通道激活缩放因子在每通道的基础上对神经网络中的张量进行缩放;以及利用已经通过第二组每通道激活缩放因子的倒数在每输入通道的基础上缩放的权重来实现第四卷积层。
第二卷积层和第三卷积层可以是相同的卷积层。
通过一组每通道激活缩放因子在每通道的基础上缩放的张量可以是第一卷积层的输出张量。
该序列可以包括中间层,并且该中间层的输出张量可以馈送包括第二卷积层的第一分支和第二分支,并且该方法还可以包括使用硬件逻辑,通过一组每通道激活缩放因子的倒数在每通道的基础上对第二分支中的张量进行缩放。
第一卷积层的输出张量可以馈送包括第二卷积层的第一分支和第二分支,并且该方法还可以包括使用硬件逻辑,通过一组每通道激活缩放因子的倒数在每通道的基础上对第二分支中的张量进行缩放。
该序列可以包括中间层,并且通过一组每通道激活缩放因子在每通道的基础上缩放的张量可以是该中间层的输出张量。
第一卷积层可以形成第一分支的一部分,并且第一分支的输出张量与第二分支的张量组合,以生成到第二卷积层的输入张量,并且该方法还可以包括通过一组每通道激活缩放因子在每通道的基础上对第二分支的张量进行缩放。
第一卷积层可以形成第一分支的一部分,并且第一分支的输出张量与第二分支的张量组合,以生成到第二卷积层的输入张量,并且通过一组每通道激活缩放因子在每通道的基础上缩放的张量是到第二卷积层的输入张量。可以由硬件逻辑的单个硬件单元执行组合以及通过一组每通道激活缩放因子进行的缩放。
该序列可以包括非缩放不变的中间层。
该方法还可以包括:利用已经通过一组每通道权重缩放因子在每输出通道的基础上缩放的权重来实现第一卷积层;以及通过一组每通道权重缩放因子的倒数在每通道的基础上对第一卷积层的输出张量进行缩放。
可以通过相同的运算将一组每通道激活缩放因子和一组每通道权重缩放因子的倒数应用于第一卷积层的输出张量。
可以通过第一运算将一组每通道激活缩放因子应用于张量,并且可以通过不同的第二运算将一组每通道权重缩放因子的倒数应用于第一卷积层的输出张量。
该方法还可以包括由处理器标识一组每通道权重缩放因子。
该方法还可以包括由处理器标识神经网络中的层序列。
该方法还可以包括由处理器选择一组每通道激活缩放因子。
该序列可以包括缩放不变的中间层。
该序列可以包括中间层,该中间层是实现ReLU函数的激活层、实现LReLU函数的激活层和池化层中的一者。
硬件逻辑可以包括神经网络加速器。
神经网络加速器可以包括被配置为执行每通道乘法的硬件单元,并且由该硬件单元执行通过一组每通道激活缩放因子对张量的缩放。
第一卷积层可以形成第一分支的一部分,并且第一分支的输出张量可以与第二分支的张量组合,以生成到第二卷积层的输入张量,并且通过一组每通道激活缩放因子在每通道的基础上缩放的张量可以是到第二卷积层的输入张量。神经网络加速器可以包括硬件单元,该硬件单元被配置为执行第一张量与第二张量之间的每张素运算,以及对该每张素运算的输出进行重缩放,并且可由该硬件单元执行组合以及通过一组每通道激活缩放因子进行的缩放。
第一卷积层可以形成第一分支的一部分,并且第一分支的输出张量可以与第二分支的张量组合,以生成到第二卷积层的输入张量,并且该方法还可以包括通过一组每通道激活缩放因子在每通道的基础上对第二分支的张量进行缩放。神经网络加速器可以包括硬件单元,该硬件单元被配置为接收第一张量和第二张量,对第二张量进行重缩放,以及在第一张量与重缩放的第二张量之间执行每张素运算,并且可由该硬件单元执行组合以及通过一组每通道激活缩放因子对第二分支中的张量进行的缩放。
第二方面提供了一种被配置为执行第一方面的方法的神经网络加速器。
第三方面提供了一种被配置为根据神经网络处理数据的神经网络加速器,该神经网络包括层序列,该层序列包括第一卷积层、第二卷积层以及该第一卷积层与该第二卷积层之间的零个、一个或多于一个中间层,该神经网络加速器包括硬件逻辑,该硬件逻辑被配置为在第一卷积层之后和第二卷积层之前,通过一组每通道激活缩放因子在每通道的基础上对神经网络中的张量进行缩放,以及利用已经通过一组每通道激活缩放因子的倒数在每输入通道的基础上缩放的权重来实现第二卷积层。
第四方面提供了计算机可读存储介质,该计算机可读存储介质上存储有计算机可读代码,该计算机可读代码被配置为在运行该代码时使神经网络加速器执行第一方面的方法。
第五方面提供了一种使用神经网络加速器根据神经网络处理数据的方法,该神经网络加速器包括被配置为加速卷积运算的卷积处理单元和被配置为执行每通道乘法的一个或多个硬件单元,该神经网络包括层序列,该层序列包括第一卷积层、第二卷积层以及该第一卷积层与该第二卷积层之间的零个、一个或多于一个中间层,该方法包括:使用被配置为执行每通道乘法的一个或多个硬件单元中的一个硬件单元,在第一卷积层之后和第二卷积层之前,通过一组每通道激活缩放因子在每通道的基础上对神经网络中的张量进行缩放;以及使用卷积处理单元,利用已经通过一组每通道激活缩放因子的倒数在每输入通道的基础上缩放的权重来实现第二卷积层。
该方法还可以包括:使用卷积处理单元,利用已经通过一组每通道权重缩放因子在每输出通道的基础上缩放的权重来实现第一卷积层;以及使用被配置为执行每通道乘法的一个或多个硬件单元中的一个硬件单元,通过一组每通道权重缩放因子的倒数在每通道的基础上对第一卷积层的输出张量进行缩放。
本文中描述的神经网络加速器可以体现在集成电路上的硬件中。可以提供一种在集成电路制造系统处制造本文描述的神经网络加速器的方法。可以提供一种集成电路定义数据集,该集成电路定义数据集当在集成电路制造系统中处理时将系统配置为制造体现本文描述的神经网络加速器的集成电路。可以提供一种非暂时性计算机可读存储介质,所述非暂时性计算机可读存储介质上存储有神经网络加速器的计算机可读描述,所述计算机可读描述在集成电路制造系统中被处理时使得所述集成电路制造系统制造包括所述神经网络加速器的集成电路。
可以提供一种集成电路制造系统,所述集成电路制造系统包括:非暂时性计算机可读存储介质,其上存储有本文描述的神经网络加速器的计算机可读描述;布局处理系统,其被配置为处理所述计算机可读描述,以便生成包括所述神经网络加速器的集成电路的电路布局描述;以及集成电路生成系统,其被配置为根据所述电路布局描述制造包括所述神经网络加速器的集成电路。
可以提供用于执行本文中描述的方法中的任何方法的计算机程序代码。可以提供非暂时性计算机可读存储介质,该非暂时性计算机可读存储介质上存储有计算机可读指令,该计算机可读指令当在计算机系统处被执行时使得该计算机系统执行本文所描述的方法中的任一种方法。
如对本领域的技术人员将显而易见,上述特征可以适当地组合,并且可与本文中所描述的示例的各方面中的任一方面进行组合。
附图说明
现在将参考附图详细描述示例,在附图中:
图1是示例性深度神经网络(DNN)的示意图;
图2是示出对DNN中的示例性张量执行示例性卷积运算的示意图;
图3是示出示例性神经网络的层的示例性张量的多个通道的分布的一组直方图;
图4是针对作为层序列的一部分的卷积层实现激活通道均衡的示例性方法的示意图;
图5是针对作为第一示例性层序列的一部分的卷积层实现激活通道均衡的第二示例性方法的示意图;
图6是针对作为第二示例性层序列的一部分的卷积层实现激活通道均衡的第三示例性方法的示意图;
图7是示出针对作为第一示例性层序列的一部分的卷积层实现激活通道均衡和权重通道均衡的第一示例性方法的示意图;
图8是示出针对作为第二示例性层序列的一部分的卷积层实现激活通道均衡和权重通道均衡的第二示例性方法的示意图;
图9是示出示例性层序列的示意图,其中第二卷积层形成分支的一部分;
图10是示出示例性神经网络中的图9的层序列的示意图;
图11是示出用于针对图9的层序列的第一卷积层实现激活通道均衡的示例性方法的示意图;
图12是示出示例性层序列的示意图,其中第一卷积层形成分支的一部分;
图13是示出示例性神经网络中的图12的层序列的示意图;
图14是示出用于针对图12的层序列的第一卷积层实现激活通道均衡的第一示例性方法的示意图;
图15是逐元素运算(EWO)处理单元的示例性实施方式的框图;
图16是示出针对图12的层序列的第一卷积层实现激活通道均衡的第二示例性方法的示意图;
图17是示出针对图12的层序列的第一卷积层实现激活通道均衡的第三示例性方法的示意图;
图18是使用激活通道均衡处理神经网络的示例性方法的流程图;
图19是用于实现本文描述的任何方法的示例性神经网络加速器的框图;
图20是图19的卷积处理单元的示例性实施方式的框图;
图21是图20的卷积引擎的示例性实施方式的框图;
图22是如本文描述的对卷积层输出执行和不执行激活通道均衡的示例性神经网络的输出处的均方误差的图表;
图23是可在其中实现本文描述的神经网络加速器的示例性计算机系统的框图;并且
图24是用于生成体现本文描述的神经网络加速器的集成电路的集成电路制造系统的框图。
附图示出了各种示例。技术人员将了解,附图中所示出的元件边界(例如框、框的组,或其他形状)表示边界的一个示例。在一些示例中,情况可能是一个元件可以被设计为多个元件,或者多个元件可以被设计为一个元件。在适当的情况下,贯穿各附图使用共同的附图标记来指示类似的特征。
具体实施方式
借助于示例呈现以下描述,以使得本领域的技术人员能够制造和使用本发明。本发明不限于本文中所描述的实施方案,并且对所公开实施方案的各种修改对于本领域的技术人员将是明显的。
现在将仅借助于示例来描述实施方案。
如上所述,虽然以浮点数格式表示DNN的网络参数可以允许产生更准确或更精确的输出数据,但是以浮点数格式处理网络参数是复杂的,这往往会增加实现神经网络的硬件的硅面积、功耗、内存和带宽消耗以及复杂性。因此,网络参数中的至少一些网络参数可以以另一种格式(诸如定点数格式)表示,以减少实现神经网络的硬件的面积、功耗、内存、带宽消耗和复杂性。然而,以另一种格式(诸如定点数格式)表示一组网络参数通常涉及将该组网络参数从浮点数格式量化为期望的数字格式。由于量化引入了量化误差,所以这会降低神经网络的准确度。
申请人已知的用于解决这个问题的一种方法(并不承认该方法是众所周知的或在申请公司之外是已知的)是,根据一个或多个格式选择算法中的一个格式选择算法,在每层的基础上为每种类型的网络参数选择数字格式,而不是为神经网络的所有网络参数选择单个数字格式。层的不同类型的网络参数可以包括:(i)输入数据值;(ii)权重;(iii)偏差;和/或(iv)输出数据值。因此,可以为第一层的输入数据值选择数字格式,可以为第一层的权重选择另一种数字格式,并且可以为第二层的输入数据值选择又一种数字格式。由于特定类型的层的所有网络参数可以被称为该层的张量,所以这也可以被称为在张量的基础上选择数字格式。
然而,激活张量内的不同通道可具有不同的范围。例如,图3示出了直方图,该直方图示出了MobileNet v3神经网络的层的示例性激活张量的十六个通道(即,通道1至16)的分布。可以看出,通道之间的范围存在显著差异。因此,对激活张量的所有通道使用单个数字格式可以剪切一些通道或者更粗略地量化窄通道。例如,如图22中的“原始”条所示,测试表明,图3的对网络输出造成最大扰动(例如,可以通过相对于浮点输出的L2范数来测量)的通道(1、4、11和14,以及程度小得多的15)整体具有比张量更小的范围。通过为这些通道选择与张量中其他通道的数字格式不同的数字格式,可以减少由于这些通道对网络输出的扰动。然而,跟踪和实现激活张量的每个通道的单独数字格式很难在硬件中实现,并且在某些情况下,可能需要在浮点中执行计算,这违背了多种格式的目的。
申请人已知的解决对于不同通道的网络参数具有不同范围的层的激活张量的所有网络参数具有单个数字格式的问题的一种方法(并不承认该方法是众所周知的或在申请公司之外是已知的)是,当两个连续卷积层被实现ReLU函数的激活层分开时,通过缩放它们的权重来实现激活通道均衡。本文使用术语通道均衡意指每个通道的范围与可由张量的数字格式最佳地表示的值的范围一致。图4示出了申请人已知的激活通道均衡方法。注意,为了简单起见,在本文的图中,卷积被示出为矩阵乘法。还要注意,每个滤波器也可能存在偏差,该偏差被添加到对应输出通道中的每个张素的输出。然而,为了简单起见,图中已经省略了偏差。
在已知方法中,神经网络包括层序列,该层序列包括第一卷积层402、实现ReLU函数的激活层404和第二卷积层406,对应于第一卷积层402的每个输出通道的权重根据对应的缩放因子si进行缩放。对于本领域技术人员显而易见的是,图4的矩阵符号意指第一卷积层402的对应于同一输出通道的所有权重都由同一缩放因子进行缩放。这可以被视为改变第一卷积层402的权重和输出的量化步长。然后,与第二卷积层406的每个输入通道相关联的权重被反向缩放(1/si)以进行补偿。例如,如果第一卷积层402的ith输出通道对应于第二卷积层406的jth输入通道,则与第二卷积的jth输入通道相关联的所有权重都由1/si进行缩放。在许多情况下,第一卷积层402的ith输出通道对应于第二卷积层406的ith输入通道,使得i=j。对于本领域技术人员显而易见的是,图4的矩阵符号意指第二卷积层406的对应于同一输入通道的所有权重都由同一缩放因子进行缩放。在每个滤波器存在被添加到对应输出通道中的每个张素的输出的偏差的情况下,每个输出通道的偏差也将由对应的缩放因子进行缩放。例如,ith输出通道的偏差将由ith缩放因子si进行缩放。
此方法利用了由激活层404实现的ReLU函数的缩放不变性。此方法允许激活通道均衡,而不需要实现网络的附加运算,并且不需要改变序列输出的格式。然而,虽然这种已知方法的目的是实现激活通道均衡,但由于缩放因子也影响权重量化,所以对缩放因子进行限制以避免增加权重量化误差。因此,申请人已知的用于实现激活通道均衡的此方法不能使通道完全均衡。
在申请人已知的另一种方法(并不承认该方法是众所周知的或该方法在申请公司之外是已知的)中,以类似于图4所示的方式对权重进行缩放,但不是选择权重缩放因子来执行激活通道均衡,而是选择权重缩放因子来执行权重通道均衡(例如,以优化对权重的量化)。然而,由于选择权重缩放因子来优化权重通道均衡,所以这不能实现激活通道均衡。因此,权重缩放方法可用于优化权重通道均衡或激活通道均衡,或者在它们之间进行折衷,但不能同时优化两者。由于权重通道均衡和激活通道均衡由权重链接(耦合),所以权重缩放不能用于最佳地实现两者。因此,在权重缩放方法中,必须在权重通道均衡与激活通道均衡之间进行权衡。
因此,本文描述了用于以激活通道均衡与权重通道均衡分离或解耦的方式实现卷积层的输出的激活通道均衡的方法和系统。具体地,在本文描述的方法和系统中,不是通过对所描述序列的第一卷积层的权重进行缩放来执行激活通道均衡,而是通过在第一卷积层之后和第二卷积层之前应用每通道缩放因子来执行激活通道均衡。类似于参考图4描述的已知方法,然后通过将逆缩放应用于序列中后续卷积层的权重,在序列中的后续卷积层中反转(或补偿)缩放。通过在后续卷积层中反转缩放,第一卷积层的不同通道的不同格式不需要通过神经网络的其余层来跟踪。
虽然与参考图4描述的方法相比,此方法包括执行附加运算,但通过将激活通道均衡与权重量化分离,此方法允许卷积层的输出的全激活通道均衡。此外,一些神经网络加速器具有可以有效地执行逐通道乘法的硬件,从而允许有效地实现附加运算。例如,如下文更详细描述的,申请人的神经网络加速器包括可以有效地执行逐通道乘法的张素重缩放处理单元。
所描述的方法已经被特别设计并且适应于该方法的特定技术实施方式——神经网络加速器(NNA)上的实施方式,其包括被配置为加速卷积运算的卷积处理单元和被配置为执行每通道乘法的一个或多个硬件单元(例如,张素重缩放处理单元和/或逐元素运算处理单元)——该方法的特定技术实施方式的动机是对神经网络加速器的内部功能的技术考虑。具体地,该方法已被调整为利用被配置为执行NNA的每通道乘法的一个或多个硬件单元,以便提高实现神经网络的层序列的精度,该神经网络的层序列包括由零个、一个或多于一个中间层分开的两个卷积层,同时仍然能够以硬件高效的方式处理该层序列。本领域技术人员通常不愿意向神经网络的这种层序列添加额外的运算,因为担心需要更多的计算资源并导致效率低下。然而,当NNA具有可以有效地执行每通道缩放的硬件时,关于利用额外层的低效处理的关注没有得到证实。
图5中示出了用于包括第一卷积层502、实现ReLU函数的激活层504和第二卷积层506的层序列的这种激活通道均衡方法的示例性实施方式。在此方法中,在第一卷积层502与激活层504之间插入逐通道乘法508,以将每通道激活缩放因子应用于第一卷积层502的输出。特别地,对于第一卷积层502的每个输出通道都有激活缩放因子,并且逐通道乘法508将ith激活缩放因子si A1应用于第一卷积层502的ith输出通道。然后将逆缩放因子1/si A1应用于到第二卷积层506的对应输入通道的权重。例如,如果第一卷积层502的ith输出通道对应于到第二卷积层506的jth输入通道,则将ith激活缩放因子的倒数(即1/si A1)应用于与jth输入通道相关联的权重。
如上所述,由于将缩放直接应用于输出通道,并且不经由第一卷积层的权重,所以第一卷积层502的权重通道均衡与第一卷积层502的激活通道均衡分开。这允许全激活通道均衡。换句话说,它允许对第一卷积层的输出进行更优化的量化。此外,将第一卷积层的权重通道均衡与第一卷积层的激活通道均衡解耦降低了为激活通道均衡选择缩放因子的复杂度,因为不必考虑缩放因子对权重量化的影响。
尽管图5示出了针对包括第一卷积层、实现ReLU函数的激活层和第二卷积层的特定层序列实现激活通道均衡的方法,但所描述的激活通道均衡方法不限于这种层序列。相反,所描述的方法可用于任何层序列,其中两个卷积层被任何层或运算分开,包括(i)缩放不变层或运算,诸如但不限于实现LReLU函数的激活层或池化层,以及(ii)非缩放不变层或运算,诸如但不限于实现swish函数或hard-swish函数的激活层。如果f(αx)=αf(x)为正α,则称层或函数f(x)是缩放不变的。相反,如果f(αx)≠αf(x),则层或函数f(x)是非缩放不变的。两个卷积层之间的层或运算在本文可被称为中间层或运算。当两个卷积层之间没有中间层时,或者如果两个卷积层之间有多于一个层或运算时,也可以使用所描述的方法。然而,如果位于两个卷积层之间的层或运算不是缩放不变的,则在该中间层或运算之后执行激活通道均衡。这在图6中示出。
特别地,图6示出了用于层序列的激活通道均衡方法的示例性实施方式,该层序列包括第一卷积层602、实现swish函数的激活层604(其中swish函数是非缩放不变函数)和第二卷积层606。在此示例中,在激活层604与第二卷积层606之间插入逐通道乘法608,以将每通道激活缩放因子应用于激活层604的输出。特别地,第一卷积层602输出的每个通道都有激活缩放因子,并且逐通道乘法608将ith激活缩放因子si A1应用于激活层504的ith输出通道。类似于图4的示例,然后将逆激活缩放因子1/si A1应用于第二卷积层606的对应输入通道的权重。例如,如果激活层604的ith输出通道对应于第二卷积层606的jth输入通道,则将ith激活缩放因子的倒数(即1/si A1)应用于与jth输入通道相关联的权重。
在中间层或运算是缩放不变的情况下,则激活通道均衡可以在中间层或运算之前或之后执行(例如,如图5或图6所示)。然而,如下文更详细描述的,在一些情况下,在中间层或运算之前执行激活通道均衡可能是有利的。
将第一卷积层的激活通道均衡与第一卷积层的权重通道均衡分开的另一个优点是,第一卷积层的权重也可以被通道均衡。例如,在一些情况下,除了通过将每通道激活缩放因子应用于两个卷积层之间的张量来执行激活通道均衡之外,可以将每通道权重缩放因子应用于第一卷积层的权重来执行权重通道均衡。然后,通过将逆权重缩放因子应用于第一卷积层的输出,可以反转(或补偿)每权重缩放因子。现在参考图7,其示出了用于针对第一示例性层序列执行激活通道均衡和权重通道均衡的第一示例性实施方式。
特别地,图7示出了用于针对层序列中的第一卷积层702执行激活通道均衡和权重通道均衡的示例性方法,该层序列包括第一卷积层702、缩放不变层或函数704(例如,实现ReLU函数的激活层)和第二卷积层706。在此示例中,类似于图5的示例,在第一卷积层702与缩放不变层(例如,实现ReLU函数的激活层704)之间插入逐通道乘法708,以将每通道激活缩放因子应用于第一卷积层702的输出。特别地,逐通道乘法708将ith激活缩放因子si A1应用于第一卷积层702的ith输出通道。类似于图5的示例,然后将逆缩放因子1/si A1应用于与第二卷积层706的对应输入通道相关联的权重。然而,此外,将每权重通道缩放因子应用于第一卷积层702的权重。特别地,对于第一卷积层702的每个输出通道都有权重缩放因子,并且将ith权重缩放因子si W0应用于用以生成第一卷积层702的ith输出通道的权重。然后,通过逐通道乘法708将权重缩放因子的倒数1/si W0应用于ith输出通道,来反转每通道权重缩放。因此,在此示例中,逐通道乘法708执行(i)每通道权重量化的反转,以及(ii)每通道激活均衡。
具有每通道权重缩放因子和每通道激活缩放因子允许选择权重缩放因子来优化第一卷积层702的权重通道均衡,以及选择激活缩放因子来优化第一卷积层702的输出的激活通道均衡。具体地,将第一卷积层的权重通道均衡和第一卷积层的输出通道均衡解耦允许引导激活缩放因子来均衡激活通道,以及引导权重缩放因子来均衡权重通道。这允许权重通道均衡和激活通道均衡都被优化。它还降低了选择缩放因子的复杂性。例如,当选择激活缩放因子时,不需要考虑它们对第一卷积层702的权重的影响。
在中间层或运算不是缩放不变的情况下,则如上所述,在中间层或运算之后执行每通道激活均衡。此外,在这些情况下,每通道权重均衡在中间层或运算之前被反转。这意味着当执行权重通道均衡和激活通道均衡时,可以与每通道激活缩放分开执行(例如,通过单独的逐通道乘法)对每通道权重缩放的反转。这在图8中示出。
特别地,图8示出了用于针对第一卷积层802执行激活通道均衡和权重通道均衡的示例性方法,该第一卷积层是包括第一卷积层802、非缩放不变层或函数804(例如,实现swish函数的激活层)和第二卷积层806的层序列的一部分。在此示例中,类似于图6的示例,在非缩放不变层(例如,实现swish函数的激活层)804与第二卷积层806之间插入逐通道乘法808,以将每通道激活缩放因子应用于非缩放不变层的输出。特别地,逐通道乘法808将ith激活缩放因子si A1应用于非缩放不变层804的ith输出通道。类似于图6的示例,然后将每个激活缩放因子的倒数(1/si A1)应用于第二卷积层806的对应输入通道的权重。然而,此外,将每通道权重缩放因子应用于第一卷积层802的权重。特别地,将ith权重缩放因子si W0应用于用以生成第一卷积层802的ith输出通道的权重。然后,通过将ith权重缩放因子的倒数1/si W0应用于ith输出通道,通过在第一卷积层802与非缩放不变层804之间插入的附加的逐通道乘法810来反转每通道权重缩放。因此,在此示例中,第一逐通道乘法(例如,逐通道乘法808)应用每通道激活缩放因子,并且第二逐通道乘法810应用每通道权重缩放因子的倒数。
虽然以上示例示出了将激活通道均衡方法应用于作为同一直接路径的一部分的层序列(例如,第一卷积层、中间层和第二卷积层都是同一直接路径的一部分,使得它们之间没有分支),但该方法不限于这样的序列。具体地,本文描述的激活通道均衡方法也可以应用于层序列,其中卷积层中的一个卷积层是分支的一部分,另一个卷积层不是该分支的一部分。换句话说,可以应用本文描述的激活通道均衡方法,其中在序列的层之间的神经网络中存在分支。然而,在将所描述的激活通道均衡方法应用于层序列(其中卷积层中的一个卷积层是分支的一部分,另一个卷积层不是该分支的一部分)的情况下,可以执行附加运算以确保分支之间的格式一致性。这通过图9至图12以示例方式解释。
具体地,图9示出了第一卷积层902、中间层904(在此示例中是实现ReLU函数的激活层)和第二卷积层906的第一示例性序列,其中卷积层中的一个卷积层形成分支的一部分,另一个卷积层不形成该分支的一部分。具体地,在此示例中,在第一卷积层902和中间层904之后,向包括第二卷积层906的第一分支908和第二分支910提供中间层904的输出。然后,例如两个分支的输出可以随后(例如,通过求和)进行组合。因此,在此示例中,第二卷积层906是第一分支908的一部分,第一卷积层902不形成该分支的一部分。
图9所示的层序列出现在许多神经网络中。例如,图10在1000处示出了出现在MobileNet V3神经网络中的此序列。具体地,序列1000包括第一卷积层1002,后面是实现ReLU函数的激活层1004。激活层1004馈送两个分支,其中一个分支包括第二卷积层1006。
返回参考图9,如果中间层904是缩放不变层,则为了实现本文描述的激活通道均衡方法,可以在第一卷积层902与中间层904之间插入逐通道乘法,以将每通道激活缩放因子应用于第一卷积层902的输出;并且可以将逆激活缩放因子应用于与第二卷积层906的对应输入通道有关的权重。然而,由于分支结构,这将导致两个分支(例如,第一分支908和第二分支910)中的一个分支的输出具有每张量格式,并且两个分支中的另一个分支的输出具有每通道格式。具体地,第一分支908的输出的所有通道将具有相同的格式(因为每通道缩放被应用于第二卷积层906的权重缩放反转),而第二分支910的输出将具有每通道格式。因此,可对第二分支910执行附加的每通道运算,以将该分支中的数据置于与另一个分支(例如,第一分支908)中的数据相同的格式。这在图11中示出。
具体地,图11示出了用于图9所示的层序列的本文描述的激活通道均衡方法的示例性实施方式,其中中间层904是缩放不变的。如上所述,在第一卷积层902与中间层904之间插入第一逐通道乘法1102,以将每通道缩放因子应用于第一卷积层902的输出,从而对该输出进行通道均衡。然后,将激活缩放因子的倒数应用于与第二卷积层906的对应输入通道有关的权重。然后,在第二分支910中插入第二逐通道乘法1104,以将激活缩放因子的倒数应用于该路径中的数据。
现在参考图12,其示出了第一卷积层1202、中间层1204(在此示例中是实现ReLU函数的激活层)和第二卷积层1206的第二示例性序列,其中卷积层中的一个卷积层形成分支的一部分,另一个卷积层不形成该分支的一部分。具体地,在此示例中,第一卷积层1202和中间层1204形成第一分支1208的一部分,该第一分支1208与第二分支1212的输出(例如,通过加法)进行组合1210。组合1210的输出作为输入被提供给第二卷积层1206。因此,在此示例中,第一卷积层1202是第一分支1208的一部分,第二卷积层1206不形成该分支的一部分。
图12所示的层序列出现在许多神经网络中。例如,图13在1300处示出了在MobileNet V3神经网络中出现的此序列(没有中间层,例如,在第一卷积层之后没有实现ReLU函数的激活层)。具体地,序列1300包括第一分支中的第一卷积层1302,并且其输出与第二分支的输出(通过加法1304)进行组合。然后将组合的输出提供给第二卷积层1306。
返回参考图12,如果中间层1204是缩放不变层,则为了实现本文描述的激活通道均衡方法,可以在第一卷积层1202与中间层1204之间插入逐通道乘法,以将每通道激活缩放因子应用于第一卷积层1202的输出;并且可以将逆激活缩放因子应用于第二卷积层1206的权重。然而,由于分支结构,这将导致两个分支(例如,第一分支1208、第二分支1212)的输出是不同的格式。具体地,第一分支1208的输出的所有通道将具有每通道格式,而第二分支1212的输出将具有每张量格式。因此,可在第二分支1212中执行附加的每通道运算,以将其输出置于与来自第一分支1208的输出相同的格式。这在图14中示出。
具体地,图14示出了用于图12所示的层序列的本文描述的激活通道均衡方法的示例性实施方式,其中中间层1204是缩放不变的。如上所述,在第一卷积层1202与中间层1204之间插入第一逐通道乘法1402,以将每通道缩放因子应用于第一卷积层1202的输出,从而对该输出进行通道均衡。然后,将激活缩放因子的倒数应用于第二卷积层1206的权重。然后,在第二分支1212中插入第二逐通道乘法1404,以将每通道激活缩放因子应用于该路径中的张量。在中间层是非缩放不变的情况下,则如果在中间层1204与组合1210之间有足够的精度来准确地表示未均衡的数据,则可以在组合1210之后应用每通道激活缩放因子。
尽管图11和图14示出了针对特定层序列实现激活通道均衡的示例性方法,但很明显,这些实施方式可以被修改为也针对第一卷积层实现权重通道均衡,如上文参考图7所描述的。具体地,可以将每通道权重缩放因子应用于第一卷积层的权重,并且可以通过第一逐通道乘法将权重缩放因子的倒数应用于第一卷积层的输出。
如上所述,在计算、带宽和功率方面,神经网络的实现通常是昂贵的。因此,已经开发了神经网络加速器(NNA),其允许以有效的方式(例如,以需要更少硅面积或更少处理能力的方式)实施包括DNN在内的神经网络。
NNA是被设计成加速神经网络处理的硬件。如本领域技术人员所知,硬件加速器是被设计成比诸如中央处理单元(CPU)的通用处理单元更有效地执行一组特定的一个或多个函数的硬件。因此,与可被配置成执行任何数量的函数的通用CPU相比,加速器仅可以执行有限的一组一个或多个函数。NNA具有一个或多个硬件处理单元(可以简称为处理单元),这些硬件处理单元各自被设计成加速一个或多个神经网络运算。神经网络运算在本文被定义为用于实施全部或部分神经网络层的运算。神经网络层可以通过一个或多个神经网络运算来实施。示例性神经网络运算包括但不限于卷积运算、非线性运算、池化运算和归一化运算。
因此,NNA可以具有例如被配置为加速卷积运算的卷积处理单元、被配置为加速非线性运算的激活处理单元、被配置为加速池化运算的池化处理单元和/或被配置为加速归一化运算的归一化处理单元。在这种情况下,卷积处理单元可被配置为实现本文描述的卷积层,并且激活处理单元可被配置为实现本文描述的激活层。对于本领域技术人员将显而易见的是,这只是NNA可以具有的硬件处理单元的示例性集合,并且NNA可以具有附加的硬件处理单元、更少的网络处理硬件单元或者硬件处理单元的不同组合。
一些NNA可以包括可以有效地实现逐通道乘法的处理单元。例如,如下文更详细描述的,申请人的NNA包括可以有效地实现逐通道乘法的一个或多个张素重缩放处理单元。在这些情况下,本文描述的逐通道乘法中的一个或多个逐通道乘法可由NNA的张素重缩放处理单元来实现。
即使在NNA包括张素重缩放处理单元或在实现逐通道乘法方面有效的另一处理单元的情况下,在某些情况下,结合另一运算来执行逐通道乘法可能更有效。例如,如图14所示,在逐通道乘法先于组合运算(诸如加法)(例如,第二逐通道乘法1404先于组合1210(例如加法))的情况下,取决于NNA的可用处理单元,(例如,使用相同的处理单元)一起执行逐通道乘法和组合运算可能更有效。例如,一些NNA可以包括如图15所示的逐元素运算(EWO)处理单元1500,其被配置为接收潜在不同格式的两个张量(张量A和张量B),对输入张量(如果是不同格式)中的一个输入张量进行重缩放1502,(例如通过加法、减法等)组合1504这两个张量,并且然后可选地对输出进行重缩放1506。在这种情况下,使用逐元素运算处理单元来执行逐通道乘法1404和组合1210可能是有效的。具体地,逐通道乘法可通过EWO处理单元1500的输入重缩放1502来执行。换句话说,可以不执行单独的逐通道乘法,而是可由EWO处理单元1500使用适当的缩放因子作为组合操作的一部分来执行逐通道乘法。在一些情况下,当EWO处理单元可以以高精度(例如32位或更高)实现组合(例如加法)时,以这种方式使用EWO处理单元可能效果特别好。例如,如果从第一分支1208接收的输入张量具有较高的精度(例如16位),并且输出重缩放1506舍去较低位,则以较高精度执行组合允许在舍入之前组合两个输入张量(例如输入张量A和B)的分数位(就激活格式而言)。否则,来自第一分支1208的输出可被首先舍入到激活格式,并且然后在与来自第二分支1212的输出组合之后再次舍入,这可能引入更多误差。
在一些情况下,不是如图14所示通过在每个分支(例如,第一分支1208、第二分支1212)中具有逐通道乘法1402、1404来实现针对图12所示的层序列或模式的激活通道均衡,而是可以对组合1210(例如加法)的输出执行单个逐通道乘法1602。这在图16中示出。这不仅移除了逐通道乘法中的一个逐通道乘法,而且因为在此实施方式中,逐通道乘法在中间层1204之后执行,所以无论中间层是否是缩放不变的,都可以实现该逐通道乘法。此外,在NNA包括EWO处理单元的情况下,逐通道乘法可通过EWO处理单元1500的输出重缩放1506来执行。这允许组合1210和逐通道乘法1602由单个单元有效地执行。当第一卷积层1202与EWO处理单元输出之间的路径足以保留未均衡激活时,这可能效果特别好。足够的精度取决于未均衡通道范围的不同程度。例如,如果激活需要8位深度,并且最大和最小缩放因子的比率小于28,则16位就足够了。如下文更详细描述的,一些神经网络加速器被配置为通过神经网络加速器的一系列硬件传递过程处理神经网络。如果第一卷积层和组合可以在相同的硬件传递过程中执行,使得由第一卷积层生成的较高精度的数据不必从神经网络加速器输出并且重新加载回该神经网络加速器中,则图16所示的示例性实施方式效果将特别好。然而,如果由于对较早的卷积层执行激活通道均衡而在第二分支1212中存在另一逐通道乘法,则此实施方式可能不足以移除第二分支1212中的逐通道乘法。
然而,如果由于对较早的卷积层执行激活通道均衡而在第二分支1212中存在另一逐通道乘法,则可以通过对组合1210(例如加法)的输出进行应用两个通道缩放因子(例如,与第一卷积层有关的激活缩放因子和与先前卷积层有关的激活缩放因子)的逐通道乘法1702来移除第二分支1212中的所有逐通道乘法,如图17所示。然后,经由第二逐通道乘法1704,将与先前卷积层有关的缩放因子应用于第一卷积层1202的输出。类似于图16所示的示例,在NNA包括EWO处理单元1500的情况下,组合1210和对组合的输出执行的逐通道乘法1702都可由EWO处理单元1500执行。具体地,EWO处理单元1500的输出重缩放1506可用于执行逐通道乘法1702。当第一卷积层1202与EWO处理单元输出之间的路径足以保留未均衡激活时,这可能效果特别好。足够的精度取决于未均衡通道范围的不同程度。例如,如果激活需要8位深度,并且最大和最小缩放因子的比率小于28,则16位就足够了。
下面参考图19描述了具有张素重缩放处理单元和逐元素运算处理单元的示例性NNA。
现在参考图18,其示出了根据使用激活通道均衡的神经网络处理数据的示例性方法1800,其中神经网络包括层序列,该层序列包括第一卷积层、第二卷积层以及第一卷积层与第二卷积层之间的零个、一个或多于一个中间层。方法1800开始于框1802,其中在第一卷积层之后和第二卷积层之前,通过一组每通道激活缩放因子在每通道的基础上对神经网络中的张量进行缩放。具体地,对于第一卷积层的每个输出通道都有激活缩放因子,并且将每个激活缩放因子应用于张量的对应通道中的张素,以缩放这些张素。一般来说,将ith激活缩放因子应用于张量的ith通道中的张素。例如,将第1激活缩放因子应用于张量的第一通道中的张素,将第2激活缩放因子应用于张量的第二通道中的张素,等等。
在一些情况下,可以将每通道激活缩放因子应用于第一卷积层的输出张量,例如如图5、图7、图11和图14所示。在其他情况下,可以将每通道激活缩放因子应用于中间层的输出张量,例如如图6和图8所示。在又其他情况下,可以将每通道激活缩放因子应用于将中间层的输出张量与另一张量进行组合的组合元素或层的输出张量,例如如图16和图17所示。如上所述,在中间层是缩放不变的情况下,可以在根据中间层处理数据之前或之后应用激活缩放因子。然而,如果中间层是缩放不变的,则在已经根据中间层处理数据之后应用激活缩放因子。
在一些情况下,可以通过在张量与激活缩放因子之间执行逐通道乘法,将每通道激活缩放因子应用于张量。在神经网络在具有张素重缩放处理单元(或在执行逐通道乘法方面有效的其他单元)的NNA上实现或处理的情况下,逐通道乘法可由张素重缩放处理单元(或其他单元)实现。一旦将每通道激活缩放因子应用于相关张量,方法1800进行到框1804。
在框1804处,利用已经通过激活缩放因子的倒数在每输入通道的基础上缩放的权重来实现第二卷积层。具体地,第一卷积层的每个输出通道将对应于第二卷积层的输入通道。然后,如果第一卷积层的ith输出通道与ith激活缩放因子相关联,并且第一卷积层的ith输出通道对应于第二卷积层的jth输入通道,则与第二卷积层的jth输入通道相关联的权重由ith激活缩放因子的倒数(即,1/si A)进行缩放。例如,如果第一卷积层的第一输出通道对应于第二卷积层的第一输入通道,并且第一卷积层的第一输出通道与第一激活缩放因子s1 A相关联,则与到第二卷积层的第一输入通道相关联的权重由1/s1 A进行缩放。在许多情况下,第一卷积层402的ith输出通道对应于第二卷积层406的ith输入通道,使得i=j。
如果将卷积层的一组权重应用于特定输入通道的张素,则称它们与该输入通道相关联。例如,如上所述,实现卷积层包括将(各自包括一组权重的)一个或多个滤波器与输入张量进行卷积。每个滤波器包括一个或多个权重通道,其中将滤波器的每个权重通道应用于卷积层的仅一个输入通道。例如,对于2D卷积,输入张量和每个滤波器具有相同数量的通道,并且将滤波器的第一通道应用于输入张量的第一通道,将滤波器的第二通道应用于输入张量的第二通道,等等。
在一些情况下,第二卷积层的权重可被离线缩放,即,在根据神经网络处理数据之前进行缩放。然而,在其他情况下,权重可被即时或在线缩放,即,在根据神经网络处理数据时(例如,在神经网络的前向传递过程期间)进行缩放。
在一些情况下,方法1800还可以包括针对第一卷积层实现每输出通道权重量化。在这些情况下,方法1800还可以包括框1806和1808。在框1806处,利用每输出通道缩放的权重来实现第一卷积层。具体地,对于第一卷积层的输出的每个通道都有权重缩放因子,并且与特定输出通道相关联的权重(即用于生成该输出通道的权重)由针对该通道的权重缩放因子进行缩放。如上所述,在一些情况下,卷积层的权重被分成多个滤波器,其中每个滤波器生成输出通道。在这些情况下,每个滤波器与不同的输出通道相关联,因此每个滤波器的权重与特定的权重缩放因子相关联,并且由该权重缩放因子进行缩放。
在一些情况下,第一卷积层的权重可被离线缩放,即,在根据神经网络处理数据之前进行缩放。在神经网络由神经网络加速器实现的情况下,这可能意味着向神经网络加速器提供已经缩放的权重。然而,在其他情况下,权重可被即时或在线缩放,即,在根据神经网络处理数据时(例如,在神经网络的前向传递过程期间)进行缩放。例如,如果神经网络由神经网络加速器实现,这可能意味着向神经网络加速器提供原始权重和权重缩放因子,并且神经网络加速器执行对权重的缩放。
在框1808处,通过权重缩放因子的倒数在每通道的基础上对第一卷积层的输出进行缩放,以补偿在框1806中执行的权重缩放。例如,如果第一输出通道与权重缩放因子相关联,则第一输出通道中的张素由进行缩放。一般来说,如果ith输出通道与权重缩放因子相关联,则ith输出通道中的张素由进行缩放。
在一些情况下,可以通过在张量与权重缩放因子的倒数之间执行逐通道乘法,将每通道权重缩放因子的倒数应用于张量。在神经网络在具有张素重缩放处理单元(或在执行逐通道乘法方面有效的其他单元)的NNA上实现或处理的情况下,逐通道乘法可由张素重缩放处理单元(或其他单元)实现。
在将框1802的激活缩放因子应用于第一卷积层的输出张量的一些情况下,框1802和1808可以一起执行,如图7所示。换句话说,在这些情况下,与第一卷积层的输出通道相关联的激活缩放因子和与该输出通道相关联的权重缩放因子的倒数可以同时应用于第一卷积层的输出张量。在这种情况下,可以通过相同的逐通道乘法运算同时应用它们。在未将框1802的激活缩放因子应用于第一卷积层的输出张量的其他情况下,框1802和1808可以单独地(并且通过单独的逐通道乘法运算)执行,如图8所示。
在层序列的卷积层中的一个卷积层形成分支的一部分,另一个卷积层不形成该分支的一部分的情况下,则方法1800还可以包括对另一个分支中的张量进行逐通道缩放。在一个示例中,如以上关于图9至图11所描述的,在第二卷积层形成分支的一部分,第一卷积层不形成该分支的一部分的情况下,可以通过激活缩放因子的倒数在每通道的基础上对另一分支中的张量进行缩放。例如,如图11所示,如果第一卷积层的第一输出通道与激活缩放因子相关联,并且第一卷积层的第一输出通道对应于另一个分支中的张量的第一通道,则另一个分支中的张量的第一通道由进行缩放。在另一示例中,如以上关于图12至图14所描述,在第一卷积层形成分支的一部分,第二卷积层不形成该分支的一部分的情况下,可以通过激活缩放因子在每通道的基础上对另一个分支中的张量进行缩放。例如,如图14所示,如果第一卷积层的第一输出通道与激活缩放因子相关联,并且第一卷积层的第一输出通道对应于另一个分支中的张量的第一通道,则另一个分支中的张量的第一通道由进行缩放。
在一些情况下,方法1800还可以包括标识神经网络中的层序列(框1810)。此步骤可以离线执行。换句话说,在神经网络由神经网络加速器实现的情况下,此步骤可以不由神经网络加速器执行,而是可以由外部计算设备(例如处理器)执行,诸如但不限于控制神经网络加速器的运算的计算设备。
在一些情况下,方法1800还可以包括标识激活缩放因子和/或权重缩放因子(框1812、1814)。可以以任何合适的方式选择激活缩放因子和/或权重缩放因子。
可用于选择一组值(例如通道的权重或通道的输入数据值)的缩放因子的一种简单方法(在本文可被称为全范围方法或最小/最大方法)包括,对于给定的尾数位深度b,选择覆盖预期的一组值xr的范围的最小指数exp。例如,对于给定的尾数位深度b,可以根据等式(1)选择指数exp,使得数字格式覆盖x的整个范围,其中是上限函数:
尽管等式(1)用于选择整数指数,但类似的等式也可用于选择浮点指数。例如,为了选择浮点指数,可以从等式(1)中移除上限函数。
申请人的英国专利申请号1718293.2中描述了另一种方法(可被称为加权异常值方法),所述专利申请的全文以引用方式并入本文。在加权异常值方法中,当使用特定指数时,基于量化误差的加权总和,从多个潜在数字指数中选择一组值(例如通道的权重或通道的输入数据值)的指数,其中将恒定权重应用于落入使用该指数的格式的可表示范围内的值的量化误差,并且将线性增加的权重应用于落在可表示范围之外的值的量化误差。
申请人的英国专利申请号1821150.8中描述了另一种方法(可被称为后向传播方法),所述专利申请的全文以引用方式并入本文。在后向传播方法中,产生最佳成本的指数(例如,DNN准确度和DNN大小(例如,位数)的组合)通过使用后向传播迭代地确定相对于每个指数的成本的梯度来选择,并且调整指数直到成本收敛。
最后,申请人的英国专利申请号1718289.0中描述了另一种方法(可被称为端到端方法),所述专利申请的全文以引用方式并入本文。在端到端方法中,根据预定序列一次一层地选择DNN值的指数,其中在该序列中,任何层都在其所依赖的层之前。当使用多个可能指数中的每个可能指数来表示层的一组值(例如,权重的通道或输入数据值的通道)时,基于DNN的输出中的误差,从多个可能指数中选择该组值的指数。一旦选择了层的数字格式,对序列中后续层的DNN输出中的误差的任何计算都是基于使用所选数字格式表示的该层的网络参数。
由于可能已经为整个张量选择了格式(例如指数和位深度),所以最终的缩放值可以被选择为整个张量的指数与根据上述方法确定的指数之间的差的2次幂。
此缩放因子选择可以离线执行。换句话说,在神经网络由神经网络加速器实现的情况下,此步骤可以不由神经网络加速器执行,而是可以由外部计算设备(例如处理器)执行,诸如但不限于控制神经网络加速器的运算的计算设备。
可以对神经网络中的每个这种层序列重复方法1800。
现在参考图19,其示出了可用于实现图18的方法的至少一部分的示例性神经网络加速器(NNA)1900。NNA1900包括多个硬件处理单元,例如1902、1904、1906、1908、1910、1912、1914、1916;以及交叉开关(“Xbar”)1920,其耦合到硬件处理单元并且可以选择性地由硬件处理单元形成多个流水线中的一个流水线。本文使用短语“由硬件处理单元形成流水线”来表示连接一组硬件处理单元的输入和输出,使得一个硬件处理单元的输出成为另一个硬件处理单元的输入。
每个硬件处理单元,例如1902、1904、1906、1908、1910、1912、1914、1916包括被配置为加速对输入数据执行一个或多个神经网络运算的硬件。具体地,每个硬件处理单元,例如1902、1904、1906、1908、1910、1912、1914、1916包括被配置为接收输入张量的输入端口、对输入张量执行一个或多个运算的硬件逻辑,以及被配置为输出处理结果的输出端口,该处理结果可以被称为输出张量。如下文更详细描述的,一个或多个硬件处理单元还可以包括一个或多个附加端口,以接收用于处理输入张量的辅助数据,和/或从缓冲区写入和/或读取数据。
图19的NNA1900包括以下硬件处理单元:卷积处理单元1902,该卷积处理单元被配置为对所接收的输入张量执行卷积运算;激活处理单元1904,该激活处理单元被配置为对所接收的输入张量执行非线性运算;逐元素运算处理单元1906,该逐元素运算处理单元被配置为对所接收的输入张量执行逐元素运算;归一化处理单元1908,该归一化处理单元被配置为对所接收的输入张量执行归一化运算;所描述的可配置池化处理单元1910,该可配置池化处理单元被配置为对所接收的输入张量执行池化运算或深度方向卷积运算;交错处理单元1912,该交错处理单元被配置为对所接收的输入张量执行交错或重排;以及张素重缩放处理单元1914、1916,该张素重缩放处理单元被配置为在张量或通道的基础上对输入张量进行缩放或重缩放。这些硬件处理单元中的每一个硬件处理单元将在下面更详细地描述。对于本领域技术人员将显而易见的是,这只是一组示例性硬件处理单元,并且其他NNA可以具有额外的硬件处理单元、更少的硬件处理单元和/或不同的硬件处理单元。
图19的NNA 1900被配置为在NNA 1900的一个或多个硬件传递过程中处理神经网络。在NNA 1900的硬件传递过程中,NNA 1900将输入数据加载到NNA中(例如,从外部存储器),并且经由由硬件处理单元(例如,标号1902、1904、1906、1908、1910、1912、1914、1916表示的单元)中的一个或多个硬件处理单元形成的流水线来处理所述输入数据,以生成处理后的数据。在大多数硬件传递过程中,处理后的数据然后经由输出单元1918从NNA输出(例如输出到外部存储器)。然而,在一些情况下,处理后的数据可能会保留在NNA中,以供后续的硬件传递过程使用。例如,如下面更详细描述的,可能需要卷积处理单元1902的若干遍次才能生成卷积层输出。因此,在一些情况下,卷积处理单元1902可以在一个硬件传递过程中执行部分卷积处理,并将该部分处理的结果存储在卷积处理单元1902(例如,其累加缓冲区)中;然后在一个或多个后续硬件传递过程中执行更多的部分卷积处理,然后组合在硬件传递过程中生成的部分结果以生成最终的卷积输出。由于NNA的内部存储限制(例如,输入缓冲区1924可能不够大以存储整个输入张量和/或系数缓冲区1922可能不够大以存储整个权重张量)和/或NNA的处理限制,卷积层可以在若干硬件传递过程上实现。
用于硬件传递过程的输入数据经由数据输入单元(例如,输入缓冲区1924和辅助数据输入单元1926)加载到NNA中。NNA可以包括单个数据输入单元(例如,输入缓冲区1924)或多于一个数据输入单元(例如,输入缓冲区1924和辅助数据输入单元1926)。如图19所示,数据输入单元中的一个数据输入单元可以是输入缓冲区1924的形式,所述输入缓冲区可以被配置为存储用于硬件传递过程的输入数据。输入缓冲区1924可以被称为主数据输入单元。输入缓冲区1924可以耦合到卷积处理单元1902和交叉开关1920,这允许输入缓冲区1924向卷积处理单元1902或交叉开关1920提供接收到的输入数据。尽管输入缓冲区1924在图19中被示为单个输入缓冲区,但是输入缓冲区可以由多个存储体形成。在一些情况下,在硬件传递过程中可能只可能使用输入缓冲区1924一次,因此输入缓冲区1924可能能够在硬件传递过程中向卷积处理单元1902或交叉开关1920提供输入数据,但不能两者都提供。
图19的NNA 1900包括第二、辅助或备选数据输入单元1926,通过该数据输入单元,用于硬件传递过程的输入数据可以被加载到NNA中,这可以比主数据输入单元(例如,输入缓冲区1924)更简单并且使用更少的能量。例如,逐元素运算(EWO)处理单元1906可能能够使用加载到NNA中的输入数据的辅助集合来对所接收的输入数据执行逐元素运算。因此,可以存在辅助数据输入单元1926,其被配置为将辅助数据输入加载到NNA中,该NNA经由辅助数据接收器(Rx)1930被提供给逐元素运算处理单元1906。通过将辅助数据输入单元1926耦合到交叉开关1920,辅助数据输入单元1926可以提供备选路径来将用于硬件传递过程的输入数据加载到NNA 1900中。
在一些情况下,NNA 1900可以包括被配置为在NNA 1900与外部存储器(未示出)之间提供接口的存储器接口(未示出)。在这些情况下,存储器接口可以被配置为从外部存储器接收用于NNA的输入数据,并将其提供给输入缓冲区1924和/或辅助数据输入单元1926。
对于每个硬件传递过程,NNA接收控制信息(该控制信息也可以被称为命令信息或配置信息),该控制信息标识在硬件传递过程中活动的NNA的部件,以及活动部件在硬件传递过程中使用的顺序。控制信息还可以指定用于硬件传递过程的任何单独的部件配置。例如,如下面更详细描述的,由激活处理单元1904、逐元素运算处理单元1906、归一化处理单元1908和可配置池化处理单元1910中的一者或多者实现的函数和/或运算可以在每个硬件传递过程的基础上进行配置。在这些情况下,控制信息可以包括标识将由硬件传递过程中的一个或多个处理单元实施的函数和/或运算的信息。
每个硬件传递过程,交叉开关1920从该硬件传递过程的控制信息中确定其在该硬件传递过程中是否是活动的。如果交叉开关1920确定其在当前硬件传递过程中是活动的,则交叉开关1920动态地配置自身以形成由该硬件传递过程的控制信息标识的多个流水线中的流水线。在一些情况下,如果例如在硬件传递过程中只有一个硬件处理单元(例如卷积处理单元1902)是活动的,并且硬件传递过程的结果存储在内部(例如在NNA内)或者经由备选(例如旁路)路径被传递到输出单元1918,则交叉开关1920在硬件传递过程中可能不是活动的。例如,在一些情况下,在卷积处理单元1902与输出单元1918之间可能存在另选或旁路路径(未示出),该路径允许卷积处理单元1902的输出被直接发送到输出单元1918(例如,不穿过交叉开关1920)。
交叉开关1920包括多个输入端口(在图19中由指向交叉开关1920的箭头示出)、多个输出端口(在图19中由从交叉开关1920指向外的箭头示出)和路由逻辑(例如多路复用器(未示出)),所述路由逻辑允许交叉开关1920选择性地将交叉开关1920的输入端口连接到交叉开关1920的输出端口。在图19的示例中,交叉开关1920的每个输入端口可以耦合或连接到硬件处理单元或数据输入单元的输出端口,并且交叉开关1920的每个输出端口可以耦合或连接到硬件处理单元或数据输入单元的输入端口。
现在将描述图19的示例性硬件处理单元中的每一个硬件处理单元。卷积处理单元1902是硬件,该硬件被配置为接收输入张量和一组权重,并在输入张量和权重之间执行卷积运算,并输出卷积运算的结果。卷积处理单元1902可以具有一个或多个卷积引擎,该一个或多个卷积引擎被配置为在一组输入数据值(例如,输入张素)与一组权重之间执行乘积累加运算。要由卷积处理单元1902在硬件传递过程中使用的权重可以存储在系数缓冲区1922中。在一些情况下,由卷积处理单元1902在硬件传递过程中处理的输入张量可以存储在输入缓冲区1924中。下面参考图20描述卷积处理单元1902的示例性实施方式。
激活处理单元1904是被配置为接收输入数据(例如,输入张量)并对其应用非线性函数(也可称为激活函数)的硬件。例如,可以由激活处理单元1904实施(或近似)的非线性函数包括但不限于Tanh函数、sigmoid函数、整流线性单元(ReLU)函数或渗漏ReLU(LReLU)函数。在ReLU函数中,输出元素yi,j,k通过标识等式(2)中列出的最大值来计算,其中对于小于0的x值,y=0。LReLU函数在输入大于零时输出所述输入,并且在输入为负时输出所述输入的一部分(例如,0.01x)。LReLU函数的示例性实施方式在等式(3)中列出。
yi,j,k=f(xi,j,k)=max{0,xi,j,k} (2)
yi,j,k=f(xi,j,k)=max{0.01*xi,j,k,xi,j,k} (3)
在一些情况下,由激活处理单元1904在硬件传递过程中执行的激活函数可以是可配置的。例如,在一些情况下,激活处理单元1904可以接收用于硬件传递过程的信息,所述信息标识要应用于所述硬件传递过程中的输入数据的多个激活函数中的一个激活函数。
在一些情况下,激活处理单元1904可以被配置为在查找表的条目中存储表示要在硬件传递过程中实施的激活函数的数据。在这些情况下,激活处理单元1904可以被配置为使用输入数据在查找表中查找一个或多个条目,并且从查找表中的一个或多个条目和/或输入数据生成激活函数的输出。例如,激活处理单元1904可以被配置为通过在从查找表读取的两个或更多个条目之间进行插值来计算激活函数的输出。在申请人的GB专利第2552242号中描述了激活处理单元1904的示例性实施方式,所述专利的全部内容通过引用并入本文。
逐元素运算处理单元1906是硬件,所述硬件被配置为接收输入数据(例如,输入张量)并对输入数据(例如,输入张量)执行逐元素运算,可选地使用另一数据集(例如,另一张量),所述数据集可以经由辅助数据输入单元1926从外部存储器获得或检索。逐元素运算是对输入数据/张量的每个元素(例如,每个输入数据值或每个张素)执行的相同运算。可以对输入数据执行的逐元素运算包括但不限于加法、乘法、最大值和最小值。
另一数据集/张量可以与输入数据/张量具有相同的大小(例如,具有相同的维数),使得使用逐元素运算来组合两个张量的对应元素。或者,另一数据集/张量和输入数据/张量可以具有不同的大小或维度。例如,如果张量中的一个张量的失配维数具有大小1,则可以使用广播技术在输入数据/张量与另一数据集/张量之间执行逐元素运算,其中较小的张量被广播(或扩展)到另一张量的大小。例如,通过扩展第一张量的W维度,大小为[N,H,W,C]=[1,10,1,10]的张量可以与大小为[N,H,W,C]=[1,10,10,10]的张量进行逐元素组合。
归一化处理单元1908是被配置为接收输入数据(例如,输入张量)并将归一化函数应用于所接收的输入数据以产生归一化数据的硬件。可以由归一化处理单元1908实施的示例性归一化函数包括但不限于局部响应归一化(LRN)函数和局部对比度归一化(LCN)函数。在一些情况下,应用于输入数据的归一化函数可以是可配置的。例如,归一化处理单元1908可以接收用于硬件传递过程的信息,所述信息指示多个归一化函数中的哪一个归一化函数将被应用于所述硬件传递过程中的输入数据。这允许在不同的硬件传递过程中应用不同的归一化函数。申请人的GB专利第2552242号中描述了归一化处理单元1908的示例性实施方式,所述专利的全部内容通过引用并入本文。
可配置池化处理单元1910可以在每个硬件传递过程的基础上被配置为对所接收的输入张量执行深度方向卷积运算或一个或多个池化运算中的一个池化运算。
在一些情况下,可配置池化处理单元1910可以被配置为接收可以由归一化处理单元1908生成的特定格式的输入数据。在此类情况下,如图19所示,可配置池化处理单元1910的输入端口可以耦合或连接到归一化处理单元1908的输出端口,以便仅从归一化处理单元1908接收输入数据。在这些情况下,为了允许归一化处理单元1908而不是可配置池化处理单元1910处理用于硬件传递过程的输入数据,可配置池化处理单元1910可以包括允许可配置池化处理单元1910输出从归一化处理单元1908接收到的数据或者由可配置池化处理单元1910生成的数据的逻辑(例如,多路复用器(未示出))。然后,可配置池化处理单元1910可以在每个硬件传递过程接收指示可配置池化处理单元1910是否活动的信息,并且如果是,则标识哪个输出将被提供给交叉开关1920。然而,对于本领域技术人员将显而易见的是,这只是一个示例,并且在其他示例中,可配置池化处理单元1910的输入端口可以直接耦合或连接到交叉开关1920,以允许可配置池化处理单元1910从NNA1900的其他单元接收输入数据。
交错处理单元1912是被配置为接收输入数据(例如,输入张量)并执行重排运算以产生特定顺序的数据的硬件。重排可以包括对接收到的输入数据进行排序和/或转置。
如图19所示,可配置池化处理单元1910和交错处理单元1912可以各自访问共享缓冲区1932,这些单元可以使用所述共享缓冲区来写入数据和从中检索数据。例如,可配置池化处理单元1910可以将所接收的输入张素暂时存储在共享缓冲区1932中,直到所接收的张素已经被可配置池化处理单元1910处理。交错处理单元1912可以使用共享缓冲区1932来重新排所接收的数据或所生成的数据的顺序。例如,交错处理单元1912可被配置为将数据写入共享缓冲区1932,并且然后以不同的顺序读取相同的数据。在一些情况下,可以为每个单元分配共享缓冲区1932的一部分,只有所述单元可以访问所述部分。在这些情况下,可配置池化处理单元1910和交错处理单元1912可能只能从它们已经写入的共享缓冲区1932中读出数据。
张素重缩放处理单元1914、1916是被配置为对接收到的输入数据执行重缩放运算的硬件。如本领域的技术人员所知,对于处理一组值的硬件,每个值以数字格式表示。两种常见的数字格式是定点数格式和浮点数格式。如本领域的技术人员所知,定点数格式在基数点(例如,小数点或二进制点)之后具有固定数目的数位。相反,浮点数格式没有固定的基数点(即,可以“浮动”)。换句话说,基数点可被放置在表示中的多个位置。虽然以浮点数格式表示NN的网络参数(例如,输入数据值(即,输入张素)、权重、偏差)可以允许产生更准确或更精确的输出数据,但是以浮点数格式在硬件中处理网络参数是复杂的,与以其他格式(例如,定点数格式)处理网络参数的硬件相比,这往往会增加硅面积、功耗、内存和带宽消耗以及硬件的复杂性。因此,NNA 1900可以被配置为以定点数格式表示和处理NN的网络参数,以减少NNA的面积、功耗、内存和带宽消耗以及复杂性。
NNA 1900可以支持网络参数(例如,输入数据值(即,输入张素)、权重、偏差)的一种或多种定点数格式,并且定点数格式可以在层的基础上或者甚至在部分层的基础上进行配置。例如,NNA1900可以支持由固定整数指数exp和b位尾数m定义的定点数格式,使得值u等于u=2expm。在一些情况下,尾数m可以二进制补码格式表示。然而,在其他情况下,可以使用其他经签名或未签名的整数格式。当使用这样的定点数格式时,指数exp和尾数位数b只需为以该数字格式表示的一组值存储一次。不同的网络参数集可以使用不同的尾数位长度m和/或不同的指数b来表示。
NNA1900可以另选地或附加地支持仿射定点数格式,该仿射定点数格式是定义偏移量和缩放的定点数格式。如上所述,在硬件处理单元(例如,可配置池化处理单元1910)的输入数据是仿射定点数格式的情况下,对于硬件来说,以使得输出数据不准确反映缩放和/或偏移量的方式来执行处理可能更具硬件效率。一般来说,以这种方式执行可能涉及缩放变化的运算可能是有效的。这种运算的示例包括但不限于卷积运算、加法运算和乘法运算。相比之下,诸如最大池化或平均池化的运算可能不会以这种方式执行,因为输入和输出缩放是相同的。因此,可以执行卷积运算的卷积处理单元1902、可以执行深度方向卷积运算的可配置池化处理单元1910以及可以执行加法和乘法运算的逐元素运算处理单元1906可以被配置为以这种方式运算。在硬件处理单元被配置为以这种方式操作的情况下,硬件处理单元的输出然后可以被重新量化以将其置于正确的格式。
这种重新量化可以由张素重缩放处理单元1914、1916来执行。有许多已知的方法和技术用于将数据重新量化成仿射定点数格式。张素重缩放处理单元1914、1916可以被配置为使用任何已知的方法或技术来执行重新量化。由于多于一个活动硬件处理单元的输出数据可以被重新量化,所以在NNA1900中具有多个张素重缩放处理单元1914、1916允许在单个硬件传递过程中执行更多的运算。
当运算涉及不同格式的两个或更多个张量时,例如,当将多个张量连接在一起成为单个张量时,也可以使用重新量化来使它们都具有相同的格式。
在一些情况下,每个张素重缩放处理单元1914、1916可在每个张量的基础上或每个通道的基础上执行此重新量化。如上关于图2所描述,处理单元的输入数据通常是被称为张量的多维数据块。张量的每个平面称为通道,并且张量的每个元素称为张素。张素重缩放处理单元1914、1916能够在每张量的基础上(即所有输入数据值以相同的方式被量化或重新量化)或在每通道的基础上(即输入数据的每个通道可以以不同的方式被量化或重新量化)执行重缩放。在一些情况下,用于硬件传递过程的控制信息可以针对在硬件传递过程中活动的任何张素重缩放处理单元1914、1916指定所述张素重缩放处理单元1914、1916是执行每张量还是每通道重新量化。
张素重缩放处理单元1914、1916是被配置为执行每张量还是每通道重新量化可以取决于生成被发送到张素重缩放处理单元1914、1916的数据的处理单元的输入的格式。例如,如果卷积处理单元1902接收用[scale_input,offset_input]量化的输入数据(例如,输入张量),并且期望用[scale_output,offset_output]量化输出数据,则取决于权重的格式,重新量化过程可以是每个通道或每个张量的。例如,如果所有的权重都用相同的参数[scale_weights,offset_weights]进行量化,则可以在每张量的基础上进行重新量化。然而,如果至少两个滤波器使用不同的参数进行量化,例如第一个滤波器使用参数[scale_weights1,offset_weights1]进行量化,并且第二个滤波器使用参数[scale_weights2,offset_weights2]进行量化,则因为输出数据(例如,输出张量)的每个通道都是输入数据(输入张量)与滤波器卷积的结果,所以可以在每通道的基础上进行重新量化。对不同的滤波器使用不同的量化参数可以允许更好地量化滤波器,因为可以以更精细的粒度来选择滤波器参数。
NNA1900还可以包括输出单元1918,所述输出单元被配置为输出处理后的数据。例如,输出单元1918可以将处理后的数据输出到存储器。在一些情况下,硬件传递过程可以与输出数据格式相关联,并且输出单元1918可以被配置为在输出处理后的数据之前将处理后的数据转换成与硬件传递过程相关联的输出格式。
现在参考图20,其示出了图19的卷积处理单元1902的示例性实施方式。在这个示例中,卷积处理单元1902包括多个卷积引擎2002、多个累加器2004和累加缓冲区2006。
每个卷积引擎2002包括硬件逻辑,该硬件逻辑被配置为接收表示滤波器的全部或一部分的一组权重{k1,k2…,k8},以及表示输入数据的窗口的全部或一部分的一组输入数据值{x1,x2,…,x8},并对所接收的权重和输入数据值进行乘积累加计算。在一些示例中,如图21所示,每个卷积引擎2002可包括多个乘法器2102,每个乘法器被配置为将权重(ki)和对应的输入数据值(xi)相乘以产生乘法输出值。乘法器2102后面是多个加法器2104。加法器可以形成加法器树来计算乘法输出的总和。在图21的示例中,卷积引擎2002包括八个乘法器2102,但是在其他示例中,可以存在更多或更少的乘法器。例如,在一些情况下,可能有128个乘法器。通常,如果存在Z个乘法器,加法器树包括Z-1个加法器。图20的示例性卷积处理单元1902包括四个卷积引擎2002,然而,对于本领域技术人员来说显而易见的是,这只是一个示例并且可以只有一个卷积引擎,可以有两个卷积引擎,或者可以有两个以上的卷积引擎。
由于卷积引擎2002可能要经过一个以上的硬件传递过程来生成完整的滤波器结果(例如,因为卷积引擎可能仅接收和处理滤波器权重的一部分和/或周期中窗口的输入数据值的一部分),所以卷积处理单元1902可以包括多个累加器2004。卷积引擎的传递过程包括接收一组权重和一组输入数据值,并对其执行乘积累加运算。每个累加器2004接收一个卷积引擎2002的输出,并且将输出添加到与相同滤波器相关的先前卷积引擎输出。由于卷积引擎2002可能不在连续的周期中生成或产生与相同滤波器相关的输出,因此一个或多个滤波器的部分结果可被存储在累加缓冲区2006中,然后在每个周期中可由累加缓冲区2006将适当的部分结果提供给累加器2004。
如上所述,在一些情况下,输入缓冲区1924可以被实施为多个存储体。在这些情况下,对于每个卷积引擎可以有多路复用器(未示出),该多路复用器耦合到输入缓冲区的每个存储体,以允许存储在任何存储体中的数据被选择性地引导到任何卷积引擎2002。
测试结果
现在参考图22,其示出了如本文描述的对卷积层输出执行和不执行激活通道均衡的示例性神经网络的输出处的均方误差的图表。不执行激活通道均衡的示例性神经网络的输出处的均方误差在图22中被标识为“原始”,执行激活通道均衡(其中使用5个剖析图像选择激活缩放因子)的示例性神经网络的输出处的均方误差在图22中被标识为“均衡(5个图像)”,并且执行激活通道均衡(其中使用100个剖析图像选择激活缩放因子)的示例性神经网络的输出处的均方误差在图22中被标识为“均衡(100个图像)”。从图22中可以看出,执行激活通道均衡通常显著降低了误差。关于通道8,当使用5个剖析图像时,没有看到足够的数据捕获通道所需的全部范围。当使用(来自100个剖析图像的)更多数据时,可以看到通道所需的全部范围,从而解决了误差的增加。
图23示出了可在其中实现本文描述的神经网络加速器的示例性计算机系统。计算机系统包括CPU 2302、GPU 2304、存储器2306、神经网络加速器(NNA)2308(其可以是本文描述的任何神经网络加速器,诸如但不限于图19的NNA1900)和其他设备2314,诸如显示器2316、扬声器2318和相机2322。计算机系统的部件可经由通信总线2320彼此通信。
图19、图20和图21的神经网络加速器、卷积处理单元和卷积引擎被示出为包括多个功能块。这仅是示意性的,并不旨在限定此类实体的不同逻辑元件之间的严格划分。每个功能块可以任何合适的方式提供。应当理解,由神经网络加速器、卷积处理单元或卷积引擎形成的本文描述的中间值不需要由神经网络加速器、卷积处理单元或卷积引擎在任何点处物理地生成,并且可以仅表示方便地描述由神经网络加速器、卷积处理单元或卷积引擎在其输入与输出之间执行的处理的逻辑值。
本文描述的神经网络加速器、卷积处理单元和卷积引擎可以包括在集成电路上的硬件中。本文描述的神经网络加速器可以被配置为执行本文描述的任何方法。一般来说,上文描述的功能、方法、技术或部件中的任一者可在软件、固件、硬件(例如固定逻辑电路系统)或它们的任何组合中实施。本文中可以使用术语“模块”、“功能性”、“部件”、“元件”、“单元”、“块”和“逻辑”来概括地表示软件、固件、硬件或它们的任何组合。在软件具体实现的情况下,模块、功能性、部件、元件、单元、块或逻辑表示程序代码,该程序代码当在处理器上被执行时执行指定任务。本文中所描述的算法和方法可由执行代码的一个或多个处理器执行,所述代码促使处理器执行算法/方法。计算机可读存储介质的示例包括随机访问存储器(RAM)、只读存储器(ROM)、光盘、闪存存储器、硬盘存储器,以及可使用磁性、光学和其他技术来存储指令或其他数据并且可由机器访问的其他存储器设备。
如本文中所使用的术语计算机程序代码和计算机可读指令是指用于处理器的任何种类的可执行代码,包括以机器语言、解译语言或脚本语言表达的代码。可执行代码包括二进制代码、机器代码、字节代码、定义集成电路的代码(诸如硬件描述语言或网表),以及用诸如C、Java或OpenCL等编程语言代码表达的代码。可执行代码可以是例如任何种类的软件、固件、脚本、模块或库,当在虚拟机或其他软件环境中被适当地执行、处理、解译、编译、运行时,这些软件、固件、脚本、模块或库使得支持可执行代码的计算机系统的处理器执行由所述代码指定的任务。
处理器、计算机或计算机系统可以是任何种类的设备、机器或专用电路,或其集合或一部分,它具有处理能力使得可以执行指令。处理器可以是或包括任何种类的通用或专用处理器,诸如CPU、GPU、NNA、片上系统、状态机、媒体处理器、专用集成电路(ASIC)、可编程逻辑阵列、现场可编程门阵列(FPGA)等。计算机或计算机系统可包括一个或多个处理器。
本发明还旨在涵盖限定如本文中所描述的硬件的配置的软件,诸如HDL(硬件描述语言)软件,如用于设计集成电路或用于配置可编程芯片以执行期望功能。也就是说,可以提供一种计算机可读存储介质,在该计算机可读存储介质上编码有呈集成电路定义数据集形式的计算机可读程序代码,当在集成电路制造系统中处理(即,运行)时,该计算机可读程序代码将系统配置为制造被配置为执行本文描述的方法中的任一种方法的神经网络加速器,或者制造包括本文描述的任何装置的神经网络加速器。集成电路定义数据集可以是例如集成电路描述。
因此,可以提供一种在集成电路制造系统处制造如本文描述的神经网络加速器的方法。此外,可以提供一种集成电路定义数据集,当在集成电路制造系统中处理时,所述集成电路定义数据集使得执行制造神经网络加速器的方法。
集成电路定义数据集可以是计算机代码的形式,例如作为网表,用于配置可编程芯片的代码,作为定义适合于在集成电路中以任何级别制造的硬件描述语言,包括作为寄存器传输级(RTL)代码,作为高级电路表示法(诸如Verilog或VHDL),以及作为低级电路表示法(诸如OASIS(RTM)和GDSII)。在逻辑上定义适合于在集成电路中制造的硬件的更高级表示法(诸如RTL)可在计算机系统处进行处理,该计算机系统被配置成用于在软件环境的上下文中生成集成电路的制造定义,该软件环境包括电路元件的定义以及用于组合那些元件以便生成由该表示法如此定义的集成电路的制造定义的规则。如通常软件在计算机系统处执行以便定义机器的情况一样,可能需要一个或多个中间用户步骤(例如提供命令、变量等),以便将计算机系统配置成生成集成电路的制造定义,以执行定义集成电路以便生成该集成电路的制造定义的代码。
现在将参考图24描述在集成电路制造系统处对集成电路定义数据集进行处理以便将所述系统配置成制造神经网络加速器的示例。
图24示出了集成电路(IC)制造系统2402的示例,该集成电路制造系统被配置成制造如本文中的示例中的任何示例中所描述的神经网络加速器。特别地,IC制造系统2402包括布局处理系统2404和集成电路生成系统2406。IC制造系统2402被配置成接收IC定义数据集(例如定义如本文中的示例中的任何示例中所描述的神经网络加速器),处理IC定义数据集,以及根据IC定义数据集来生成IC(例如其体现如本文中的示例中的任何示例中所描述的神经网络加速器)。对IC定义数据集的处理将IC制造系统2402配置成制造集成电路,该集成电路体现如本文中的示例中的任何示例中所描述的神经网络加速器。
布局处理系统2404被配置成接收和处理IC定义数据集以确定电路布局。根据IC定义数据集确定电路布局的方法在本领域中是已知的,并且例如可涉及合成RTL代码以确定待生成电路的门级表示,例如就逻辑部件(例如,NAND、NOR、AND、OR、MUX和FLIP-FLOP部件)而言。通过确定逻辑部件的位置信息,可由电路的门级表示来确定电路布局。这可以自动完成或者在用户参与下完成,以便优化电路布局。当布局处理系统2404已确定电路布局时,该布局处理系统可以将电路布局定义输出到IC生成系统2406。电路布局定义可以是例如电路布局描述。
如本领域中已知,IC生成系统2406根据电路布局定义生成IC。举例来讲,IC生成系统2406可实施生成IC的半导体设备制造工艺,其可涉及光刻和化学处理步骤的多步骤序列,在此期间,在由半导体材料制成的晶片上逐渐形成电子电路。电路布局定义可呈掩模的形式,其可以在光刻工艺中用于根据电路定义来生成IC。替代地,提供给IC生成系统2406的电路布局定义可呈计算机可读代码的形式,IC生成系统2406可使用所述计算机可读代码来形成用于生成IC的合适掩模。
由IC制造系统2402执行的不同过程可全部在一个位置例如由一方来实施。替代地,IC制造系统2402可以是分布式系统,使得一些过程可以在不同位置执行,并且可以由不同方来执行。例如,以下阶段中的一些可以在不同位置以及/或者由不同方来执行:(i)合成表示IC定义数据集的RTL代码,以形成待生成的电路的门级表示;(ii)基于门级表示来生成电路布局;(iii)根据电路布局来形成掩模;以及(iv)使用掩模来制造集成电路。
在其他示例中,在集成电路制造系统处对集成电路定义数据集的处理可以将系统配置成制造神经网络加速器,而无需对IC定义数据集进行处理以便确定电路布局。例如,集成电路定义数据集可以定义可重新配置的处理器(诸如FPGA)的配置,并且对该数据集的处理可以将IC制造系统配置成(例如通过将配置数据加载到FPGA)生成具有该定义配置的可重新配置的处理器。
在一些实施方案中,当在集成电路制造系统中被处理时,集成电路制造定义数据集可以使集成电路制造系统生成如本文中描述的装置。举例来说,通过集成电路制造定义数据集,以上文关于图24描述的方式对集成电路制造系统的配置,可制造出如本文中所描述的设备。
在一些示例中,集成电路定义数据集可包括在数据集处定义的硬件上运行的软件,或者与在数据集处定义的硬件组合运行的软件。在图24中所示的示例中,IC生成系统可以由集成电路定义数据集进一步配置,以在制造集成电路时根据在集成电路定义数据集处定义的程序代码将固件加载到所述集成电路上,或者以其他方式向集成电路提供与集成电路一起使用的程序代码。
与已知的具体实现相比,在本申请中阐述的概念在设备、装置、模块和/或系统中(以及在本文中实现的方法中)的具体实现可带来性能改进。性能改进可包括计算性能提高、等待时间减少、吞吐量增大和/或功耗减小中的一者或多者。在制造这类设备、装置、模块和系统(例如在集成电路中)期间,可在性能改进与物理实现方式之间进行权衡,从而改进制造方法。例如,可在性能改进与布局面积之间进行权衡,从而匹配已知实现方式的性能,但使用更少的硅。例如,这可以通过以串行方式重复使用功能块或在设备、装置、模块和/或系统的元件之间共享功能块来完成。相反,本申请中所阐述的带来设备、装置、模块和系统的物理具体实现的改进(例如,硅面积减小)的概念可与性能提高进行权衡。这可以例如通过在预定义面积预算内制造模块的多个实例来完成。
申请人据此独立地公开了本文中所描述的每个单独的特征以及两个或更多个此类特征的任意组合,到达的程度使得此类特征或组合能够根据本领域的技术人员的普通常识基于本说明书整体来实行,而不管此类特征或特征的组合是否解决本文中所公开的任何问题。鉴于前文描述,本领域的技术人员将清楚,可以在本发明的范围内进行各种修改。
Claims (20)
1.一种根据神经网络处理数据的方法(1800),所述神经网络包括层序列,所述层序列包括第一卷积层、第二卷积层以及所述第一卷积层与所述第二卷积层之间的零个、一个或多于一个中间层,所述方法(1800)包括:
使用硬件逻辑,在所述第一卷积层之后和所述第二卷积层之前,通过一组每通道激活缩放因子在每通道的基础上对所述神经网络中的张量进行缩放(1802);以及
使用所述硬件逻辑,利用已经通过所述一组每通道激活缩放因子的倒数在每输入通道的基础上缩放的权重来实现所述第二卷积层(1804)。
2.如权利要求1所述的方法(1800),其中通过所述一组每通道激活缩放因子在每通道的基础上缩放的所述张量是所述第一卷积层的输出张量。
3.如权利要求2所述的方法(1800),其中所述序列包括中间层,并且所述中间层的输出张量馈送包括所述第二卷积层的第一分支和第二分支,并且所述方法还包括使用所述硬件逻辑,通过所述一组每通道激活缩放因子的所述倒数在每通道的基础上对所述第二分支中的张量进行缩放。
4.如权利要求2所述的方法(1800),其中所述第一卷积层的输出张量馈送包括所述第二卷积层的第一分支和第二分支,并且所述方法还包括使用所述硬件逻辑,通过所述一组每通道激活缩放因子的所述倒数在每通道的基础上对所述第二分支中的张量进行缩放。
5.如权利要求1所述的方法(1800),其中所述序列包括中间层,并且通过所述一组每通道激活缩放因子在每通道的基础上缩放的所述张量是所述中间层的输出张量。
6.如权利要求1所述的方法(1800),其中所述第一卷积层形成第一分支的一部分,并且所述第一分支的输出张量与第二分支的张量组合,以生成到所述第二卷积层的输入张量,并且所述方法还包括通过所述一组每通道激活缩放因子在每通道的基础上对所述第二分支的所述张量进行缩放。
7.如权利要求6所述的方法(1800),其中所述硬件逻辑包括神经网络加速器,所述神经网络加速器包括硬件单元,所述硬件单元被配置为接收第一张量和第二张量,对所述第二张量进行重缩放,以及在所述第一张量与重缩放的第二张量之间执行每张素运算,并且由所述硬件单元执行(i)所述第一分支的所述输出张量与所述第二分支的所述张量的所述组合,以及(ii)通过所述一组每通道激活缩放因子在每通道的基础上对所述第二分支中的所述张量的所述缩放。
8.如权利要求1所述的方法(1800),其中所述第一卷积层形成第一分支的一部分,并且所述第一分支的输出张量与第二分支的张量组合,以生成到所述第二卷积层的输入张量,并且通过所述一组每通道激活缩放因子在每通道的基础上缩放的所述张量是到所述第二卷积层的所述输入张量。
9.如权利要求8所述的方法(1800),其中由所述硬件逻辑的单个硬件单元执行所述组合以及通过所述一组每通道激活缩放因子进行的所述缩放。
10.如权利要求9所述的方法(1800),其中所述硬件逻辑包括神经网络加速器,所述神经网络加速器包括硬件单元,所述硬件单元被配置为在第一张量与第二张量之间执行每张素运算,以及对所述每张素运算的输出进行重缩放,并且由所述硬件单元执行(i)所述第一分支的所述输出张量与所述第二分支的所述张量的所述组合,以及(ii)通过所述一组每通道激活缩放因子在每通道的基础上对到所述第二卷积层的所述输入张量的所述缩放。
11.如权利要求5至10中任一项所述的方法(1800),其中所述序列包括非缩放不变的中间层。
12.如权利要求1所述的方法(1800),其中所述方法还包括:
利用已经通过一组每通道权重缩放因子在每输出通道的基础上缩放的权重来实现所述第一卷积层(1806);以及
通过所述一组每通道权重缩放因子的倒数在每通道的基础上对所述第一卷积层的输出张量进行缩放(1808)。
13.如权利要求12所述的方法(1800),其中通过所述一组每通道激活缩放因子在每通道的基础上缩放的所述张量是所述第一卷积层的所述输出张量,并且通过相同的运算将所述一组每通道激活缩放因子和所述一组每通道权重缩放因子的所述倒数应用于所述第一卷积层的所述输出张量。
14.如权利要求12所述的方法(1800),其中通过第一运算将所述一组每通道激活缩放因子应用于所述张量,并且通过不同的第二运算将所述一组每通道权重缩放因子的所述倒数应用于所述第一卷积层的所述输出张量。
15.如权利要求1至10和12至14中任一项所述的方法(1800),其中所述序列包括缩放不变的中间层。
16.如权利要求1至10和12至14中任一项所述的方法(1800),其中所述序列包括中间层,所述中间层是实现ReLU函数的激活层、实现LReLU函数的激活层和池化层中的一者。
17.如权利要求1至10和12至14中任一项所述的方法(1800),其中所述神经网络包括第二层序列,所述第二层序列包括第三卷积层、第四卷积层以及所述第三卷积层与所述第四卷积层之间的零个、一个或多于一个中间层,并且所述方法还包括:
在所述第三卷积层之后和所述第四卷积层之前,通过第二组每通道激活缩放因子在每通道的基础上对所述神经网络中的张量进行缩放(1802);以及
利用已经通过所述第二组每通道激活缩放因子的倒数在每输入通道的基础上缩放的权重来实现所述第四卷积层(1804)。
18.如权利要求1至10和12至14中任一项所述的方法(1800),其中所述硬件逻辑包括神经网络加速器。
19.如权利要求18所述的方法(1800),其中所述神经网络加速器包括被配置为执行每通道乘法的硬件单元,并且由被配置为执行每通道乘法的所述硬件单元来执行通过所述一组每通道激活缩放因子对所述张量的所述缩放。
20.一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机可读代码,所述计算机可读代码被配置为在运行所述代码时使神经网络加速器执行如权利要求1至19中任一项所述的方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB2214426.5 | 2022-09-30 | ||
GB2214426.5A GB2622875A (en) | 2022-09-30 | 2022-09-30 | Methods and systems for performing channel equalisation on a convolution layer in a neural network |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117808045A true CN117808045A (zh) | 2024-04-02 |
Family
ID=84000141
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311227627.6A Pending CN117808045A (zh) | 2022-09-30 | 2023-09-21 | 用于对神经网络中的卷积层执行通道均衡的方法和系统 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20240111990A1 (zh) |
EP (1) | EP4345691A1 (zh) |
CN (1) | CN117808045A (zh) |
GB (1) | GB2622875A (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118133924B (zh) * | 2024-05-08 | 2024-08-20 | 深圳鲲云信息科技有限公司 | 用于卷积网络均衡量化的方法及计算设备 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB201607713D0 (en) | 2016-05-03 | 2016-06-15 | Imagination Tech Ltd | Convolutional neural network |
US10325352B1 (en) * | 2019-01-23 | 2019-06-18 | StradVision, Inc. | Method and device for transforming CNN layers to optimize CNN parameter quantization to be used for mobile devices or compact networks with high precision via hardware optimization |
US12242956B2 (en) * | 2019-03-22 | 2025-03-04 | Qualcomm Incorporated | Systems and methods of cross layer rescaling for improved quantization performance |
-
2022
- 2022-09-30 GB GB2214426.5A patent/GB2622875A/en active Pending
-
2023
- 2023-09-21 CN CN202311227627.6A patent/CN117808045A/zh active Pending
- 2023-09-29 US US18/375,398 patent/US20240111990A1/en active Pending
- 2023-09-29 EP EP23200841.7A patent/EP4345691A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
GB2622875A (en) | 2024-04-03 |
US20240111990A1 (en) | 2024-04-04 |
EP4345691A1 (en) | 2024-04-03 |
GB202214426D0 (en) | 2022-11-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11886536B2 (en) | Methods and systems for implementing a convolution transpose layer of a neural network | |
JP7348971B2 (ja) | 畳み込みニューラルネットワークハードウエア構成 | |
CN110007959B (zh) | 用于深度神经网络的硬件实现的层次化尾数位长度选择 | |
EP4050522A1 (en) | Implementation of softmax and exponential in hardware | |
CN113887710A (zh) | 循环神经网络中的数字格式选择 | |
EP4206993A1 (en) | Configurable pooling processing unit for neural network accelerator | |
CN117808045A (zh) | 用于对神经网络中的卷积层执行通道均衡的方法和系统 | |
EP4361892A1 (en) | Methods and systems for performing a per channel affine transformation using a neural network accelerator | |
EP4160486A1 (en) | Neural network accelerator with a configurable pipeline | |
GB2614327A (en) | Configurable pooling process unit for neural network accelerator | |
US20250053552A1 (en) | Activation accelerator for neural network accelerator | |
EP4345692A1 (en) | Methods and systems for online selection of number formats for network parameters of a neural network | |
GB2631488A (en) | Activation accelerator for neural network accelerator | |
GB2611522A (en) | Neural network accelerator with a configurable pipeline | |
GB2631487A (en) | Activation accelerator for neural network accelerator | |
GB2611520A (en) | Methods and devices for configuring a neural network accelerator with a configurable pipeline | |
GB2611521A (en) | Neural network accelerator with a configurable pipeline | |
GB2631485A (en) | Activation accelerator for neural network accelerator |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |