CN116783577A - 用于归一化函数的数字电路 - Google Patents
用于归一化函数的数字电路 Download PDFInfo
- Publication number
- CN116783577A CN116783577A CN202280010602.8A CN202280010602A CN116783577A CN 116783577 A CN116783577 A CN 116783577A CN 202280010602 A CN202280010602 A CN 202280010602A CN 116783577 A CN116783577 A CN 116783577A
- Authority
- CN
- China
- Prior art keywords
- input
- output
- exponent
- mantissa
- value
- 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
- 230000006870 function Effects 0.000 title description 21
- 238000013528 artificial neural network Methods 0.000 description 23
- 238000000034 method Methods 0.000 description 20
- 238000012545 processing Methods 0.000 description 9
- 238000010606 normalization Methods 0.000 description 8
- 238000012549 training Methods 0.000 description 6
- 238000004364 calculation method Methods 0.000 description 5
- 230000004913 activation Effects 0.000 description 3
- 238000001994 activation Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/01—Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
- G06F5/012—Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising in floating-point computations
-
- 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
- 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/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
-
- 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)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Optimization (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biophysics (AREA)
- Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Computational Linguistics (AREA)
- Neurology (AREA)
- Artificial Intelligence (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Nonlinear Science (AREA)
- Analogue/Digital Conversion (AREA)
- Complex Calculations (AREA)
Abstract
本公开包括生成二(2)的幂次方的输入值次方的值的数字电路。例如,数字电路可以包括组合逻辑,该组合逻辑接收表示输入值的输入尾数的第一数字位和表示输入值的输入指数的第二数字位。该组合逻辑生成多个输出尾数和多个输出指数,该多个输出尾数和多个输出指数与当输入值为正和负并且当输入指数高于和低于第一值时二(2)的幂次方的输入值次方的近似值相对应。选择电路被配置为接收输出尾数和输出指数。选择电路包括被耦合到输入值的输入指数和输入符号位的选择控制输入以选择输出尾数中的一个输出尾数和一个输出指数。
Description
背景技术
本公开涉及计算,并且更具体地涉及用于归一化函数的数字电路。
人工神经网络(在下文中,神经网络)已普遍地在人工智能应用和现代计算中变得越来越重要。在图1中示出了示例神经网络。神经网络100接收与待识别的特征相对应的输入值。输入值乘以权重(用边101表示),并且在节点102中相加在一起(例如,求和)。将激活函数应用于节点102中的结果以生成输出值。将该值跨多个节点和节点的层进行组合以产生与结果相对应的网络输出值。
这样的系统通过考虑示例来“学习”执行任务,通常不需要利用任务特定的规则进行编程。最初,权重可以是未经训练的。在训练阶段期间,对应的已知结果的输入值由网络处理,并且将网络输出值之间的差异(或者,误差)与已知值进行比较。可以使用被称为反向传播的处理,基于误差来调整权重,其中计算以相反的方向进行(例如,从输出到输入)。训练可以涉及在许多输入样本和对应的已知网络输出值之间连续调整权重。这通常被称为训练阶段。一旦被训练,系统可以接收输入并产生有意义的结果(例如,分类或识别)。这通常被称为推理阶段。
随着神经网络的普及度越来越高,神经网络被用来解决的问题的复杂度也越来越高。随着问题复的杂度增加,神经网络的规模和计算复杂度也随之增加。神经网络中一个常见且非常耗时的操作是归一化。例如,当激活和权重跨网络的各个节点相乘和求和时,通常会对结果进行归一化。Softmax就是这样的归一化函数的示例。例如,Softmax可以用作神经网络的最后一个激活函数,以将网络的输出归一化为预测输出分类上的概率分布。然而,归一化函数通常需要复杂的数值计算,这可能会减慢网络的速度。本文中所呈现的公开提供了可以更有效地用于归一化函数(和其他应用)的数字电路和处理技术。
下面在具体实施方式中描述了各个实施例、示例和优点。
附图说明
本公开的各个实施例通过示例而非限制的方式在附图的图中进行说明。
图1图示了示例神经网络。
图2图示了根据实施例的数字电路。
图3图示了根据另一实施例的数字电路。
图4图示了根据另一实施例的用于生成2x的近似的示例数字电路。
图5A图示了根据另一实施例的用于生成4x的近似的示例数字电路。
图5B图示了根据另一实施例的用于生成4x的近似的另一示例数字电路。
图6图示了根据实施例的归一化系统。
图7图示了根据实施例的方法。
图8图示了根据一些实施例的神经网络处理系统。
具体实施方式
在以下描述中,处于解释的目的,阐述了许多示例和具体细节,以便提供本公开的全面理解。这样的示例和细节不应被解读为不适当地限制权利要求的要素或作为整体的所要求保护的主题。基于不同权利要求的言语,对于本领域技术人员来说显而易见的是,所要求保护的主题可以单独或组合地包括这些示例中的一些或全部特征,并且还可以包括本文中所所描述的特征和技术的修改和等同物。
本公开的特征和优点包括接收输入值(例如,浮点数)并产生对应于二(2)的幂次方(例如,2、4、……)的输入值x次方的近似值(例如,2x、4x、……)的输出值的数字电路。正如下面更详细描述的,Softmax函数可以使用这样的函数进行近似。有利的,这样的功能可以在组合数字逻辑中实现,例如,其可能能够在不等待多个时钟周期的情况下生成输出。因此,与其中输出不仅依赖于当前输入,而且还依赖于先前输入(例如,存储数据)的顺序逻辑相反,一些示例实施例可以能够仅基于当前输入来生成输出。这可以产生更快、更低延迟的系统,其例如可以实现Softmax函数的许多近似。
图2图示了根据实施例的数字电路200。电路200接收以浮点表示的输入值201。输入值(Xi)201包括以数字位表示的输入指数(ex)、输入尾数(mx)和输入符号位(sx)。数字电路200包括组合逻辑210,其接收表示输入尾数mx的数字位和表示输入指数ex的数字位,并且生成多个输出尾数和多个输出指数250,其对应于二(2)的幂次方的输入值次方的近似值。在一个示例实施例中,组合逻辑210生成输入尾数的多个移位版本,其中输入尾数基于输入指数移位以产生输出尾数和输出指数。有利地,可以跨四个象限生成单独的输出尾数和输出指数,例如,当输入值为正或负以及当输入指数高于或低于第一值时。
数字电路200还包括选择电路220。选择电路220被配置为接收输出尾数和输出指数250,并且产生一个最终输出尾数251和一个最终输出指数252。因此,本公开的实施例例如可以包括两个或更多个选择电路(诸如,选择电路220中的多路复用器)。选择电路220可以包括耦合到输入值(Xi)的输入指数和输入符号位的选择控制输入。如在此和下面进一步的实施例中所说明的,本公开的特征包括基于输入指数和输入符号位来选择输出尾数中的一个输出尾数作为最终输出尾数251并选择输出指数中的一个输出指数作为最终输出指数252。由于数字电路200实现了二(2)的幂次方的输入值次方的近似值(例如,Nx,N=2、4、8、16、……),因此输出符号位为常数值1,并且可以在例如230处硬连接。因此,数字电路200所生成的输出值(Yi)202也可以是包括指数(ey)、尾数(my)与符号位(sy)的浮点值。有利地,在一些实施例中,输入值(Xi)流可以非常快速地被转换成输出值(Yi)(例如,在每一个时钟周期内),以便高效地计算Softmax函数的近似。
图3图示了根据另一实施例的数字电路。本公开的特征和优点包括基于指数来移位输入值的尾数以产生输出尾数和输出指数,然后可以基于输入指数和输入符号位来选择该输出尾数和输出指数。在该示例中,数字电路314接收包括输入符号位、输入指数和输入尾数的输入值312,并且产生大约等于二(2)的幂次方的输入值次方(例如,2x、4x)的输出值316,该输出值316包括输出符号位、输出指数和输出尾数。数字电路314包括组合逻辑320,其在该示例中包括移位器电路322。例如,多个移位器电路可以在输入尾数和输入指数中接收。本公开的特征和优点包括基于输入指数332来移位输入尾数330,以产生多个输出尾数336和输出指数338,这些输出尾数336和输出指数338耦合到选择电路326和328,以基于输入符号位334和输入指数332来选择一个输出尾数/指数对作为最终输出。移位器电路可以产生输入尾数的左移和右移位版本。例如,右移位器电路可以包括通过被配置为将输入尾数与常数相加的逻辑电路耦合到输入尾数330的第一输入,以及通过被配置为对输入指数取反的逻辑电路耦合到输入指数332的移位输入。附加地,第一左移位器电路可以包括例如耦合以接收输入尾数330的第一输入以及耦合到输入指数332的移位输入。输入尾数的右移位版本可以用于形成第一输出尾数和第二输出尾数,输入尾数的左移位版本的较低位可以用于形成第三输出尾数和第四输出尾数。此外,输入尾数的左移位版本的较高位可用于形成第一输出指数和第二输出指数。下面提供了这些技术的进一步示例和说明。
在一些示例实施例中,移位器电路是桶形移位器电路,它是数字电路,可以使用组合逻辑(例如,不使用任何顺序逻辑和来自随时间存储数据的相关延迟)将数据字移位指定位数的位。例如,在期望在单个时钟周期上获得结果的应用中,桶形移位器可以是有利的。
每个输出尾数336可以具有相关联的输出指数338,例如,对应于输入指数332和输入符号位334的特定值对(例如,sx大于或小于1,和ex大于或小于0或-1的4组元组)。选择电路326和328由输入指数332和输入符号位334控制。相应地,基于输入指数332和输入符号位334,可以从多个输出尾数336和输出指数338选择最终输出尾数340和最终输出指数342。
因此,选择电路326可以基于输入符号位和输入指数,产生不同的输出尾数,并且选择电路328可以产生不同的输出指数。第一,当输入符号位为正且输入指数小于第一值(例如,0或-1)时,选择电路326和328可以产生最终输出尾数,该最终输出尾数包括输入尾数与常数之和的移位版本,以及输出指数,该输出指数具有零值(0)。第二,当输入符号位为正且输入指数大于第一值时,选择电路326和328可以产生最终输出尾数,该最终输出尾数包括输入尾数的另一移位版本的模数,以及最终输出指数,该最终输出指数具有基于输入指数而移位的一(1)与输入尾数的移位版本的整除相加的数字值。第三,当输入符号位为负且输入指数小于第一值时,选择电路326和328可以产生最终输出尾数,该最终输出尾数包括从第二常数减去输入尾数与常数之和的第一移位版本,以及最终输出指数,该最终输出指数具有负一(-1)值。最后,当输入符号位为负且输入指数大于第一值时,选择电路326和328可以产生最终输出尾数,该最终输出尾数包括从第二常数减去输入尾数的第二移位版本的模数,以及第二输出指数的取反减一(1)。下面提供了上述技术的各个示例实现和进一步的说明。
示例实现
图4图示了根据另一实施例用于的生成2x的近似的示例数字电路400。数字电路400包括右移位器电路410、左移位器电路412和左移位器电路414。输入尾数450耦合到加法器电路402。加法器电路402进一步接收常数(N)401,并且输出输入尾数与常数(N)之和。例如,对于可以取0到128(mx,0≤mx<128)之间值的输入尾数,常数N可以等于128。在各个实施例中,加法器402可以被替换为OR逻辑进行实现(例如,128OR mx),例如,如下面进一步示例所图示的。加法器402的输出耦合到右移器410的输入。控制移位操作的右移位器410的移位输入通过取反电路(-x)408耦合到输入指数451,该取反电路接收输入指数(ex)并产生输入指数的负值(-ex)。例如,右移位器电路410可以产生输入尾数450的右移位版本,其值在0到128之间,如下所示:
(128+mx)>>-(ex)
在输入符号位是+1且输入指数小于零(0)的情况下,上述输入尾数的右移器版本是值为2x的第一输出尾数460。
输入尾数450也耦合到左移器412的输入。左移位器412的移位输入耦合到输入指数451。相应地,左移器412产生输入尾数的左移位版本。输入尾数的左移位版本的较低位形成模函数。在该示例中,当输入符号位是+1且输入指数大于等于零(0)时,输入尾数的左移位版本的较低位对应于值为2x的第二输出尾数461,如下:
(mx<<(ex))mod128
在该示例中,第一输出尾数和第二输出尾数460-461耦合到多路复用器(Mux)416。Mux 416的输出耦合到Mux 420的输入,并且Mux 420的输出产生最终输出尾数。Mux 416和420具有选择控制信号,选择0(Select 0)和选择1(Select 1),基于输入符号位452和输入指数451的值来选择输出尾数460-461中的一个。
可以从常数(M)减去输入尾数的右移位版本和左移位版本,以形成附加的输出尾数。在这个示例中,Mux 416的输出被耦合到常数减法逻辑电路418(M-x),它从常数减去Mux416的输出(例如,尾数的值在0-128之间的127)。相应地,减法电路的输出可以是:
127-(128+mx)>>-(ex),或者
127-(mx<<(ex))mod128
当输入符号位是-1且输入指数为正或负时,这些备选的输出形成值为2x的第三输出尾数和第四输出尾数。任一输出尾数可以被Mux 420选择为最终输出尾数。
还可以从移位器电路生成多个输出指数。在各个实施例中,可以通过将左移位的输入尾数的较高位与二(2)的输入值次方的值相加,产生输出指数(2ex)。在这个示例中,数字电路400还包括左移器电路414,左移器电路414具有耦合到一(1)的值(例如,1的二进制值或1的比特值)的输入以及耦合到输入指数451的移位输入,其中将1左移输入指数位得到2ex。来自左移位器412的较高位形成整除函数(DIV)。因此,移位器412和移位器414的输出可以在加法器422中相加,以产生如下的输出指数464:
加法器422的输出还通过取反电路(-1-x)424耦合,产生另一个输出指数465,如下所示:
最后,输出指数464耦合到Mux 432的第一输入,输出指数465耦合到Mux 432的第二输入。零(0)428和负一(-1)的值430耦合到Mux 432的其他输入。2x的最终输出尾数和指数可以选择如下:
表1
因此,数字电路400还包括控制逻辑470,其被配置为接收输入指数和输入符号位,并且向尾数选择电路(例如,Mux 416和420)和指数选择电路(例如,Mux 432)生成控制信号(选择0、选择1)。选择控制信号选择0和选择1配置多路复用器,使得当输入符号位为正且输入指数小于0时,Mux 420的输出耦合到右移位器电路410的输出,Mux 432的输出耦合到零(0)值428。附加地,选择控制信号选择0和选择1配置多路复用器,使得当输入符号位为正且输入指数大于或等于0时,Mux 420的输出耦合到左移位器电路412的较低位,并且指数选择电路的输出耦合到左移位器电路412的较高位与二(2)的与输入指数相对应的幂次方的值之和。接下来,选择控制信号选择0和选择1配置多路复用器,使得当输入符号位为正且输入指数小于0时,Mux 420的输出通过常数减法逻辑电路418耦合到右移位器电路410的输出,并且多路复用器432的输出耦合到常数的负一(-1)值。最后,选择控制信号选择0和选择1配置多路复用器,使得当输入符号位为负且输入指数大于第一值时,Mux 420的输出通过常数减法逻辑电路418耦合到左移位器电路的较低位,并且多路复用器432的输出耦合到左移位器电路412的较高位与二(2)的与输入指数相对应的幂次方的值之和的负值。
Mux 416、420和432是选择电路的示例,图4中的其他电路是用于接收表示输入值的输入尾数的第一数字位和表示输入值的输入指数的第二数字位、以及用于生成多个输出尾数和多个输出指数的示例组合逻辑机制。
图5A图示了根据另一实施例的用于生成4x的近似的示例数字电路500A。如该示例中所图示的,上文描述的技术也可用于实现用于生成4x的近似的数字电路。对于4x的近似,尾数基于输入指数与常数相加(例如,ex+1)进行移位。因此,数字电路500A还包括+1加法器电路,它将1的值与输入指数相加。在该示例中,输入尾数和移位器410之间的加法器被替换为上文提到的OR逻辑。数字电路500A的工作特性如下表所示:
表2
Mux 416、420和432是选择电路的示例,并且图5A中的其他电路是用于接收表示输入值的输入尾数的第一数字位和表示输入值的输入指数的第二数字位、以及用于生成多个输出尾数和多个输出指数的附加示例组合逻辑机制。
图5B图示了根据另一实施例的用于生成4x的近似值的另一示例数字电路500B。在该示例中,移除Mux 418,并且Mux 520具有耦合到输入尾数的一个输入和通过OR逻辑502耦合到输入尾数的另一个输入。在该示例中,移位器521是双向移位器,其中移位的方向(左/右)由移位极性输入(在此,输入符号位)设置。对于移位极性输入s,移位为(s==0:无移位;S>0:向左移位S个位置;S<0:向右移位S个位置)。数字电路500B的行为如上面的表2所示。去除加法器电路(+1)504引起与上面的表1所示相同的行为。
Mux 520、420和432是选择电路的进一步示例,并且图5B中的其他电路是用于接收表示输入值的输入尾数的第一数字位和表示输入值的输入指数的第二数字位、以及用于产生多个输出尾数和多个输出指数的附加示例组合逻辑机制。
图6图示了根据实施例的归一化系统600。在该示例中,通过近似电路602接收输入向量以用于确定Ax,其中A是二(2)的幂次方。电路602可以使用上述技术之一进行实现。电路602生成Ax的值,其可以用于确定归一化函数,诸如Softmax函数的近似。例如,Ax的值可以存储在缓冲器604中。这些值可以在求和电路606中相加在一起。除法器电路608可以访问缓冲器604中的值和求和值∑Ax以产生归一化值:Ax/∑Ax。例如,归一化值可以耦合到矩阵乘法电路610。例如,在一些实施例中,归一化值用于处理神经网络数据。
下面说明了上述电路行为如何可以近似于Softmax函数。Softmax函数被定义为:
与Softmax中的“类似”的函数可以具有以下属性:易于浮点计算,严格单调,快速增长。在该示例中,以bfloat16为例,但可扩展为fp32和bfloat。bfloat16数被定义为:
其中x的符号sx(例如,sx=+1或sx=-1),x的指数ex(例如,-7≤ex<=7),x的尾数mx(例如,0≤mx<128)。在bfloat16中计算时,结果对于ex<-7为0并且对于ex>7为正无穷——因此在边界处执行检查——但不需要实现大指数。而且,对于IEEE FP数,存在指数偏移。
Softmax 1可以使用2的幂次方进行近似。例如,Softmax2的定义如下:
可以看出,Softmax(x)=Softmax2(log2(e)*x)=Softmax2(1.44*x)。换言之,为了得到更好的近似,可以在调用近似2x的电路之前,将x乘以1.44。
接下来,的近似可以如下所示:
利用逼近似/>然后:
符号位和输入指数的不同值有四种情况:
情况A:sx=+1且ex<0(例如,小的正数):
情况B:sx=+1且ex≥0(例如,大的正数):
注意,实现非常简单,因为这是利用-7≤ex<=7进行移位和“选位”。(例如,mx是左移:较低的7位用于尾数,并且较高位用于指数,如上所述)。
情况C:sx=-1和ex<0(例如,小的负数):
情况D:sx=-1和ex≥0(例如,大的负数):
下面说明使用4的幂次方近似的Softmax。例如,Softmax4可以定义如下:
现在近似
利用4近似/>
情况A:sx=+1且ex<-1(例如,小的正数):
情况B:sx=+1和ex≥-1(例如,大的正数):
同样,实现包括利用-7≤ex<=7的移位和“选位”。(例如,mx是左移:较低的7位可以用于尾数,并且较高位用于指数)。
情况C:sx=-1且ex<-1(例如,小的负数):
情况D:sx=-1且ex≥-1(例如,大的负数):
图7图示了根据实施例的方法700。在702处,在数字电路中接收第一数字位和第二数字位。第一数字位表示输入值的尾数,并且第二数字位表示输入值的指数。例如,输入值可以是浮点格式,并且还包括符号位。在702处,生成多个输出尾数和多个输出指数。输出尾数和输出指数对应于二(2)的幂次方的输入值x次方的近似值(例如,2x,4x,…)。在706处,基于输入指数和输入符号位来选择多个输出尾数中的一个输出尾数和多个输出指数中的一个输出指数。因此,方法700生成数字值(例如,以浮点格式),对应于2x、4x等的近似,例如,可以用于近似神经网络中的Softmax函数。用于输出数字值的电路,该数字值近似2的幂次方的输入值次方,该电路也可以在其他应用中使用。
图8图示了根据一些实施例的神经网络处理系统。在各个实施例中,根据本公开的神经网络可以在包括一个或多个神经网络处理器的硬件环境中实现和训练。神经网络处理器可以指各种图形处理单元(GPU)(例如,用于处理Nvidia生产的用于神经网络的GPU),现场可编程门阵列(FPGA)(例如,用于处理/>生产的用于神经网络的FPGA),或者各种特定应用集成电路(ASIC)或神经网络处理器,包括例如针对神经网络计算优化的硬件架构。在这个示例环境中,一个或多个服务器1002可以包括上面图9所图示的架构,可以通过通信网络1001(例如,交换机、路由器等)耦合到多个控制器1010(1)-1010(M)。控制器1010(1)-1010(M)也可以包括上面图9所示的架构。每个控制器1010(1)-1010(M)可以耦合到一个或多个NN处理器,诸如处理器1011(1)-1011(N)和1012(1)-1012(N)。NN处理器1011(1)-1011(N)和1012(1)-1012(N)可以包括针对神经网络处理(诸如,训练或推理)优化的功能处理模块和存储器的各种配置。图8中的NN处理器可以包括本文中所描述的用于归一化值(例如,Softmax函数的近似)的数字电路。NN处理器针对神经网络计算进行了优化。服务器1002可以将控制器1010配置为具有NN模型以及模型的输入数据,例如,可以由NN处理器1011(1)-1011(N)和1012(1)-1012(N)并行加载和可执行。例如,模型可以包括如上面所描述的层和相关权重。NN处理器可以加载模型并应用输入来产生输出结果。例如,NN处理器也可以实现训练算法。例如,本文中所描述的数字电路可用于训练和推理。
进一步的示例实施例
在各个实施例中,本公开包括用于生成可以用于归一化的近似值的系统、方法和设备。以下示例可以单独使用或以各种组合方式使用。
在一个实施例中,本公开包括数字电路,该数字电路包括:组合逻辑,接收表示输入值的输入尾数的第一数字位和表示输入值的输入指数的第二数字位,该组合逻辑生成多个输出尾数和多个输出指数,对应于当输入值为正和负并且当输入指数高于和低于第一值时,二(2)的幂次方的输入值次方的近似值;以及被配置为接收多个输出尾数和多个输出指数的两个或更多个选择电路,该选择电路包括耦合到输入值的输入指数和输入符号位的选择控制输入,以选择多个输出尾数中的一个输出尾数和多个输出指数中的一个输出指数。
在另一个实施例中,本公开包括用于生成归一化值的方法,该方法包括:在包括一个或多个移位器电路的组合逻辑中,接收表示输入值的输入尾数的第一数字位和表示输入值的输入指数的第二数字位;在组合逻辑中,生成多个输出尾数和多个输出指数,该多个输出尾数和多个输出指数对应于当输入值为正和负并且当输入指数高于和低于第一值时,二(2)的幂次方输入值次方的近似值;以及通过被配置为接收多个输出尾数和多个输出指数的两个或更多个选择电路,基于输入值的输入指数和输入符号位,选择多个输出尾数中的一个输出尾数和多个输出指数中的一个输出指数。
在另一个实施例中,本公开包括数字电路,该数字电路包括:组合逻辑装置,用于接收表示输入值的输入尾数的第一数字位和表示输入值的输入指数的第二数字位,组合逻辑装置生成多个输出尾数和多个输出指数,该多个输出尾数和多个输出指数对应于当输入值为正和负并且当输入指数高于和低于第一值时,二(2)的幂次方的输入值次方的近似值;以及选择装置,用于接收多个输出尾数和多个输出指数,并且基于输入值的输入指数和输入符号位,选择多个输出尾数中的一个输出尾数和多个输出指数中的一个输出指数。
在一个实施例中,组合逻辑基于输入指数来产生输入尾数的多个移位版本,以产生多个输出尾数和多个输出指数。
在一个实施例中,两个或更多个选择电路产生:当输入符号位为正且输入指数小于第一值时,第一输出尾数,包括输入尾数的第一移位版本与第一常数之和,以及第一输出指数,具有零值;当输入符号位为正且输入指数大于第一值时,第二输出尾数,包括输入尾数的第二移位版本的模数,以及第二输出指数,具有基于输入指数而移位的一(1)与输入尾数的第二移位版本的整除相加的数字值;当输入符号位为负且输入指数小于第一值时,第三输出尾数,包括从第二常数减去输入尾数的第一移位版本与第一常数之和,以及第三输出指数,具有负一(-1)值;以及当输入符号位为负且输入指数大于第一值时,第四输出尾数,包括从第二常数减去输入尾数的第二移位版本的模数,以及第二输出指数的负值减一(1)。
在一个实施例中,组合逻辑包括一个或多个移位器电路,该一个或多个移位器电路具有耦合到与输入尾数的输入以及耦合到输入指数的移位输入,其中一个或多个移位器电路产生输入尾数的左移位版本和右移位版本。
在一个实施例中,输入尾数的右移位版本用于形成第一输出尾数和第二输出尾数,并且其中输入尾数的左移位版本的较低位用于形成第三输出尾数和第四输出尾数。
在一个实施例中,从常数减去输入尾数的右移位版本以形成第二输出尾数。
在一个实施例中,从常数减去输入尾数的左移位版本以形成第四输出尾数。
在一个实施例中,输入尾数的左移位版本的较高位用于形成第一输出指数和第二输出指数。
在一个实施例中,将输入尾数的左移位版本的较高位与基于输入指数而生成的值相加,以形成第一输出指数和第二输出指数。
在一个实施例中,基于输入指数而生成的值包括基于输入指数而左移位的位。
在一个实施例中,输入尾数的左移位版本的所述所相加的较高位与基于输入指数二生成的值被取负以产生第二输出指数。
在一个实施例中,一个或多个移位器电路包括桶形移位器电路。
在一个实施例中,一个或多个移位器电路包括:右移位器电路,其具有通过被配置为将输入尾数与常数相加的逻辑电路耦合到输入尾数的第一输入,以及通过被配置为对输入指数取反的逻辑电路耦合到输入指数的移位输入;以及第一左移位器电路,其具有耦合以接收输入尾数的第一输入以及耦合到输入指数的移位输入。
在一个实施例中,一个或多个移位器电路还包括第二左移位器电路,其具有耦合以接收一(1)的数字值的第一输入以及耦合到输入指数的移位输入,其中第一左移位器电路和第二左移位器电路的输出被相加在一起。
在一个实施例中,两个或更多个选择电路包括第一多路复用器,该第一多路复用器具有耦合到右移位器电路的输出的第一输入以及耦合到第一左移位器电路的较低位的第二输入。
在一个实施例中,两个或更多个选择电路还包括第二多路复用器,该第二多路复用器具有耦合到第一多路复用器的输出的第一输入以及通过逻辑电路耦合到第一多路复用器的输出的第二输入,该逻辑电路被配置为从常数减去逻辑电路的输入上的值。
在一个实施例中,两个或更多个选择电路包括多路复用器,该多路复用器包括:第一输入,耦合到第一左移位器电路的较高位与二(2)的与指数相对应的幂次方的值之和;第二输入,耦合到和的负值版本;第三输入,耦合到零(0)值;以及第四输入,耦合到负一(-1)值;以及产生最终输出指数的输出。
在一个实施例中,数字电路还包括控制逻辑,被配置为用于接收输入指数和输入符号位,并且至少为尾数选择电路和指数选择电路生成控制信号,其中:当输入符号位为正且输入指数小于第一值时,尾数选择电路的输出耦合到右移位器电路的输出,并且指数选择电路的输出耦合到零(0)值;当输入符号位为正且输入指数大于第一值时,尾数选择电路的输出耦合到左移位器电路的较低位,并且指数选择电路的输出耦合到第一左移位器电路的较高位与二(2)的与输入指数相对应的幂次方的值之和;当输入符号位为正且输入指数小于第一值时,尾数选择电路的输出通过常数减法逻辑电路耦合到右移位器电路的输出,并且指数选择电路的输出耦合到常数负一(-1)值;以及当输入符号位为负且输入指数大于第一值时,尾数选择电路的输出通过常减法逻辑电路耦合到左移位器电路的较低位,并且指数选择电路的输出耦合到第一左移位器电路的较高位与二(2)的与输入指数相对应的幂次方的值之和的负值。
上面的描述说明了本公开的各个实施例以及如何实现特定实施例的各个方面的示例。上述示例不应被视为唯一的实施例,并且被提出是为了说明由所附权利要求定义的特定实施例的灵活性和优点。基于上面的公开和所述权利要求,可以在不偏离由权利要求定义的本公开的范围的情况下采用其他布置、实施例、实现和等同物。
Claims (15)
1.一种数字电路,包括:
组合逻辑,接收表示输入值的输入尾数的第一数字位和表示输入值的输入指数的第二数字位,所述组合逻辑生成多个输出尾数和多个输出指数,所述多个输出尾数和多个输出指数与当所述输入值为正和负并且当所述输入指数高于和低于第一值时二(2)的幂次方的所述输入值次方的近似值相对应;以及
两个或更多个选择电路,被配置为接收所述多个输出尾数和所述多个输出指数,所述选择电路包括被耦合到所述输入值的所述输入指数和输入符号位的选择控制输入以选择所述多个输出尾数中的一个输出尾数和所述多个输出指数中的一个输出指数。
2.根据权利要求1所述的数字电路,其中所述组合逻辑基于所述输入指数来生成所述输入尾数的多个移位版本以产生所述多个输出尾数和所述多个输出指数,所述数字电路还包括控制逻辑,所述控制逻辑被配置为接收所述输入指数和所述输入符号位、以及生成对至少一个尾数选择电路和指数选择电路的控制信号。
3.根据权利要求1所述的数字电路,其中所述两个或更多个选择电路产生:
当所述输入符号位为正并且所述输入指数小于第一值时,第一输出尾数和第一输出指数,所述第一输出尾数包括所述输入尾数的第一移位版本与第一常数之和,所述第一输出指数具有零值;
当所述输入符号位为正并且所述输入指数大于所述第一值时,第二输出尾数和第二输出指数,所述第二输出尾数包括所述输入尾数的第二移位版本的模数,所述第二输出指数具有基于所述输入指数而被移位的一(1)与所述输入尾数的所述第二移位版本的整除相加的数字值;
当所述输入符号位为负并且所述输入指数小于所述第一值时,第三输出尾数和第三输出指数,所述第三输出尾数包括从第二常数减去所述输入尾数的所述第一移位版本与所述第一常数之和,所述第三输出指数具有负一(-1)值;以及
当所述输入符号位为负并且所述输入指数大于所述第一值时,第四输出尾数以及所述第二输出指数的负值减一(1),所述第四输出尾数包括从所述第二常数减去所述输入尾数的所述第二移位版本的模数。
4.根据权利要求1所述的数字电路,其中所述组合逻辑包括一个或多个移位器电路,所述一个或多个移位器电路具有被耦合到所述输入尾数的输入以及被耦合到所述输入指数的移位输入,其中所述一个或多个移位器电路产生所述输入尾数的左移位版本和右移位版本。
5.根据权利要求4所述的数字电路,其中所述输入尾数的右移位版本被用于形成第一输出尾数和第二输出尾数,并且其中所述输入尾数的左移位版本的较低位被用于形成第三输出尾数和第四输出尾数。
6.根据权利要求5所述的数字电路,其中所述输入尾数的所述右移位版本从常数中被减去以形成所述第二输出尾数。
7.根据权利要求5所述的数字电路,其中所述输入尾数的所述左移位版本从常数中被减去以形成所述第四输出尾数。
8.根据权利要求4所述的数字电路,其中所述输入尾数的左移位版本的较高位被用于形成第一输出指数和第二输出指数,其中所述输入尾数的所述左移位版本的所述较高位与基于所述输入指数而被生成的值相加以形成所述第一输出指数和所述第二输出指数。
9.根据权利要求8所述的数字电路,其中基于所述输入指数而被生成的所述值包括基于所述输入指数而被左移位的位。
10.根据权利要求8所述的数字电路,其中所述输入尾数的所述左移位版本的所相加的所述较高位和基于所述输入指数而被生成的所述值被取反以产生所述第二输出指数。
11.根据权利要求4所述的数字电路,其中所述一个或多个移位器电路包括桶形移位器电路。
12.根据权利要求4所述的数字电路,其中所述一个或多个移位器电路包括:
右移位器电路,所述右移位器电路具有通过被配置为将所述输入尾数与常数相加的逻辑电路被耦合到所述输入尾数的第一输入以及通过被配置为对所述输入指数取反的逻辑电路被耦合到所述输入指数的移位输入;以及
第一左移位器电路,所述第一左移位器电路具有被耦合以接收所述输入尾数的第一输入,以及被耦合到所述输入指数的移位输入。
13.根据权利要求12所述的数字电路,其中所述一个或多个移位器电路还包括第二左移位器电路,所述第二左移位器电路具有被耦合以接收一(1)的数字值的第一输入以及被耦合到所述输入指数的移位输入,其中所述第一左移位器电路和所述第二左移位器电路的输出被相加在一起。
14.根据权利要求12所述的数字电路,其中所述两个或更多个选择电路包括第一多路复用器,所述第一多路复用器具有被耦合到所述右移位器电路的输出的第一输入以及被耦合到所述第一左移位器电路的较低位的第二输入,其中所述两个或更多个选择电路还包括第二多路复用器,所述第二多路复用器具有被耦合到所述第一多路复用器的输出的第一输入以及通过被配置为从常数减去逻辑电路的输入上的值的所述逻辑电路被耦合到所述第一多路复用器的所述输出的第二输入。
15.根据权利要求12所述的数字电路,其中所述两个或更多个选择电路包括多路复用器,所述多路复用器包括:
第一输入,被耦合到所述第一左移位器电路的较高位与二(2)的与所述指数对应的次方的值之和;
第二输入,被耦合到所述和的负版本;
第三输入,被耦合到零(0)值;以及
第四输入,被耦合到负一(-1)值;以及
产生最终输出指数的输出。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/163,225 US20220244911A1 (en) | 2021-01-29 | 2021-01-29 | Digital circuitry for normalization functions |
US17/163,225 | 2021-01-29 | ||
PCT/US2022/012827 WO2022164678A1 (en) | 2021-01-29 | 2022-01-18 | Digital circuitry for normalization functions |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116783577A true CN116783577A (zh) | 2023-09-19 |
Family
ID=80222190
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202280010602.8A Pending CN116783577A (zh) | 2021-01-29 | 2022-01-18 | 用于归一化函数的数字电路 |
Country Status (7)
Country | Link |
---|---|
US (1) | US20220244911A1 (zh) |
EP (1) | EP4285215A1 (zh) |
JP (1) | JP2024506441A (zh) |
KR (1) | KR20230132795A (zh) |
CN (1) | CN116783577A (zh) |
TW (1) | TW202234232A (zh) |
WO (1) | WO2022164678A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117785108A (zh) * | 2024-02-27 | 2024-03-29 | 芯来智融半导体科技(上海)有限公司 | 一种前导数处理方法、系统、设备及存储介质 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6178435B1 (en) * | 1998-06-30 | 2001-01-23 | International Business Machines Corporation | Method and system for performing a power of two estimation within a data processing system |
US9552189B1 (en) * | 2014-09-25 | 2017-01-24 | Altera Corporation | Embedded floating-point operator circuitry |
US10445064B2 (en) * | 2017-02-03 | 2019-10-15 | Intel Corporation | Implementing logarithmic and antilogarithmic operations based on piecewise linear approximation |
US11256978B2 (en) * | 2017-07-14 | 2022-02-22 | Intel Corporation | Hyperbolic functions for machine learning acceleration |
US20210012202A1 (en) * | 2019-07-12 | 2021-01-14 | Facebook Technologies, Llc | Systems and methods for asymmetrical scaling factor support for negative and positive values |
US20220067513A1 (en) * | 2020-08-28 | 2022-03-03 | Nvidia Corp. | Efficient softmax computation |
-
2021
- 2021-01-29 US US17/163,225 patent/US20220244911A1/en active Pending
- 2021-12-20 TW TW110147625A patent/TW202234232A/zh unknown
-
2022
- 2022-01-18 CN CN202280010602.8A patent/CN116783577A/zh active Pending
- 2022-01-18 JP JP2023533995A patent/JP2024506441A/ja active Pending
- 2022-01-18 KR KR1020237025885A patent/KR20230132795A/ko unknown
- 2022-01-18 EP EP22703204.2A patent/EP4285215A1/en active Pending
- 2022-01-18 WO PCT/US2022/012827 patent/WO2022164678A1/en active Application Filing
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117785108A (zh) * | 2024-02-27 | 2024-03-29 | 芯来智融半导体科技(上海)有限公司 | 一种前导数处理方法、系统、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2022164678A1 (en) | 2022-08-04 |
TW202234232A (zh) | 2022-09-01 |
KR20230132795A (ko) | 2023-09-18 |
EP4285215A1 (en) | 2023-12-06 |
US20220244911A1 (en) | 2022-08-04 |
JP2024506441A (ja) | 2024-02-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111758106B (zh) | 用于大规模并行神经推理计算元件的方法和系统 | |
US5506797A (en) | Nonlinear function generator having efficient nonlinear conversion table and format converter | |
US20230106651A1 (en) | Systems and methods for accelerating the computation of the exponential function | |
KR102181385B1 (ko) | 신경망에서의 무작위성 생성 | |
CN113826122A (zh) | 人工神经网络的训练 | |
US11106431B2 (en) | Apparatus and method of fast floating-point adder tree for neural networks | |
DiCecco et al. | FPGA-based training of convolutional neural networks with a reduced precision floating-point library | |
CN113168310B (zh) | 用于转换数字的硬件模块 | |
US11301212B1 (en) | Multimodal digital multiplication circuits and methods | |
Nazemi et al. | Nullanet: Training deep neural networks for reduced-memory-access inference | |
Hussain et al. | An efficient and fast softmax hardware architecture (EFSHA) for deep neural networks | |
CN116783577A (zh) | 用于归一化函数的数字电路 | |
Raghuram et al. | Digital implementation of the softmax activation function and the inverse softmax function | |
Christ et al. | Low-precision logarithmic arithmetic for neural network accelerators | |
US11243743B2 (en) | Optimization of neural networks using hardware calculation efficiency and adjustment factors | |
CN118176480A (zh) | 用于加速倒数函数和平方根倒数函数的计算的系统和方法 | |
US11455142B2 (en) | Ultra-low precision floating-point fused multiply-accumulate unit | |
Velonis et al. | A comparison of Softmax proposals | |
Tan et al. | Efficient Multiple-Precision and Mixed-Precision Floating-Point Fused Multiply-Accumulate Unit for HPC and AI Applications | |
EP3948685A1 (en) | Accelerating neuron computations in artificial neural networks by skipping bits | |
Murillo et al. | PLAM: A Posit Logarithm-Approximate Multiplier for Power Efficient Posit-based DNNs | |
Choudhury et al. | Hardware Implementation of Low Complexity High-speed Perceptron Block | |
Alsuhli et al. | Conventional Number Systems for DNN Architectures | |
Ueki et al. | Aqss: Accelerator of quantization neural networks with stochastic approach | |
WO2020152571A1 (en) | Generic quantization of artificial neural networks |
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 |