CN115298669A - 机器学习加速器的功率减小 - Google Patents
机器学习加速器的功率减小 Download PDFInfo
- Publication number
- CN115298669A CN115298669A CN202180023299.0A CN202180023299A CN115298669A CN 115298669 A CN115298669 A CN 115298669A CN 202180023299 A CN202180023299 A CN 202180023299A CN 115298669 A CN115298669 A CN 115298669A
- Authority
- CN
- China
- Prior art keywords
- matrix
- tile
- matrix multiplication
- multiplication
- range information
- 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
- 238000010801 machine learning Methods 0.000 title description 3
- 230000009467 reduction Effects 0.000 title description 3
- 239000011159 matrix material Substances 0.000 claims abstract description 205
- 238000013528 artificial neural network Methods 0.000 claims abstract description 78
- 238000000034 method Methods 0.000 claims abstract description 28
- 210000002569 neuron Anatomy 0.000 claims description 43
- 239000000047 product Substances 0.000 description 54
- 239000013598 vector Substances 0.000 description 22
- 230000004913 activation Effects 0.000 description 11
- 238000001994 activation Methods 0.000 description 11
- 230000015654 memory Effects 0.000 description 9
- 238000010586 diagram Methods 0.000 description 8
- 229940050561 matrix product Drugs 0.000 description 6
- 230000009466 transformation Effects 0.000 description 5
- 230000008569 process Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 230000004044 response Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000000844 transformation Methods 0.000 description 2
- 230000003213 activating effect Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 239000012467 final product Substances 0.000 description 1
- 238000012886 linear function Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000026676 system process Effects 0.000 description 1
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/04—Architecture, e.g. interconnection topology
- G06N3/0464—Convolutional networks [CNN, ConvNet]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- 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/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/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/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)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Biophysics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Artificial Intelligence (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Neurology (AREA)
- Image Processing (AREA)
Abstract
本发明公开了一种用于执行神经网络操作的技术。该技术包括识别第一矩阵图块和第二矩阵图块,获取该第一矩阵图块的第一范围信息和该第二矩阵图块的第二范围信息,基于该第一范围信息和该第二范围信息选择矩阵乘法路径,以及使用所选择的矩阵乘法路径对该第一矩阵图块和该第二矩阵图块执行矩阵乘法以生成图块矩阵乘法乘积。
Description
相关申请的交叉引用
本申请要求2020年3月26日提交的美国非临时专利申请号16/831,711的权益,该美国非临时专利申请的内容据此以引用方式并入本文。
背景技术
机器学习系统通过经训练的网络处理输入以生成输出。由于处理的数据量和网络的复杂性,这种评估涉及非常大量的计算。
附图说明
可以从以下描述中获得更详细的理解,通过示例结合附图给出,其中:
图1是根据一个示例的神经网络处理系统的框图;
图2是示出神经网络数据的示例性框图;
图3是根据一个示例的图1的神经网络处理块的框图,示出了附加细节;
图4示出了根据一个示例的与通用神经元层有关的矩阵乘法运算;
图5示出了根据一个示例的卷积运算;
图6示出了根据一个示例的分批多通道卷积运算;
图7示出了其中将多通道分批卷积作为矩阵乘法运算来执行的示例性方式;并且
图8是根据一个示例的用于执行矩阵运算的方法的流程图。
具体实施方式
本发明公开了一种用于执行神经网络操作的技术。该技术包括识别第一矩阵图块和第二矩阵图块;获取所述第一矩阵图块的第一范围信息和所述第二矩阵图块的第二范围信息;基于所述第一范围信息和所述第二范围信息选择矩阵乘法路径;以及使用所选择的矩阵乘法路径对所述第一矩阵图块和所述第二矩阵图块执行矩阵乘法,以生成图块矩阵乘法乘积。
图1是根据一个示例的神经网络处理系统100的框图。神经网络处理系统包括神经网络处理块102和神经网络数据104。神经网络处理块102被具体体现为执行本文所述的操作的硬件电路、在处理器上执行以执行本文所述的操作的软件、或者执行本文所述的操作的硬件电路和在处理器上执行的软件的组合。
在操作中,神经网络处理块102接收神经网络输入106,根据神经网络数据104处理神经网络输入106以生成神经网络输出108,并且输出神经网络输出108。
在一些示例中,神经网络处理块102是或包括在计算机系统内,该计算机系统包括一个或多个处理器,这些处理器读取并执行指令以执行本文所述的操作。在一些具体实施中,任何此类处理器(或本文档内描述的任何处理器)包括从一个或多个存储器提取指令的指令提取电路、从一个或多个存储器提取数据的数据提取电路、以及执行指令的指令执行电路。在各种示例中,神经网络处理块102的一个或多个处理器联接到为所述一个或多个处理器输入数据和输出数据的一个或多个输入设备和/或一个或多个输出设备。神经网络数据104包括定义一个或多个神经网络的数据,神经网络处理块102通过所述神经网络处理神经网络输入106以生成神经网络输出108。
图2是示出神经网络数据104的示例性框图。神经网络数据104包括数据流经的层序列202。神经网络数据104在本文中有时简称为“神经网络104”,因为数据表示对输入执行以生成输出的神经网络操作序列。神经网络处理块102将神经网络输入106应用于层202,该层应用相应的层变换以产生神经网络输出108。每一层具有其自己的应用于由该层202接收的输入的层变换,以生成从该层202到下一层的输出或作为用于最终层202(N)的神经网络输出108。神经网络数据104将神经网络定义为层202的数目以及每层202处的特定变换。示例性变换包括通用神经元层、单元素变换、卷积层和合并层,在通用神经元层中,层202中的多个神经元中的每个神经元已限定与来自前一层202的输出的连通性。更具体地,如上所述,每个层202从前一层202接收输入向量。一些层202包括一组神经元,其中每个此类神经元接收输入向量的限定子集或该整个向量。另外,每个此类神经元具有应用于每个此类输入的权重。另外,每个神经元的激活是每个输入处的输入值与每个输入处的权重的乘积之和(并且因此每个此类激活是该神经元的输入向量与该神经元的权重向量的点积)。
应用单元素变换的层202接收输入向量,并对该输入向量的每个元素应用一些限定的变换。示例性变换包括箝位函数或一些其他非线性函数。基于以任何技术上可行的方式对输入进行降采样的降采样函数,应用合并的层202对输入向量执行降采样,以创建大小小于输入向量的输出向量。应用卷积的层202应用卷积运算,其中点积被应用于输入数据的滤波器切口和滤波器向量以生成输出。
若干类型的层操作诸如通用神经元层和卷积层是用矩阵乘法实现的。更具体地,因为通用神经元层中神经元的激活函数的计算是点积,所以此类计算可被实现为由矩阵乘法定义的一组点积运算。类似地,因为在卷积运算中应用滤波器是用点积执行的,所以可使用矩阵乘法运算来实现卷积层。由于所执行的浮点乘法运算的复杂性和数量,涉及浮点数的大矩阵乘法运算可能会消耗大量功率。因此,本文提供了在某些情况下减少功率使用的技术。
图3是根据一个示例的图1的神经网络处理块102的框图,示出了附加细节。神经网络处理块102包括图块矩阵乘法器302,神经网络处理块102使用该图块矩阵乘法器对使用矩阵乘法的层202执行矩阵乘法。
在对层202执行矩阵乘法的过程中,神经网络处理块102接收层输入308和层权重309,并且生成或接收层输入310的范围元数据和权重316的范围元数据。层输入308包括使用矩阵乘法的特定层202的输入。层权重309包括通用神经元层的神经元连接权重或卷积层的滤波器权重。层输入308包括一组层输入图块312,每个层输入图块是输入矩阵的表示层输入的部分。层权重309是层的权重集合,被划分成权重图块313。权重316的范围元数据包括每个权重图块318的范围元数据。每项范围元数据指示对应权重图块313的范围。层输入310的范围元数据包括每个层输入图块312的范围元数据。每项层输入元数据指示对应层输入图块312的范围。
范围(权重范围318和输入范围311)指示对应的权重图块313或输入图块312的值的范围。在一个示例中,特定图块的范围为-1至1,意味着该图块的所有元素都介于-1和1之间。在另一个示例中,范围为-256至256,并且在另一个示例中,范围为全范围(即,可以由权重的数据项表示的最大范围)。
当执行层权重309与层输入308的矩阵乘法时,图块矩阵乘法器302执行层输入图块312与层权重图块313的矩阵乘法以生成部分矩阵乘积,并且组合该部分矩阵乘积以生成层输出320。被相乘以生成部分乘积的特定层输入图块312和权重图块313以及组合那些部分乘积以生成层输出320的方式由层的性质决定。一些示例在本说明书的其他部分中示出。
在执行层输入图块312与权重图块313的特定乘法时,图块矩阵乘法器检查权重图块318的范围元数据和输入图块311的范围元数据,并且选择乘法路径306以执行该乘法。不同的乘法路径306被配置用于不同的范围组合,其中组合被定义为层输入图块311的范围和权重图块318的范围。被配置用于更有限范围的组合的乘法路径306比被配置用于更宽范围集合的组合的乘法路径306消耗更少的功率。乘法路径306是被配置为对至多固定大小的两个矩阵执行矩阵乘法的电路。可以使用本文别处描述的平铺乘法方法,使用乘法路径306将大于该大小的两个矩阵相乘。简而言之,该平铺乘法方法包括将输入矩阵划分成图块,将这些图块相乘以生成部分乘积,并且对部分乘积求和以生成最终输出矩阵。在一些具体实施中,每个乘法路径306被配置用于相同大小的被乘数矩阵。
用于更有限范围的乘法路径306的功率减小通过更简单的电路来实现。在一个示例中,矩阵乘法涉及执行点积,其涉及将点积被乘数相乘以生成部分点积并且对部分点积求和以生成最终点积。部分点积的指数最终确定在对部分点积求和时丢弃哪些部分点积,因为具有足够小指数的部分点积将充分小于具有最大指数的部分乘积可表示的最小单位,并且因此不会对最终点积有贡献。为了便于这种丢弃,至少一些乘法路径306包括用于比较部分点积的指数以确定丢弃哪些部分点积的电路。然而,这种比较会消耗功率。利用范围元数据允许在权重图块313和输入图块312中的一者或两者适合于特定范围内的情况下进行较小数目的指数比较。因此,当图块矩阵乘法器302执行权重图块313与输入图块312的乘法以生成部分矩阵乘积时,图块矩阵乘法器302检查输入图块312的输入图块范围311和权重图块313的权重图块范围318,并且选择适于这些范围的乘法路径306。
神经网络处理块102以下面的方式执行神经网络104的处理。神经网络处理块102接收神经网络104的输入106,并且将这些输入提供给第一层202。神经网络处理块102处理该层202处的这些输入以生成输出,并且将这些输出提供给下一层202,继续该处理直到神经网络处理块102生成神经网络输出108。对于经由矩阵乘法实现的一个或多个层202(诸如通用神经元层或卷积层),神经网络处理块102生成或获取要相乘的矩阵的范围数据(包括例如权重316的范围元数据和/或层输入310的范围元数据),并且使用基于该范围元数据选择的乘法路径306执行矩阵乘法。在一些具体实施中,神经网络处理块102获取或生成该范围元数据,而不会有来自外部处理器诸如CPU(中央处理单元)(其在一些具体实施中执行操作系统)的干预。在一些具体实施中,神经网络处理块102自动获取或生成该范围元数据。在一些具体实施中,神经网络处理块102获取或生成该元数据,而不被不是神经网络处理块102的一部分的处理器指示这样做。在一些具体实施中,神经网络处理块102获取或生成该元数据以输入到层202,而不将这些输入传送到神经网络处理块102外部的存储器。更具体地,在一些具体实施中,CPU或其他处理器将由层202生成的输出数据读取到CPU或其他处理器可访问的存储器中,为该输出数据生成范围元数据,并且将该范围元数据提供给随后的层202。在一些具体实施中,神经网络处理块102执行该范围元数据生成,而不会有CPU或其他处理器的干预,并且无需将输出数据读取到CPU或其他处理器可访问的存储器中。
在一些具体实施中,神经网络处理块102在通过神经网络104处理输入时不生成权重316的范围元数据。相反,神经网络处理块102在通过神经网络104处理输入之前生成权重316的范围元数据,因为权重316对于通过神经网络104处理输入的任何特定实例是静态的。当提取用矩阵乘法实现的层202的输入时,神经网络处理块102提取用于该层的权重的预先生成的范围数据,并且获取用于该层202的层输入310的范围元数据。
图4示出了根据一个示例的与通用神经元层有关的矩阵乘法运算。任一层202都可实现为通用神经元层。例示性神经网络部分400包括第一神经元层402(1)、第二神经元层402(2)和第三神经元层402(3)。在第一神经元层402(1)中,神经元N1,1向输入1应用权重W1,1,1并向输入2应用W1,2,1,以将激活输出生成为W1,1,1*Input1+W1,2,1*Input2。类似地,神经元N1,2将输出生成为W1,1,2*Input1+W1,2,1*Input2。用所示的权重和输入类似地计算其他神经元层402的激活。
图4示出了用于多组(或批量)输入的第二神经元层402(2)的矩阵乘法运算。一组输入是输入数据的独立实例。重新参考图2,可以同时将多组不同的神经网络输入数据106应用于神经网络数据104,以生成多组神经网络输出108,这允许并行地执行多个神经网络前向传播操作。
在图4中,示出了三组不同输入数据的矩阵乘法404运算。所示的第一矩阵406是层402(2)的神经元的输入矩阵。这些输入被称为所示的先前神经元的激活,具体地N1,1激活和N1,2激活。因此,输入矩阵406包括来自三个不同组的神经元N1,1和N1,2的激活。这些激活的符号是AX,Y,Z,其中X和Y限定神经元,并且Z限定输入集合。第二矩阵408包括第一层402(1)的神经元与第二层402(2)的神经元之间的连接权重。权重被表示为WX,Y,Z,其中X和Y表示权重指向的神经元,并且Z表示权重起源的神经元。
矩阵乘法包括执行输入的每一行与权重矩阵的列的点积,以获得激活矩阵410。激活矩阵的每一行对应于一组不同的输入,而每一列对应于层402(2)的不同神经元,如图所示产生点积。
如上所述,图块矩阵乘法器302通过将矩阵分解为图块,将图块相乘以生成部分矩阵乘积,并且对部分矩阵乘积求和以生成最终输出矩阵来将矩阵相乘。图块矩阵乘法器302基于适当的范围元数据选择每个图块到图块乘法的乘法路径306。
现在提供如何通过将大矩阵划分成更小的矩阵(图块)来对这些大矩阵执行乘法的示例。
表1:示例性矩阵乘法
如上所示,在矩阵乘法运算中,通过生成第一矩阵的第X'行与第二矩阵的第Y'列的点积来生成在矩阵乘积中具有x,y坐标的元素。通过将每个被乘数矩阵划分成图块,并且将每个图块作为“粗”被乘数矩阵的元素处理,对这些“粗”矩阵执行矩阵乘法,可以平铺方式执行相同的矩阵乘法。具有这种粗矩阵的乘积的坐标x,y的每个元素是由第一粗矩阵的第X'行与第二粗矩阵的第Y'列的“粗点积”产生的矩阵。粗点积与点积相同,不同的是用矩阵乘法代替乘法,并且用矩阵加法代替加法。因为这种点积涉及两个图块的矩阵乘法,所以该乘法可映射到执行逐图块矩阵乘法以生成部分矩阵乘积然后将这些部分矩阵乘积相加以得到最终乘积的硬件上。图块矩阵乘法器302执行上述操作以使用所存储的范围元数据来对平铺的被乘数矩阵执行乘法,从而为每个逐图块矩阵乘法选择乘法路径306。
在以下示例中,以平铺方式执行表1的矩阵乘法。矩阵乘法:
可表示为:
其中M元素和N元素为图块,并且:
表2:平铺矩阵乘法
因此,矩阵乘积可表示为:
其中每个元素是图块的矩阵乘积的总和。通过标准矩阵乘法将M图块乘以N图块。以上说明了如何通过将矩阵划分成2x2图块,将这些矩阵相乘以生成部分矩阵乘积,并且对部分矩阵乘积求和以生成最终矩阵乘积来执行两个4x4矩阵的矩阵乘法。在一些具体实施中,对于图4所述类型的一般神经元矩阵乘法,权重图块313和输入图块312表示将权重矩阵和输入矩阵(对于一组或多组输入)划分成图块。为每个图块(M图块或N图块)指定图3的范围元数据。
用矩阵乘法实现的另一种类型的神经网络操作是卷积。图5示出了根据一个示例的卷积运算500。在卷积运算中,输入矩阵502(诸如图像或其他矩阵数据)与滤波器504卷积以生成输出矩阵506。在输入矩阵502内,示出了若干滤波器切口508。每个滤波器切口表示输入矩阵502的一部分,对于该部分,用滤波器504执行点积以生成输出矩阵506的元素O。需注意,每个滤波器切口的操作不是矩阵乘法,而是点积,其中通过将滤波器切口和滤波器的元素布置为一维向量来生成两个向量。因此,输出元素O1,1等于I1,1F1,1+I2,1F2,1+I3,1F3,1+I1, 2F1,2...+I2,3F2,3+I3,3F3,3。滤波器504的尺寸为S×R,输出矩阵506的尺寸为Q×P,如图所示。
滤波器切口508的位置由水平步幅510和垂直步幅512限定。更具体地,第一滤波器切口508位于左上角,并且水平步幅510限定水平方向上的输入矩阵元素的数量,每个后续滤波器切口508与前一滤波器切口偏移该数量。水平对齐的滤波器切口508(即,所有元素都在完全相同的行中)在本文中被称为滤波器切口行。垂直步幅512限定垂直方向上的输入矩阵元素的数量,每个滤波器切口行与前一滤波器剪切行偏移该数量。
在一个示例中,卷积运算到矩阵乘法运算的转换如下执行。每个滤波器切口被布置为用于放置到输入被乘数矩阵中的行的元素。这些行被垂直地堆叠,使得输入矩阵是一组行,每行对应于不同的滤波器切口,并且每行包含该滤波器切口的元素。滤波器数据垂直排列以形成滤波器向量。这允许输入数据与滤波器向量的矩阵乘法以得到输出图像506,因为这种矩阵乘法涉及执行每个滤波器切口508与滤波器数据的点积以生成输出图像506的输出元素。需注意,该矩阵乘法的输出将是向量,而不是2维图像,但是该向量可以容易地重新排列成适当的型式,或者根据需要就好像该向量是适当的型式一样来处理。
图6示出了根据一个示例的分批多通道卷积运算600。在分批多通道卷积运算中,N个输入集合610各自与K个滤波器集合612卷积,其中每个输入集合610和每个滤波器集合612各自具有C个通道。所产生的输出是N个输出集合615,每个输出集合615具有K个输出图像。
在多通道卷积运算中,存在多个输入图像502和多个滤波器504,其中每个输入图像502和每个滤波器504与特定通道相关联。多通道卷积涉及将特定通道的输入图像与同一通道的滤波器进行卷积。对每个通道进行这些多次卷积运算得到每个通道的输出图像。然后,对于特定的输入集合610和特定的滤波器集合612,对这些输出图像求和以获得卷积的最终输出图像。为每个输入集合610生成输出图像K次,以生成给定输入集合610的输出集合615。总输出606是N个输出集合615,其中每个输出集合包括K个输出图像。因此,输出图像的总数为K x N,因为对于每个输入集合610产生K个输出图像,并且存在K个滤波器集合612。
图7示出了其中将多通道分批卷积作为矩阵乘法运算来执行的示例性方式。需注意,尽管该示例是针对多个通道、多个输入图像(N)和多个滤波器集合(K)来描述的,但本文所呈现的教导适用于未分批卷积或者包括一个输入图像(N=1)、一个滤波器集合(K=1)和/或一个通道(C=1)的卷积。
输入数据702包括C个通道、N个输入集合610和PxQ个滤波器切口的数据。因为输出图像506具有PxQ个元素,并且每个这样的元素是使用一个滤波器切口与滤波器的点积生成的,所以每个输入集合610有PxQ个滤波器切口。滤波器切口被排列为输入数据702中的行。输入数据702中的单个行包括针对来自特定输入集合610的特定滤波器切口水平排列的所有通道。因此,在输入数据702中有N x P x Q个行,每行包括所有通道和特定输入图像集合610和特定滤波器切口的滤波器切口数据。
滤波器数据704包括K个滤波器集合,每个滤波器集合612各自具有C个滤波器(每个通道一个滤波器)。每个滤波器包括K个滤波器集合612中的一个滤波器集合的一个通道的数据。各个滤波器的数据是垂直排列的,单个滤波器集合612的所有通道的数据属于一列,并且总共K列存在于滤波器数据704中。
输出矩阵706包括K个滤波器集合的每个滤波器集合的N个输出图像。输出矩阵706被生成为输入数据702和滤波器数据704的一般矩阵乘法运算。为了以平铺方式执行此操作,图块矩阵乘法器302在输入数据702和滤波器数据704的每一者中生成图块,将这些图块相乘以产生部分矩阵乘积,并且以本文别处关于将其元素为图块的“粗”矩阵相乘所描述的方式将这些部分矩阵乘积加在一起。输入图块720和滤波器数据图块722被示出以说明如何由输入数据702和滤波器数据704形成图块,但这些图块可具有任意大小。
乘法以下面的方式生成输出数据。输入数据702的每一行与滤波器数据704的每一列向量相乘,以生成输出图像706的元素。该向量乘法对应于具有特定滤波器集合的特定滤波器切口的所有通道的点积。需注意,因为对通道卷积输出求和以生成给定输入批和滤波器集合的输出,所以上述点积用于生成这样的输出。完成每个输入集合和每个滤波器集合的相应向量乘积,以生成输出数据706。
需注意,输入数据702可以包括重复数据。更具体地,暂时回到图5,滤波器切口5081,1和滤波器切口5082,1共享输入矩阵元素I3,1、I3,2和I3,3。此外,重新参考图7,在许多情况下,在运行中生成输入数据的图块720。出于这些原因,在一些具体实施中,层输入范围元数据310是基于每个范围元数据块503而不是基于每个输入数据图块720来存储的。范围元数据块503是输入图像502的一部分,由该部分生成输入图像图块720。为由特定范围元数据块503生成的所有输入图像图块720分配范围元数据块503的范围。如果由多个范围元数据块503生成输入图像图块720,则为这样的图块720分配所述多个范围元数据块503的范围中的最宽范围。该配置减少了需要确定层输入范围元数据310的次数,因为该配置允许由单个范围元数据块503生成的所有输入数据图块720使用针对该范围元数据块503存储的范围元数据。
范围元数据块包括多个滤波器切口508。在一些示例中,范围元数据块503包括整个滤波器切口行或多个滤波器切口行。
图8是根据一个示例的用于执行矩阵运算的方法800的流程图。尽管参照图1至图7的系统进行了描述,但本领域的技术人员将理解,被配置为按任何技术上可行的顺序执行方法800的步骤的任何系统都属于本公开的范围。
方法800开始于步骤802,其中图块矩阵乘法器302识别第一图块和第二图块以相乘。在各种具体实施中,第一图块是待相乘的第一矩阵的图块,而第二图块是待乘以第一矩阵的第二矩阵的图块。在一些具体实施中,矩阵的图块是该矩阵的子矩阵,包含该矩阵的元素的子集。更具体地,可以通过将一个或两个大矩阵划分成图块,并且以类似于标准矩阵乘法元素顺序的顺序将这些图块相乘(即,获得每行和每列的点积),来获得两个此类矩阵的矩阵乘法的结果,如本文别处所述。这允许为大小相对较小的矩阵配置的矩阵乘法电路被用于将较大的矩阵相乘。
在步骤804处,图块矩阵乘法器302获取第一矩阵图块的第一范围信息和第二矩阵图块的第二范围信息。第一范围信息指示第一矩阵图块的所有元素适合的范围,并且第二范围信息指示第二矩阵图块的所有元素适合的范围。
在步骤806处,图块矩阵乘法器302基于第一范围信息和第二范围信息选择矩阵乘法路径306。不同的乘法路径306被配置用于不同的范围组合。被配置用于较宽范围的组合的乘法路径306比被配置用于较窄范围的组合的乘法路径306更复杂且消耗更多功率。因此,使用范围信息为不同的逐图块乘法选择乘法路径306减少了整体使用的功率量。
在一些具体实施中,用于更有限范围的乘法路径306比用于更宽范围的乘法路径306更简单,因为用于更有限范围的乘法路径306包括较少的电路,所述电路用于在对部分矩阵乘积求和时确定丢弃哪些此类部分矩阵乘积时比较这些部分矩阵乘积的指数值。更具体地,矩阵乘法涉及执行点积,这涉及对乘法乘积求和。利用浮点加法,两个数之间的加法可能涉及简单地丢弃太小的数,并且响应于指数量级之间的比较来执行该丢弃。利用矩阵乘法中非常宽范围的数,进行大量的这种指数比较,这需要附加的特定电路。因此,用于更有限范围的乘法路径306用更少量的电路来实现,并且因此比用于更宽范围的乘法路径306消耗更少的功率。
在步骤808处,所选择的乘法路径306对第一图块和第二图块执行矩阵乘法。
在一些示例中,方法800还包括检测第一图块和第二图块的范围信息。在一些示例中,第一图块和第二图块是用于实现神经网络104的层202的矩阵的图块。响应于生成来自前一层202的输出,神经网络处理块102基于该输出生成范围信息,并且将该范围信息存储在存储范围元数据的存储器中。
在一些示例中,执行矩阵乘法的层是一般神经元层诸如图4所示的层402。在该示例中,神经网络处理块102检查该层402的输入,该输入包括来自前一层402的神经元输入的向量,基于该数据生成图块,并且确定这些图块的范围信息。在一些具体实施中,图块是矩阵的包括分批神经元输入的部分,如图4所示。在此类分批输入中,第一矩阵包括若干输入集合中的每个输入集合的神经元输入值的向量。集合是通过神经网络104处理的独立数据。
在一些示例中,执行矩阵乘法的层是卷积层。输入矩阵包括输入数据702和滤波器数据704,如图7所述。然而,该输入以输入图像502的形式提供,如图5所示。神经网络处理块102确定输入图像的范围元数据块503的范围,并且如本文别处所述(例如关于图5至图7)处理此类卷积层。
应当理解,基于本文的公开内容,可能有许多变化。尽管上述特征和元素在特定组合中进行了描述,但每个特征或元素可以在没有其他特征和元素的情况下单独使用,或者在有或没有其他特征或元素的各种组合中使用。
附图所示和/或本文所述的各种功能单元(在适当时,包括神经网络处理块102和图块矩阵乘法器302)可被实现为硬件电路、在可编程处理器上执行的软件或硬件和软件的组合。所提供的方法可以在通用计算机、处理器或处理器核心中实现。举例来说,合适的处理器包括通用处理器、专用处理器、常规处理器、数字信号处理器(DSP)、多个微处理器、与DSP核相关联的一个或多个微处理器、控制器、微控制器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)电路,任何其他类型的集成电路(IC)和/或状态机。可以通过使用处理的硬件描述语言(HDL)指令和包括网表的其他中间数据(能够存储在计算机可读介质上的此类指令)的结果来配置制造过程来制造此类处理器。这种处理的结果可以是掩码,然后在半导体制造过程中使用这些掩码来制造实现实施方案的方面的处理器。
本文提供的方法或流程图可以在并入非暂态计算机可读存储介质中的计算机程序、软件或固件中实现,以供通用计算机或处理器执行。非暂态计算机可读存储介质的示例包括只读存储器(ROM)、随机存取存储器(RAM)、寄存器、高速缓存存储器、半导体存储器设备、磁性介质(例如内部硬盘和可移动磁盘)、磁光介质和光学介质(例如CD-ROM磁盘)以及数字多功能磁盘(DVD)。
Claims (20)
1.一种用于执行神经网络操作的方法,所述方法包括:
识别第一矩阵图块和第二矩阵图块;
获取所述第一矩阵图块的第一范围信息和所述第二矩阵图块的第二范围信息;
基于所述第一范围信息和所述第二范围信息选择矩阵乘法路径;以及
使用所选择的矩阵乘法路径对所述第一矩阵图块和所述第二矩阵图块执行矩阵乘法,以生成图块矩阵乘法乘积。
2.根据权利要求1所述的方法,其中:
所述第一图块是神经网络的层的输入的一部分,并且所述第二图块是所述神经网络的所述层的权重矩阵的一部分。
3.根据权利要求2所述的方法,所述方法还包括:
通过分析所述层的输入来自动生成所述第一范围信息。
4.根据权利要求1所述的方法,其中选择所述矩阵乘法路径包括从一组两个或更多个矩阵乘法路径中选择所述矩阵乘法路径,其中每个矩阵乘法路径被配置为针对一组不同的输入范围执行矩阵乘法运算。
5.根据权利要求2所述的方法,其中所述层包括通用神经元层。
6.根据权利要求5所述的方法,其中所述第一矩阵图块和所述第二矩阵图块的所述矩阵乘法包括分批通用神经元层操作的一部分。
7.根据权利要求2所述的方法,其中所述层包括卷积层。
8.根据权利要求7所述的方法,其中针对包括多个滤波器切口的一组范围元数据块存储范围信息。
9.根据权利要求8所述的方法,其中获取所述第一范围信息包括检索由其生成所述第一图块的范围元数据块的范围。
10.一种用于执行神经网络操作的系统,所述系统包括:
一组矩阵乘法路径;以及
图块矩阵乘法器,所述图块矩阵乘法器被配置为:
识别第一矩阵图块和第二矩阵图块;
获取所述第一矩阵图块的第一范围信息和所述第二矩阵图块的第二范围信息;
基于所述第一范围信息和所述第二范围信息选择所述一组乘法路径中的矩阵乘法路径;以及
使用所选择的矩阵乘法路径对所述第一矩阵图块和所述第二矩阵图块执行矩阵乘法,以生成图块矩阵乘法乘积。
11.根据权利要求10所述的系统,其中:
所述第一图块是神经网络的层的输入的一部分,并且所述第二图块是所述神经网络的所述层的权重矩阵的一部分。
12.根据权利要求11所述的系统,所述系统还包括:
神经网络处理块,所述神经网络处理块被配置为通过分析所述层的输入来自动生成所述第一范围信息。
13.根据权利要求11所述的系统,其中每个矩阵乘法路径被配置为针对一组不同的输入范围执行矩阵乘法运算。
14.根据权利要求11所述的系统,其中所述层包括通用神经元层。
15.根据权利要求14所述的系统,其中所述第一矩阵图块和所述第二矩阵图块的所述矩阵乘法包括分批通用神经元层操作的一部分。
16.根据权利要求11所述的系统,其中所述层包括卷积层。
17.根据权利要求16所述的系统,其中针对包括多个滤波器切口的一组范围元数据块存储范围信息。
18.根据权利要求17所述的系统,其中获取所述第一范围信息包括检索由其生成所述第一图块的范围元数据块的范围。
19.一种存储指令的非暂态计算机可读介质,所述指令在由处理器执行时使所述处理器进行以下各项:
识别第一矩阵图块和第二矩阵图块;
获取所述第一矩阵图块的第一范围信息和所述第二矩阵图块的第二范围信息;
基于所述第一范围信息和所述第二范围信息选择矩阵乘法路径;以及
使用所选择的矩阵乘法路径对所述第一矩阵图块和所述第二矩阵图块执行矩阵乘法,以生成图块矩阵乘法乘积。
20.根据权利要求19所述的非暂态计算机可读介质,其中选择所述矩阵乘法路径包括从一组两个或更多个矩阵乘法路径中选择所述矩阵乘法路径,其中每个矩阵乘法路径被配置为针对一组不同的输入范围执行矩阵乘法运算。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/831,711 US20210303987A1 (en) | 2020-03-26 | 2020-03-26 | Power reduction for machine learning accelerator background |
US16/831,711 | 2020-03-26 | ||
PCT/US2021/021401 WO2021194732A1 (en) | 2020-03-26 | 2021-03-08 | Power reduction for machine learning accelerator |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115298669A true CN115298669A (zh) | 2022-11-04 |
Family
ID=77857036
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180023299.0A Pending CN115298669A (zh) | 2020-03-26 | 2021-03-08 | 机器学习加速器的功率减小 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20210303987A1 (zh) |
EP (1) | EP4128064A4 (zh) |
JP (1) | JP2023518717A (zh) |
KR (1) | KR20220158768A (zh) |
CN (1) | CN115298669A (zh) |
WO (1) | WO2021194732A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115878957A (zh) * | 2022-12-29 | 2023-03-31 | 珠海市欧冶半导体有限公司 | 一种矩阵乘法加速装置及方法 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170372202A1 (en) * | 2016-06-15 | 2017-12-28 | Nvidia Corporation | Tensor processing using low precision format |
US10817293B2 (en) * | 2017-04-28 | 2020-10-27 | Tenstorrent Inc. | Processing core with metadata actuated conditional graph execution |
TWI685757B (zh) * | 2017-05-17 | 2020-02-21 | 美商谷歌有限責任公司 | 低延遲矩陣乘法單元 |
WO2019018811A1 (en) * | 2017-07-21 | 2019-01-24 | Syntiant | SYSTEMS AND METHODS OF OPERATING RARITY |
US20210004668A1 (en) * | 2018-02-16 | 2021-01-07 | The Governing Council Of The University Of Toronto | Neural network accelerator |
US20190278600A1 (en) * | 2018-03-09 | 2019-09-12 | Nvidia Corporation | Tiled compressed sparse matrix format |
US10621489B2 (en) * | 2018-03-30 | 2020-04-14 | International Business Machines Corporation | Massively parallel neural inference computing elements |
KR20200011362A (ko) * | 2018-07-24 | 2020-02-03 | 에스케이하이닉스 주식회사 | 신경망 가속 장치 및 그것의 동작 방법 |
WO2020046859A1 (en) * | 2018-08-27 | 2020-03-05 | Neuralmagic Inc. | Systems and methods for neural network convolutional layer matrix multiplication using cache memory |
WO2020050886A1 (en) * | 2018-09-05 | 2020-03-12 | Futurewei Technologies, Inc. | Compiler-level general matrix multiplication configuration optimization |
US11093580B2 (en) * | 2018-10-31 | 2021-08-17 | Advanced Micro Devices, Inc. | Matrix multiplier with submatrix sequencing |
US10515306B1 (en) * | 2019-02-28 | 2019-12-24 | DeepCube LTD. | Partial activation of multiple pathways in neural networks |
US20200302284A1 (en) * | 2019-03-18 | 2020-09-24 | Nvidia Corporation | Data compression for a neural network |
US20210048991A1 (en) * | 2019-08-13 | 2021-02-18 | Nvidia Corporation | Performing matrix operations in neural networks |
-
2020
- 2020-03-26 US US16/831,711 patent/US20210303987A1/en active Pending
-
2021
- 2021-03-08 JP JP2022554763A patent/JP2023518717A/ja active Pending
- 2021-03-08 WO PCT/US2021/021401 patent/WO2021194732A1/en active Application Filing
- 2021-03-08 KR KR1020227036577A patent/KR20220158768A/ko unknown
- 2021-03-08 CN CN202180023299.0A patent/CN115298669A/zh active Pending
- 2021-03-08 EP EP21776716.9A patent/EP4128064A4/en active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115878957A (zh) * | 2022-12-29 | 2023-03-31 | 珠海市欧冶半导体有限公司 | 一种矩阵乘法加速装置及方法 |
CN115878957B (zh) * | 2022-12-29 | 2023-08-29 | 珠海市欧冶半导体有限公司 | 一种矩阵乘法加速装置及方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2021194732A1 (en) | 2021-09-30 |
US20210303987A1 (en) | 2021-09-30 |
KR20220158768A (ko) | 2022-12-01 |
JP2023518717A (ja) | 2023-05-08 |
EP4128064A1 (en) | 2023-02-08 |
EP4128064A4 (en) | 2024-04-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3373210B1 (en) | Transposing neural network matrices in hardware | |
EP3712820A1 (en) | Methods and systems for implementing a convolution transpose layer of a neural network | |
CN111684473B (zh) | 提高神经网络阵列的性能 | |
JP6715900B2 (ja) | ニューラルネットワークのパラメータを適応させるための方法および装置 | |
EP4357979A2 (en) | Superpixel methods for convolutional neural networks | |
US20170169326A1 (en) | Systems and methods for a multi-core optimized recurrent neural network | |
EP3671572A1 (en) | Information processing apparatus, neural network program, and processing method for neural network | |
Chervyakov et al. | Increasing of convolutional neural network performance using residue number system | |
WO2019217107A1 (en) | Block floating point computations using shared exponents | |
CN110874636A (zh) | 一种神经网络模型压缩方法、装置和计算机设备 | |
CN111507910A (zh) | 一种单图像去反光的方法、装置及存储介质 | |
JP2023541350A (ja) | 表畳み込みおよびアクセラレーション | |
JP7401513B2 (ja) | ハードウェアにおけるスパース行列乗算 | |
CN108629405B (zh) | 提高卷积神经网络计算效率的方法和装置 | |
CN115298669A (zh) | 机器学习加速器的功率减小 | |
US20200192631A1 (en) | Fused convolution and batch normalization for neural networks | |
Ago et al. | An FPGA implementation for neural networks with the FDFM processor core approach | |
KR20240017797A (ko) | 커널 확장 및 텐서 누적을 이용한 컨볼루션 | |
JP7494940B2 (ja) | 統合装置、統合方法、及び統合プログラム | |
KR102372869B1 (ko) | 인공 신경망을 위한 행렬 연산기 및 행렬 연산 방법 | |
CN113672612A (zh) | 索引源数组中的元素 | |
EP4435711A1 (en) | Methods and systems for performing a standard deconvolution on a gpu | |
GB2628033A (en) | Methods and systems for generating the gradients of a loss function with respect to the weights of a convolution layer | |
TW201935286A (zh) | 電路規劃結果產生方法與系統 | |
JP7540597B2 (ja) | ニューラルネットワークモデル変換装置および方法 |
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 |