CN114970807A - Softmax和指数在硬件中的实施 - Google Patents
Softmax和指数在硬件中的实施 Download PDFInfo
- Publication number
- CN114970807A CN114970807A CN202210173368.2A CN202210173368A CN114970807A CN 114970807 A CN114970807 A CN 114970807A CN 202210173368 A CN202210173368 A CN 202210173368A CN 114970807 A CN114970807 A CN 114970807A
- Authority
- CN
- China
- Prior art keywords
- neural network
- operations
- value
- lut
- function
- 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
Images
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/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
-
- 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
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/544—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
- G06F7/556—Logarithmic or exponential 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/04—Architecture, e.g. interconnection topology
- G06N3/047—Probabilistic or stochastic networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/02—Digital function generators
- G06F1/03—Digital function generators working, at least partly, by table look-up
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- 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/045—Combinations of 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/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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Probability & Statistics with Applications (AREA)
- Complex Calculations (AREA)
- Advance Control (AREA)
- Debugging And Monitoring (AREA)
Abstract
本公开涉及SOFTMAX和指数在硬件中的实施。公开了用于在神经网络加速器硬件中实施指数运算和softmax神经网络层的方法。还公开了一种实施所述指数运算的数据处理系统和一种实施所述softmax层的数据处理系统。所述指数运算或softmax层映射到多个基本的神经网络运算,并且所述神经网络加速器硬件评估这些运算,以分别产生所述运算或层的结果。
Description
技术领域
本发明涉及SOFTMAX和指数在硬件中的实施。
背景技术
Softmax是神经网络中常见的运算,通常在需要离散概率的情况下使用。在某些情况下,它还用于归一化张量,使得沿某个轴线的所有元素严格地在范围[0,1]内并且总和为1。在神经网络中实施softmax层的挑战在于它是一个相对复杂的运算,需要若干步骤。
对于值集或值向量中的任何值xj,softmax层执行以下运算:
为了去掉下标符号,该等式可以用向量x重写:
Softmax将范围(-∞,+∞)内的输入值映射到范围[0,1]内的输出。此外,输出值的总和为1(如离散概率分布所需的)。
已知,如果输入值x的量值很大,则softmax层的评估可能会遇到数值不稳定问题。输入x可具有如此大的正值以至于在指数ex的输出中发生上溢,或者如此大的负值导致发生下溢。即使不发生溢出,对于较大的x值,与其他指数值相比,指数值ex中的一些指数值也可能大到归一化不再可靠。
至少其中一些问题的解决方案是从张量(或向量)x中的所有值中减去最大值:
其中,M=max(x)。此重新定义的层与上述定义相同,但数值上更稳定。减去最大值将输入范围从(-∞,+∞)减小到(-∞,0],但不影响结果。
传统上,softmax层经常被用作用于分类,例如图像分类的神经网络的最后一层。在此,softmax层将产生概率向量,向量中的每个值表示图像属于一组互斥类中的相应类的概率(由神经网络估计)。Softmax通常应用于具有批次、高度、宽度和通道的维度的4D张量的通道维度,但本公开不限于这种用法。
在专门适配的硬件加速器(称为神经网络加速器(NNA))上实施神经网络变得越来越普遍。这些装置(通常是集成电路)通常专门用于评估使用神经网络进行推理时遇到的计算量最大的运算。例如,神经网络加速器可以包括多个专门用于评估卷积层的卷积引擎。
发明内容
提供本发明内容是为了以简化的形式介绍下文在具体实施方式中进一步描述的一系列概念。本发明内容不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。
公开了用于在神经网络加速器硬件中实施指数运算和softmax神经网络层的方法。还公开了一种实施指数运算的数据处理系统和一种实施softmax层的数据处理系统。指数运算或softmax层映射到多个基本的神经网络运算,并且神经网络加速器硬件评估这些运算,分别产生运算或层的结果。应当理解,术语“指数运算”是指实施自然指数函数f(x)=ex的运算。
根据一个方面,公开了一种在硬件加速器中实施指数运算的方法,该硬件加速器包括根据权利要求1所述的被配置为执行一组可用的基本神经网络运算的固定功能电路系统。
层的输入可以是张量或向量。在输入为张量的情况下,张量可具有批次、通道、高度和宽度的维度。
第一LUT、第二LUT和/或第三LUT可各自由单独的硬件模块实施。另选地,这些LUT中的两个LUT(特别是第一LUT和第二LUT)可以由相同的硬件模块在不同时间实施。例如,单个LUT硬件模块可以加载有表示S形函数的值,用于在第一时间评估第一查找,并且可以加载有表示倒数函数的值,用于在第二时间评估第二查找。这可以通过将相同的LUT硬件重新用于不同的运算来增加硬件利用、再利用和灵活性。
该表示可包括多个基本神经网络运算或仅包括多个基本神经网络运算。
在此上下文中,“固定功能”是指硬件的特性,即,硬件实施的逻辑在制造之后无法被重新配置(或者至少无法被广泛地重新配置)。这与例如可重新配置的现场可编程逻辑形成对比。它还与通用处理器硬件形成对比,该通用处理器硬件完全可编程以实施任何(任意)功能或算法。硬件加速器可以包括在专用集成电路(ASIC)中。固定功能硬件的行为可以是在有限程度上可编程的。例如,固定功能硬件模块可能能够在有限的参数的集合控制下执行其固定功能。因此,每个硬件模块可能仅在其可以实施各种步幅和内核大小的卷积或池化的意义上是可重新配置的,但在其可以执行任意算法的意义上并不是完全可编程的。
多个基本神经网络运算可以实施:求反,应用于输入值,以产生求反的输入值;S形函数,应用于求反输入值,以产生S形求反值;倒数运算,应用于S形求反值,以产生倒数S形值;以及加法或减法,应用于倒数S形值,以从倒数S形值中减去常数,从而产生指数运算的输出值。
常数可以等于1(单位(unity))。常数可以表示为正数(例如,+1),并且从倒数S形值中减去。替代地,常数可以表示为负数(例如,-1),并且添加到倒数S形值中。
根据该方法,可以使用恒等式从基本运算构建指数运算。
指数运算的这种表示完全包括可由示例性硬件加速器中的现有硬件执行的运算。S形函数的使用基于该函数与指数运算相关的识别。这种关系通常用于通过首先评估指数函数来评估S形函数。然而,已经认识到可以反转该关系,以允许通过首先评估S形函数来评估指数运算。这样可以提供评估指数运算的一种方便的方式,因为S形函数是一种常见的激活函数,并且因此可能已经在硬件加速器中有效地实施。
可以使用硬件加速器的逐元素运算单元通过逐元素减法运算来评估求反。
可以使用硬件加速器的激活单元通过第一查找来评估S形函数。
S形函数是激活函数的标准选择;因此,示例性硬件加速器中的查找表(LUT)通常提供实施S形函数的能力。
可以通过以下方式中的一者来评估倒数运算:第二查找,使用硬件加速器的激活单元;局部响应归一化,使用硬件加速器的LRN单元;以及逐元素除法,使用硬件加速器的逐元素运算单元。
局部响应归一化是神经网络中用于缩放变量的常用运算。LRN是计算上复杂的函数;然而,发明人已意识到,通过谨慎地选择函数的参数,可以简化和利用LRN来实施倒数。替代地,可以将倒数编程到查找表中(如果硬件和软件实施允许这种灵活性)。
在一些实施方案中,倒数运算和S形函数可以在第三查找中组合。例如,第三LUT可以包含函数在这些实施方案中的一些实施方案中,倒数运算和S形函数可以进一步与第一减法相结合,从而对输入值求反。即,第三LUT可以包含函数类似于第一查找和第二查找的第三查找可使用硬件加速器的激活单元来评估。
可以使用硬件加速器的激活单元通过逐元素加法或逐元素减法来评估加法或减法。激活单元可以被配置为向张量的每个元素添加/从中减去相同的值。
根据另一方面,提供了一种在硬件加速器中实施softmax层的方法,该硬件加速器包括根据权利要求7所述的被配置为执行一组可用的基本神经网络运算的固定功能电路系统。
多个基本神经网络运算可包括至少一个函数逼近运算,其中函数逼近运算被实施为LUT中的查找,该LUT任选地包括以下各项中的一者:S形函数;倒数函数;S形函数的倒数;函数f(z)=2z,其中z是范围(0,1)中的值,以及指数函数。
如果多个基本神经网络运算包括两个或更多个查找,则这些查找可以由单独的LUT在单独的硬件模块中实施。替代地,它们可以由在不同时间执行不同查找的单个LUT硬件模块来实施。以这种方式重复使用单个LUT可以提高硬件利用率。
多个基本神经网络运算可以实施:最大运算,应用于输入值,以获得输入值中的最大值;第一减法,从每个输入值中减去最大值,以产生负移输入值;指数运算,应用于负移输入值,以产生指数值;求和,应用指数值,以产生指数值的总和;以及除法,将每个指数值除以指数值的总和。
最大运算可以通过以下方式之一进行评估:最大池化运算,使用硬件加速器的池化单元;以及逐元素最大运算的重复迭代,使用硬件加速器的逐元素运算单元。
如果要在输入张量的通道维度(或批次维度)上评估softmax层,则借助于最大池化运算来评估最大运算可包括在最大池化之前对输入张量应用转置(或置换)运算,使得将待计算最大值的元素排列在高度维度和宽度维度中的一者或两者上。如果池化单元专门评估这些空间维度中的一者或两者上的池化运算,则这可能是有益的。在最大池化之后可以应用转置(或置换)运算,以反转第一转置并且将维度返回到其原始配置。
如果最大运算要借助于重复的逐元素最大运算来来评估,则评估可包括将输入张量分成两半,借助于逐元素最大值来逐元素比较这两半,并且重复该过程,直到获得单个最大值(在相关维度中)。
可以使用硬件加速器的逐元素运算单元通过逐元素减法运算来评估第一减法。
指数运算可以映射到多个基本神经网络运算的子集,其中所述子集实施:求反,应用于负移位的输入值,以产生求反的输入值;S形函数,应用于求反输入值,以产生S形求反值;第一倒数运算,应用于S形求反值,以产生倒数S形值;以及加法或第二减法,应用于倒数S形值,以从倒数S形值中减去常数,从而产生指数运算的输出值。
指数运算的分量运算可以如上文已经概括的那样来实施。
替代地,在一些实施方案中,指数运算可以由LUT中的查找使用硬件加速器的激活单元直接评估。
可以使用硬件加速器的一个或多个卷积引擎,通过卷积来评估总和。卷积可以包括具有与要求和的维度中的指数值的张量相同大小的张量的卷积。如果要在通道维度上应用softmax层,则卷积可以为1×1卷积,其中内核具有宽度=高度=1,输入通道的数量等于指数值的张量中的通道数量,以及单个输出通道。
除法可以实施为第二倒数运算和乘法。
可以使用硬件加速器的逐元素运算单元通过逐元素乘法运算来评估乘法运算。
可以通过以下方式中的一者来评估第一倒数运算和第二倒数运算中的至少一者:查找,使用硬件加速器的激活单元;局部响应归一化,使用硬件加速器的LRN单元;以及逐元素除法,使用硬件加速器的逐元素运算单元。
本公开的发明人已认识到局部响应归一化可用于计算倒数。通过设置常数α,β=1和k,n=0,LRN从复杂的归一化函数简化为返回输入的倒数的函数。
可以使用激活单元来评估一个倒数运算,并且可以由LRN单元来评估另一个倒数运算。替代地,两个倒数运算都可以由激活单元评估,或者两个倒数运算都可以由LRN单元评估。
在一些实施方案中,softmax层将应用于包括第一元素和第二元素的输入数据,并且其中多个基本神经网络运算实施:至少一个减法,以获得第一元素和第二元素的至少一个差;以及S形函数,应用于至少一个所获得的差,以产生softmax层的输出。
第一元素和第二元素可以是张量的元素。张量在待评估softmax层的维度上的大小可以为2。
可以使用硬件加速器的一个或多个卷积引擎,通过卷积来评估至少一个减法。替代地或另外,S形函数可以通过函数逼近运算来评估,任选地使用硬件加速器的激活单元来评估。函数逼近运算可包括在激活单元的LUT中的查找。
将神经网络层映射到包括多个基本神经网络运算的表示任选地包括:标识至少两个可以组合的连续基本神经网络运算;以及将至少两个连续的基本神经网络运算组合成较少数量的基本神经网络运算。
例如,求反运算可以与加法运算或减法运算组合。在另一个示例中,可以通过将组合由连续LUT实施的各个函数的单个复合函数的表示加载到单个LUT中来组合两个连续LUT查找运算。
还提供了一种根据权利要求19所述的用于实施指数运算的数据处理系统。该表示可包括多个基本神经网络运算或仅包括多个基本神经网络运算。
另外提供了一种根据权利要求20所述的用于实施softmax层的数据处理系统。同样,该表示可包括多个基本神经网络运算或仅包括多个基本神经网络运算。函数逼近运算可以实施为LUT中的查找。
硬件加速器可以包括以下各项中的任何一者,或包括两者或更多者的任何组合:激活单元,包括LUT;局部响应归一化单元,被配置成执行局部响应归一化;逐元素运算单元,被配置为将所选择的运算应用于两个相同大小的张量的每一对相应元素;一个或多个卷积引擎,被配置为执行卷积运算;以及池化单元,被配置为执行池化运算,包括(但一般不限于)最大池化。
任选地,当硬件加速器包括激活单元时,多个基本神经网络运算中的一个或多个基本神经网络运算可以实施S形函数,并且激活单元可以被配置为评估S形函数。
任选地,当硬件加速器包括局部响应归一化单元时,多个基本神经网络运算中的一个或多个基本神经网络运算可以实施倒数运算,并且局部响应归一化单元可以被配置为评估倒数运算。
数据处理系统还可以包括存储器操纵模块,该存储器操纵模块被配置为操纵存储在存储器中的数据,并且硬件加速器可包括池化单元,该池化单元被配置为执行池化运算,包括最大池化。多个基本神经网络运算中的一个或多个基本神经网络运算可以实施最大运算,应用于通道维度上的输入数据,其中存储器运算模块被配置为重新排列输入数据的维度以在一个或多个空间维度上排列通道维度,并且其中池化单元被配置为通过在一个或多个空间维度上执行最大池化来评估最大运算。
还提供了一种数据处理系统,该数据处理系统被配置为执行如权利要求1至18中任一项所述的方法。
数据处理系统可以在集成电路上的硬件中体现。
还提供了一种使用集成电路制造系统来制造如上所概述的或如权利要求19至24中任一项所述的数据处理系统的方法。
还提供了一种使用集成电路制造系统来制造如上文所概述的或如权利要求19至24中任一项所述的数据处理系统的方法,该方法包括:使用布局处理系统来处理数据处理系统的计算机可读描述,以便生成体现数据处理系统的集成电路的电路布局描述;以及使用集成电路生成系统,根据电路布局描述来制造数据处理系统。
还提供了一种计算机可读代码,该计算机可读代码被配置为使得在运行该代码时执行如上文所概述的方法或如权利要求1至18中任一项所述的方法。还提供了一种计算机可读存储介质,在其上编码有所述计算机可读代码。
还提供了一种集成电路定义数据集,该集成电路定义数据集在集成电路制造系统中处理时,将集成电路制造系统配置为制造如上文所概述的或如权利要求19至24中任一项所述的数据处理系统。
另外,还提供了一种计算机可读存储介质(任选地为非暂态的),在其上存储有如上文所概述的或如权利要求19至24中任一项所述的数据处理系统的计算机可读描述,该计算机可读描述在集成电路制造系统中处理时使集成电路制造系统制造体现数据处理系统或NNA的集成电路。
还提供了一种计算机可读存储介质(任选地为非暂态的),在其上存储有或如权利要求19至24中任一项所述的数据处理系统的计算机可读描述,该计算机可读描述在集成电路制造系统中处理时使集成电路制造系统执行以下运算:使用布局处理系统来处理数据处理系统的计算机可读描述,以便生成体现数据处理系统的集成电路的电路布局描述;以及使用集成电路生成系统,根据电路布局描述来制造数据处理系统。
还提供了集成电路制造系统,该集成电路制造系统被配置为制造如上文所概述或如权利要求19至24中的任一项所述的数据处理系统。
还提供了一种集成电路制造系统,包括:非临时性计算机可读存储介质,该非临时性计算机可读存储介质上存储有如上文所概述或如权利要求19至24中的任一项所述的数据处理系统的计算机可读描述;布局处理系统,该布局处理系统被配置为处理计算机可读描述,以生成体现该数据处理系统的集成电路的电路布局描述;以及集成电路生成系统,该集成电路生成系统被配置为根据电路布局描述来制造数据处理系统。
布局处理系统可被配置为确定从集成电路描述导出的电路的逻辑部件的位置信息,以生成体现数据处理系统的集成电路的电路布局描述。
如对本领域的技术人员显而易见的,上述特征可以适当地组合,并且可以与本文所述的示例的任何方面组合。
附图说明
现在将参考附图详细描述示例,在附图中:
图1A示出了softmax层的计算图;
图1B是示出计算图1A中的指数运算的一种方式的计算图;
图2是根据本公开的一个示例的硬件加速器的框图;
图3是图2中使用的卷积引擎的框图;
图4是根据示例的用于实施softmax层或指数运算的数据处理系统的框图;
图5是图4中存储器操纵模块的框图;
图6A是示出根据示例在硬件加速器中实施指数运算的方法的流程图;
图6B是示出根据示例在硬件加速器中实施softmax层的方法的流程图;
图7A示出了最大运算;
图7B是示出用于实施图7A的最大运算的一种方法的计算图;
图7C示出了通过连续逐元素比较确定张量的最大值的方法;
图7D示出了通过连续逐元素比较来确定最大值的另一个示例;
图8是示出用于实施图7A的最大运算的替代方法的计算图;
图9A示出了求和运算;
图9B是示出图9A的求和运算可以映射到基本神经网络运算的一种方式的计算图;
图10A示出了除法运算;
图10B是示出图10A的除法运算可以映射到基本神经网络运算的一种方式的计算图;
图10C是示出图10A的除法运算可以映射到基本神经网络运算的替代方式的计算图;
图11A是根据一个示例的示出可以使用多个基本神经网络运算来评估softmax层的一种方式的计算图;
图11B是根据另一个示例的示出可以使用多个基本神经网络运算来评估softmax层的替代方式的计算图;
图12是根据一个特殊情况的示出可以使用多个基本神经网络运算来评估softmax层的另一个替代方式的计算图;
图13示出了其中实施数据处理系统的计算机系统;并且
图14示出了用于生成体现数据处理系统的集成电路制造系统。
附图示出了各种示例。技术人员将理解,附图中所示的元素边界(例如,框、框的组,或其他形状)表示边界的一个示例。在一些示例中,情况可能是一个元素可以被设计为多个元素,或者多个元素可以被设计为一个元素。在适当的情况下,贯穿各附图使用共同的附图标记来指示类似的特征。
具体实施方式
通过示例的方式给出以下描述,以使本领域的技术人员能够制造和使用本发明。本发明不限于本文描述的实施方案,并且对所公开的实施方案的各种修改对于本领域的技术人员将是显而易见的。
现在仅通过示例的方式来描述实施方案。
面对在使用神经网络加速器(NNA)的系统中实施softmax层的期望,一种可能性是设计专门用于评估softmax层的专用固定功能硬件模块。然后可以将该硬件模块包括在NNA中,其中它将负责根据需要评估任何softmax层。
另一种替代方法是在NNA之外的通用硬件诸如通用CPU或DSP中评估softmax层。
在NNA中提供专用固定功能硬件模块来处理softmax层的评估,可以实施优化的快速评估。然而,其缺点是专用固定功能硬件模块在集成电路中占用附加的面积。此外,由于对softmax层的评估通常表示NNA的工作量的一小部分,因此对于大多数典型的神经网络,专用固定功能硬件模块的利用率将很低。换句话讲,专用的固定功能softmax模块大部分时间都是不活动的。
同时,在通用硬件中评估softmax层具有灵活性,并且避免使NNA的大面积得不到充分利用;然而,由于硬件的专业化程度较低,其效率通常较低。
通用硬件的可配置性导致功率和面积成本,因为:(i)需要附加的逻辑来灵活地路由数据;(ii)计算元素没有那么专业,这意味着计算密度通常不如固定功能硬件高;以及(iii)难以平衡硬件的带宽和计算要求。专用硬件可以更高效,因为它的设计使得其不包括比手头任务严格必要的功能更多的功能。
另外,当使用NNA外部的通用硬件时,将必要的数据从NNA传输到通用硬件(例如,CPU)将产生开销。这通常涉及在评估softmax层之前,NNA将数据写入存储器,以及CPU从存储器中读取数据。这有可能会减慢层的计算速度,特别是在(通常情况下)存储器访问速度占主导地位的情况下。此外,由于操作系统和其他正在运行的进程的要求,CPU时间通常非常宝贵。花费CPU时间来评估softmax层可导致这些其他进程变慢并且资源使用效率低下。GPU和DSP也是如此。
当该层是神经网络的最后一层时,可能会减轻使用外部CPU评估softmax层所导致的性能损失。在这种情况下,softmax层的输出不需要传回NNA进行进一步处理。然而,这仍然会消耗主机CPU时间(可能相当大,特别是在高推断速率下)。此外,在一些最近的基于注意力的神经网络中,将softmax层作为中间层包括在神经网络中变得越来越普遍。这意味着softmax层的输出数据需要传回NNA进行进一步处理。与神经网络的输出处的典型softmax层相比,神经网络中的softmax层也可以具有较大的输入和输出张量。数据大小的增加增加了所需的存储器带宽,因此增加了使用外部CPU来评估层的性能损失。增加所使用的带宽也会增加功耗。
又一替代方案是在NNA本身内包括一个或多个通用可编程单元,诸如CPU或数字信号处理器(DSP)。从某种意义上,这将是上述两种可能解决方案的混合体。这样将避免消耗系统带宽,以便将每个softmax层的评估移交给外部通用处理器;然而,这会带来硬件/软件复杂度增加、功耗增加和集成电路占用面积增加的缺点。
期望在NNA内实施softmax层,但不需要为此目的向NNA架构添加专用硬件单元或附加的通用硬件。然而,直到现在,尚未清楚如何可以通过示例性NNA适于执行的相对有限的运算集合来评估相对复杂的softmax层。与CPU执行的运算不同,NNA执行的运算并非设计为一套灵活或完整的通用运算。相反,每个神经网络运算都专门用于快速有效地执行特定的计算密集型神经网络计算。取舍是,NNA在执行此专用集之外的功能的能力非常有限。因此,重新利用现有神经网络运算来评估softmax层具有挑战性。
根据本公开的示例基于示例性NNA上可用的基本神经网络运算,提供了在硬件中实施softmax层的方式。Softmax层可以被视为如图1A所示的计算图,并且图中的各个运算都可以替换为NNA硬件中的一个或多个运算。然后,可以由NNA评估包含这些替换运算的图。
如图2所示,示例性硬件加速器200(在本文中也称为神经网络加速器或NNA)包括以下固定功能硬件单元:
·一组卷积引擎240,专门用于卷积运算;
·逐元素运算单元285,专门用于对具有对应大小的两个张量的每对相应元素执行相同的运算;
·激活单元255,专门用于将激活函数(可以是可选择的、可配置的或完全可编程的)应用于张量的每个元素;
·局部响应归一化(LRN)单元265(或简称为归一化单元),专门用于执行基于邻域的归一化运算;以及
·池化单元275,专门用于执行池化运算,诸如最大池化和最小池化。
本公开的示例使用由这些固定功能硬件单元执行的基本神经网络运算来实施softmax层。在本发明的实施方式中,计算以定点算术法执行。实验表明,定点实施方式足够准确,不会显著降低所测试的示例性神经网络的整体准确度。
Softmax层可以由以下运算构成:
·最大运算;
·减法;
·实施函数f(x)=ex的指数运算;
·求和;以及
·除法。
对于这些运算中的每一个运算,可能有不止一种方法可以重组运算以在硬件加速器上执行。下文将依次更详细地解释这些运算。
图1A是示出示例性NNA中可用的运算如何可用于实施softmax层的计算图。在该示例中,将考虑示例性输入张量x,该张量具有批次、高度、宽度和通道维度。在该示例中,假设将在输入的通道维度上评估softmax层。应当理解,可以在一个或多个其他维度上评估softmax层,并且它可以应用于具有以任何方式排序的任意数量维度的张量。
首先,对输入张量x进行最大运算110。该运算在待评估softmax层的一个或多个维度上执行。在逐通道softmax的当前示例中,该运算沿通道维度执行。在一个或多个不同维度上评估softmax层的情况下,最大运算110将改为沿所述那个或多个不同维度执行。最大运算110返回x内相关维度上的最大正值,以产生最大值M的张量。在也被称为第一减法的减法运算120中,从张量x的相应元素中减去最大值的张量M。(这可以使用广播来实施,如下文进一步详细讨论的)。该减法运算120产生负移张量x-M。负移张量输入到指数运算130。该计算将负移张量的每个元素应用为欧拉数e的幂。指数运算130产生指数值的张量,在本文中称为指数张量ex-M。对指数张量ex-M进行求和140。该求和沿要评估softmax层的一个或多个维度(在当前示例中为通道维度)对指数张量的所有元素求和,从而产生包含指数值之和∑ex-M的张量。在除法运算150中,指数值除以其总和。这将返回softmax层的输出:
图1B是示出示例性NNA中可用的运算如何用于实施指数运算130的示例的计算图。根据该示例,指数运算130包括以下运算:
·求反132;
·S形函数134;
·倒数运算136;以及
·第二减法138。
继续图1A的示例,指数运算130的输入为负移张量x-M。该张量进行求反132以产生求反的张量-(x-M)。求反132可以多种方式实施—例如,通过从0中减去负移张量,或通过从其自身减去负移张量两次。取反的张量被输入到S形函数134,该S形函数为取反的张量的每个元素确定S形值。S形函数134的输出是S形求反值σ(-(x-M))的张量。对S形求反值的张量进行倒数运算136,确定S形求反值中的每一个S形求反值的倒数。S形运算136返回倒数S形值的张量。最后,对倒数S形值的张量进行第二减法138,以从张量的每个元素减去常数(一)。这返回指数张量其与ex-M相同。
一般来讲,使用示例性NNA中可用的运算来执行指数运算130的这种示例性方法可以单独使用来评估指数运算,或者作为softmax层的实施方式的一部分。
图2示出了示例性硬件加速器200,该示例性硬件加速器被配置为根据本公开的示例评估多个基本神经网络运算。硬件加速器200包括数字逻辑电路系统,该数字逻辑电路系统被配置为接收数据(包括权重和输入张量)以及用于处理数据的命令。硬件加速器200包括存储器接口210、输入缓冲器控制器215、命令解码器220、系数缓冲器控制器225、系数缓冲器230、n输入缓冲器235、n卷积引擎240、n累加器245、累积缓冲器250、激活单元255、局部响应归一化(LRN)单元265、共享缓冲器270、池化单元275,以及逐元素运算单元285。硬件加速器200可用于评估基本神经网络运算以实施softmax层或指数运算。
存储器接口210被配置为提供硬件加速器200与外部存储器25之间的接口。外部存储器25可被视为与硬件加速器200分开的模块。命令或配置信息可包括例如关于权重和数据大小和格式以及它们在外部存储器中的位置的信息。
存储器接口210被配置为从外部存储器25接收待在神经网络内的计算中使用的权重和数据以及用于控制硬件加速器200的运算的命令信息。所接收的权重(在本文中也称为系数)被传递到系数缓冲器控制器225,并且所接收的数据被传递到输入缓冲器控制器215。所接收的命令被传递到命令解码器220,该命令解码器继而被配置为对命令进行解码并且随后将控制信息发布到硬件加速器的元件,包括系数缓冲器控制器225和输入缓冲器控制器215,以控制权重和输入数据存储在缓冲器中的方式。
在读取外部存储器期间经由存储器接口210从外部存储器接收的权重和输入数据可形成单个层的仅一部分的权重和输入数据,所有权重和输入数据待用于处理单个层,或者可包括用于处理多个层的权重和输入数据。例如,从外部存储器接收的权重可以形成单个层的权重,并且所接收的输入数据可以仅形成单个层的输入数据的一部分(或反之亦然)。可以在从存储器的单次读取(例如,使用突发读取)中从外部存储器25接收跨一个或多个层的数据和权重的任何组合。
在实践中,在从外部存储器25的单次读取中接收的权重和数据的数量将取决于系数缓冲器230和输入缓冲器235的大小。权重从系数缓冲器控制器225传递到系数缓冲器230,并且所接收的数据从输入缓冲器控制器215传递到多个输入缓冲器235a至235n。输入缓冲器的数量将取决于加速器200的具体实施方式,但可以取任何值。输入数据跨所有输入缓冲器235a至235n共享。输入缓冲器各自形成有效的存储库(bank),使得输入缓冲器的数量可以根据应用而增加或减少。
输入缓冲器235a至235n连接到多个多路复用器中的每一个多路复用器,因为每个卷积引擎240a至240n需要访问输入数据的所有有效的“存储库”。多路复用器各自被配置为从输入缓冲器235中的一个输入缓冲器选择输出,并且将从所选择的输入缓冲器235输出的值传递到相应的卷积引擎240a至240n。另外,来自系数缓冲器230的权重作为第二输入提供到每个卷积引擎240a至240n中。卷积引擎240被配置为使用从系数缓冲器230接收的权重对所接收的输入数据执行卷积计算。每个卷积引擎240a至240n的所得输出作为输入提供给多个累加器245a至245n的相应累加器。
每个累加器245a至245n连接到累积缓冲器250。累积缓冲器250被配置为存储从每个累加器245a至245n接收的累积结果。累积缓冲器250连接到存储器接口210。因而,累积缓冲器250被配置为经由存储器接口210将数据发送到外部存储器25以及从该外部存储器接收数据。具体地,累积缓冲器250被配置为能够经由存储器接口210存储并且从外部存储器25恢复其值,如下文将更详细描述的。累积缓冲器250连接到累加器245a至245n的输入,并且被配置为将值馈送回累加器245a至245n中,以使得能够进行累加计算。
累积缓冲器250被配置为将累积值传递到激活单元255和/或逐元素运算单元285。激活单元255被配置为执行多个不同激活函数中的至少一个激活函数。激活单元255结合了查找表(LUT),用于存储待应用于到激活单元的输入数据的激活函数,诸如S形激活。激活单元255还可操作以将偏置值添加到张量/从张量减去偏置值。这可用于向张量添加常数或从张量减去常数。
由激活单元255计算出的所得值可以经由共享缓冲器270传递给LRN单元265和/或池化单元275进行处理。LRN单元265被配置为执行局部响应归一化。这可以在输入数据的单个平面内执行。替代地或另外,LRN运算也可以跨平面执行。
存储在共享缓冲器270中的结果被传递到存储器接口210,该存储器接口可将结果存储在外部存储器25中或者将结果传递回输入缓冲器以供进一步处理,而不必首先传递到外部存储器。
共享缓冲器270被配置为缓冲来自激活单元255、LRN单元265、池化单元275和逐元素运算单元285中的任何一者或多者的值,直到执行下一运算所需的所有值可用。以此方式,共享缓冲器270用于提高存储效率,因为它可以保持在稍后的运算中需要的值而不必使用外部存储器25。
逐元素运算单元285包括被配置为对从累积缓冲器250和/或激活单元255接收的张量执行逐元素运算的电路系统。支持的逐元素运算可包括张量的相应元素的逐元素加法、减法、乘法、除法和最大值(或最小值)。
逐元素运算是对至少一个张量的多个元素重复的运算。通常针对张量的所有元素重复这些运算。可以考虑两类逐元素运算:具有单个运算元的一元运算和具有两个运算元的二元运算。逐元素运算单元285处理二进制逐运算运算。硬件加速器的其他部件也可以执行逐元素运算。例如,激活单元255可以通过将期望的函数加载到LUT中并且将该函数应用于张量的每个元素来执行一元逐元素运算。
虽然图2的硬件加速器示出了布置单元的特定顺序以及硬件实施方式中的数据处理方式,但应当理解,所需特定计算和跨层处理数据的顺序可以变化。
在一些示例中,由激活255、LRN 265、池化275和逐元素285单元执行的函数可以全部被执行。在其他示例中,可以仅执行这些函数中的一些函数,并且不一定按照硬件加速器200中列出的顺序执行。为了实现处理这些函数的可配置顺序,激活255、LRN 265、池化275和逐元素285单元中的每一者可被配置为接收将单元配置为旁路模式的控制信令,在旁路模式中不执行函数并且输入值仅经过单元而不发生变化。
在一些示例中,特定层的数据可能需要首先由卷积引擎240a-n处理,然后根据激活、LRN、池化和逐元素单元255、265、275、285处理。在这些示例中,来自卷积引擎240a-n的输出经由累加器245a-n传递到累积缓冲器250,并且接着传递到激活、LRN、池化和逐元素单元255、265、275、285以供进一步处理。在其他示例中,可能需要以不同方式处理数据。例如,数据可能需要首先根据激活、LRN、池化和逐元素单元255、265、275、285进行处理,并且其次根据卷积引擎240a-n进行处理。
在这些布置中,数据可以经由累积缓冲器250直接传递到激活单元255,其中累积缓冲器250已经直接从存储器接口210接收输入数据,该存储器接口已经从外部存储器接收数据。以此方式,有效跳过由卷积引擎240a-n和累加器245a-n执行的处理,并且数据可直接传递到激活255、LRN 265、池化275和逐元素285单元。然后,一旦使用激活、LRN、池化和逐元素单元255、265、275、285的处理完成,所得值就可以经由存储器接口210被传递到输入缓冲器控制器215中。在一些布置中,所得值可首先经由存储器接口210传递到外部存储器25,并且接着在使用之前从外部存储器25检索。
在其他布置中,存储器接口210可以将所得值传递到输入缓冲器控制器215,而不将值传递到外部存储器25。通过避免需要将使用激活、LRN、池化和逐元素单元255、265、275、285的计算所得的值传递到外部存储器25,减小存储器带宽,并且因此也减少处理数据的延迟。
有利地,由于激活、LRN、池化和逐元素单元255、265、275、285线性放置,因此可能背靠背地执行这些运算,而不必从外部存储器25检索数据。在一些实施方案中,激活、LRN、池化和逐元素单元255、265、275、285的连接顺序可以变化。例如,激活、LRN和池化单元255、265、275可以反向连接,使得池化单元连接到累积缓冲器250,并且激活单元连接到存储器接口210。
图3示出了图2中的卷积引擎240中的每一者的结构。卷积引擎240包括乘法逻辑242的多个元素,每个元素被配置为将权重乘以输入数据元素,以及加法逻辑244的多个元素,以树结构配置以对乘法逻辑242的元素的输出求和。
图4是根据一个示例的用于在硬件加速器200(NNA)中实施softmax层或指数运算的数据处理系统10的框图。数据处理系统包括硬件加速器200;控制器15;存储器25;以及存储器操纵模块(MMM)40。至少硬件加速器200、存储器25和MMM 40通过数据总线30连接。控制器15被配置为接收至少一个softmax神经网络层或包括指数运算的神经网络层的定义,并且将该层映射到可由硬件加速器200在本机执行的多个基本神经网络运算。控制器15被进一步配置为控制硬件加速器200(以及如有需要的话,MMM 40)以借助于这些基本运算来评估softmax层或包括指数运算的层。
硬件加速器200被配置为评估多个基本神经网络运算。MMM 40被配置为以各种方式操纵存储器中的多维数据,包括互换数据的不同维度的转置或置换运算。在一些示例中,MMM 40可被配置为通过在宽度维度或高度维度中的一者或两者中体现数据的通道维度,或者将通道维度与这些空间维度中的一者或两者交换来变换数据。在替代示例中,MMM可以转置或置换输入数据的维度的任何其他组合,包括批次维度。
图5是图4中使用的MMM 40的框图。如已经提到的,MMM 40经由总线30耦合到存储器25。MMM 40包括存储器读取块420;内部缓冲器410;以及存储器写入块430。控制通道440用于协调存储器读取块420和存储器写入块430执行的运算。存储器读取块420和存储器写入块430两者耦合到总线30。存储器读取块420的输出耦合到内部缓冲器410的输入。存储器写入块430的输入耦合到内部缓冲器410的输出。
存储器读取块420从存储器25读取数据。存储器读取块420将(从存储器25读取的)数据写入内部缓冲器410。存储器写入块430从内部缓冲器410读取数据并且将(从内部缓冲器410读取的)数据写回到外部存储器25。通过存储器读取块420和存储器写入块430执行的运算的组合,可以用前述方式变换数据。变换可以在将数据从存储器25移动到内部缓冲器410时发生,或者可以在将数据从内部缓冲器410移动到存储器25时发生。在一些情况下,变换可以部分地发生在存储器25和内部缓冲器410之间,部分地发生在内部缓冲器410和存储器25之间。
由于存储器读取块420和存储器写入块430是作为单独的硬件块提供的,因此它们能够并行操作。即,在存储器写入块230正在执行步骤330和步骤340时,存储器读取块420可以执行步骤310和步骤320(这些步骤将在下文参考图6A和图6B进行详细说明)。控制通道240提供存储器读取块220和存储器写入块230之间的通信,以保持两个块之间的同步。
图6A是示出根据本公开的一个示例由数据处理系统10执行的方法的流程图。在该示例中,数据处理系统10实施指数运算。
在步骤310中,控制器15接收涉及指数运算的神经网络层的定义作为输入。在步骤320中,控制器将层映射到包括多个基本神经网络运算的等效计算图。在步骤330中,硬件加速器200评估多个基本神经网络运算,以产生指数运算的结果。在本发明的示例中,映射到多个基本运算是基于图1B的计算图,该图关于S形函数重新构建指数运算。这将在下文更详细地描述。
图6B是示出根据本公开的另一个示例由数据处理系统10执行的方法的流程图。在该示例中,数据处理系统10实施softmax层。在步骤311中,控制器15接收softmax神经网络层的定义作为输入。在步骤321中,控制器15将层映射到包括多个基本神经网络运算的等效计算图。在步骤331中,硬件加速器200评估多个基本神经网络运算,以产生softmax层的输出。在本发明的示例中,映射到多个基本运算基于图1A的计算图。现在将更详细地描述这一点。
基于图1A和图1B的计算图的操纵,将softmax层和指数运算映射到基本神经网络运算。单独考虑每个计算图中的每个步骤很方便,因为可存在几种方法来映射图中的每个步骤。一般来讲,可以独立于其他步骤为每个步骤选择特定实施方式(包括一组特定的一个或多个基本运算)。
将参考图7A、图7B、图7C和图8来解释最大运算110的两个可能的实施方式。如参考图1A和图1B所解释的,并且同样如图7A和图8所示,最大运算110接收输入张量并且返回通道维度上的元素的最大值。以通道维度作为示例,因为softmax最常应用于通道维度。然而,应当理解,本公开的范围不限于该示例。
最大运算110可被实施:
在池化单元275中;或者,
在逐元素运算(EWO)单元285中。
这些单元可以通过例如在存储器操纵模块40中执行的转置或置换运算来辅助。
图7B示出了使用EWO单元285的最大运算110的实施方式。可以使用成对最大运算的迭代序列。输入张量在正在计算softmax的维度(本发明示例中的通道维度)上分为600两半,并且使用逐元素最大运算610来比较这两半。对于比较的每对元件,将两者中较高的(即,最大值)作为逐元素最大值610的结果输出。该运算的结果是大小为原始大小的一半的张量。这本身被分成两部分,并且使用另外的元素最大运算610来比较这两半。该过程迭代地继续,将每次迭代中的值数减半,直到找到通道维度上的总最大值。如果张量的大小不是2的幂,沿待应用最大运算的维度,则可能需要填充,以将大小增加到最接近的2的幂。在一些示例中,张量可以用零填充。如果原始张量中的值全部为负,将导致最大运算返回的最大值为零。替代地,为了更好地调节softmax层,可以用非常大的负值或通过复制原始张量中的一个或多个现有值来完成填充。这不太可能影响最大值的计算。(在一个或多个复制值的情况下,或者通过使用最大可表示负值的情况下,将保证不影响计算)。
图7C示出了迭代逐元素最大方法对示例性输入张量的应用,为简单起见,此处为向量“x”601。输入向量601具有4个通道,每个通道包含由x1、x2、x3和x4表示的数值。首先,向量601被分离600成两个子向量602、603,每个子向量具有两个元素。使用逐元素最大运算610,将第一子向量602的第一元素与第二子向量603的第一元素进行比较。类似地,将子向量602的第二元素与子向量603的第二元素进行比较。该比较产生向量604。在图7C的示例中,x1>x3并且x4>x2;因此,由第一逐元素最大运算输出的向量604由x1和x4组成。向量604被分离600以产生子向量605和606,这些子向量再次使用逐元素最大运算610进行比较。这将返回输入向量601的最大元素“M”,在该例中正是x4。虽然该示例使用具有4个元素的向量,但该过程以相同的方式应用于具有更多元素的向量或具有更多维度的张量。它也可以应用于通道维度以外的维度。
填充的替代方法是将张量分成两个以上的子张量,每个子张量在相关维度上的大小是2的幂。例如,具有5个通道的张量可以被分成两个张量,每个张量具有2个通道,最后一个张量具有1个通道。如上所述,可以通过分离并且取元素最大值来减少具有2个通道的两个张量。可以比较生成的1通道张量以产生具有1个通道的张量。最后,可以将该张量与剩余的具有1个通道的张量进行比较,以返回通道维度上的原始张量的最大值。该过程在图7D中以举例的方式示出。示例性输入张量,向量“x”611,与图7C中的输入不同之处在于增加了第五通道,其中包含数值x5。前四个通道的处理如图7C所示。随后是最后的附加步骤,其中在进一步的逐元素最大运算610中,将前四个通道的最大值x4与第五通道x5进行比较。该比较的结果是五个通道的总体最大值。(在该示例中,如图所示,最大值仍为x4)。
割运算可由存储器运算模块40通过从一个位置读取数据,并且将数据的第一部分写入第一位置以及将数据的第二部分写入第二位置来执行。替代地,分离可能不需要单独的运算,而是可以作为前述运算的输出的一部分来执行。在图7B的示例中,可以通过将输出的第一部分写入存储器25中的第一位置并且将输出的第二部分写入存储器25中的第二位置来分离逐元素最大值610的输出
图8示出了使用池化单元275的最大运算110的实施方式。如上所述,在本发明的示例中,softmax应用于通道维度。因此,最大运算110也适用于通道。为了便于在池化单元275中实施最大运算110,可以在池化单元275执行最大池化运算520之前对输入张量应用转置或置换运算510。这是由于在示例性硬件加速器中,池化单元专门用于在空间维度上进行池化。为了池化输入的通道元素,通道维度与空间维度中的一者转置。(这可以使用MMM 40来完成)。然后,最大池化运算520的结果可以通过另一个转置或置换运算512转换回输入的原始维度,该另一个转置或置换运算反转转置或置换运算510以恢复维度的原始排序。(此外,这可以使用MMM 40来完成)。如果在空间维度(例如,高度和/或宽度维度)中执行softmax,则可能不需要这些转置运算。类似地,在池化单元275被设计成在通道维度中运算的情况下,可能不需要转置运算。在一些情况下,池化单元275可以具有小于将计算最大值的维度的大小的最大窗口大小。如果出现这种情况,可以多次迭代最大池化,以便在更大的一组值上计算最大值。
减法120、138和求反132可以由逐元素运算单元285执行。逐元素运算单元可以对张量的每个元素执行相应的减法运算。在减去常数的情况下—如在减法138中—减法可以由逐元素运算单元285或由激活单元255执行。常数的减法(例如,减1)可以在激活单元中通过将函数y=x-c加载到LUT中来实施,其中c是要减去的常数。通过添加常数的负数(例如,添加-1),可以将常量的减法实施为逐元素运算单元中的逐元素加法。类似地,求反132可以由逐元素运算单元285(通过从常数0减去输入张量)或由激活单元255(通过将函数y=-x加载到LUT中)来执行。
在本发明的示例中,通过从零减去张量的每个元素来执行求反132。这还可以通过其他方式通过逐元素减法来执行,例如桶过将张量从自身中减去两次,或者将张量的每个元素乘以2,然后从原始张量中减去结果。替代地,可以通过改变张量的每个元素的符号位来执行求反,其中使用数字的符号和量值表示。在使用二进制补码表示的情况下,可以通过将表示数字的所有位反转然后加一来执行求反。
指数运算130接收输入并且将e提高到该输入的幂。对于x的输入,指数运算130的输出为ex。
可以评估指数运算:
1.直接在查找表(LUT)中,在激活单元255中;
2.通过S形函数134、倒数136、求反132和减法138,如图1B所示;或
3.通过倒数的S形函数、求反132和减法138。
第一实施方式相对简单,前提是硬件加速器的硬件和软件允许使用指数函数对LUT进行编程。然而,这并不总是可能的。因此,第二实施方式可用作替代方案。
第二实施方式使用以下恒等式:
其中σ(-x)为负S形函数。此处,与神经网络领域的大多数文献一样,使用与“逻辑函数”同义的术语“S形”。即,S形(逻辑)函数被定义为:
因此,负S形函数为:
第二实施方式使用基本神经网络运算来实施图1B所示的步骤。如上文所解释,可以由EWO单元285来评估求反132和减法138。S形函数134可以由激活单元255评估为S形激活。换句话讲,不是将指数函数加载到LUT中,而是加载和评估S形函数。因为S形是一种常见的激活函数,因此很可能在激活单元255中本机可用。因此,在这种情况下,指数运算借助于S形激活(连同其他基本运算)间接地实施。
σ(-x)的值的倒数136可以用几种方式评估,这取决于硬件加速器200的确切能力。评估倒数的选项包括:
使用LRN单元265在激活单元255的LUT中进行倒数查找;以及
逐元素除法,使用EWO单元285。
在本发明的示例中,使用LRN单元来执行倒数函数。下文将更详细地描述三个选项中的每一个选项。
再次参考图1B,原则上,如果S形函数134和倒数136都借助于LUT中的查找来实施,则可以结合。与其在两个LUT中执行两次查找,不如将函数组合在一起并且执行一次查找。即,激活单元255的LUT可被编程为包含倒数的S形函数进一步地,求反132也可以归并到LUT中,使得它返回函数的结果。然而,在实践中,如果LUT以这种方式完全可编程,则使用指数函数对其进行简单编程可能会更容易。
图9A中所示的求和140可以使用卷积引擎240通过具有多个1的内核的1×1卷积来实施。卷积运算570在图9B中示出。使用图1A和图1B的示例,考虑指数张量ex-M。该张量具有维度B×C×H×W,具有B批次、C通道、H行和W列。要在通道维度上评估softmax层,指数张量的元素必须在通道维度上求和。换句话讲,共享相同高度、宽度和批次位置但在不同通道中的元素将一起求和。该求和140通过将输入张量与具有维度1×C×1×1的内核进行卷积570来执行,其中内核具有维度O×I×KH×KW,其中I是输入通道的数量,O是输出通道的数量,KH是内核高度,并且KW是内核宽度。内核的每个元素具有值1。内核跨输入张量的高度、宽度和批次维度进行卷积570。该过程的结果是包含跨通道维度的指数张量元素的总和的张量。
在一个或多个空间维度上评估softmax层的情况下,可以使用深度卷积,这意味着内核分别应用于每个通道。在这种情况下,内核在通道维度上的大小为1,在高度和/或宽度维度上的大小大于1。如果硬件加速器被限制为某个最大内核大小,则可能需要迭代卷积以便捕获输入张量的所有元素,其方式与上述最大池化运算类似。应当理解,在其他示例中,可以在维度的其他组合诸如通道维度和一个或多个空间维度上评估softmax层。卷积内核将根据相关维度进行调整。
替代地,求和140可以由EWO单元285使用迭代的成对加法运算来实施。该方法与关于图7B和图7C解释的逐元素最大运算非常相似。不同之处在于,并非在每个分离之后实施逐元素最大运算,而是使用逐元素加法运算。该运算中产生的子向量的每个元素是其进行运算的向量的两个相应元素的总和。重复分离和加法过程,直到所有元素都已经在通道维度上求和。类似于图7B和图7C中的最大运算,可能需要预先填充张量,使其在相关维度中的大小是2的幂(即,其大小为2P,其中P为正整数)。在这种情况下,因为逐元素操作是加法,所以张量应该用零填充。与最大运算一样,可以通过将输入张量分为两个以上的子张量来避免填充,每个子张量在相关维度上的大小为2的幂。
倒数136可以被实施:
使用LRN单元265;
使用激活单元255,通过将倒数函数加载到激活单元的LUT中;或
作为逐元素除法,使用逐元素运算单元285,通过将常数1除以待计算倒数的输入值。
如果激活单元255的LUT可用并且是可编程的,则其可以用倒数函数f(x)=1/x编程。
特别地,如果LUT不可用,或者如果不可编程来实施任意函数,则可以使用LRN单元265。LRN单元265被设计为执行以下LRN计算:
通过设置α=1、β=1、k=n=0,该函数可以简化为
bi,x,y=ai,x,y/(ai,x,y)2
这与所需的倒数相同:
bi,x,y=1/ai,x,y
这两种解决方案中的任何一种都可用于评估倒数。评估倒数的两种方法也可用于评估除法运算,如下文进一步解释。替代地,如上所述,倒数本身可以在逐元素运算单元285中通过逐元素除法来实施(假设支持逐元素除法)。
在一些示例中,除法150(在图10A中再现)可以使用逐元素运算单元285通过逐元素除法运算直接执行。然而,一些硬件加速器200可能不支持逐元素除法。对于这种可能性,希望能够以其他方式实施除法。
图10B和图10C示出了实施图10A中所示的除法150的两种替代方式,特别是,如果不能由EWO单元285直接执行。这两种方法都利用了这样一种认识,即除法可以被评估为倒数运算和乘法的组合。在这两种情况下,乘法580可以由EWO单元285执行。
图10B示出了使用LRN操作552来评估倒数。使用这种方法,在图1A的示例的上下文中,可以评估包含指数值总和∑ex-M的张量的倒数。倒数张量被传递到EWO单元285,在其中其与指数张量相乘580ex-M,以返回softmax层的输出。
图10C示出了图10B的方法的替代方案,其中使用激活单元255的LUT中的倒数查找545代替LRN 552来实施倒数。在一些情况下,如果激活单元255可编程以实施任意函数,诸如倒数函数,则优选地使用激活单元255来执行倒数查找545(如图10C所示),而不是使用LRN单元265来执行LRN运算552(如图10B所示)。一旦倒数函数已加载到LUT中,查找可能比LRN运算更快且更节能。
虽然已经使用LUT查找来描述本公开的示例以逼近指数运算、S形函数和倒数函数中的一者或多者,但也不必如此。其他不使用LUT的函数逼近运算也是可能的,并且可用于逼近指数运算、S形函数和倒数函数中的一者或多者。另一种类型的函数逼近的一个此类示例为迭代细化。例如,可以通过计算ex的泰勒级数展开来迭代地逼近指数运算。
应注意,上文所概述的几种替代涉及与被替换的运算同样复杂或更复杂的替代运算。例如,使用LRN单元执行倒数,以及借助于S形、倒数和减法来实施指数运算时,情况就是如此。然而,本发明人已认识到,此类替代初看起来可能不太理想,但通常比以下替代方案更具吸引力:(a)使用CPU或DSP来评估softmax层,或(b)实施定制硬件单元来评估softmax层。这是因为替代方案允许评估利用专用硬件模块的强大计算能力。因此,与替代方案相比,即使以相对“低效”的方式使用这些专用模块,仍然可以在功率和带宽消耗(例如)方面提供性能提升。
图11A示出了softmax层的完整实施方式的一个示例。在图11A中,根据上述原理,图1A和图1B的计算图中的各种步骤已映射到基本神经网络运算。
图1A的最大110通过转置510(使用MMM 40)、最大池化520(使用池化单元275)和进一步的转置512(使用MMM 40)来评估。
减法120由逐元素运算单元285中的逐元素减法530来评估。
指数运算130已由图1B的运算替换。在图11A的示例中,使用激活单元255的LUT中的查找,通过S形激活540来评估S形函数134。使用LRN单元265,由LRN运算550来评估倒数136。使用逐元素运算单元285,通过逐元素减法532(从零减去每个元素)来实施求反132。类似地,使用逐元素运算单元285来评估常数(1)的减法138。这可以通过加法(-1)或减法(+1)来完成。在图11A所示的示例中,采用逐元素加法-1。
使用多个卷积引擎240中的一个或多个卷积引擎,通过卷积570来评估求和140。
使用LRN单元265通过LRN运算552,并且使用逐元素运算单元285通过逐元素乘法580来评估除法150。
应当理解,对于图1A和图1B中所示的每个步骤,可以使用所述步骤的任何所描述的实施方式作为基本操作。
一般来讲,当执行输入为不同大小的张量的逐元素运算时(如逐元素减法530和逐元素乘法580),使用广播。较小张量在较大张量上“广播”,以对两个张量的所有对应元素重复类似的计算。例如,在逐元素减法530中,原始输入张量的维度为B×C×H×W。最大运算510、520、513的结果具有降低的维度B×1×H×W,因为最大值在通道维度上计算。由逐元素运算单元285执行的广播使得能够从每个通道中的每个单独的值中减去所述通道中的最大值。广播也可以(但不是必需的)用于涉及张量和标量的运算,如逐元素减法532。作为逐元素广播的替代方案,这些张量-标量运算可以在激活单元255中实施,该激活单元始终将运算统一地应用于张量的所有元素。如上文所解释,这可以通过将适当的函数诸如y=x-c加载到激活单元的LUT中来完成。
图11B示出了本发明方法的模块化和灵活性。比较图11A和图11B,可以看出用于评估倒数136(作为指数运算130的一部分)的LRN运算550已经被图11B中的倒数LUT查找545替换。使用激活单元255执行该LUT查找。同时,用于实施图11A中的除法150的LRN 552和乘法580已经被图11B中的逐元素除法590替换。该逐元素除法590由逐元素运算单元285执行。
当使用LUT作为对softmax层的评估的一部分时,无论是作为指数运算130的一部分还是作为倒数136的一部分,都可以通过限制加载到LUT中的值的范围来提高精度。使用图11A和图11B的示例,为了提高S形LUT查找540的输出精度,LUT可以仅加载对应于大于或等于0的输入的S形值。这是因为,在该示例中,LUT的输入是求反的张量-(x-M)。求反的张量的所有值都大于或等于0,因此无需加载具有对应于负输入的S形值的LUT。相反,附加的存储器可用于以较高的精度存储相关的S形值。LUT输出的这种限制取决于LUT的灵活性。在一些实施方式中,LUT可能仅能够提供关于零对称的输出,例如,其中LUT使用数字的二进制补码表示。在这种情况下,将LUT限制为仅包含正输入的S形值只会带来精度优势,其中负二进制补码可以偏移,以也编码正值。
在另一个示例中,加载有指数值的LUT的输出可能受到限制,以便在期望范围内提高精度。在图1A的示例中,指数运算的输入为(x-M)。该输入的所有值都为负或等于零,因此输出范围只需跨越[0,1]。在一些实施方式中,LUT可以用二进制补码表示来表示定点数。这将意味着指数LUT的输入和输出范围关于零对称。为了提高此类实施方式中感兴趣的输出范围的精度,LUT输出范围可以限制为[-1,1]。大于1的输出值无法再准确表示,但这无关紧要,因为从不需要这些输出值。丢弃输出范围中不需要的部分的好处是在感兴趣的范围内具有更高的精度。
现在将参考图12描述softmax层的特殊情况的实施。本发明人已认识到,在输入张量x仅包含两个通道(在本文中称为“a”和“b”(在高度、宽度和批次维度中具有任何大小))的情况下,可以通过以下方式来简化在通道维度上对softmax层的评估:
因此,可以将对softmax层的评估分解为两个步骤:
差的计算,(a-b)和(b-a);以及
S形函数对每个差的应用。
可以通过将输入张量与滤波器[1,-1]进行卷积来评估第一差a-b。类似地,可以通过将输入张量与滤波器[-1,1]进行卷积来评估第二差b-a。这两个运算可以由具有两个输入通道的单个卷积运算571和具有维度2×2×1×1的两个滤波器(即,两个输出通道)执行。换句话讲,仅对卷积例程的一次调用就可以使用卷积引擎240一起评估两个运算。
作为替代方案,显而易见的是,每个差都是另一个差的负值:
a-b=-(b-a)
因此,可以形成第一差(例如,通过卷积或逐元素减法),并且可以通过对第一差求反(例如,通过改变每个值的符号位)来获得第二差。然而,在本发明的示例中,由于在硬件加速器中卷积运算的优化实施方式,已发现使用卷积运算571更高效。
在获得包含差(a-b)和(b-a)的张量之后,可以如上所述借助于在激活单元255的LUT中的查找来应用S形激活541。对于这种特殊情况,将返回softmax层的输出。
应当理解,上文描述的示例不是限制性的,并且许多变化是可能的。例如,尽管上述示例集中于在通道维度上评估的softmax层的情况,但也可以在任何其他维度或维度组合上评估softmax层,并且不限于此。将层映射到基本神经网络运算的具体替换可以变化,但将应用相同的原理(和相同的优点)。
除了上述示例之外,还可存在可以在硬件中实施指数运算的其他方式。例如,可以使用关系ex=2kx来实施指数运算,其中k=log2e是常数。这可以分两部分进行评估:首先是逐元素乘法,以评估乘积kx,然后将2提高至该乘积的幂。后一个步骤可以分两个阶段完成。幂的整数部分可以通过位移来实施,例如,要将2提高至3的幂,可以将一位左移三位。幂的非整数部分,即范围(0,1)中的数字,可以使用LUT通过进一步的元素乘法来实施,以将其与幂的整数部分相结合。
替代地,在一些实施方式中,硬件加速器在本机可支持运算2z,其中z通常是非整数值,例如在图2的框图中,通过添加附加的固定功能单元来处理该基本运算。这将允许有效地评估指数运算,并且还可以在其他神经网络层中重新用于计算。
也可能进行一些优化。例如,可以注意到,图11A、图11B和图12的计算图各自包括两个连续的减法运算530和532。第二减法532仅对第一减法的结果求反,以形成求反的张量-(x-M)。这两个运算可以被结合到单个减法运算,以由逐元素运算单元285中的单个逐元素减法(M-x)来评估。还可以通过检验由映射步骤320、321中的控制器15产生的计算图来发现其他优化。在一些实施方案中,映射步骤可包括识别可以结合的至少两个连续的基本神经网络运算;以及将这些连续的基本神经网络运算结合到较少数量的基本神经网络运算的主动步骤。
在图4的示例中,数据处理系统10围绕硬件加速器200构建,在这些示例中,硬件加速器为NNA。然而,数据处理系统可以替代地部分地或完全地在NNA内实施。例如,硬件加速器200、MMM 40和控制器15可以表示NNA内的子部件。
图13示出了计算机系统,其中可以实施本文所述的数据处理系统。计算机系统包括CPU 902、NNA 904、存储器906和其他装置914,诸如显示器916、扬声器918和相机919。在NNA 904上实施处理块910(对应于处理块15、40,以及200)。在其他示例中,处理块910可以在CPU 902上实施。计算机系统的部件可以通过通信总线920彼此进行通信。储存库912(对应于存储器25)被实施为存储器906的一部分。
虽然图13示出了神经网络加速器系统的一种实施方式,但应当理解,可以为图形处理系统绘制类似的框图,例如,通过将CPU 902或NNA 904替换为图形处理单元(GPU),或者通过添加GPU作为附加的单元。在这种情况下,处理块910可以在GPU中实施。
图4的数据处理系统被示出为包括许多功能块。这仅是示意性的,并不旨在限定此类实体的不同逻辑元件之间的严格划分。每个功能块可以任何合适的方式提供。应当理解,由数据处理系统形成的本文中描述的中间值不需要由数据处理系统在任何时间点物理地生成,并且可以仅仅表示方便地描述由数据处理系统在其输入与输出之间执行的处理的逻辑值。
本文中描述的数据处理系统可以在集成电路上的硬件中体现。本文中描述的数据处理系统可被配置为执行本文所述的任何方法。一般来讲,上文所述的功能、方法、技术或部件中的任一者可在软件、固件、硬件(例如,固定逻辑电路系统)或它们的任何组合中实施。本文可以使用术语“模块”、“功能”、“部件”、“元件”、“单元”、“块”和“逻辑”来概括地表示软件、固件、硬件或其任何组合。在软件实施方式的情况下,模块、功能、部件、元件、单元、块或逻辑表示程序代码,所述程序码当在处理器上执行时执行指定任务。本文中描述的算法和方法可以由执行码的一个或多个处理器执行,所述码使处理器执行算法/方法。计算机可读存储介质的示例包含随机存取存储器(RAM)、只读存储器(ROM)、光盘、闪存存储器、硬盘存储器以及可以使用磁性、光学和其他技术来存储指令或其他数据并且可以由机器存取的其他存储器装置。
如本文中所使用的术语计算机程序代码和计算机可读指令是指供处理器执行的任何种类的可执行代码,包含以机器语言、解释语言或脚本语言表达的代码。可执行代码包含二进制代码、机器代码、字节代码、定义集成电路的代码(例如硬件描述语言或网表),以及用例如C、或OpenCL等编程语言码表达的代码。可执行代码可以是例如任何种类的软件、固件、脚本、模块或库,当在虚拟机或其他软件环境中被适当地执行、处理、解释、编译、运行时,这些软件、固件、脚本、模块或库使支持可执行代码的计算机系统的处理器执行由该代码指定的任务。
处理器、计算机或计算机系统可以是任何种类的装置、机器或专用电路,或它们的集合或一部分,它具有处理能力使得可以执行指令。处理器可以是任何种类的通用或专用处理器,诸如CPU、GPU、NNA、片上系统、状态机、媒体处理器、专用集成电路(ASIC)、可编程逻辑阵列、现场可编程门阵列(FPGA)等。计算机或计算机系统可以包括一个或多个处理器。
本发明还旨在涵盖限定如本文所述的硬件的配置的软件,诸如硬件描述语言(HDL)软件,用于设计集成电路或用于配置可编程芯片以执行所需功能。即,可以提供一种计算机可读存储介质,其上编码有集成电路定义数据集形式的计算机可读程序代码,所述集成电路定义数据集当在集成电路制造系统中处理(即,运行)时,将系统配置为制造被配置为执行本文所述的任何方法的数据处理系统,或者制造本文所述的包括任何装置的数据处理系统。集成电路定义数据集可以是例如集成电路描述。
因此,可以提供一种在集成电路制造系统处制造如本文所述的数据处理系统的方法。此外,可以提供一种集成电路定义数据集,该集成电路定义数据集当在集成电路制造系统中处理时使制造数据处理系统的方法得以执行。
集成电路定义数据集可以是计算机代码的形式,例如作为网表,用于配置可编程芯片的代码,作为定义适合于在集成电路中以任何级别制造的硬件描述语言,包括作为寄存器传输级(RTL)代码,作为高级电路表示法诸如Verilog或VHDL,以及作为低级电路表示法,诸如OASIS(RTM)和GDSII。在逻辑上定义适合于在集成电路中制造的硬件的更高级表示法(诸如RTL)可以在计算机系统上处理,所述计算机系统被配置用于在软件环境的上下文中生成集成电路的制造定义,所述软件环境包括电路元件的定义和用于组合这些元件以便生成由所述表示法定义的集成电路的制造定义的规则。如通常软件在计算机系统处执行以便定义机器的情况一样,可能需要一个或多个中间用户步骤(例如,提供命令、变量等),以便将计算机系统配置为生成集成电路的制造定义,以执行定义集成电路以便生成所述集成电路的制造定义的代码。
现在将参考图14描述在集成电路制造系统处处理集成电路定义数据集以便将该系统配置为制造数据处理系统的示例。
图14示出了集成电路(IC)制造系统1002的示例,该集成电路制造系统被配置为制造如本文任何示例中描述的数据处理系统。特别地,IC制造系统1002包括布局处理系统1004和集成电路生成系统1006。IC制造系统1002被配置为接收IC定义数据集(例如,定义如本文任何示例中描述的数据处理系统)、处理IC定义数据集以及根据IC定义数据集来生成IC(例如,其体现如本文任何示例中所述的数据处理系统)。通过对IC定义数据集的处理,将IC制造系统1002配置为制造体现如本文任何示例中描述的数据处理系统的集成电路。
布局处理系统1004被配置为接收和处理IC定义数据集以确定电路布局。根据IC定义数据集确定电路布局的方法在本领域中是已知的,并且例如可以涉及合成RTL代码以确定待生成的电路的门级表示,例如就逻辑部件(例如,NAND、NOR、AND、OR、MUX和FLIP-FLOP部件)而言。通过确定逻辑部件的位置信息,可以根据电路的门级表示来确定电路布局。这可以自动完成或者在用户参与下完成,以便优化电路布局。当布局处理系统1004已经确定电路布局时,其可将电路布局定义输出到IC生成系统1006。电路布局定义可以是例如电路布局描述。
如本领域中已知的,IC生成系统1006根据电路布局定义来生成IC。例如,IC生成系统1006可实施生成IC的半导体装置制造工艺,该半导体装置制造工艺可涉及光刻和化学处理步骤的多步骤序列,在此期间,在由半导体材料制成的晶片上逐渐形成电子电路。电路布局定义可呈掩模的形式,掩模可在光刻工艺中用于根据电路定义来生成IC。替代地,提供给IC生成系统1006的电路布局定义可呈计算机可读代码的形式,IC生成系统1006可使用该计算机可读代码来形成用于生成IC的合适的掩模。
由IC制造系统1002执行的不同过程可全部在一个位置例如由一方来实施。替代地,IC制造系统1002可以是分布式系统,使得一些过程可以在不同位置执行,并且可以由不同方来执行。例如,以下阶段中的一些可以在不同位置以及/或者由不同方来执行:(i)合成表示IC定义数据集的RTL代码,以形成待生成的电路的门级表示;(ii)基于门级表示来生成电路布局;(iii)根据电路布局来形成掩模;以及(iv)使用掩模来制造集成电路。
在其他示例中,在集成电路制造系统处对集成电路定义数据集进行处理可以将系统配置为制造数据处理系统,而不用对IC定义数据集进行处理以便确定电路布局。例如,集成电路定义数据集可以定义可重新配置的处理器诸如FPGA的配置,并且对该数据集的处理可以将IC制造系统配置为(例如,通过将配置数据加载到FPGA)生成具有该定义的配置的可重新配置的处理器。
在一些实施方案中,当在集成电路制造系统中处理时,集成电路制造定义数据集可以使集成电路制造系统生成如本文中描述的装置。例如,通过集成电路制造定义数据集以上文参考图14描述的方式对集成电路制造系统进行配置,可以制造出如本文所述的装置。
在一些示例中,集成电路定义数据集可以包括在数据集处定义的硬件上运行的软件,或者与在数据集处定义的硬件组合运行的软件。在图14所示的示例中,IC产生系统还可以由集成电路定义数据集另外配置成在制造集成电路时根据在集成电路定义数据集中定义的程序代码将固件加载到所述集成电路上,或者以其他方式向集成电路提供与集成电路一起使用的程序代码。
与已知的实施方式相比,在本申请中阐述的概念在装置、设备、模块和/或系统中(以及在本文中实施的方法中)的实施方式可以提高性能。性能改进可以包含计算性能提高、延迟减少、处理量增大和/或功耗降低中的一个或多个。在制造此类装置、设备、模块和系统(例如,在集成电路中)期间,可以在性能改进与物理实施方式之间进行权衡,从而改进制造方法。例如,可以在性能改进与布局面积之间进行权衡,从而匹配已知实施方式的性能,但使用更少的硅。例如,这可以通过以串行方式重复使用功能块或在装置、设备、模块和/或系统的元件之间共享功能块来完成。相反,在本申请中阐述的引起装置、设备、模块和系统的物理实施方式的改进(诸如硅面积减小)的概念可以针对性能提高进行折中。例如,这可以通过在预定义面积预算内制造模块的多个示例来完成。
申请人据此独立地公开了本文中所描述的每个单独的特征以及两个或更多个此类特征的任意组合,到达的程度使得此类特征或组合能够根据本领域的技术人员的普通常识基于本说明书整体来实行,而不管此类特征或特征的组合是否解决本文中所公开的任何问题。鉴于前文描述,本领域的技术人员将清楚,可以在本发明的范围内进行各种修改。
Claims (15)
1.一种在硬件加速器中实施指数运算的方法,所述硬件加速器包括被配置为执行一组可用的基本神经网络运算的固定功能电路系统,所述方法包括:
接收(310)包括所述指数运算的至少一个神经网络层的定义;
将所述神经网络层映射(320)到包括来自所述可用基本神经网络运算集合的多个基本神经网络运算的表示;以及
评估(330)所述多个基本神经网络运算,
其中所述多个基本神经网络运算中的每一个基本神经网络运算都选自包括以下各项的列表:
逐元素求反或除法运算(532);
逐元素加法运算(560);
逐元素除法运算(590);
逐元素位移运算;
f(z)=2z形式的逐元素运算,其中z一般为非整数值;
逐元素乘法运算;
第一查找表(LUT)中的第一查找(540),其中所述第一LUT包括S形函数;
第二LUT中的第二查找(545),其中所述第二LUT包括倒数函数;
第三LUT中的第三查找,其中所述第三LUT包括S形函数的倒数;
第四LUT中的第四查找,其中所述第四LUT包括函数f(z)=2z,其中z是在范围(0,1)中的值,以及
局部响应归一化(550)。
2.如权利要求1所述的方法,其中所述多个基本神经网络运算实施:
求反(132),应用于输入值,以产生求反的输入值;
S形函数(134),应用于所述求反的输入值,以产生S形求反值;
倒数运算(136),应用于所述S形求反值,以产生倒数S形值;以及
加法或减法(138),应用于所述倒数S形值,以从所述倒数S形值中减去常数,从而产生所述指数运算的输出值。
3.如权利要求2所述的方法,其中以下各项中的一项或多项:
(A)使用所述硬件加速器的逐元素运算单元(285),通过逐元素减法运算(532)来评估所述求反(132);
(B)使用所述硬件加速器的激活单元(255),通过第一查找(540)来评估所述S形函数(134);
(C)通过以下各项中的一者来评估所述倒数运算(136):
第二查找,使用所述硬件加速器的激活单元(255);
局部响应归一化(550),使用硬件加速器的LRN单元(265);以及
逐元素除法,使用所述硬件加速器的逐元素运算单元(285),以及
(D)使用所述硬件加速器的激活单元(255),通过逐元素加法(560)或逐元素减法来评估所述加法或减法(138)。
4.一种在硬件加速器中实施softmax层的方法,所述硬件加速器包括被配置为执行一组可用的基本神经网络运算的固定功能电路系统:
接收(311)至少一个softmax神经网络层的定义;
将所述softmax神经网络层映射(321)到包括来自所述可用基本神经网络运算集合的多个基本神经网络运算的表示;以及
评估(331)所述多个基本神经网络运算,
其中所述多个基本神经网络运算中的每一个基本神经网络运算都选自包括以下各项的列表:
转置或置换运算(510、512);
最大池化运算(520);
逐元素最大运算(610);
逐元素减法运算(530、532);
逐元素求反运算;
逐元素加法运算(560);
逐元素除法运算(590);
逐元素乘法运算(580);
逐元素位移运算;
逐元素运算f(z)=2z,其中z一般为非整数值;
卷积运算(570);
函数逼近运算(540);以及
局部响应归一化(550、552)。
5.如权利要求4所述的方法,其中所述多个基本神经网络运算包括至少一个函数逼近运算,其中所述函数逼近运算被实施为LUT中的查找(540),所述LUT任选地包括以下各项中的一者:
S形函数;
倒数函数;
S形函数的倒数;
函数f(z)=2z,其中z为范围(0,1)中的值,以及
指数函数。
6.如权利要求4或5所述的方法,其中所述多个基本神经网络运算实施:
最大运算(110),应用于输入值,以获得所述输入值中的最大值;
第一减法(120),从所述输入值中的每一个输入值中减去所述最大值,以产生负移输入值;
指数运算(130),应用于所述负移输入值,以产生指数值;
求和(140),应用于所述指数值,以产生所述指数值的总和;以及
除法(150),将所述指数值中的每一个指数值除以所述指数值的所述总和。
7.如权利要求6所述的方法,其中所述指数运算(130)映射到所述多个基本神经网络运算的子集,其中所述子集实施:
求反(132),应用于所述负移输入值,以产生求反的输入值;
S形函数(134),应用于所述求反的输入值,以产生S形求反值;
第一倒数运算(136),应用于所述S形求反值,以产生倒数S形值;以及
加法或第二减法(138),应用于所述倒数S形值,以从所述倒数S形值中减去常数,从而产生所述指数运算的输出值。
8.如权利要求7所述的方法,其中所述第一倒数运算(136)由以下各项中的一者评估:
查找(545),使用所述硬件加速器的激活单元(255);
局部响应归一化(550、552),使用所述硬件加速器的LRN单元(265);以及
逐元素除法(590),使用所述硬件加速器的逐元素运算单元(285),
并且任选地其中:
使用所述硬件加速器(200)的一个或多个卷积引擎(240),通过卷积(571)来评估所述至少一个减法;并且/或者
通过函数逼近运算(541)来评估所述S形函数,任选地使用所述硬件加速器(200)的激活单元(255)。
9.如权利要求4或权利要求5所述的方法,其中所述softmax层待应用于包括第一元素和第二元素的输入数据,并且其中所述多个基本神经网络元素实施:
至少一个减法,以获得所述第一元素和所述第二元素之间的至少一个差;以及
S形函数,应用于所述至少一个获得的差,以产生所述softmax层的输出。
10.一种用于实施指数运算的数据处理系统(10),所述系统包括:
硬件加速器(200),所述硬件加速器包括被配置为执行一组可用的基本神经网络运算的固定功能电路系统;以及
控制器(15),所述控制器被配置为:
接收(310)包括所述指数运算的至少一个神经网络层的定义;以及
将所述神经网络层映射(320)到包括来自所述可用基本神经网络运算集合的多个基本神经网络运算的表示,
其中所述硬件加速器(200)被配置为评估(330)所述多个基本神经网络运算,并且
其中所述多个基本神经网络运算中的每一个基本神经网络运算都选自包括以下各项的列表:
逐元素求反或除法运算(532);
逐元素加法运算(560);
逐元素除法运算(590);
逐元素位移运算;
f(z)=2z形式的逐元素运算,其中z一般为非整数值;
逐元素乘法运算;
第一LUT中的第一查找(540),其中所述第一LUT包括S形函数;
第二LUT中的第二查找(545),其中所述第二LUT包括倒数函数;
第三LUT中的第三查找,其中所述第三LUT包括S形函数的倒数;
第四LUT中的第四查找,其中所述第四LUT包括函数f(z)=2z,其中z是在范围(0,1)中的值;并且
局部响应归一化(550)。
11.一种用于实施softmax层的数据处理系统,所述系统包括:
硬件加速器(200),所述硬件加速器包括被配置为执行一组可用的基本神经网络运算的固定功能电路系统;以及
控制器(15),所述控制器被配置为:
接收(311)至少一个softmax神经网络层的定义;以及
将所述softmax神经网络层映射(321)到包括来自所述可用基本神经网络运算集合的多个基本神经网络运算的表示,
其中所述硬件加速器(200)被配置为评估(331)所述多个基本神经网络运算,并且
其中所述多个基本神经网络运算中的每一个基本神经网络运算都选自包括以下各项的列表:
转置或置换运算(510、512);
最大池化运算(520);
逐元素最大运算;
逐元素减法运算(530、532);
逐元素求反运算;
逐元素加法运算(560);
逐元素除法运算;
逐元素乘法运算(580);
逐元素位移运算;
逐元素运算f(z)=2z,其中z一般为非整数值;
卷积运算(570);
函数逼近运算(540);以及
局部响应归一化(550、552)。
12.如权利要求10或11所述的数据处理系统,其中所述硬件加速器(200)包括以下各项中的任一项或两项或更多项中的任何组合:
激活单元(255),所述激活单元包括LUT;
局部响应归一化单元(265),所述局部响应归一化单元被配置为执行局部响应归一化;
逐元素运算单元(285),所述逐元素运算单元被配置为将所选择的运算应用于两个相同大小的张量的每一对相应元素;
一个或多个卷积引擎(240),所述一个或多个卷积引擎被配置为执行卷积运算;以及
池化单元(275),所述池化单元被配置为执行池化运算,包括最大池化。
13.一种使用集成电路制造系统来制造如权利要求10至12中任一项所述的数据处理系统的方法,所述方法包括:
使用布局处理系统处理所述数据处理系统的计算机可读描述以便生成包含所述数据处理系统的集成电路的电路布局描述;以及
使用集成电路生成系统根据所述电路布局描述制造所述数据处理系统。
14.一种计算机可读存储介质,在其上存储有如权利要求10至12中的任一项所述的数据处理系统的计算机可读描述,当在集成电路制造系统中被处理时,所述计算机可读描述使所述集成电路制造系统执行以下操作:
使用布局处理系统处理所述数据处理系统的计算机可读描述以便生成包含所述数据处理系统的集成电路的电路布局描述;以及
使用集成电路生成系统根据所述电路布局描述制造所述数据处理系统。
15.一种集成电路制造系统,包括:
非暂态计算机可读存储介质,在其上存储有如权利要求10至12中任一项所述的数据处理系统的计算机可读描述;
布局处理系统,所述布局处理系统被配置为处理所述计算机可读描述以便生成体现所述数据处理系统的集成电路的电路布局描述;以及
集成电路生成系统,所述集成电路生成系统被配置为根据所述电路布局描述制造所述数据处理系统。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB2102728.9A GB2604142B (en) | 2021-02-25 | 2021-02-25 | Implementation of softmax and exponential in hardware |
GB2102728.9 | 2021-02-25 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114970807A true CN114970807A (zh) | 2022-08-30 |
Family
ID=75377542
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210173368.2A Pending CN114970807A (zh) | 2021-02-25 | 2022-02-24 | Softmax和指数在硬件中的实施 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20220391172A1 (zh) |
EP (1) | EP4050522A1 (zh) |
CN (1) | CN114970807A (zh) |
GB (1) | GB2604142B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11995448B1 (en) | 2018-02-08 | 2024-05-28 | Marvell Asia Pte Ltd | Method and apparatus for performing machine learning operations in parallel on machine learning hardware |
US10997510B1 (en) | 2018-05-22 | 2021-05-04 | Marvell Asia Pte, Ltd. | Architecture to support tanh and sigmoid operations for inference acceleration in machine learning |
US11016801B1 (en) | 2018-05-22 | 2021-05-25 | Marvell Asia Pte, Ltd. | Architecture to support color scheme-based synchronization for machine learning |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108615072A (zh) * | 2016-12-13 | 2018-10-02 | 谷歌公司 | 在硬件中执行平均池化 |
CN110046700A (zh) * | 2017-11-03 | 2019-07-23 | 畅想科技有限公司 | 深度神经网络的卷积层的硬件实现 |
EP3572984A1 (en) * | 2018-05-21 | 2019-11-27 | Imagination Technologies Limited | Implementing traditional computer vision algorithms as neural networks |
CN110659015A (zh) * | 2018-06-29 | 2020-01-07 | 英特尔公司 | 使用分段线性逼近的深度神经网络架构 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109165006B (zh) * | 2018-08-07 | 2021-08-06 | 上海交通大学 | Softmax函数的设计优化及硬件实现方法及系统 |
CN110610235B (zh) * | 2019-08-22 | 2022-05-13 | 北京时代民芯科技有限公司 | 一种神经网络激活函数计算电路 |
-
2021
- 2021-02-25 GB GB2102728.9A patent/GB2604142B/en active Active
-
2022
- 2022-02-24 CN CN202210173368.2A patent/CN114970807A/zh active Pending
- 2022-02-25 EP EP22158809.8A patent/EP4050522A1/en active Pending
- 2022-02-25 US US17/681,557 patent/US20220391172A1/en active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108615072A (zh) * | 2016-12-13 | 2018-10-02 | 谷歌公司 | 在硬件中执行平均池化 |
CN110046700A (zh) * | 2017-11-03 | 2019-07-23 | 畅想科技有限公司 | 深度神经网络的卷积层的硬件实现 |
EP3572984A1 (en) * | 2018-05-21 | 2019-11-27 | Imagination Technologies Limited | Implementing traditional computer vision algorithms as neural networks |
CN110659015A (zh) * | 2018-06-29 | 2020-01-07 | 英特尔公司 | 使用分段线性逼近的深度神经网络架构 |
Also Published As
Publication number | Publication date |
---|---|
GB202102728D0 (en) | 2021-04-14 |
US20220391172A1 (en) | 2022-12-08 |
EP4050522A1 (en) | 2022-08-31 |
GB2604142B (en) | 2023-02-22 |
GB2604142A (en) | 2022-08-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11868426B2 (en) | Hardware implementation of convolutional layer of deep neural network | |
JP7013143B2 (ja) | 畳み込みニューラルネットワークハードウエア構成 | |
CN110033079B (zh) | 深度神经网络的硬件实现的端到端数据格式选择 | |
EP4050522A1 (en) | Implementation of softmax and exponential in hardware | |
US20230019151A1 (en) | Implementation of pooling and unpooling or reverse pooling in hardware | |
CN113887710A (zh) | 循环神经网络中的数字格式选择 | |
US20240111990A1 (en) | Methods and systems for performing channel equalisation on a convolution layer in a neural network | |
US20230259578A1 (en) | Configurable pooling processing unit for neural network accelerator | |
CN115545175A (zh) | 在硬件中运行双向递归神经网络 | |
GB2614705A (en) | Neural network accelerator with configurable pooling processing unit | |
CN113887714A (zh) | 用于在硬件中运行动态循环神经网络的方法和系统 | |
US20230177321A1 (en) | Neural network accelerator with a configurable pipeline | |
EP4120142A1 (en) | Implementation of argmax or argmin in hardware | |
US20230012553A1 (en) | Implementation of argmax or argmin in hardware | |
EP4345692A1 (en) | Methods and systems for online selection of number formats for network parameters of a neural network | |
GB2611520A (en) | Methods and devices for configuring a neural network accelerator with a configurable pipeline | |
GB2611522A (en) | Neural network accelerator with a configurable pipeline | |
GB2611521A (en) | Neural network accelerator with a configurable pipeline | |
GB2619919A (en) | Hardware implementation of an attention-based neural network | |
GB2614327A (en) | Configurable pooling process unit for neural network accelerator | |
CN115545146A (zh) | 双向rnn的数字格式选择 | |
GB2619918A (en) | Hardware implementation of an attention-based neural network |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |