CN117897698A - 可配置非线性激活函数电路 - Google Patents
可配置非线性激活函数电路 Download PDFInfo
- Publication number
- CN117897698A CN117897698A CN202280058044.2A CN202280058044A CN117897698A CN 117897698 A CN117897698 A CN 117897698A CN 202280058044 A CN202280058044 A CN 202280058044A CN 117897698 A CN117897698 A CN 117897698A
- Authority
- CN
- China
- Prior art keywords
- function
- approximator
- linear
- approximators
- nonlinear activation
- 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
- 230000004913 activation Effects 0.000 title claims abstract description 163
- 238000012886 linear function Methods 0.000 claims abstract description 20
- 238000012545 processing Methods 0.000 claims description 103
- 238000000034 method Methods 0.000 claims description 90
- 230000006870 function Effects 0.000 description 336
- 238000010801 machine learning Methods 0.000 description 34
- 230000015654 memory Effects 0.000 description 34
- 230000001419 dependent effect Effects 0.000 description 16
- 238000012887 quadratic function Methods 0.000 description 12
- 230000008569 process Effects 0.000 description 11
- 239000011159 matrix material Substances 0.000 description 10
- 238000013528 artificial neural network Methods 0.000 description 7
- 230000011218 segmentation Effects 0.000 description 6
- 238000012549 training Methods 0.000 description 6
- 238000013459 approach Methods 0.000 description 5
- 238000004422 calculation algorithm Methods 0.000 description 5
- 230000000295 complement effect Effects 0.000 description 4
- 238000007620 mathematical function Methods 0.000 description 4
- 230000001537 neural effect Effects 0.000 description 4
- 229920006395 saturated elastomer Polymers 0.000 description 4
- 238000003491 array Methods 0.000 description 3
- 238000012888 cubic function Methods 0.000 description 3
- 238000003062 neural network model Methods 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000007637 random forest analysis Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 239000000969 carrier Substances 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013527 convolutional neural network Methods 0.000 description 1
- 238000013136 deep learning model Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000012946 outsourcing Methods 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/17—Function evaluation by approximation methods, e.g. inter- or extrapolation, smoothing, least mean square method
-
- 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
-
- 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)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Biomedical Technology (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Biophysics (AREA)
- Software Systems (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Computing Systems (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Databases & Information Systems (AREA)
- Algebra (AREA)
- Neurology (AREA)
- Logic Circuits (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
本公开的某些方面提供了一种处理器,其包括:可配置非线性激活函数电路,其被配置成:基于所选非线性激活函数来确定用于该非线性激活函数的参数集;以及基于用于该非线性激活函数的参数集的应用来生成输出数据,其中:该可配置非线性激活函数电路包括至少一个非线性近似器,该至少一个非线性近似器包括至少两个相继线性近似器,并且该至少两个相继线性近似器的每个线性近似器被配置成使用该参数集的一个或多个函数参数来近似线性函数。
Description
相关申请的交叉引用
本申请要求于2022年6月15日提交的美国专利申请S/N.17/807,125的优先权,其是于2021年9月3日提交的美国专利申请No.17/467,079的部分继续申请,这些申请的全部内容通过援引纳入于此。
引言
本公开的各方面涉及处理用于机器学习模型的非线性激活函数,且更具体地涉及可配置非线性激活函数电路。
机器学习一般是产生经训练模型(例如,人工神经网络)的过程,其表示对训练数据集的广义拟合。将经训练模型应用于新数据使得能够产生推断,这可被用于获得关于新数据的洞察。
随着机器学习的使用激增以用于实现各种机器学习(或人工智能)任务,出现了对更高效地处理机器学习模型数据的需求。在一些情形中,专用硬件(诸如机器学习(或人工智能)加速器或处理器或类似电路)可用于增强处理系统处理机器学习模型数据的能力。例如,利用非线性激活函数处理数据可以被分配给除了主矩阵乘法处理器之外的处理器。然而,跨不同处理设备分配处理机器学习模型的各个方面可能导致等待时间、存储器使用、功率使用和其他处理损失。
因此,需要用于利用非线性激活函数来处理机器学习模型数据的改进的技术。
简要概述
某些方面提供了一种处理器,包括:可配置非线性激活函数电路,其被配置成:确定用于应用于输入数据的非线性激活函数;基于所确定的非线性激活函数来确定用于该非线性激活函数的参数集;以及基于用于该非线性激活函数的参数集的应用来生成输出数据。
进一步的方面提供了一种用于由可配置非线性激活函数电路来处理输入数据的方法,包括:确定用于应用于输入数据的非线性激活函数;基于所确定的非线性激活函数来确定用于可配置非线性激活函数电路的参数集;以及基于该参数集利用可配置非线性激活函数电路来处理输入数据以生成输出数据。
进一步的方面提供了一种处理器,包括:可配置非线性激活函数电路,其被配置成:基于所选非线性激活函数来确定用于非线性激活函数的参数集;以及基于用于该非线性激活函数的参数集的应用来生成输出数据,其中:可配置非线性激活函数电路包括至少一个非线性近似器,该至少一个非线性近似器包括至少两个相继线性近似器,并且该至少两个相继线性近似器中的每个线性近似器被配置成使用该参数集中的一个或多个函数参数来近似线性函数。
进一步的方面提供了一种用于利用可配置非线性激活函数电路来处理数据的方法,包括:基于所选非线性激活函数来确定用于非线性激活函数的参数集;以及基于用于该非线性激活函数的参数集的应用来生成输出数据,其中:可配置非线性激活函数电路包括至少一个非线性近似器,该至少一个非线性近似器包括至少两个相继线性近似器,并且该至少两个相继线性近似器中的每个线性近似器被配置成使用该参数集中的一个或多个函数参数来近似线性函数。
其他方面提供了:处理系统,其被配置成执行前述方法以及本文中所描述的那些方法;非瞬态计算机可读介质,其包括在由处理系统的一个或多个处理器执行时使该处理系统执行前述方法以及本文中所描述的那些方法的指令;计算机程序产品,其被实施在计算机可读存储介质上,该计算机可读存储介质包括用于执行前述方法以及本文中进一步描述的那些方法的代码;以及处理系统,其包括用于执行前述方法以及本文中进一步描述的那些方法的装置。
以下描述和相关附图详细阐述了一个或多个实施例的某些解说性特征。
附图简述
附图描绘了该一个或多个实施例的某些方面,并且因此不被认为限制本公开的范围。
图1描绘了示例可配置非线性激活(CNLA)函数电路。
图2描绘了用于实现诸如关于图1所描述的可绕过近似器块的示例电路块。
图3描绘了示例近似器。
图4描绘了示例机器学习模型过程流。
图5描绘了用于使用可配置非线性激活函数电路来执行处理的示例方法。
图6描绘了可用于实现在机器学习模型加速中使用的非线性函数的流水线化相继线性近似架构的示例。
图7描绘了用于定义近似函数输出的具有非均匀分段的双曲正切(tanh)非线性激活函数的示例。
图8描绘了用于实现流水线化相继线性近似架构的电路的示例。
图9描绘了线性近似器电路的示例,其可以是图8的电路中的线性近似器元件的示例。
图10描绘了可被配置成执行本文所描述的方法的示例处理系统。
为了促成理解,在可能之处使用了相同的附图标记来指定各附图共有的相同要素。构想一个实施例的要素和特征可有益地纳入其他实施例而无需进一步引述。
详细描述
本公开的各方面提供了用于处理与机器学习模型相关联的非线性激活函数的改进的技术。
非线性激活是各种类型的机器学习模型(包括神经网络模型)的关键组成部分。虽然一些非线性激活函数被实现为分段线性函数(例如,整流线性单元(ReLU)、漏ReLU等),但其他非线性激活函数需要复杂的数学函数(例如,sigmoid、双曲正切(tanh)等)。在一些情形中,复杂的数学函数可以使用内插(诸如三次样条内插)来实现。例如,在一些方面,可以使用查找表(LUT)来确定经内插的输出值,以将输出值与输入值匹配。当目标输入值未被映射在LUT中时,与毗邻于该目标输入值的输入值相关联的LUT值可用于内插针对该目标输入值的输出值。
常规上,非线性激活函数可以用软件而不是硬件来实现,这是由于机器学习模型中可用的可能激活函数的较广范围。然而,此类实现通常需要在处理设备之间(例如,在执行矩阵乘法和累加的神经处理单元(NPU)和处理非线性激活函数的数字信号处理器(DSP)之间)移动模型数据,从而招致功率和等待时间损失。在已经在硬件中实现了非线性激活函数的情况下,它们一般被限制为仅支持少量的非线性激活函数,并且因此无法被配置成支持进化的机器学习模型架构而不回退到将非线性激活函数处理外包给分布式处理单元。
例如,整流线性单元(ReLU)是深度学习模型中常用的激活函数。该函数在接收到负输入的情况下返回0,并且在其他情况下返回输入x。因此,它可以被写为f(x)=max(0,x)。ReLU函数一般不由主矩阵乘法和累加处理单元(诸如在一些示例中的存储器内计算(CIM)阵列)实现。因此,从处理的观点来看,分配ReLU函数或另一非线性激活函数的需要是昂贵的。此外,随着激活函数变得更复杂,处理成本同样变得更显著(例如,用于执行作为某些非线性激活函数的一部分的相对较高幂的指数和除法运算,如以下进一步描述的)。
为了克服常规解决方案的缺点,本文所描述的各方面涉及可配置非线性激活(CNLA)函数电路,其可以在硬件中实现以用于高效处理。具体而言,因为它可以在硬件中实现,所以CNLA函数可以与针对其他机器学习模型处理任务进行优化的其他处理电路(诸如CIM阵列和针对执行向量和矩阵乘法和累加函数进行优化的数字乘法和累加(DMAC)电路)共置。
为了提高处理效率,本文所描述的各方面可以使用多项式近似来近似复杂函数,诸如可以在非线性激活函数中使用。在一些情形中,本文所描述的各方面可以使用级数展开,诸如泰勒级数。一般而言,函数(例如,f(x))的泰勒级数是以该函数在单个点处的导数的方式表示的项的无限和。对于许多函数,函数与该函数的泰勒级数之和在该点附近是相等的。由泰勒级数的前n+1项形成的部分和是n次多项式,其被称为函数的第n个泰勒多项式。因此,泰勒多项式允许处理函数的高效近似,这一般随着n的增加而变得更好。
本文所描述的CNLA函数电路可以实现一个或多个多项式近似块,诸如三次近似块,其一般增强三次样条内插,以使其更高效和更一般化,从而覆盖更广泛种类的非线性激活函数。此外,CNLA函数电路可以被实现为流水线化数字块,其可以使用非线性分段查找表(LUT)和混合阶的近似(例如,流水线化线性、二次和三次近似)。因此,与常规的非线性激活函数电路不同,本文所描述的CNLA函数电路可被配置成满足许多不同的性能目标。
因此,本文所描述的CNLA函数电路为在机器学习模型处理系统中实现较广范围的非线性激活函数的技术问题提供了技术解决方案。此外,与现有解决方案相比,本文所描述的CNLA函数电路通过增加模型处理性能的方式提供了技术改进,包括更低的等待时间、更低的功耗、改进的存储器效率以及如本文所描述的其他改进。
示例可配置非线性激活函数电路
图1描绘了示例可配置非线性激活(CNLA)函数电路100。
一般而言,CNLA函数电路100可被配置成接收输入数据101(例如,来自机器学习模型的层的输出值)并执行各种非线性激活函数以生成输出数据114(例如,“激活”)。CNLA函数电路100可以与其他机器学习模型处理电路(诸如CIM阵列、DMAC等)共置并流水线化,并且可被配置成基于其他机器学习模型处理电路的输出来执行激活函数。
在一些示例中,可以从缓冲器或其他存储器接收输入数据101。在其他示例中,可以直接从另一处理块的输出(诸如CIM阵列或另一向量和矩阵乘法和累加块等的输出)接收输入数据101。
CNLA函数电路100包括第一近似器块102,其一般可被配置成(诸如对输入数据101)执行基于硬件的数学函数。参照图3详细描述了示例近似器。
在一些情形中,第一近似器是线性近似器(例如,被配置成执行一函数,诸如ax+b)、二次近似器(例如,被配置成执行一函数,诸如ax2+bx+c)或三次近似器(例如,被配置成执行一函数,诸如ax3+bx2+cx+d)中的一者,其中x是输入数据,并且a、b、c和d是可配置参数。一般而言,线性、二次或三次近似器可用于近似某个给定函数,该函数可以是也可以不是多项式函数。第一近似器102可被配置有从例如存储器、寄存器、查找表等检索的参数。如以下关于表2进一步详细描述的,这些不同形式的近似和相关联的可配置参数可用于近似许多类型的非线性激活函数。
CNLA函数电路100进一步包括第二近似器块104,与第一近似器块102一样,其一般可被配置成执行基于硬件的数学函数,诸如线性、二次或三次函数。如以下更详细地描述的,CNLA函数电路100可被配置成串联使用第一近似器块102和第二近似器块104来实现更复杂的函数,使得第一近似器块102的输出成为对第二近似器块104的输入。CNLA函数电路100可被进一步配置成在处理更简单的非线性函数时仅使用第一近似器块102或第二近似器块104中的一者,从而节省功率。
在一些实现中,第一近似器102和第二近似器104可包括相同的电路块(例如,电路100内相同电路元件的两个实例)。例如,在一些方面,第一近似器102和第二近似器104可包括三次近似器。在其他实现中,第一近似器102和第二近似器104可包括不同的电路元件,并且在此类情形中,一般第二近似器104将包括三次近似器,并且第一近似器102将包括较低阶近似器,诸如二次或线性近似器。然而,在其他实施例中,较高阶和较低阶近似器的顺序可以颠倒。
CNLA函数电路100包括可配置旁路105,其允许在各种场景中(诸如在函数仅需要比第一近似器102更低阶的近似器,并且第二近似器104是此类较低阶近似器的情况下)绕过第一近似器102。例如,当经由可配置旁路105绕过第一近似器102时,则输入数据101改为直接提供给第二近似器104,而不被第一近似器102处理。在各种方面,第一近似器102可以是与第二近似器104相比更高阶的近似器,或者反之亦然,或者它们可以是相同的阶(例如,线性、二次或三次)。当仅一个近似器为必需时,可配置旁路105允许节省处理时间和能量。
CNLA函数电路100进一步包括另一可配置旁路107,其允许在各种场景中(诸如在函数仅需要第一近似的情况下(第一近似器102能够在没有第二近似器104的情况下执行该函数))绕过第二近似器104。例如,当经由可配置旁路107绕过第二近似器104时,第一近似器102的输出被直接提供给乘法器108。
一般而言,可配置旁路105和107允许CNLA函数电路100被配置用于最大多用性,同时在各种场景中节省功率并避免不必要的电路块处理。此外,可配置旁路允许非对称和反对称非线性激活函数被配置用于CNLA函数电路100的处理。图2描绘了用于实现可配置旁路105和107(例如,旁路205A和205B)的示例电路方面。
CNLA函数电路100进一步包括增益块106,其被配置成向乘法器108提供增益值。在一些方面,增益块106被配置成基于由增益块106实现的增益函数来生成增益值109。在一个示例中,增益函数可采用g=ax+b的形式,其中g是增益值,x是输入数据101值,并且a和b是可配置参数。更一般地,增益块106可以乘法地(a)和/或加法地(b)修改输入数据以生成增益值。
由增益块106生成的增益值109经由乘法器108与第一和/或第二近似器102和104的输出相乘。在其他方面,增益块106可被配置成生成增益值,该增益值不基于输入数据101的函数(例如,通过在以上针对g的表达式中将a设置为零)。一般而言,增益块106的参数(例如,以上示例中的a和b)或值可以从例如存储器、寄存器、查找表等中检索。
CNLA函数电路100进一步包括常数块110和加法器112,常数块110被配置成存储可配置(例如,可编程)常数值113,并且加法器112被配置成将常数值113与乘法器108(例如,增益乘法器)的输出相加。存储在常数块110中的常数值113可以从例如存储器、寄存器、查找表等中检索。
第一近似器块102、第二近似器块104、可配置旁路105和107、增益块106、乘法器108、常数块110和加法器112的包含和布置允许CNLA函数电路100被配置成执行各种各样已知的和稍后开发的非线性激活函数。此外,CNLA函数电路100可以被高效地配置成通过仅仅更新用于第一近似器102、第二近似器104、增益块106和常数块110的参数来处理各种各样的非线性激活函数。当近似器块102和104两者都被用于模拟非线性函数时,其各自可以被称为执行单独的函数(例如,用于第一近似器块102的第一函数和用于第二近似器104的第二函数)。这种设计有益地支持复杂函数的任意非对称非线性曲线。
下表1提供了用于图1的CNLA函数电路100可被配置成执行的各种非线性激活函数的示例参数,包括用于图2的近似器块206A和206B的参数。在表1中,增益被认为具有形式ax+b(如在图1中增益块106的示例中),但是注意,在其他实施例中,增益可以是标量值或不同的函数形式。类似地,二次近似器被认为具有形式ax2+bx+c,并且三次近似器被认为具有形式ax3+bx2+cx+d。在下表中,下标被用于指示参数指派,例如,G用于增益参数,1用于第一近似器,2用于第二近似器参数。
表1
注意,在以上ELU函数中,α参数可由模型设计者配置为超参数。
值得注意的是,在一些实现中,用于近似器的参数可以以一种形式(例如,具有a、b、c和d参数的三次或具有a、b和c参数的二次)给出,即使其中近似器正在执行较低阶函数(例如,线性)。这是因为例如将三次参数a设置为0高效地使近似等式坍塌到较低阶二次函数,并且同样地,将二次参数a设置为0高效地使近似等式坍塌到线性等式。因此,当近似器被配置有二次参数时,该近似器可被配置例如用于“二次函数”,但是参数的结果可以将该函数简化为线性函数,如以上在表2中的ReLU的示例中。这可以允许参数集的标准化,而不管要由参数配置的底层函数的阶数如何,从而简化实现。
图2描绘了用于实现可绕过近似器块206A和206B的示例电路块202和204。在一个示例中,可绕过近似器块206A和206B可对应于图1的第一近似器块102和第二近似器块104。
在图2中,电路块202被配置成控制函数块214A的使用,在该示例中,函数块214A包括第一近似器206A以及最小和最大函数块208A。类似地,电路块204控制函数块214B的使用,在该示例中,函数块214B包括最小和最大函数块208B以及第二近似器206B。第一和第二近似器块206A和206B可被配置成实现非线性激活函数,诸如以上关于表1描述的那些。
注意,图1中的第一近似器102仅需要一个输入,但是电路块202包括两个输入端口201A和201B,其允许多个输入。可以采用电路块202的所描绘的配置,以便为电路块202和204两者提供相同的外部接口,这可以简化配置和集成。在一些方面,电路块202的两个输入端口201A和201B在电路块202经由输入端口201A接收单个输入(诸如图1中的输入数据101)的实现中可以被绑定在一起。在替换实现中,可以通过移除输入端口201B和移除输入复用器203A来简化电路块202,使得201A将直接提供给214A和207A。
一般而言,输入端口201A和201B可以接收各种类型的输入数据(包括有符号多比特整数数据)以供处理。在一个示例中,输入数据是8比特二进制补码输入数据。
输入选择器复用器203A和203B被配置成分别控制哪个输入数据端口被用于电路块202和204。例如,输入选择器复用器203B可以在输入数据端口201A(例如,当电路块202被绕过时)或212B(例如,当电路块202和204被串联处理时)之间进行选择。
旁路选择器复用器211A和211B被配置成分别控制电路块202和204的旁路函数块214A和214B。例如,当电路块202要被绕过时,旁路选择器复用器211A选择旁路线205A,以向输出端口212A提供输出。类似地,当电路块204要被绕过时,旁路选择器复用器211B选择旁路线205B,以向输出端口216提供输出。因此,如由可配置旁路205A和205B控制的,利用电路块202和/或204的处理导致输出端口216处的输出。
如关于图3更详细地讨论的,近似器块206A和206B可以分别被配置有存储在寄存器219A和219B中的配置参数(例如,如上表1中的因函数而异的系数)。类似地,如在上表1中,其中近似器块206A或206B被配置成执行基于查找表的函数,表值可以分别被存储在寄存器219A和219B中。
每个电路块(202和204)进一步包括用于提供最小和最大函数的最小和最大函数块(用于电路块202的208A和用于电路块204的208B)。一般而言,最小(或即“min”)函数将返回所提供输入的最小值。类似地,最大(或即“max”)函数将返回所提供输入的最大值。在一个示例中,最小和最大函数块208A和208B可包括以单循环或多循环模式运行的多比特数字比较器。
函数块214A和214B的配置可分别包括用于函数选择器复用器209A和209B的设置。换言之,函数块214A和214B是输出来自最小/最大块208A和208B的最小/最大输出还是来自近似器206A和206B的值基于函数选择器复用器209A和209B的配置。注意,在其他示例中,函数块214A和214B可包括可由复用器选择的附加函数块。
如其中近似器块可以被串联处理的图1中所描绘的,在图2中,包括第一近似器块206A的电路块202A的输出212A被提供为对包括第二近似器块206B的电路块204的输入212B。如在其中旁路105和107控制第一和第二近似器块102和104的使用的图1中,在此可选择旁路205A和205B控制近似器块206A和206B的使用。
非对称信号线210控制电路块202和204的配置。在一个示例中,电路块202和204是基于非对称信号线210上的值和来自符号块207A和207B的输出值来配置的,来自符号块207A和207B的输出值基于经由输入数据端口201A接收的输入数据。例如,经由非对称信号线210接收的二进制值和从符号块207A输出的二进制值在与门213处相互作用,以控制对复用器211A的输出的选择。作为另一示例,经由非对称信号线210接收的二进制值和从符号块207B输出的二进制值在与门217处相互作用,以控制对经由复用器203B的输入数据端口(在201A和212B之间)的选择。作为进一步示例,经由非对称信号线210接收的二进制值和从符号块207B输出的经反转二进制值在与门215处相互作用,以控制对复用器211B的输出的选择。
下表2提供了用于电路块202和204的配置的概要:
表2
用于可配置非线性激活函数电路的示例近似器
图3描绘了示例近似器300,其可以是图1的第一近似器102和第二近似器104和/或图2的近似器206A和206B中的一者或两者的示例。
近似器300接收输入数据302(例如,预激活数据)以供处理。在一些示例中,可以从缓冲器或其他存储器接收输入数据302。在其他示例中,可以直接从另一处理块的输出(诸如CIM阵列或另一向量和矩阵乘法和累加块的输出)接收输入数据。此外,可以从另一近似器接收输入数据(诸如在近似器300是图1中的第二近似器104或图2中的第二近似器206B的情况下)。
在一些实现中,近似器(诸如300)可包括替换处理路径。在此类情形中,路径逻辑304可被配置成基于例如用于近似器300的配置参数来将输入数据302路由到适当的处理路径。
在该示例中,处理路径306A提供针对输入数据302的三次近似路径。
在处理路径306A中,输入数据302被提供给三次计算器308,其执行三次运算(例如,x3,其中x是输入数据),并且随后输出在乘法器310处与三次参数312相乘。乘法器310的输出随后被提供给累加器324。
输入数据302还被提供给二次计算器308,其执行二次运算(例如,x2,其中x是输入数据),并且随后输出在乘法器316处乘以二次参数318。乘法器316的输出随后被提供给累加器324。
输入数据302还被提供给乘法器320,其中在乘法器320处将输入数据302乘以线性参数322。乘法器320的输出随后被提供给累加器324。
累加器(加法器)324累加乘法器310、316和320的输出以及截距参数326,以生成输出数据332。
三次参数312、二次参数318、线性参数322和截距参数326都可被存储在对累加器300可访问的存储器中、等等(例如,在寄存器中)。在一些情形中,控制单元(诸如存储器控制单元或有限状态机)可以利用存储在存储器中的参数来配置近似器300。在各种示例中,可以根据以上关于表2描述的值来设置三次参数312、二次参数318、线性参数322和截距参数326。
如上所述,可以通过配置以上提及的参数值来配置近似的阶数。例如,为了使近似器300执行二次近似,可将三次参数312设置为零。类似地,为了使近似器300执行线性近似,可将三次参数312和二次参数318设置为零。
某些非线性激活函数需要替换函数,诸如最小和最大函数。因此,处理路径306B提供了可例如与以上在表2中描述的ReLU和ReLU6函数一起使用的最小和/或最大计算器。路径逻辑304可基于用于近似器300的配置数据来选择处理路径306B。
此外,某些非线性激活函数可以使用查找表来实现,这些查找表提供了用于生成某些非线性激活函数的值的更加功率和时间高效的机制。因此,处理路径306C提供基于查找表的处理路径,其可例如在非线性激活函数使用sigmoid、tanh或类似函数的任何情况下被使用。注意,sigmoid和tanh可以相互计算,因此在一些情形中,仅单个查找表(例如,sigmoid或tanh,但不是两者)被存储并用于实现这两个函数。一个或多个查找表可被存储在存储器中并对近似器300是可访问的,包括紧密耦合到该近似器300的存储器。
利用可配置非线性激活函数电路的示例机器学习模型过程流
图4描绘了实现诸如以上关于图1至图3所描述的可配置非线性激活函数电路的示例机器学习模型数据流400。
在流程400中,输入数据被存储在输入数据缓冲器401中(例如,机器学习模型层输入数据),并且随后被提供给乘法和累加(MAC)电路402。MAC电路402一般可以被配置成执行向量、数组和矩阵乘法和累加运算,诸如卷积神经网络中频繁使用的那些运算。在一些示例中,MAC电路402可包括一个或多个存储器内计算(CIM)阵列。替换地或附加地,MAC电路402可包括数字乘法和累加(DMAC)。在又其他示例中,乘法和累加电路402可以是机器学习加速器的一部分,诸如神经处理单元(NPU),或者针对执行机器学习处理进行优化的另一类型的处理单元。在另一实现中,MAC电路402可以由向量/矩阵或矩阵/矩阵处理引擎代替。
MAC电路402利用权重数据(例如,神经网络权重数据)处理输入数据以生成预激活数据。例如,MAC电路402可以处理对神经网络模型层的输入数据,并生成预激活数据作为输出。
预激活数据被提供给可配置非线性激活(CNLA)函数电路404,其被配置成基于所配置的非线性激活函数来生成输出数据(例如,激活)。随后,输出数据可被存储在输出数据缓冲器405中以供后续使用,诸如用于处理机器学习模型中的另一层,或者作为来自机器学习模型的输出,等等。
CNLA函数电路404可以利用配置参数(诸如关于图3中的CNLA函数电路300所描述的配置参数以及表1和表2中所描述的那些配置参数)来配置。此外,CNLA函数电路404可以被配置成取决于所配置的激活函数而访问查找表。
在一些情形中,配置参数可包括对要应用于输入数据的非线性激活函数的标识。基于所确定的非线性激活函数,可以从存储器(例如,寄存器)中检索适当的参数(诸如表2中的那些参数)并将其应用于CNLA函数电路404,藉此将其配置成用于处理输入数据。在一些示例中,有限状态机、存储器控制单元或另一控制器可以执行对CNLA函数电路404的配置。
值得注意的是,CNLA电路404可以被配置成使用相同的配置来处理多批次的输入数据,或者可以针对每个新批次的输入数据更新其配置。因此,CNLA电路404提供了用于执行针对机器学习任务(诸如训练和推断)的可配置非线性激活的非常灵活和高效的装置。
用于使用可配置非线性激活函数电路来执行处理的示例方法
图5描绘了用于使用可配置非线性激活函数电路来执行处理的示例方法500。
方法500始于步骤502,选择用于应用于输入数据的非线性激活函数。例如,非线性激活函数可以是表2中列出的函数之一、或者另一非线性激活函数。
方法500随后行进到步骤504,基于所选非线性激活函数来确定用于可配置非线性激活函数电路的参数集。例如,用于所确定的非线性激活函数的参数可以如以上表1和表2中所示。
方法500随后行进到步骤506,基于参数集利用可配置非线性激活函数电路来处理输入数据,以生成输出数据。例如,输出数据可以是针对神经网络模型的层的激活数据。
在一些示例中,参数集包括要经由可配置非线性激活函数电路应用于输入数据的一个或多个增益参数、常数参数和一个或多个近似函数的组合。例如,参数集可以如以上关于图1和图2以及表1中所讨论的。
在一些示例中,方法500进一步包括基于所确定的非线性激活函数从存储器中检索参数集。在一些示例中,存储器可以是存储参数值的一个或多个寄存器。
在一些示例中,可配置非线性激活函数电路包括第一近似器,其被配置成近似该一个或多个近似函数中的第一函数;第二近似器,其被配置成近似该一个或多个近似函数中的第二函数;第一增益乘法器,其被配置成基于一个或多个增益参数乘以第一增益值;以及常数加法器,其被配置成加上常数值,诸如关于图1所描绘和描述的。
在一些示例中,可配置非线性激活函数电路包括配置成绕过第一近似器的第一旁路。在一些示例中,可配置非线性激活函数电路包括配置成绕过第二近似器的第二旁路。在一些示例中,可配置非线性激活函数电路包括输入数据旁路,其被配置成绕过第一近似器并向第二近似器提供输入数据。
在一些示例中,第一近似器和第二近似器中的至少一者是三次近似器。在一些示例中,第一近似器和第二近似器中的另一者是二次近似器或线性近似器中的一者。在一些示例中,第一近似器和第二近似器中的另一者被配置成执行最小或最大函数,诸如关于图3中的路径306B所描绘的。在一些示例中,第一近似器和第二近似器中的另一者被配置成访问查找表以寻找近似值,诸如关于图3中的路径306C所描绘的。
在一些示例中,第一近似器和第二近似器两者是三次近似器。
注意,图5仅仅是一个示例,并且在其他示例中,诸如在本文中描述的那些方法可以用更多、更少和/或不同的步骤来实现。
用于非线性函数的示例流水线化近似
图6描绘了可用于实现在机器学习模型加速中使用的非线性函数的流水线化相继线性近似架构600的示例。例如,架构600可用于实现关于图1所描述的近似器102和104以及关于图2所描述的206A和206B。
一般而言,图6描绘了输入x以流水线化方式流经线性近似器604A-C。架构600是使用相继线性近似块604A-C来实现三次近似的功率和空间高效的方式。具体而言,在线性近似器块604A中处理输入x以确定输出y1=Ax+B,其中A和B是线性近似器块604A所使用的系数605A。
接下来,y1作为输入被提供给线性近似器块604B以确定输出y2=x(y1)+C,其中C是线性近似器块604B所使用的系数605B。注意,x(y1)指示y1乘以x。
接下来,y2作为输入被提供给线性近似器块604C以确定输出y3=x(y2)+D,其中D是线性近似器块604C所使用的系数605C。基于相继线性近似的扩展y3给出:
y3=x(y2)+D
=x(x(Ax+B)+C)+D
=Ax3+Bx2+Cx+D,
其是基于输入x的三次近似。值得注意的是,在架构600中实现的相继线性近似办法减少了所需乘法器的数目,与常规的三次近似器架构相比,这降低了复杂性和所使用的功率。此外,架构600允许流水线化实现,其在稳定状态下每个循环产生新的输出,并因此提高了吞吐量。
为了进一步提高处理效率,系数A、B、C和D(605A-C)可被存储在寄存器而不是例如SRAM或DRAM中,这改进了架构600的功率和等待时间性能。例如,通过使用存储系数值的本地寄存器,可以避免使用来自主存系统SRAM的读取功率。寄存器办法还通过避免从远程主存系统存储器(例如,DRAM)读取和传输系数值的附加循环来支持流水线化架构。在各个方面,流水线寄存器可以在线性近似器604A-C的内部或外部。
在一些实现中,如关于架构600所描绘的,可以基于非均匀分段的非线性函数的近似来确定系数,如在关于图7的一个示例中所描述的。在此类实施例中,区域查找器602可以根据输入x基于非均匀分段近似的区域(或分段)来确定适当的系数。因此,图6描绘了以流水线化方式通过线性近似的各个级传递的区域查找器的输出“REGION_SEL”。
注意,由区域查找器602查找的“区域”是原始非线性函数的“域”的分段。即,可以在从负无穷大到正无穷大的域上定义非线性函数,并且该域可以被划分成分段。在本文所描述的各个方面,分段具有不均匀的长度。对于每个此类分段,选择系数来最好地近似该分段内的函数。图8描绘了具有区域查找器元件809的示例电路实现,其中“截止(cutoff)”用于描述分段终点。
在各个方面,区域查找器602可以被配置成选择用于整个近似的整个系数集合。在所描绘的示例中,因为近似以流水线化方式串行发生,所以所确定的区域将被注册为沿着每个近似器数据路径运行,因此所确定的区域可用于每个级(例如,针对线性近似器604A-C)处的后续系数查找。
区域查找器602一般允许使用各种离线算法来搜索和设置区域选择,因此该实现不需要受到如何查找区域的限制。
例如,可以使用三次样条算法来确保跨区域边界的连续导数,这有益于模型训练。在另一示例中,均方误差可在每点的基础上被最小化(基于给定被考虑的区域的对最佳三次系数的后续搜索)。该第二种办法可以以连续导数为代价实现更好的计算精度(实现更好的推断精度)。又一种办法是基于二阶或三阶导数为0来设置区域,尽管这种办法可能不会使用完整的可能区域集合,因为更多的区域导致更少的误差。最后,架构600被配置成利用常见神经网络非线性函数(诸如sigmoid和双曲正切(tanh))的奇偶对称属性,以在处理期间有益地减少电路面积和功率。有益地,利用此类对称性允许减少需要被存储以近似非线性函数的系数的数目,因为例如,简单的符号翻转可以从原点模拟函数的两侧(例如,正和负),而不需要存储针对两侧的系数。在一些实现中,仅针对正输入计算近似结果,并且随后相同的结果可被用于具有相同幅度(偶对称性)的负输入,或者在具有奇对称性的函数的情形中,结果的符号可以被翻转。
在所描绘的示例中,符号和偏移校正器组件606被配置成将三次近似值y3、原始输入x(例如,以确定其符号)和偏移值607采用为输入,并应用符号和/或偏移校正以生成最终输出608。例如,最终输出608可以被计算为偏移(607)+/-y3。与系数605A-C一样,为了效率和速度,偏移607可被存储在本地寄存器中。
一般而言,偏移607可用于除了不以x=0为中心的对称函数。一示例是sigmoid,其关于直线y=0.5对称。在此类情形中,首先近似关于x轴奇对称的“经移位”sigmoid,并且随后向结果添加0.5的偏移。
注意,图6描绘了包括可用于近似三次非线性函数的三个线性近似器(604A-C)的示例架构600。在其他方面,在旨在近似二次非线性函数的情况下,可以使用两个线性近似器。尽管图6中未描绘,但在一些方面,当仅需要近似二次函数时,控制逻辑可切换线性近似器(诸如线性近似器604B)的输出以绕过后续线性近似器(诸如线性近似器604C)。在此类情形中,旁路可以获取线性近似器604B的输出y3,并将其路由到符号和偏移校正器组件606。
图7描绘了用于定义近似函数输出的具有非均匀分段的双曲正切(tanh)非线性激活函数的示例700。
在所描绘的示例中,从原点(x=0)沿曲线701到第一点定义第一分段702A。如所描绘的,像702B这样的分段沿曲线701的长度更长,其中斜率跨该分段中的输入值更恒定,而像702C这样的分段沿曲线701的长度更短,其中曲线沿该分段中的输入值更快地改变斜率。使用非均匀分段有益地允许跨非线性函数的输出值范围定义更少的分段,同时仍然保持与实际函数相比相似的输出分辨率。常规地,为了保持分辨率,曲线(诸如701)被均匀地分段,这意味着许多分段具有非常相似的输出值,并且因此产生了存储在存储器中的冗余值。
注意,每个分段一般可以由沿曲线701的起点和终点来定义。例如,起始输入值x开始和结束输入值x结束可以定义一分段。这些分段中的每一者可以与用于近似落在所定义范围内的基于双曲正切函数的输入值(诸如x开始≤x<x结束)的系数集合相关联。为了进一步节省存储器,第一分段702A仅需要存储该分段的终点,因为可以假设起点(原点)为x=0。类似地,最后分段仅由倒数第二个分段的终点来定义。即,所有大于或等于倒数第二个分段的终点的输入都被视为最后分段的一部分。
例如,下表给出了针对将要被近似的tanh函数的可被存储在寄存器中的非均匀分段的示例。当输入值x落在特定分段(或区域)内时,则针对该分段的系数可被检索并用于生成近似函数值。
表3
分段 | x开始 | x结束 |
1 | (假设为0) | 0.1250 |
2 | 0.1250 | 0.3750 |
3 | 0.3750 | 0.6250 |
4 | 0.6250 | 0.8750 |
5 | 0.8750 | 1.3750 |
注意,双曲切线函数曲线701是具有奇对称性的函数的示例。即,针对正输入的tanh输出值(例如,针对点704A的0.2)等同于相同幅度的负输入的经符号翻转的输出(例如,针对704B的-0.2)。因此,非均匀分段仅需要关于双曲切函数曲线701的正输入值范围来定义,并且符号校正器组件(诸如图6中的606)可以基于输入值(x)的符号适当地翻转最终输出(例如,图6中的608)的符号。
图8描绘了用于实现诸如以上关于图6描述的流水线化相继线性近似架构的电路800的示例。具体而言,图8描绘了设计的流水线化性质,包括区域查找器809的输出和符号比特如何通过流水线以进行高效处理。
所描绘的示例包括四个级806A-806D,其中三个级包括线性近似器(分别为804A-804C)以及一个符号和偏移校正级806D。
在所描绘的示例中,描绘了各种操作块。“SAT”表示“饱和”块。在减少表示一值时使用的整数比特数时,饱和是有用的。如果饱和模块被用于将具有M个整数比特的输入减少到具有N个整数比特的输出(其中N<M),则大于可以用N个整数比特表示的输入值被“饱和”到最大的正N比特数(对于正输入)或最小的负N比特数(对于负输入)。例如,如果[x>0111...11],则输出y(0111...11),或者如果[x<=1000...00],则输出y(1000...00)。
“ABS”表示计算输入的绝对值(或幅度)的块。
“COMP”表示用作使用可编程截止的区域查找器的比较器块。截止定义了各个分段的终点(间接地,也定义了最后分段的起点)。COMP块809的输出是指示当前输入属于哪个区域(分段)的标识符。该标识符被用于选择适当的系数集,以近似该分段内的非线性函数。
在一个示例实现中,11个截止值被用于定义总共12个分段。通过利用非线性函数的对称属性,COMP模块仅对输入的绝对值进行运算。以下算法描述了其运算:
如果0<=ABS(x)<CUTOFF1:选择分段0系数
否则如果(CUTOFF1<=ABS(x)<CUTOFF2):选择分段1系数
否则如果(CUTOFF2<=ABS(x)<CUTOFF3):选择分段2系数
…
否则如果(CUTOFF10<=ABS(x)<CUTOFF11):选择分段10系数
否则如果(CUTOFF11<=ABS(x)):选择分段11系数
“TRUNC”表示截短块,其被配置成通过省略最低有效位来降低以二进制补码方式表示的分数的精度。例如,为了将输入从具有M个分数比特减少到具有N个分数比特,最低有效的M-N个比特被省略(被截短)。
“SYMMSAT”表示“对称饱和”块。具有N个整数比特的常规饱和(SAT)模块饱和到最大正值(2N-1-1)或最小负值(-2N-1)。在对称饱和模块中,负输入代之以饱和到大于最小负值(例如(-2N-1+1))的值。以此方式,不同的负输出和正输出的数目是相同的。例如,如果[x>0111...11],则输出y(0111...11),或者如果[x<=1000...00],则输出y(1000..0.01)。
“SE”表示符号扩展块,其在增加用于表示一值的整数比特数时是有用的。例如,当用N个整数比特表示的值被要求用M个整数比特表示(M>N)时,符号比特被复制(M-N)次。
“TC”表示用于通过取其二进制补码将正数转换为负数的块。
最后,“ZF”表示“零填充”块,其在具有N个分数比特的数字被要求通过在最低有效位置附加(M-N)个0来表示为具有M个分数比特(M>N)的数字时被使用。
图9描绘了线性近似器电路900的示例,其可以是图8的电路800中的线性近似器块804A-804C的示例。如所描绘的,线性近似器电路包括将级输入和系数904作为输入的乘法元件902、以及加法器元件906,该加法器元件906将经过截短和饱和块处理后的乘法元件的输出和第二系数908作为输入。
示例处理系统
图10描绘了可被配置成执行本文中诸如参考图4-5所描述的方法的示例处理系统1000。
处理系统1000包括中央处理单元(CPU)1002,其在一些示例中可以是多核CPU。在CPU 1002处执行的指令可例如从与CPU 1002相关联的程序存储器加载或可从存储器分区1024加载。
处理系统1000还包括为特定功能定制的附加处理组件,诸如图形处理单元(GPU)1004、数字信号处理器(DSP)1006、神经处理单元(NPU)1008、多媒体处理单元1010和无线连通性组件1012。
NPU(诸如1008)一般是被配置成用于实现用于执行机器学习算法(诸如用于处理人工神经网络(ANN)、深度神经网络(DNN)、随机森林(RF)、核方法等的算法)的所有必要的控制和算术逻辑的专用电路。NPU有时可被替换地称为神经信号处理器(NSP)、张量处理单元(TPU)、神经网络处理器(NNP)、智能处理单元(IPU)、或视觉处理单元(VPU)。
NPU(诸如1008)可被配置成加速常见机器学习任务(诸如图像分类、机器翻译、对象检测以及各种其他任务)的执行。在一些示例中,多个NPU可在单个芯片(诸如片上系统(SoC))上实例化,而在其他示例中,多个NPU可以是专用机器学习加速器设备的一部分。
NPU可被优化用于训练或推断,或者在一些情形中被配置成平衡两者之间的性能。对于能够执行训练和推断两者的NPU,这两个任务一般仍可独立地执行。
被配置成加速训练的NPU一般被配置成加速新模型的优化,这是涉及输入现有数据集(通常是被标记的或含标签的)、在数据集上进行迭代、并且随后调整模型参数(诸如权重和偏置)以便提高模型性能的高度计算密集的操作。一般而言,基于错误预测进行优化涉及往回传递通过模型的各层并确定梯度以减少预测误差。
被设计成加速推断的NPU一般被配置成在完整模型上操作。此类NPU由此可被配置成:输入新的数据片段并通过已经训练的模型对其快速处理以生成模型输出(例如,推断)。
在一些实施例中,NPU 1008可被实现为CPU 1002、GPU 1004和/或DSP 1006中的一者或多者的一部分。
在一些实施例中,无线连通性组件1012可包括例如用于第三代(3G)连通性、第四代(4G)连通性(例如,4G LTE)、第五代连通性(例如,5G或NR)、Wi-Fi连通性、蓝牙连通性、以及其他无线数据传输标准的子组件。无线连通性处理组件1012进一步连接到一个或多个天线1014。
处理系统1000还可包括与任何方式的传感器相关联的一个或多个传感器处理单元1016、与任何方式的图像传感器相关联的一个或多个图像信号处理器(ISP)1018、和/或导航处理器1020,该导航处理器420可包括基于卫星的定位系统组件(例如,GPS或GLONASS)以及惯性定位系统组件。
处理系统1000还可包括一个或多个输入和/或输出设备1022,诸如屏幕、触敏表面(包括触敏显示器)、物理按钮、扬声器、话筒等等。
在一些示例中,处理系统1000的一个或多个处理器可基于ARM或RISC-V指令集。
处理系统1000还包括根据本文所描述的各种实施例的各种电路。
在该示例中,处理系统1000包括存储器内计算(CIM)电路1026,其可以被配置成执行高效乘法和累加(MAC)函数以用于处理机器学习模型数据。处理系统1000进一步包括可配置非线性激活(CNLA)函数电路1028。在一些情形中,CNLA函数电路1028可以类似于关于图2、3、6、8和9所描述的CNLA函数电路200。CNLA函数电路1028以及其他未描绘的电路可以被配置成执行本文所描述的方法(诸如分别关于图4和图5的方法400和500)的各个方面。
在一些示例中,CNLA函数电路1028可以被实现为另一处理单元的一部分,诸如CPU1002、GPU 1004、DSP 1006或NPU 1008。
处理系统1000还包括存储器1024,该存储器1024表示一个或多个静态和/或动态存储器,诸如动态随机存取存储器、基于闪存的静态存储器等。在该示例中,存储器1024包括计算机可执行组件,其可由处理系统1000的前述组件中的一个或多个组件执行。
具体而言,在该示例中,存储器1024包括确定组件1024A、配置组件1024B、处理组件1024C、检索组件1024D、非线性激活函数参数1024E、(诸)查找表1024F和模型参数1024G(例如,权重、偏差和其他机器学习模型参数)。所描绘的组件以及其他未描绘的组件中的一者或多者可被配置成执行本文所描述的方法的各个方面。
一般而言,处理系统1000和/或其组件可被配置成执行本文所描述的方法。
值得注意的是,在其他实施例中,处理系统1000的各方面可被略去,诸如在处理系统1000是服务器计算机等的情况下。例如,在其他实施例中,多媒体组件1010、无线连通性1012、传感器1016、ISP 1018和/或导航组件1020可被略去。此外,处理系统1000的各方面可以是分布式的。
注意,图10仅仅是一个示例,并且在其他示例中可使用具有更多、更少和/或不同组件的替换处理系统。
示例条款
在以下经编号条款中描述了各实现示例:
条款1:一种处理器,包括:可配置非线性激活函数电路,该可配置非线性激活函数电路被配置成:确定用于应用于输入数据的非线性激活函数;基于所确定的非线性激活函数来确定用于该非线性激活函数的参数集;以及基于用于该非线性激活函数的参数集的应用来生成输出数据。
条款2:如条款1的处理器,其中该可配置非线性激活函数电路包括:第一近似器,该第一近似器被配置成使用该参数集的一个或多个第一函数参数来近似第一函数;第二近似器,该第二近似器被配置成使用该参数集中的一个或多个第二函数参数来近似第二函数;增益乘法器,该增益乘法器被配置成基于该参数集中的一个或多个增益参数来乘以增益值;以及常数加法器,该常数加法器被配置成基于该参数集中的常数参数来加上常数值。
条款3:如条款2的处理器,其中第一近似器和第二近似器中的至少一者是三次近似器。
条款4:如条款3的处理器,其中第一近似器和第二近似器中的另一者是二次近似器或线性近似器中的一者。
条款5:如条款2的处理器,其中第一近似器和第二近似器两者是三次近似器。
条款6:如条款3的处理器,其中第一近似器和第二近似器中的另一者被配置成访问查找表以寻找近似值。
条款7:如条款3的处理器,其中第一近似器和第二近似器中的另一者被配置成执行最小或最大函数。
条款8:如条款2的处理器,其中:所确定的非线性激活函数包括swish函数,增益参数包括从属参数值1和独立参数值0,常数值为0,第一函数为二次函数,并且第二函数为sigmoid查找表。
条款9:如条款2的处理器,其中:所确定的非线性激活函数包括硬swish函数,增益参数包括从属参数值1/6和独立参数值0,常数值为3,第一函数为max函数,并且第二函数为min函数。
条款10:如条款2的处理器,其中:所确定的非线性激活函数包括双曲正切(tanh)函数,增益参数包括从属参数值0和独立参数值1,常数值为0,第一函数为二次函数,并且第二函数为tanh查找表。
条款11:如条款2的处理器,其中:所确定的非线性激活函数包括sigmoid函数,增益参数包括从属参数值0和独立参数值1,常数值为0,第一函数为线性函数,并且第二函数为sigmoid查找表。
条款12:如条款2的处理器,其中:所确定的非线性激活函数包括高斯误差线性单元(GELU)函数,增益参数包括从属参数值0和独立参数值1,常数值为1,第一函数为三次函数,并且第二函数为tanh查找表。
条款13:如条款2的处理器,其中:所确定的非线性激活函数包括整流线性单元(ReLU)函数,增益参数包括从属参数值0和独立参数值1,常数值为0,第一函数为二次函数,并且第二函数为max函数。
条款14:如条款2的处理器,其中:所确定的非线性激活函数包括整流线性单元六(ReLU)函数,增益参数包括从属参数值0和独立参数值1,常数值为0,第一函数为max函数,并且第二函数为min函数。
条款15:如条款2的处理器,其中:所确定的非线性激活函数包括指数线性单元(ELU)函数,增益参数包括从属参数值0和独立参数值α,常数值为0,第一函数在输入数据值≥0的情况下为二次函数;或者在输入数据值<0的情况下被绕过;第二函数在输入数据值≥0的情况下被绕过;或者在输入数据值<0的情况下为指数查找表。
条款16:如条款1-15中任一项的处理器,进一步包括:输入存储器缓冲器,该输入存储器缓冲器被配置成将从处理电路接收的一个或多个输出存储为输入数据;以及输出存储器缓冲器,该输出存储器缓冲器被配置成存储所生成的输出数据以供从可配置非线性激活函数电路输出。
条款17:如条款1-16中任一项的处理器,进一步包括:存储器内计算阵列,该存储器内计算阵列被配置成向可配置非线性激活函数电路提供输入数据。
条款18:一种用于由可配置非线性激活函数电路来处理输入数据的方法,包括:确定用于应用于输入数据的非线性激活函数;基于所确定的非线性激活函数来确定用于可配置非线性激活函数电路的参数集;以及基于该参数集利用可配置非线性激活函数电路来处理输入数据以生成输出数据。
条款19:如条款18的方法,进一步包括:基于所确定的非线性激活函数从存储器中检索参数集。
条款20:如条款18的方法,其中该参数集包括要经由可配置非线性激活函数电路应用于输入数据的一个或多个增益参数、常数参数和一个或多个近似函数的组合。
条款21:如条款20的方法,其中该可配置非线性激活函数电路包括:第一近似器,该第一近似器被配置成近似该一个或多个近似函数中的第一函数;第二近似器,该第二近似器被配置成近似该一个或多个近似函数中的第二函数;第一增益乘法器,该第一增益乘法器被配置成基于一个或多个增益参数乘以第一增益值;以及常数加法器,该常数加法器被配置成基于常数参数来加上常数值。
条款22:如条款21的方法,其中该可配置非线性激活函数电路进一步包括:第一旁路,该第一旁路被配置成绕过第一近似器;第二旁路,该第二旁路被配置成绕过第二近似器;以及输入数据旁路,该输入数据旁路被配置成绕过第一近似器并且向第二近似器提供输入数据。
条款23:如条款22的方法,其中第一近似器和第二近似器中的至少一者是三次近似器。
条款24:如条款23的方法,其中第一近似器和第二近似器中的另一者是二次近似器或线性近似器中的一者。
条款25:如条款23的方法,其中第一近似器和第二近似器两者是三次近似器。
条款26:如条款23的方法,其中第一近似器和第二近似器中的另一者被配置成访问查找表以寻找近似值。
条款27:如条款23的方法,其中第一近似器和第二近似器中的另一者被配置成执行min或max函数。
条款28:如条款21的方法,其中:所确定的非线性激活函数包括swish函数,增益参数包括从属参数值1和独立参数值0,常数值为0,第一函数为二次函数,并且第二函数为sigmoid查找表。
条款29:如条款21的方法,其中:所确定的非线性激活函数包括硬swish函数,增益参数包括从属参数值1/6和独立参数值0,常数值为3,第一函数为max函数,并且第二函数为min函数。
条款30:如条款21的方法,其中:所确定的非线性激活函数包括高斯误差线性单元(GELU)函数,增益参数包括从属参数值0和独立参数值1,常数值为1,第一函数为三次函数,并且第二函数为tanh查找表。
条款31:如条款21的方法,其中:所确定的非线性激活函数包括双曲正切(tanh)函数,增益参数包括从属参数值0和独立参数值1,常数值为0,第一函数为二次函数,并且第二函数为tanh查找表。
条款32:如条款21的方法,其中:所确定的非线性激活函数包括sigmoid函数,增益参数包括从属参数值0和独立参数值1,常数值为0,第一函数为线性函数,并且第二函数为sigmoid查找表。
条款33:如条款21的方法,其中:所确定的非线性激活函数包括整流线性单元(ReLU)函数,增益参数包括从属参数值0和独立参数值1,常数值为0,第一函数为二次函数,并且第二函数为max函数。
条款34:如条款21的方法,其中:所确定的非线性激活函数包括整流线性单元六(ReLU)函数,增益参数包括从属参数值0和独立参数值1,常数值为0,第一函数为max函数,并且第二函数为min函数。
条款35:如条款21的方法,其中:所确定的非线性激活函数包括指数线性单元(ELU)函数,增益参数包括从属参数值0和独立参数值α,常数值为0,第一函数在输入数据值≥0的情况下为二次函数;或者在输入数据值<0的情况下被绕过;第二函数在输入数据值≥0的情况下被绕过;或者在输入数据值<0的情况下为指数查找表。
条款36:如条款21的方法,进一步包括:从存储器内计算(CIM)阵列接收输入数据。
条款37:一种被配置成根据表1的任何配置来处理非线性激活函数的可配置非线性激活函数电路。
条款38:一种电路块,包括:可配置非线性激活函数电路;以及可选择旁路。
条款39:如条款38的电路块,其中该可配置非线性激活函数电路被配置成根据表1的任何配置来处理非线性激活函数。
条款40:如条款38的电路块,其中该电路块可以根据表2的任何配置来配置。
条款41:一种处理器,包括:可配置非线性激活函数电路,该可配置非线性激活函数电路被配置成:基于所选非线性激活函数来确定用于所选非线性激活函数的参数集;以及基于用于所选非线性激活函数的参数集的应用来生成输出数据,其中:可配置非线性激活函数电路包括至少一个非线性近似器,该至少一个非线性近似器包括至少两个相继线性近似器,并且该至少两个相继线性近似器中的每个线性近似器被配置成使用该参数集中的一个或多个函数参数来近似线性函数。
条款42:如条款41的处理器,其中该至少两个相继线性近似器中的每个线性近似器包括:级输入;系数输入;常数输入;以及级输出。
条款43:如条款41-42中任一项的处理器,其中至少一个非线性近似器包括具有三个相继线性近似器的三次近似器。
条款44:如条款41-43中任一项的处理器,其中该至少一个非线性近似器包括具有两个相继线性近似器的二次近似器。
条款45:如条款42的处理器,其中:该至少一个非线性近似器进一步包括区域查找器组件,该区域查找器组件被配置成确定输入值区域,并且该至少两个相继线性近似器中的每个线性近似器被进一步配置成基于该输入值区域来确定系数输入和常数输入。
条款46:如条款41-45中任一项的处理器,其中该至少一个非线性近似器进一步包括符号和偏移校正器组件,该符号和偏移校正器组件被配置成修改来自该至少两个相继线性近似器中的至少一个线性近似器的级输出。
条款47:如条款46的处理器,其中该符号和偏移校正器组件被进一步配置成反转级输出的符号,以便修改来自该至少两个相继线性近似器中的至少一个线性近似器的级输出。
条款48:如条款46的处理器,其中该符号和偏移校正器组件被进一步配置成向该级输出添加偏移,以便修改来自该至少两个相继线性近似器中的至少一个线性近似器的级输出。
条款49:如条款41-48中任一项的处理器,其中该至少两个相继线性近似器中的每个线性近似器被进一步配置成至少部分地基于选择函数近似的一个或多个非均匀分段来选择一个或多个函数参数,以便针对该至少两个相继线性近似器中的每个线性近似器使用该参数集中的一个或多个函数参数来近似线性函数。
条款50:一种用于利用可配置非线性激活函数电路来处理数据的方法,包括:基于所选非线性激活函数来确定用于所选非线性激活函数的参数集;以及基于用于所选非线性激活函数的参数集的应用来生成输出数据,其中:可配置非线性激活函数电路包括至少一个非线性近似器,该至少一个非线性近似器包括至少两个相继线性近似器,并且该至少两个相继线性近似器中的每个线性近似器被配置成使用该参数集中的一个或多个函数参数来近似线性函数。
条款51:如条款50的方法,其中该至少两个相继线性近似器中的每个线性近似器包括:级输入;系数输入;常数输入;以及级输出。
条款52:如条款50或51中任一项的方法,其中至少一个非线性近似器包括具有三个相继线性近似器的三次近似器。
条款53:如条款50-52中任一项的方法,其中该至少一个非线性近似器包括具有两个相继线性近似器的二次近似器。
条款54:如条款51的方法,其中,该至少一个非线性近似器进一步包括区域查找器组件,该区域查找器组件被配置成确定输入值区域,并且该至少两个相继线性近似器中的每个线性近似器被进一步配置成基于该输入值区域来确定系数输入和常数输入。
条款55:如条款50-54中任一项的方法,进一步包括:使用符号和偏移校正器组件来修改来自该至少两个相继线性近似器中的至少一个线性近似器的级输出。
条款56:如条款55的方法,进一步包括:使用符号和偏移校正器组件来反转级输出的符号,以便修改来自该至少两个相继线性近似器中的至少一个线性近似器的级输出。
条款57:如条款55的方法,进一步包括:使用符号和偏移校正器组件来向级输出添加偏移,以便修改来自该至少两个相继线性近似器中的至少一个线性近似器的级输出。
条款58:如条款50-57中任一项的方法,其中该至少两个相继线性近似器中的每个线性近似器被进一步配置成至少部分地基于选择函数近似的一个或多个非均匀分段来选择一个或多个函数参数,以便针对该至少两个相继线性近似器中的每个线性近似器使用该参数集中的一个或多个函数参数来近似线性函数。
条款59:一种处理系统,包括:包括计算机可执行指令的存储器;以及一个或多个处理器,该一个或多个处理器被配置成执行计算机可执行指令并使该处理系统执行根据条款18-36或50-58中任一项的方法。
条款60:一种处理系统,包括用于执行根据条款18-36或50-58中任一项的方法的装置。
条款61:一种包括计算机可执行指令的非瞬态计算机可读介质,这些计算机可执行指令在由处理系统的一个或多个处理器执行时使该处理系统执行根据条款18-36或50-58中任一项的方法。
条款62:一种实施在计算机可读存储介质上的计算机程序产品,包括用于执行根据条款18-36或50-58中任一项的方法的代码。
附加考虑
提供先前描述是为了使本领域任何技术人员均能够实践本文中所描述的各个实施例。本文所讨论的示例并非是对权利要求中阐述的范围、适用性或者实施例的限定。对这些实施例的各种修改将容易为本领域技术人员所明白,并且在本文中所定义的普适原理可被应用于其他实施例。例如,可以对所讨论的要素的功能和布置作出改变而不会脱离本公开的范围。各种示例可恰适地省略、替代、或添加各种规程或组件。例如,可以按与所描述的次序不同的次序来执行所描述的方法,并且可以添加、省略、或组合各种步骤。而且,参照一些示例所描述的特征可在一些其他示例中被组合。例如,可使用本文中所阐述的任何数目的方面来实现装置或实践方法。另外,本公开的范围旨在覆盖使用作为本文中所阐述的本公开的各个方面的补充或者不同于本文中所阐述的本公开的各个方面的其他结构、功能性、或者结构及功能性来实践的此类装置或方法。应当理解,本文中所披露的本公开的任何方面可由权利要求的一个或多个元素来实施。
如本文所使用的,术语“示例性”意指“用作示例、实例或解说”。本文中描述为“示例性”的任何方面不必被解释为优于或胜过其他方面。
如本文中所使用的,引述一列项目“中的至少一者”的短语是指这些项目的任何组合,包括单个成员。作为示例,“a、b或c中的至少一者”旨在涵盖:a、b、c、a-b、a-c、b-c、和a-b-c,以及具有多重相同元素的任何组合(例如,a-a、a-a-a、a-a-b、a-a-c、a-b-b、a-c-c、b-b、b-b-b、b-b-c、c-c、和c-c-c,或者a、b和c的任何其他排序)。
如本文所使用的,术语“确定”涵盖各种各样的动作。例如,“确定”可包括演算、计算、处理、推导、研究、查找(例如,在表、数据库或另一数据结构中查找)、查明及诸如此类。而且,“确定”可以包括接收(例如,接收信息)、访问(例如,访问存储器中的数据)及诸如此类。而且,“确定”可包括解析、选择、选取、建立及诸如此类。
如本文所使用的,在本文中描述的各元件之间共享电子信号和数据的上下文中,术语“连接到”一般可以指处于在彼此连接的相应元件之间的数据通信。在一些情形中,元件可以彼此直接连接,诸如经由一条或多条导电迹线、线路或能够在彼此直接连接的相应元件之间承载信号和/或数据的其他导电载体。在其他情形中,元件可以彼此间接连接,诸如经由用于在彼此间接连接的相应元件之间传达信号和数据的一条或多条数据总线或类似的共享电路系统和/或集成电路元件。
本文中所公开的各方法包括用于实现方法的一个或多个步骤或动作。这些方法步骤和/或动作可以彼此互换而不会脱离权利要求的范围。换言之,除非指定了步骤或动作的特定次序,否则具体步骤和/或动作的次序和/或使用可以改动而不会脱离权利要求的范围。此外,上述方法的各种操作可由能够执行相应功能的任何合适的装置来执行。这些装置可包括各种硬件和/或软件组件和/或模块,包括但不限于电路、专用集成电路(ASIC)、或处理器。一般地,在存在附图中解说的操作的场合,这些操作可具有带相似编号的相应配对装置加功能组件。
以下权利要求并非旨在被限定于本文中示出的实施例,而是应被授予与权利要求的语言相一致的全部范围。在权利要求内,对单数元素的引用不旨在意指“有且只有一个”(除非专门如此声明),而是“一个或多个”。除非特别另外声明,否则术语“一些/某个”指的是一个或多个。权利要求的任何要素都不应当在35U.S.C.§112(f)的规定下来解释,除非该要素是使用短语“用于……的装置”来明确叙述的或者在方法权利要求情形中该要素是使用短语“用于……的步骤”来叙述的。本公开通篇描述的各个方面的要素为本领域普通技术人员当前或今后所知的所有结构上和功能上的等效方案通过引述被明确纳入于此,且旨在被权利要求所涵盖。此外,本文所公开的任何内容都不旨在捐献于公众,无论此类公开内容是否明确记载在权利要求书中。
Claims (27)
1.一种处理器,包括:
可配置非线性激活函数电路,所述可配置非线性激活函数电路被配置成:
基于所选非线性激活函数来确定用于所选非线性激活函数的参数集;以及
基于用于所选非线性激活函数的所述参数集的应用来生成输出数据,
其中:
所述可配置非线性激活函数电路包括至少一个非线性近似器,所述至少一个非线性近似器包括至少两个相继线性近似器,并且
所述至少两个相继线性近似器中的每个线性近似器被配置成使用所述参数集的一个或多个函数参数来近似线性函数。
2.如权利要求1所述的处理器,其中所述至少两个相继线性近似器中的每个线性近似器包括:
级输入;
系数输入;
常数输入;以及
级输出。
3.如权利要求1所述的处理器,其中至少一个非线性近似器包括具有三个相继线性近似器的三次近似器。
4.如权利要求1所述的处理器,其中所述至少一个非线性近似器包括具有两个相继线性近似器的二次近似器。
5.如权利要求2所述的处理器,其中:
所述至少一个非线性近似器进一步包括区域查找器组件,所述区域查找器组件被配置成确定输入值区域,并且
所述至少两个相继线性近似器中的每个线性近似器被进一步配置成基于所述输入值区域来确定所述系数输入和常数输入。
6.如权利要求1所述的处理器,其中所述至少一个非线性近似器进一步包括符号和偏移校正器组件,所述符号和偏移校正器组件被配置成修改来自所述至少两个相继线性近似器中的至少一个线性近似器的级输出。
7.如权利要求6所述的处理器,其中所述符号和偏移校正器组件被进一步配置成反转所述级输出的符号,以便修改来自所述至少两个相继线性近似器中的所述至少一个线性近似器的所述级输出。
8.如权利要求6所述的处理器,其中所述符号和偏移校正器组件被进一步配置成向所述级输出添加偏移,以便修改来自所述至少两个相继线性近似器中的所述至少一个线性近似器的所述级输出。
9.如权利要求1所述的处理器,其中所述至少两个相继线性近似器中的每个线性近似器被进一步配置成至少部分地基于选择函数近似的一个或多个非均匀分段来选择所述一个或多个函数参数,以便针对所述至少两个相继线性近似器中的每个线性近似器使用所述参数集中的一个或多个函数参数来近似线性函数。
10.一种用于利用可配置非线性激活函数电路来处理数据的方法,包括:
基于所选非线性激活函数来确定用于所选非线性激活函数的参数集;以及
基于用于所选非线性激活函数的所述参数集的应用来生成输出数据,
其中:
所述可配置非线性激活函数电路包括至少一个非线性近似器,所述至少一个非线性近似器包括至少两个相继线性近似器,并且
所述至少两个相继线性近似器中的每个线性近似器被配置成使用所述参数集的一个或多个函数参数来近似线性函数。
11.如权利要求10所述的方法,其中所述至少两个相继线性近似器中的每个线性近似器包括:
级输入;
系数输入;
常数输入;以及
级输出。
12.如权利要求10所述的方法,其中至少一个非线性近似器包括具有三个相继线性近似器的三次近似器。
13.如权利要求10所述的方法,其中所述至少一个非线性近似器包括具有两个相继线性近似器的二次近似器。
14.如权利要求11所述的方法,其中:
所述至少一个非线性近似器进一步包括区域查找器组件,所述区域查找器组件被配置成确定输入值区域,并且
所述至少两个相继线性近似器中的每个线性近似器被进一步配置成基于所述输入值区域来确定所述系数输入和常数输入。
15.如权利要求10所述的方法,进一步包括:使用符号和偏移校正器组件来修改来自所述至少两个相继线性近似器中的至少一个线性近似器的级输出。
16.如权利要求15所述的方法,进一步包括:使用所述符号和偏移校正器组件来反转所述级输出的符号,以便修改来自所述至少两个相继线性近似器中的所述至少一个线性近似器的所述级输出。
17.如权利要求15所述的方法,进一步包括:使用所述符号和偏移校正器组件来向所述级输出添加偏移,以便修改来自所述至少两个相继线性近似器中的所述至少一个线性近似器的所述级输出。
18.如权利要求10所述的方法,其中所述至少两个相继线性近似器中的每个线性近似器被进一步配置成至少部分地基于选择函数近似的一个或多个非均匀分段来选择所述一个或多个函数参数,以便针对所述至少两个相继线性近似器中的每个线性近似器使用所述参数集中的一个或多个函数参数来近似线性函数。
19.一种包括计算机可执行指令的非瞬态计算机可读介质,所述计算机可执行指令在由包括可配置非线性激活函数电路的处理器执行时使所述处理器执行方法,所述方法包括:
基于所选非线性激活函数来确定用于所选非线性激活函数的参数集;以及
基于用于所选非线性激活函数的所述参数集的应用来生成输出数据,
其中:
所述可配置非线性激活函数电路包括至少一个非线性近似器,所述至少一个非线性近似器包括至少两个相继线性近似器,并且
所述至少两个相继线性近似器中的每个线性近似器被配置成使用所述参数集的一个或多个函数参数来近似线性函数。
20.如权利要求19所述的非瞬态计算机可读介质,其中所述至少两个相继线性近似器中的每个线性近似器包括:
级输入;
系数输入;
常数输入;以及
级输出。
21.如权利要求19所述的非瞬态计算机可读介质,其中至少一个非线性近似器包括具有三个相继线性近似器的三次近似器。
22.如权利要求19所述的非瞬态计算机可读介质,其中所述至少一个非线性近似器包括具有两个相继线性近似器的二次近似器。
23.如权利要求20所述的非瞬态计算机可读介质,其中:
所述至少一个非线性近似器进一步包括区域查找器组件,所述区域查找器组件被配置成确定输入值区域,并且
所述至少两个相继线性近似器中的每个线性近似器被进一步配置成基于所述输入值区域来确定所述系数输入和常数输入。
24.如权利要求19所述的非瞬态计算机可读介质,其中所述方法进一步包括:使用符号和偏移校正器组件来修改来自所述至少两个相继线性近似器中的至少一个线性近似器的级输出。
25.如权利要求24所述的非瞬态计算机可读介质,其中所述方法进一步包括:使用所述符号和偏移校正器组件来反转所述级输出的符号,以便修改来自所述至少两个相继线性近似器中的所述至少一个线性近似器的所述级输出。
26.如权利要求24所述的非瞬态计算机可读介质,其中所述方法进一步包括:使用所述符号和偏移校正器组件来向所述级输出添加偏移,以便修改来自所述至少两个相继线性近似器中的所述至少一个线性近似器的所述级输出。
27.如权利要求19所述的非瞬态计算机可读介质,其中所述至少两个相继线性近似器中的每个线性近似器被进一步配置成至少部分地基于选择函数近似的一个或多个非均匀分段来选择所述一个或多个函数参数,以便针对所述至少两个相继线性近似器中的每个线性近似器使用所述参数集中的一个或多个函数参数来近似线性函数。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/467,079 | 2021-09-03 | ||
US17/807,125 US20230083597A1 (en) | 2021-09-03 | 2022-06-15 | Configurable nonlinear activation function circuits |
US17/807,125 | 2022-06-15 | ||
PCT/US2022/075270 WO2023034698A1 (en) | 2021-09-03 | 2022-08-22 | Configurable nonlinear activation function circuits |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117897698A true CN117897698A (zh) | 2024-04-16 |
Family
ID=86904379
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202280058044.2A Pending CN117897698A (zh) | 2021-09-03 | 2022-08-22 | 可配置非线性激活函数电路 |
Country Status (3)
Country | Link |
---|---|
CN (1) | CN117897698A (zh) |
TW (1) | TW202401280A (zh) |
WO (1) | WO2023244905A1 (zh) |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11687762B2 (en) * | 2018-02-27 | 2023-06-27 | Stmicroelectronics S.R.L. | Acceleration unit for a deep learning engine |
-
2022
- 2022-08-22 CN CN202280058044.2A patent/CN117897698A/zh active Pending
-
2023
- 2023-05-26 WO PCT/US2023/067576 patent/WO2023244905A1/en unknown
- 2023-05-29 TW TW112119895A patent/TW202401280A/zh unknown
Also Published As
Publication number | Publication date |
---|---|
WO2023244905A1 (en) | 2023-12-21 |
TW202401280A (zh) | 2024-01-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20190065190A1 (en) | Apparatus and Methods for Matrix Multiplication | |
US11531860B2 (en) | Apparatus and method for executing recurrent neural network and LSTM computations | |
CN110009092A (zh) | 用于深度神经网络的激活函数 | |
CN111667051A (zh) | 适用边缘设备的神经网络加速器及神经网络加速计算方法 | |
US20190065938A1 (en) | Apparatus and Methods for Pooling Operations | |
EP3444757B1 (en) | Discrete data representation supported device and method for forward operation of artificial neural network | |
WO2019055224A1 (en) | SYSTEM AND METHOD FOR IMPLEMENTING NEURAL NETWORKS IN INTEGRATED CIRCUITS | |
CN109472361B (zh) | 神经网络优化方法 | |
EP4318275A1 (en) | Matrix multiplier and method for controlling matrix multiplier | |
KR20210070262A (ko) | 파이프라인 구조를 가지는 인공신경망용 연산 가속 장치 | |
GB2604142A (en) | Implementation of softmax and exponential in hardware | |
US20230083597A1 (en) | Configurable nonlinear activation function circuits | |
US20230078203A1 (en) | Configurable nonlinear activation function circuits | |
CN117897698A (zh) | 可配置非线性激活函数电路 | |
US20230025068A1 (en) | Hybrid machine learning architecture with neural processing unit and compute-in-memory processing elements | |
US20190095783A1 (en) | Deep learning apparatus for ann having pipeline architecture | |
US20230086802A1 (en) | Eliminating memory bottlenecks for depthwise convolutions | |
KR20240036594A (ko) | 인-메모리 연산을 위한 부분 합 관리 및 재구성가능 시스톨릭 플로우 아키텍처들 | |
TW202324205A (zh) | 用於分階段逐深度迴旋的記憶體內計算架構 | |
TW202324075A (zh) | 折疊用於數位記憶體內計算的列加法器架構 | |
CN117063183A (zh) | 激活函数的高效压缩 | |
US20230185533A1 (en) | Configurable nonlinear activation function circuits | |
CN113887714A (zh) | 用于在硬件中运行动态循环神经网络的方法和系统 | |
US20240111525A1 (en) | Multiplication hardware block with adaptive fidelity control system | |
Cain et al. | Convolution processing unit featuring adaptive precision using dynamic reconfiguration |
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 |