CN114722994A - 在硬件中实现全连接神经网络层 - Google Patents
在硬件中实现全连接神经网络层 Download PDFInfo
- Publication number
- CN114722994A CN114722994A CN202111600769.3A CN202111600769A CN114722994A CN 114722994 A CN114722994 A CN 114722994A CN 202111600769 A CN202111600769 A CN 202111600769A CN 114722994 A CN114722994 A CN 114722994A
- Authority
- CN
- China
- Prior art keywords
- data
- fully
- memory
- coefficient
- processing system
- 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
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 43
- 238000012545 processing Methods 0.000 claims abstract description 203
- 239000000872 buffer Substances 0.000 claims abstract description 117
- 238000000034 method Methods 0.000 claims abstract description 70
- 238000004519 manufacturing process Methods 0.000 claims description 59
- 230000006870 function Effects 0.000 claims description 15
- 230000008569 process Effects 0.000 claims description 12
- 238000003860 storage Methods 0.000 claims description 9
- 230000009466 transformation Effects 0.000 description 35
- 238000013507 mapping Methods 0.000 description 22
- 239000013598 vector Substances 0.000 description 22
- 238000011156 evaluation Methods 0.000 description 21
- 239000011159 matrix material Substances 0.000 description 19
- 230000001131 transforming effect Effects 0.000 description 18
- 238000010586 diagram Methods 0.000 description 12
- 230000017105 transposition Effects 0.000 description 10
- VDUWPHTZYNWKRN-UHFFFAOYSA-N cinoxacin Chemical compound C1=C2N(CC)N=C(C(O)=O)C(=O)C2=CC2=C1OCO2 VDUWPHTZYNWKRN-UHFFFAOYSA-N 0.000 description 8
- 230000008901 benefit Effects 0.000 description 7
- 238000009825 accumulation Methods 0.000 description 6
- 230000006872 improvement Effects 0.000 description 6
- 238000004422 calculation algorithm Methods 0.000 description 4
- 238000013527 convolutional neural network Methods 0.000 description 4
- 230000036961 partial effect Effects 0.000 description 4
- 238000000844 transformation Methods 0.000 description 4
- 238000013459 approach Methods 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 3
- 230000000306 recurrent effect Effects 0.000 description 3
- 230000002829 reductive effect Effects 0.000 description 3
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000013501 data transformation Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000012856 packing Methods 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 238000013515 script Methods 0.000 description 2
- 229910052710 silicon Inorganic materials 0.000 description 2
- 239000010703 silicon Substances 0.000 description 2
- 230000002194 synthesizing effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000004913 activation Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000012993 chemical processing Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000013144 data compression Methods 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 238000000206 photolithography Methods 0.000 description 1
- 238000011176 pooling Methods 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000005389 semiconductor device fabrication Methods 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/10—Interfaces, programming languages or software development kits, e.g. for simulating neural networks
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/70—Arrangements for image or video recognition or understanding using pattern recognition or machine learning
- G06V10/82—Arrangements for image or video recognition or understanding using pattern recognition or machine learning using neural 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/044—Recurrent networks, e.g. Hopfield networks
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Health & Medical Sciences (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Evolutionary Computation (AREA)
- General Engineering & Computer Science (AREA)
- General Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Neurology (AREA)
- Databases & Information Systems (AREA)
- Algebra (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Medical Informatics (AREA)
- Multimedia (AREA)
- Complex Calculations (AREA)
Abstract
在硬件中实现全连接神经网络层。公开了用于在硬件中实现神经网络的一个或多个全连接层的方法和数据处理系统。根据实施例,至少一个全连接层的系数数据被加载到硬件加速器的输入缓冲器中,并且至少一个全连接层的输入数据被加载到硬件加速器的系数缓冲器中。
Description
背景技术
在神经网络中,在许多上下文中出现了全连接(FC)层。例如,它们是多层感知器(MLP)的关键部件。MLP是使用一个或多个全连接层定义的前馈神经网络。MLP已广泛用于解决一系列信号处理问题,包括手写字符识别、数据压缩、车辆意图预测、财务预测,以及心电图(ECG)信号的噪声降低和分析。
使用FC层的其它实例可包括递归神经网络(RNN)以及图像分类网络的最后层。
“全连接”意指层的每个输出数据元都可以受到层的所有输入数据元的影响。也就是说,每个输出数据元按权重“连接”到每个输入数据元。这意味着存在相对大量的权重。对于具有N个输入数据元和M个输出数据元的层,在全连接层中存在NxM个权重。这意味着,处理全连接层需要大量计算——尽管与其他操作,例如卷积相比,算术强度(每权重的运算数量)相对较低,但每个滤波器的权重数量意味着总体计算负荷仍然很大。
全连接层与卷积层显著不同。在卷积层中,滤波器在输入数据的一个或多个遍历维度上移位。(例如,当卷积层用于图像处理时,遍历维度通常是图像的高度和宽度维度。)在每次移位时,相同的权重被重新应用于输入数据的不同窗口。对于步幅为1的卷积层,在评估所述层的某个阶段(取决于合适的填充),每个权重将应用于每个输入数据元。这与其中每个单个权重都是唯一的全连接层的结构形成对比。换句话说,在全连接层中,在任何遍历维度上都不重复使用权重。
现有的神经网络加速器(NNA)硬件通常专门用于评估卷积层。例如,NNA可适于在多个处理元件处并行地将相同权重同时乘以多个输入数据元。示范性NNA被配置成通过沿着宽度维度(W)在可用处理元件中分布计算来实现并行处理。也就是说,沿着行的数据元的第一集合被发送到第一处理元件进行处理,而沿着该行的数据元的第二集合被发送到第二处理元件进行处理。每个处理元件还接收权重的集合。在示范性NNA中,相同的权重(系数)的集合被同时发送至所有处理元件。每个处理元件(卷积引擎)被配置成计算其输入的乘积的总和。因此,每个处理元件将其接收的每个输入数据元乘以其接收的权重中的相应权重,并对结果求和。这种架构可以非常有效地实施卷积操作,以实现卷积神经网络。
发明内容
提供本发明内容是为了以简化的形式介绍下文在具体实施方式中进一步描述的一系列概念。本发明内容不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。
公开了用于在硬件中实现神经网络的一个或多个全连接层的方法和数据处理系统。
数据通常被“批量”输入到神经网络(并输入到神经网络的每一层)中。批量大小定义输入数据项的数量。例如,在卷积神经网络的情况下,每个“批量”的数据可以对应于图像,并且多个批量可以形成网络要应用到的图像的集合。将神经网络应用于每个批量以产生与输入数据具有相同批量大小的输出数据。在图像示例中,每个图像从神经网络产生相应的输出数据(并且类似地,每个图像从神经网络的每个单个层产生相应的输出数据)。
根据实施例,至少一个全连接层的系数数据被加载到硬件加速器的输入缓冲器中,并且至少一个全连接层的输入数据被加载到硬件加速器的系数缓冲器中。
根据实施例,提供了一种在硬件中实现神经网络的全连接层的方法,所述硬件包括:多个处理元件,每个处理元件被配置成在多个硬件周期中的每个周期中将一个或多个输入数据值的集合和一个或多个系数的集合相乘;系数缓冲器,所述系数缓冲器被配置成在每个周期中向所有处理元件供应一个或多个系数的单个集合;输入缓冲器,所述输入缓冲器被配置成在每个周期中向每个处理元件供应相应的一个或多个输入数据元的集合,所述方法包括:将所述全连接层的输入数据加载到所述系数缓冲器中;将所述全连接层的系数数据加载到所述输入缓冲器中;以及使用所述多个处理元件评估所述全连接层,其中,在每个周期中,第一处理元件部分地评估所述全连接层的第一输出数据元,同时第二处理元件部分地评估所述全连接层的第二输出数据元。第一输出数据元和第二输出数据元涉及同一批量的输入数据。在不同的周期中,每个处理元件接收不同的输入数据和不同的系数数据。输入数据对于两个处理元件是公共的;系数数据在处理元件之间不同。因此,系数数据在相同周期中在处理元件之间不同,并且在不同周期之间对于相同处理元件不同。任选地,输入数据由单个批量组成。硬件可以是固定功能硬件(参见下文)。
通过交换系数和输入数据,所述方法可使得能够使用已经为处理卷积层而优化的硬件高效地评估全连接层。评估在全连接层的不同滤波器上被有效地并行化。
硬件还可以包括累加缓冲器,其被配置成在多个硬件周期内对每个处理元件的部分评估的结果求和。
处理元件可以是卷积引擎,其被配置成计算各对输入值之间的乘积的总和。
硬件周期是一件硬件执行数据处理操作的周期。硬件周期可以对应于例如时钟周期。通常,对于整个硬件周期,该件硬件的输入保持恒定。可以在硬件周期结束时(例如,通过任选地在寄存器、缓冲器或延迟元件中锁存)记录数据处理操作的输出。在下一周期中,该件硬件可以处理新输入以产生新输出。
该方法还可以包括,在将输入数据加载到系数缓冲器中之前,将转置操作应用于输入数据。转置操作可以转置输入数据的维度。例如,如果输入数据被存储为列矢量,则转置操作可以将其转换为行矢量。
该方法还可以包括,在将系数数据加载到输入缓冲器中之前,将转置操作应用于系数数据以产生经转置的系数数据。一般来说,可以在需要系数数据之前的任何时间将转置应用于系数数据。
在一些实施例中,系数数据可以存储在存储器中,并且该方法可以包括:从存储器检索系数数据;将转置操作应用于检索到的系数数据;以及将经转置的系数数据加载到输入缓冲器中。在这种情况下,系数数据在加载到输入缓冲器中之前被立即转置。
在一些实施例中,该方法可以包括:获得系数数据;将转置操作应用于系数数据;将经转置的系数数据存储在存储器中;从存储器检索经转置的系数数据;以及将经转置的系数数据加载到输入缓冲器中。在这种情况下,系数数据以转置格式存储在存储器中,无需进一步变换即可使用。这可以允许预先执行转置操作,从而在将系数数据加载到输入缓冲器时节省时间和精力。如果(例如,对于几个批量的输入数据)重复使用系数数据,这种方法可以允许仅执行一次转置操作,从而避免每次加载输入缓冲器时执行该操作的需要。
该方法还可以包括在评估全连接层之后,将转置操作应用于全连接层的输出数据。这可以用于将输出数据返回到与输入数据相同的格式。该方法还可以包括,在将转置操作应用于输出数据之后,将经转置的输出数据存储在存储器中。
全连接层可以是第一全连接层,并且神经网络还可以包括第二全连接层,该方法任选地还包括:将第一全连接层的输出数据加载到系数缓冲器中,作为第二全连接层的输入数据;将第二全连接层的系数数据加载到输入缓冲器中;以及使用多个处理元件评估第二全连接层。
可以加载第一FC层的输出数据而不首先应用转置操作。在每个周期中,第一处理元件部分地评估第二全连接层的第一输出数据元,同时第二处理元件部分地评估第二全连接层的第二输出数据元。
还提供了一种用于实现神经网络的一个或多个全连接层的数据处理系统,所述数据处理系统包括:硬件加速器;以及控制器,其中所述硬件加速器包括:多个处理元件,每个处理元件被配置成在多个硬件周期的每个周期中将一个或多个输入数据值的集合和一个或多个系数的集合相乘;系数缓冲器,所述系数缓冲器被配置成在每个周期中向所有处理元件供应一个或多个系数的单个集合;以及输入缓冲器,所述输入缓冲器被配置成在每个周期中向每个处理元件供应相应的一个或多个输入数据元的集合,其中,所述控制器被配置成:将所述全连接层的输入数据加载到所述系数缓冲器中;以及将所述全连接层的系数数据加载到所述输入缓冲器中,并且其中,所述硬件加速器被配置成使用所述多个处理元件评估所述全连接层,其中,在每个周期中,第一处理元件部分地评估所述全连接层的第一输出数据元,同时第二处理元件部分地评估所述全连接层的第二输出数据元。第一输出数据元和第二输出数据元涉及同一批量的输入数据。也就是说,它们源自同一批量的输入数据。任选地,输入数据由单个批量组成。
硬件加速器可以包括固定功能硬件或由固定功能硬件组成。具体地讲,输入缓冲器、系数缓冲器以及处理元件中的每一个可以在固定功能硬件中实现。在此上下文中,“固定功能”是指硬件的特性,即,硬件实施的逻辑在制造之后无法被重新配置(或者至少无法被广泛地重新配置)。这与例如可重新配置的现场可编程逻辑形成对比。它还与通用处理器硬件形成对比,所述通用处理器硬件完全可编程以实现任何(任意)功能或算法。硬件加速器可以包括在专用集成电路(ASIC)中。固定功能硬件的行为可以是在有限程度上可编程的。例如,固定功能硬件模块可能能够在有限的参数的集合控制下执行其固定功能。因此,每个硬件模块可能仅在其可以实现例如各种步幅和内核大小的卷积的意义上是可重新配置的,但在其可以执行任意算法的意义上并不是完全可编程的。
该数据处理系统还可以包括第一转置单元,所述第一转置单元被配置成在将输入数据加载到系数缓冲器中之前将转置操作应用于输入数据。
该数据处理系统还可以包括第二转置单元,所述第二转置单元被配置成在将系数数据加载到输入缓冲器中之前将转置操作应用于系数数据。
在一些实施例中,第二转置单元可以被配置成:从存储器检索系数数据;将转置操作应用于检索到的系数数据;以及将经转置的系数数据供应到输入缓冲器。
在一些实施例中,第二转置单元可以被配置成:获得系数数据;将转置操作应用于系数数据;将经转置的系数数据存储在存储器中;从存储器检索经转置的系数数据;以及将经转置的系数数据加载到输入缓冲器。
该数据处理系统还可以包括第三转置单元,所述第三转置单元被配置成将转置操作应用于全连接层的输出数据。
硬件加速器还可以包括输出缓冲器,所述输出缓冲器被配置成将由硬件加速器执行的处理的结果写入存储器。具体而言,输出缓冲器可以被配置成将全连接层的输出数据写入存储器。
该数据处理系统可以包括用于操控存储在存储器中的数据的存储器操控模块,其中,存储器操控模块被配置成执行转置单元或每个转置单元的功能。存储器操控模块可以借助于置换操作来执行各种转置操作,所述置换操作对相应张量的维度重新排序。
存储器操控模块可以包括:内部缓冲器;存储器读取块,其被配置成从存储器读取数据并将数据写入内部缓冲器;存储器写入块,其被配置成从内部缓冲器读取数据并将数据写入存储器;以及在存储器读取块与存储器写入块之间的控制通道,其中,存储器读取块和存储器写入块被配置成通过控制通道进行通信,以分别在将数据写入内部缓冲器以及从内部缓冲器读取数据时维持它们之间的同步。
此存储器操控模块非常适合于对存储在存储器中的数据执行可配置的变换。这可以提供处理必要的转置操作的高效方式,而不需要提供专用的单独硬件块来支持它们中的每一个。
在根据本公开的另一方面的示例中,每个全连接层被映射到等效卷积层。一个或多个全连接层的第一层的输入数据被变换,使得沿着由卷积操作遍历的至少一个维度(例如空间维度)布置批量。此处的“遍历”是指在输入张量的一个或多个维度上(通常是在一个或两个维度——最常见的是高度和宽度的空间维度上)步进或滑动卷积内核的操作。遍历的模式由卷积的步幅定义。
根据该另一方面的示例,提供了一种在硬件中实现神经网络的一个或多个全连接层的方法,所述方法包括:将一个或多个全连接层中的每一层映射到具有一个或多个遍历维度的等效卷积层;获得一个或多个全连接层的第一层的输入数据,所述输入数据包括多个批量;变换输入数据,使得沿着遍历维度中的至少一个布置批量;以及使用经变换的输入数据作为第一层的等效卷积层的输入,利用硬件评估一个或多个等效卷积层中的每一个。硬件可以是固定功能硬件。
通过将每个全连接层映射到等效卷积层并相应地变换输入数据,这种方法促进了在为评估卷积操作而优化的现有硬件上更高效地实现全连接层。这使得其适合于在NNA上实现全连接层。遍历维度可以是空间维度——例如,高度和宽度维度。
每个处理元件任选地包括:乘法逻辑的多个元件和加法逻辑的多个元件,所述乘法逻辑的多个元件各自被配置成将权重乘以输入数据元,所述多个加法逻辑元件被配置为树结构以对乘法逻辑的元件的输出求和。
一个或多个全连接层可以是一系列连续的全连接层。在这种情况下,通常仅变换第一层的输入数据就足够了。用于后续层的输入数据由先前层的输出数据提供。
该方法还可以包括逆变换最后一层的等效卷积层的输出数据,使得不再沿着遍历维度中的至少一个维度布置批量。
逆变换输出数据的步骤与变换输入数据的步骤相反。这将一层或多层的输出数据变换回到其原始格式,即,与第一层的输入数据相同的维度排序。
如上所述,该方法适用于一个或多个全连接层——特别是一个或多个连续全连接层。如果一个或多个层仅由一层组成,则第一层和最后一层是同一层。
硬件可以包括:输入缓冲器,其被配置成临时存储输入数据元;系数缓冲器,其被配置成临时存储权重;以及多个处理元件,所述多个处理元件中的每一个被配置成将一个或多个输入数据元乘以权重。任选地,在多个硬件周期中的每一个中:系数缓冲器被配置成向所有处理元件同时供应一个或多个权重的一个集合,并且输入缓冲器被配置成向每个处理元件供应相应的一个或多个输入数据元的不同集合。
也就是说,系数缓冲器向所有处理元件供应相同的权重,而输入缓冲器向每个相应的处理元件供应不同的输入数据元(或取决于处理元件的结构,供应输入数据元的不同集合)。
硬件可以被配置成通过并行处理沿着遍历维度中的第一遍历维度选择的一个或多个输入数据元的若干集合来评估卷积层,并且其中,当变换输入数据时,变换输入数据使得沿着至少第一遍历维度布置批量。
第一遍历维度可以是宽度(行)维度。即,硬件可沿着行对卷积层的评估进行并行化。在这种情况下,可以将输入数据元的第一集合供应到处理元件中的第一处理元件。可以同时将输入数据元的第二集合供应到处理元件中的第二处理元件。输入数据元的第一集合和第二集合可以由行方向上的步幅(即,沿着第一遍历维度的步幅)分开。
输入数据可以被变换,使得沿着第一遍历维度和至少一个其它遍历维度布置批量。如果第一遍历维度是宽度维度,则另一遍历维度可以是高度维度。如上文所解释的,硬件可以沿着第一遍历维度对卷积层的评估进行并行化。可以串行地执行沿着第二遍历维度的评估。也就是说,上文提及的输入数据元的第一集合和第二集合可以在第一硬件周期中处理。可以在第二硬件周期中将输入数据元的第三集合供应到处理元件中的第一处理元件。可以在第二硬件周期中将输入数据元的第四集合供应到处理元件中的第二处理元件。输入数据元的第三集合和第四集合可以由行方向上的步幅(即,沿着第一遍历维度的步幅)分开。输入数据元的第一集合和第三集合(以及类似地,第二集合和第四集合)可以由列方向上的步幅(即,沿着第二遍历维度的步幅)分开。
该方法任选地还包括,在变换输入数据之前:估计直接在硬件中评估一个或多个全连接层的第一成本;估计第二成本,包括评估一个或多个等效卷积层的成本以及该变换或每个变换的成本;以及如果第二成本小于第一成本,则继续变换输入数据并评估一个或多个等效卷积层。
成本可以是基于以下各项中的一者或多者的成本:评估所花费的时间、存储器访问的次数或速率、向/从存储器传输数据所需的量或速率,以及消耗的功率量。第二成本包括变换输入数据的成本。如果方法包括对输出数据进行逆变换,则第二成本也包括这种逆变换的成本。
通过这种方法,一个或多个全连接层仅在会产生性能益处时才使用其等效卷积层来评估。有时,变换输入数据(以及如果需要,逆变换输出数据)的附加成本可能超过通过评估等效卷积层获得的益处。在这种情况下,该方法可以替代地直接评估全连接层(即,不首先变换输入数据)。
该方法还可以包括,在变换输入数据之前,在两个或更多个不同候选变换中进行选择以沿着第一和/或第二遍历维度布置批量,其中所述选择包括在不同候选变换中选择预计具有最低成本的候选变换,并且其中变换输入数据包括将所选的变换应用于输入数据。可以如上文那样定义成本。候选变换在沿着第一遍历维度和第二遍历维度中的每一个布置的批量的数量方面可以不同。
根据该另一方面的示例,还提供了一种用于实现神经网络的一个或多个全连接层的数据处理系统,该数据处理系统包括:映射单元,该映射单元被配置成将一个或多个全连接层中的每一层映射到具有一个或多个遍历维度的等效卷积层;输入,该输入被配置成获得一个或多个全连接层的第一层的输入数据,所述输入数据包括多个批量;第一变换单元,其用于变换输入数据,使得沿着遍历维度中的至少一个布置批量;以及硬件加速器,该硬件加速器被配置成使用经变换的输入数据作为第一层的等效卷积层的输入,评估一个或多个等效卷积层的每一个。硬件加速器可以包括固定功能硬件或由固定功能硬件组成。
该数据处理系统还可以包括第二变换单元,其用于逆变换最后一层的等效卷积层的输出数据,使得不再沿着遍历维度中的至少一个布置批量。注意,在一些实施例中,第一变换单元和第二变换单元可以由同一硬件单元提供。
硬件加速器可以包括:输入缓冲器,其被配置成临时存储输入数据元;系数缓冲器,其被配置成临时存储权重;以及多个处理元件,所述多个处理元件中的每一个被配置成将一个或多个输入数据元的集合乘以一个或多个权重的集合。在多个硬件周期中的每一个中:系数缓冲器可以被配置成向所有处理元件同时供应一个或多个权重的一个集合,并且输入缓冲器可以被配置成向每个处理元件供应相应的输入数据元的不同集合。
硬件加速器可以被配置成通过并行处理沿着遍历维度中的第一遍历维度选择的一个或多个输入数据元的若干集合来评估卷积层,并且第一变换单元可以被配置成变换输入数据,使得沿着至少第一遍历维度布置批量。沿着遍历维度中的一个并行处理是处理卷积的高效方式。因此,这种结构在通常为实现神经网络设计的,或专门为实现卷积神经网络设计的硬件加速器中可能是合乎需要的。
第一变换单元可以被配置成变换输入数据,使得沿着第一遍历维度和至少一个其它遍历维度布置批量。如上文所解释的,沿着第一遍历维度对卷积层的评估进行并行化。可以串行地执行沿着第二遍历维度的评估。
映射单元可以被配置成:估计由硬件加速器直接评估一个或多个全连接层的第一成本;估计第二成本,包括由硬件加速器评估一个或多个等效卷积层的成本以及该变换或每个变换的成本;以及如果第二成本小于第一成本,则控制第一变换单元以变换输入数据并控制硬件加速器以评估一个或多个等效卷积层。
映射单元可以被配置成,在两个或更多个不同的候选变换中进行选择以沿着第一和/或第二遍历维度布置批量,其中所述选择包括在不同候选变换中选择预计具有最低成本的变换,并且其中第一变换单元被配置成通过将所选变换应用于输入数据来变换输入数据。
第一变换单元和第二变换单元可以由存储器操控模块提供,以用于操控存储在存储器中的数据。存储器操控模块可以如上文概述的那样。
一个或多个全连接层可以形成以下中的一者:多层感知器;和递归神经网络。一个或多个全连接层可以形成卷积神经网络的一部分。
还提供了一种神经网络加速器,所述神经网络加速器被配置为执行如上文概述的方法。数据处理系统或神经网络加速器可以包含在集成电路上的硬件中。
还提供了一种使用集成电路制造系统来制造如上文概述的数据处理系统或神经网络加速器的方法。
还提供了一种使用集成电路制造系统来制造如上文概述的数据处理系统或NNA的方法,该方法包括:使用布局处理系统处理数据处理系统或NNA的计算机可读描述,以便生成包含数据处理系统或NNA的集成电路的电路布局描述;以及使用集成电路生成系统,根据电路布局描述来制造数据处理系统或NNA。
还提供了一种计算机可读代码,该计算机可读代码被配置成使得当代码被运行时执行如上文概述的方法。还提供了一种计算机可读存储介质,在其上编码有计算机可读代码。
还提供了一种集成电路定义数据集,该集成电路定义数据集当在集成电路制造系统中处理时将该集成电路制造系统配置为制造如上文概述的数据处理系统或NNA。
还提供了一种计算机可读存储介质(任选地为非暂态的),该计算机可读存储介质上存储有如上文概述的数据处理系统或NNA的计算机可读描述,该计算机可读描述当在集成电路制造系统中被处理时使集成电路制造系统制造包含数据处理系统或NNA的集成电路。
还提供了一种计算机可读存储介质(任选为非暂态),在其上存储有如上文概述的数据处理系统或NNA的计算机可读描述,该计算机可读描述在集成电路制造系统中处理时使集成电路制造系统:使用布局处理系统来处理数据处理系统或NNA的计算机可读描述,以便生成包含数据处理系统或NNA的集成电路的电路布局描述;以及使用集成电路生成系统,根据电路布局描述来制造数据处理系统或NNA。
还提供了一种集成电路制造系统,该集成电路制造系统被配置为制造如上文概述的数据处理系统或NNA。
还提供了一种集成电路制造系统,包括:计算机可读存储介质(任选地为非暂态的),其上存储有如上文概述的数据处理系统或NNA的计算机可读描述;布局处理系统,其被配置成处理计算机可读描述,以便生成包含数据处理系统或NNA的集成电路的电路布局描述;以及集成电路生成系统,其被配置成根据电路布局描述制造数据处理系统或NNA。
布局处理系统可被配置为确定从集成电路描述导出的电路的逻辑部件的位置信息,以便生成体现数据处理系统或NNA的集成电路的电路布局描述。
如对本领域的技术人员显而易见的,上述特征可以适当地组合,并且可以与本文所述的示例的任何方面组合。
附图说明
现在将参考附图详细描述示例,在附图中:
图1A示出了被实现为矩阵乘法的全连接层;
图1B示出了映射到卷积层的图1A的全连接层;
图2A至图2F提供了批量到空间变换及其对应的空间到批量变换的各种配置的图示;
图3A至图3D示出了当要处理多个批量的数据时,不同类型的神经网络中的全连接层如何可以映射到卷积层;
图4是根据第一方面的实施例的用于实现一个或多个全连接层的数据处理系统的框图;
图5A是图4中的硬件加速器的框图;
图5B是图5A中使用的卷积引擎的框图;
图6是图4中的存储器操控模块的框图;
图7是图示了根据第一方面的实施例的用于在硬件中实现全连接层的方法的流程图;
图8是根据第二方面的实施例的用于实现一个或多个全连接层的数据处理系统的框图;
图9A至图9C是图示了根据第二方面的实施例的用于在硬件中实现全连接层的方法的流程图;
图10示出了在其中实现数据处理系统的计算机系统;以及
图11示出了用于生成包含数据处理系统的集成电路的集成电路制造系统。
附图示出了各种示例。技术人员将理解,附图中所示的元素边界(例如,框、框的组,或其它形状)表示边界的一个示例。在一些示例中,情况可能是一个元素可以被设计为多个元素,或者多个元素可以被设计为一个元素。在适当的情况下,贯穿各附图使用共同的附图标记来指示类似的特征。
具体实施方式
通过示例的方式给出以下描述,以使本领域的技术人员能够制造和使用本发明。本发明不限于本文描述的实施例,并且对所公开的实施例的各种修改对于本领域的技术人员将是显而易见的。
现在仅通过示例的方式来描述实施例。
上文在背景技术部分中提到的示范性NNA架构并未进行优化以用于全连接层的高效评估。卷积层的优化基于卷积内核在遍历维度上的每次移位(步幅)处的权重的重复使用。因为以这种方式重复使用权重的关键假设对FC层失败,所以NNA架构无法利用这种方式来实现并行处理。尽管如此,可能不希望显著偏离示范性架构,因为卷积层也是现代神经网络的重要部件。实际上,一些神经网络包括卷积层和全连接层的组合。不期望以卷积层为代价加速全连接层。需要一种允许FC层更大加速,优选不减慢卷积层的评估的方法。
全连接层对应于输入数据元与权重系数之间的矢量矩阵乘法:
y=Wx
此处,矢量x是输入数据,矩阵W包含权重,并且矢量y是输出数据。输入数据矢量x具有Cin个元素。权重矩阵W具有Cout x Cin个元素。输出数据矢量y具有Cout个元素。
此矢量矩阵乘法可以实现为1 x 1卷积,其中步幅=1且填充=0。本质上,卷积是基于乘积和计算的,其是计算(矢量y中的)每个输出数据元的方式。在基于卷积的实施方式中,权重矩阵W的每一行与输入数据矢量x卷积,以产生输出数据矢量y的相应元素。也就是说,每个输出数据元可以通过输入数据矢量和与输入数据矢量具有相同维度的权重矢量之间的卷积来计算。因为权重矢量与输入数据矢量的相同大小,所以此卷积不涉及移位(步进)。(输入数据矢量未被填充。)更具体地,输入数据x被重新成形为维度为Cin x 1 x 1的张量;并且系数数据W被重新成形为Cout个滤波器,每个滤波器的维度为Cin x 1 x 1。卷积的输出y具有维度Cout x 1 x 1。在此,以及在此整个本档中,当列出张量的维度时,使用惯例“BCHW”。即,首先列出批量维度(B)(当存在的话),接着列出通道维度(C),接着相继是高度维度(H)和宽度(W)维度。
此概念可以扩展到更高维度的输入数据张量,但原理保持不变——输出数据张量的每个元素都通过输入数据张量与相同大小的权重张量之间的1 x 1卷积来计算。
发明人已认识到,这可以用于加速对现有NNA硬件上全连接层的评估。
根据第一方面,当存在多个批量的输入数据要处理时,可以变换数据,使得批量被打包到遍历维度中的至少一个中。优选地,变换输入数据,使得输入数据的批量被打包到NNA利用并行性的维度中。(我们将此称为“并行化”维度。)例如,如果NNA被配置成沿着宽度维度将输入数据元分配到处理元件,则批量优选地被打包到宽度维度中。
当存在多个批量时,上文讨论的矢量矩阵乘法变成矩阵乘法。这在图1A中示出。权重矩阵W具有维度Cin x Cout。输入数据矢量X具有B x Cin个元素。也就是说,将不同批量的输入数据矢量堆叠以形成矩阵X。输出数据矩阵Y具有B x Cout个元素。再次,与不同批量相关联的个体输出数据矢量被堆叠成矩阵。星号(*)表示矩阵乘法。
图1B图示了如何将其映射到等效卷积。变换数据,使得在遍历(空间)维度w和h中布置批量。所述批量被布置成沿着高度维度的Bh个批量和沿着宽度维度的Bw个批量,其中,Bh x Bw=B。因此,输入数据张量具有维度1 x Cin x Bh x Bw。存在Cout个滤波器,每个滤波器的维度为1 x Cin x 1 x 1。这些滤波器中的每一个与输入数据张量卷积,以产生维度为1x 1 x Bh x Bw的输出。并且这些输出中的Cout的完整集合被堆叠成维度为1 x Cout x Bh xBw的输出数据张量。运算符表示卷积。具体而言,这是步幅=1且填充=0的1 x 1卷积。通过以这种方式借助于卷积来实现全连接层,该实现方式变得适合于针对卷积优化的硬件(例如NNA)上的加速。相同系数现在可以并行地应用于输入数据中的不同空间位置,即,相同滤波器可以在Bh或Bw维度中并行地应用。这节省了实现矩阵乘法可能需要的额外硬件周期。它还节省了从存储器加载权重的带宽,因为权重在从存储器读取之后被重复使用,这将减少需要读取权重的次数。
NNA可以正常地评估卷积操作,对经变换的数据结构进行操作。通过这样做,若干批量可以由NNA的不同处理元件同时处理,以评估所有批量的FC层。实质上,这种方法利用了权重在批量之间重复使用的事实,尽管没有在每个批量内重复使用权重。这是通过变换图1B中所示的输入数据X来实现的。这些批量被打包到空间(遍历)维度中,以生成可在卷积操作中遍历的张量。我们将把将批量维度打包到一个或多个空间维度中的这种变换称为“批量到空间”。注意,图1B中的输出Y仍具有在空间维度中打包的批量维度。如果在FC层之后,网络中存在后续卷积层,则可能期望将“批量到空间”变换的逆变换应用于输出数据,以便将其返回到其原始格式。这种逆变换将批量放回批量维度中的其“正常”位置,被称为“空间到批量”。应理解,“批量到空间”变换在某种程度上是可配置的,因为可以在高度或宽度维度上打包更多或更少批量。例如,所有批量都可能打包在一个遍历维度中,使得B=Bw或B=Bh。
上文参考图1B描述的方法可用于评估一个FC层或连续FC层的集合(例如在MLP网络中)。只有第一层的输入数据需要变换。后续FC层将从先前FC层接收其输入数据;因此,数据已经是正确格式。在评估最终FC层之后,数据可以变换回到其原始格式(例如,以由网络的一个或多个不是FC层的后续层进行处理)。
图2A至图2F提供了批量到空间变换和空间到批量变换中的一些(例如,具有B=4个批量)的图示。每个批量具有维度Cin x H x W,使得总输入张量具有维度B xCin x H xW。四个批量可以变换为三种形状之一,用于基于等效卷积层的评估。图2A示出了其中Bh=Bw=2的批量到空间变换。前两个批量在宽度维度上并排布置;后两个批量在宽度维度上并排布置,其中后两个批量在高度维度上堆叠在前两个批量的正下方。经变换的张量具有维度1x Cin x 2H x 2W。图2B示出了使四个批量返回到批量维度的逆(空间到批量)变换。将空间到批量变换应用于一个或多个全连接层的输出数据;因此,通道的数量是Cout。空间到批量变换将维度为1 x Cout x 2H x 2W的输出张量变换为维度为B x Cout x H x W的张量。
图2C示出了其中Bh=1且Bw=4的替代批量到空间变换。也就是说,所有四个批量在宽度维度上并排布置。经变换的张量具有维度1 x Cin x H x 4W。图2D示出了使四个批量返回到批量维度的逆(空间到批量)变换。空间到批量变换将维度为1 x Cout x H x 4W的输出张量变换回维度为B x Cout x H x W的张量。
图2E示出了其中Bh=4且Bw=1的另一替代批量到空间变换。也就是说,所有四个批量在高度维度上彼此堆叠。变换后的张量具有维度1 x Cin x 4H x W。图2F示出了将四个批量返回到批量维度的逆(空间到批量)变换。空间到批量变换将维度为1x Cout x 4H x W的输出张量变换回维度为B x Cout x H x W的张量。应理解,这些图2A至图2F中所示的三个示例是纯示范性的而非限制性的。一般来说,可以存在任何数量的批量,并且这些批量中的一些或全部可以任何适当的方式布置在高度和宽度的遍历维度中。
图3A至图3D示出了可以如何将其应用于实际神经网络的各种示例。在图3A中,神经网络是递归神经网络(RNN)。输入数据被变换(“批量到空间”)以沿着一个或多个遍历(空间)维度布置批量。然后,以其等效卷积层的形式评估RNN。在RNN的输出处,输出数据被逆变换(“空间到批量”)以恢复其原始格式——批量不再沿着空间维度布置,而是被恢复到批量维度。图3B示出了应用于多层感知器(MLP)的完全相同的方法。
在图3C中,神经网络包括多个卷积层,随后是多个全连接层。卷积层由NNA评估为正常。全连接层(用其等效卷积层替换)被置于必要的数据变换(批量到空间;和空间到批量)之间。图3D示出了略微不同的情况。类似于图3C,卷积层由NNA评估为正常。在全连接层之前插入批量到空间变换,NNA以等效卷积层的形式评估所述全连接层。然而,在全连接层的输出处不存在空间到批量逆变换。例如,这在图像分类网络中可能是适当的。网络的输出可以是输入图像所属的类别的指示。一般来说,不需要再次变换此类输出数据。
自然,FC层前后的变换在执行它们所需的资源(例如,时间、存储器带宽和/或功率)方面具有一定成本。然而,在大多数情况下,利用NNA中的并行性的益处超过这些成本——尤其是在评估多个连续FC层时。
图4是根据第一方面的实施例的用于在硬件加速器(例如,NNA)上实现全连接层的数据处理系统10的框图。数据处理系统包括硬件加速器100、映射单元12、存储器25和存储器操控模块(MMM)200。至少硬件加速器100、存储器25和MMM200通过数据总线250连接。映射单元12被配置成接收包括一个或多个全连接层的神经网络的定义。它被配置成控制MMM200和硬件加速器100以借助于等效卷积层来实现神经网络的全连接层。
图5A是图4中使用的硬件加速器100的简化框图。在此示例中,硬件加速器100是NNA。NNA包括输入缓冲器110、系数缓冲器120、多个处理元件(具体是卷积引擎)130、累加缓冲器140和输出缓冲器150。在每个硬件周期中,系数缓冲器120被配置成向所有处理元件130同时供应系数(即,权重)的单个集合。同时,在每个硬件周期中,输入缓冲器110被配置成为每个处理元件供应对应于内核的不同移位(步幅)的相应的输入数据元的不同集合。每个处理元件130被配置成将其从系数缓冲器120接收的系数乘以其从输入缓冲器110接收的相应输入数据元,并且对所述结果求和。即,每个处理元件130被配置成执行乘积和计算。这些乘积和计算的结果被输出到累加缓冲器140,其酌情在多个硬件周期内对它们累加(求和)。累加缓冲器140还被配置成在每个硬件周期中从系数缓冲器120接收偏差值,其也可以添加到乘法的结果。
图5B示出了如图5A中所示的卷积引擎130的示例实施方式,其包括乘法逻辑132的多个元件和加法逻辑134的多个元件,所述乘法逻辑的多个元件各自被配置成将权重乘以输入数据元,所述多个加法逻辑元件被配置为树结构以对乘法逻辑132的元件的输出求和。
为了完整起见,我们注意到典型的NNA还将结合附加块,包括但不限于:激活、池化、逐个元素和归一化块。由硬件加速器(包括卷积引擎130、累加缓冲器140和任何附加块)执行的处理的结果被提供到输出缓冲器150,该输出缓冲器将它们写入存储器25。
此架构对于卷积层效果良好,其中在内核的步幅上相同权重需要乘以若干输入数据元,以便评估所述层。然而,其在实现FC层方面效率不高。注意,通常,当利用此架构直接评估全连接层时,由于FC层中不存在遍历(空间)维度,并且类似地在等效矩阵乘法中不存在遍历(空间)维度,因此每次仅使用处理元件130-0中的一个。NNA被设计成沿着遍历维度应用并行处理,并且由此高效地实现卷积。由于空间维度中不存在任何权重的重复使用,因此当直接评估FC层时,NNA自身不能使评估天然地并行化。
图6是图4中使用的MMM 200的框图。MMM可配置为以各种方式操纵存储器中的数据。在本实施例的上下文中,它执行将全连接层实现为卷积层所必需的变换(批量到空间和空间到批量)。如已经提到的,MMM经由总线250联接到存储器205。MMM 200包括存储器读取块220、内部缓冲器210和存储器写入块230。控制通道240用于协调由存储器读取块220和存储器写入块230执行的操作。存储器读取块220和存储器写入块230两者都联接到总线250。存储器读取块220的输出联接到内部缓冲器210的输入。存储器写入块230的输入联接到内部缓冲器210的输出。
存储器读取块220从存储器205读取数据。存储器读取块220将(从存储器205读取的)数据写入内部缓冲器210。存储器写入块230从内部缓冲器210读取数据;并且将(从内部缓冲器210读取的)数据写回外部存储器205。
通过由存储器读取块220和存储器写入块230执行的操作的组合,数据得到变换。当将数据从存储器205移动到内部缓冲器210时可能发生变换,或者当将数据从内部缓冲器210移动到存储器205时可能发生变换。在一些情况下,变换可以部分地发生在存储器205与内部缓冲器210之间,并且部分地发生在内部缓冲器210与存储器205之间。
由于存储器读取块220和存储器写入块230是作为单独的硬件块提供的,因此它们能够并行操作。也就是说,当存储器写入块230正在执行步骤330和340时,存储器读取块220可以执行步骤310和320。控制通道240提供存储器读取块220与存储器写入块230之间的通信,以维持这两个块之间的同步。
图7是图示了根据本实施例的由数据处理系统10执行的方法的流程图。映射单元接收要评估的神经网络的定义作为输入。网络包括若干全连接层。为了在此示例中简单起见,将假设全连接层全部是连续的。这意味着最多需要两次数据变换——一次变换在全连接层被实现之前,并且(可能地)另一次变换在它们已被实现之后。
在步骤710中,映射单元12将每个全连接层映射到等效卷积层。这是根据上文参考图1A和图1B描述的原理完成的。在步骤712中,映射单元估计使用硬件加速器100直接评估全连接层的集合(即,不进行变换且不使用等效卷积层)的成本。映射单元基于对硬件加速器如何被配置成操作的了解来估计所述成本。在步骤714中,映射单元估计借助于(如在步骤710中确定的)其等效卷积层评估全连接层的集合的成本。这包括在评估这些层之前和(潜在地)之后进行变换的成本。
映射单元12还可以探索配置等效卷积层的不同可能方式。具体而言,在步骤710中,映射单元可以构造两个或更多个不同的候选变换以沿着遍历维度布置批量(如上文在图2A至图2F中针对四个批量的情况所例示的)。每个候选变换可以使用Bh和Bw的不同组合。在一些情况下,例如,设置Bh=1和Bw=B可以产生最佳性能。在其他情况下,将Bh设置为低数字(例如,16)并设置Bw=B/Bh产生更好的性能(注意,Bw可能大于Bh)。最优变换可能取决于FC层的输入以及系数大小和硬件加速器中的相关缓冲器大小和/或卷积引擎的数量。在步骤714中,映射单元可以估计使用不同候选变换中的每一个评估FC层中的每一个的成本。
在步骤712和714中估计的成本可以计算为硬件周期的数量,或持续时间,或功耗,或存储器访问带宽,或基于这些因素的组合计算。在步骤716中,映射单元12比较在步骤712和714中估计的成本。如果直接评估全连接层的成本较低,则映射单元12在步骤741中控制硬件加速器100以执行此操作。另一方面,如果评估等效卷积层的成本(包括变换的成本)较低,则方法前进到步骤720。如果在步骤710中开发了多个不同的候选变换,则映射单元可以选择提供最低成本的变换。此变换随后将用于实现FC层。
在步骤720中,数据处理系统10获得全连接层的集合中的第一层的输入数据。如前所述,输入数据包括若干批量B。在步骤730中,MMM 200变换输入数据,使得沿着遍历空间维度中的一个或多个布置所述批量。如图1B的示例中所示,沿着宽度维度布置Bw个批量,沿着高度维度布置Bh个批量。数据现在以硬件加速器可以利用的方式布置,以并行化全连接层的评估。
在步骤740中,硬件加速器使用由MMM 200在步骤730中产生的经变换的输入数据来评估等效卷积层。硬件加速器100能够对计算进行并行化,因为批量沿着宽度维度分散。在每个硬件周期中,系数缓冲器120向所有卷积引擎130提供权重的一个集合。同时,输入缓冲器110将输入数据元的不同集合供应到卷积引擎。来自第一批量的数据元的第一集合转到第一卷积引擎130-0;并且来自第二批量的数据元的第二集合转到第二卷积引擎130-1。来自第三批量的数据元的第三集合转到第三卷积引擎130-2。在图1B中所示的简化示例中,Bw=3;因此,其余卷积引擎将空闲。在实践中,映射单元在选择维度Bw和Bh时将尝试确保在每个硬件周期中占据尽可能多的卷积引擎。然而,这在某种程度上还可以取决于输入缓冲器110的容量。
在每个硬件周期中,每个卷积引擎130产生需要执行的Cout个卷积中的一个的输出的一部分。在多个硬件周期内在累加缓冲器140中对这些部分求和,直到产生一个全连接层的输出数据为止。来自每个全连接层的输出数据形成下一全连接层的输入数据,其同样借助于其等效卷积层来进行评估。这一直持续到所有全连接层都已被评估为止。
在步骤750中,MMM 200对来自最后等效卷积层的输出数据进行逆变换,以将其返回到输入数据的原始格式。这涉及将批量移出空间维度并移回到批量维度中(因此是“空间到批量”)。通过此步骤,完成对全连接层的评估。注意,由于第一全连接层之前的批量到空间变换,以及最后全连接层之后的空间到批量变换,因此对神经网络中的任何其它层没有影响。对全连接层的评估对于这些其它层是透明的——即,其它层以相同格式看到相同数据,而不管全连接层是直接评估的还是借助于变换和等效卷积层评估的。
当将全连接层映射到等效卷积层时,如果打包到并行化维度(在此示例中,是宽度维度)中的批量的数量大于或等于处理元件(卷积引擎130)的数量,则是有利的。更优选地,打包到此维度中的批量的数量是处理元件的数量的整数倍数。这有助于最大化性能提升。
将批量打包到遍历维度而不是并行化维度也有一些益处。例如,如果NNA在宽度维度上并行化(如本示例中那样),则还将批量打包到高度维度中仍有一些益处。这是因为权重可能在批量之间保留在芯片上,导致存储器访问带宽降低(即使没有额外的并行性)。取决于硬件实施方式,权重可以保留在系数缓冲器120中或片上存储器(OCM)(未示出)中。期望始终在批量之间将权重储存在系数缓冲器120中。然而,这样做的能力取决于系数缓冲器中的权重拟合。如果与系数缓冲器的大小相比,权重数据很大,则这可能是不可能的。
上文描述的实施例的若干变化是可能的。例如,尽管使用MMM 200来执行变换730和逆变换750两者,但这并非必需的。在其它实施例中,可以提供专用的第一变换单元以在步骤730中变换输入数据,并且可以提供单独的专用的第二变换单元以在步骤750中执行逆变换。
还应理解,可以以各种方式在遍历(例如,空间)维度中布置批量。在以上示例中,在图1B中,所有批量都布置在宽度维度和高度维度上。也就是说,经变换的输入数据具有维度1 x Cin x Bh x Bw,其中B=Bh*Bw。在其它示例中,批量可以不同方式布置。例如:
·仅分散在高度上,其中张量维度为1 x Cin x B x 1;
·仅分散在宽度上,其中张量维度为1 x Cin x 1 x B;或者
·分散在批量、宽度和高度上,其中张量维度为Bb x Cin x Bh x Bw(其中B=Bb xBh x Bw)。
可以平衡Bh和Bw的值,使得每个值既不太大也不太小。具体而言,可以平衡它们,使得所需输入数据能够匹配到输入缓冲器中。如上文所提及的,映射单元可以被配置成探索Bh和Bw的各种不同的可能配置,从而在不同候选变换中选择在给定情境中具有最佳性能的变换。对于不同的硬件加速器,最优变换(以及对应的等效卷积层的最优集合)可以不同。例如,它们可以根据卷积引擎的数量并且/或者根据输入和/或系数缓冲器的大小(即,存储容量)而变化。当在步骤710中构建变换和等效卷积层时,以及在步骤714中估计其成本时,可以考虑所有这些因素。
在图1A至图1B所示的示例中,原始输入数据由B个批量组成,每个批量包括Cin个输入通道。原始输入数据的高度和宽度均等于一,使得张量的总维度为B x Cin x 1 x 1。这被重新成形为维度为1 x Cin x Bh x Bw的张量,并且等效卷积层具有步幅=1和填充=0。系数数据具有维度Cout x Cin x 1 x 1。相同的方法可以扩展到高度和宽度大于一的输入数据(例如,图像数据),如图2A至图2F中所示。对于高度=H、宽度=W并且输入通道的数量为Cin的图像而言,原始输入张量维度将是B x Cin x H x W。对于等效卷积层而言,这可以被转换成维度为1 x Cin x BhH x BwW的张量。系数数据将具有维度Cout x Cin x H x W,并且卷积将具有高度维度中的步幅H和宽度维度中的步幅W。换句话说,对于每个滤波器(输出通道)而言,系数数据与图像数据的一个批量具有相同的大小,并且以与这些批量相同的大小的移位(步幅)进行卷积。从本质上说,图片在结构上与图1B中的相同,但各个块将各自具有Hx W的高度和宽度维度,而不仅仅是1 x 1。这在图2A至图2F所示的示例中示出。扩展到较高维度将类似地起作用。
根据第二方面,现在将参考图8和图9A至图9C描述替代方案。发明人已认识到,当处理单个批量的输入数据(B=1)时,尽管权重不与不同输入数据元一起重复使用,但输入数据元以不同权重被重复使用。也就是说,在FC层的评估中,每个输入数据元都应用了多个权重。在某种意义上,模式与先前描述的NNA硬件被优化以加速的模式正好相反。基于这种认识,第二方面的实施例通过互换权重和输入数据来实现FC层。为此,矢量矩阵乘法
y=Wx
被重新布置为
y=((Wx)T)T
y=(xTWT)T
此处,上标“T”表示矩阵转置——即对维度进行重新排序以互换行和列(并且因此互换高度和宽度)。对于较高维度张量,相同的操作可以作为“置换”操作来完成。
通过这种重新布置,根据第二方面的实施例,权重(系数)被储存在输入缓冲器中,并且输入数据被储存在系数缓冲器中。系数缓冲器向所有处理元件同时提供输入数据元的一个集合。输入缓冲器为每个处理元件提供相应的权重的不同集合。以此方式,在NNA硬件的每个周期中,处理元件可以并行地部分计算若干输出数据元。系数(权重)的每个集合对应于滤波器的一部分。输入缓冲器将并行地为不同滤波器提供系数的集合。
无论是否存在批量维度,即无论是存在多个批量还是仅一个批量,都可以使用这种方法。当仅存在一个批量时,本实施例可能优于上文描述的第一方面的实施例,因为第一方面的实施例仅利用不同批量间的并行化。
图8是根据第二方面的实施例的数据处理系统15的框图。数据处理系统包括通过数据总线250相互连接的硬件加速器100、存储器25,以及MMM 200。这些部件与上文结合第一方面描述的对应部件相同,并且为了简洁起见,此处将不进一步论述。数据处理系统15还包括控制器17,所述控制器被配置成接收神经网络的定义,并控制硬件加速器100和MMM200以评估神经网络的各层。
图9A是图示了根据第二方面的第一实施例的实现全连接层的方法的流程图。在步骤806中,MMM 200从存储器25检索全连接层的系数数据。在步骤808中,MMM200将转置操作应用于检索到的系数数据。(这形成上述方程式中的矩阵WT。)在步骤810中,控制器17控制硬件加速器100以将经转置的系数数据加载到硬件加速器100的输入缓冲器110中。在步骤818中,MMM 200将转置操作应用于全连接层的输入数据。(这形成上述方程式中的矩阵xT。)在步骤820中,控制器17控制硬件加速器100以将经转置的输入数据加载到硬件加速器100的系数缓冲器120中。在步骤830中,硬件加速器100借助于其处理元件(卷积引擎)130评估全连接层。卷积引擎130并行地操作。在每个硬件周期中,它们都从系数缓冲器120接收输入数据元的相同集合。但它们各自从输入缓冲器110接收系数的不同集合。系数的这些不同集合来自不同的滤波器,即它们对应于全连接层的不同输出数据元。在一个卷积引擎130-0为一个滤波器计算部分结果的同时,另一个卷积引擎130-1为另一个滤波器计算部分结果。这些部分结果被传递到累加缓冲器140,其在多个硬件周期内对它们进行累加。以此方式,在多个硬件周期内,硬件加速器100并行地评估全连接层的各个滤波器。
如有必要,在步骤832中,MMM 200将转置操作应用于全连接层的输出数据。此转置操作使输出数据返回到输入数据的原始格式。如果神经网络中存在除全连接层之外的后续层,例如,如果全连接层的输出数据被用作后续卷积层的输入数据,则可以进行此操作。然而,如果全连接层是神经网络的最后一层(如在图3D中的示例那样),则可能不需要应用额外转置操作。
图9B的流程图图示了根据第二方面的第二实施例的实现全连接层的方法。该实施例与第一实施例(图9A)的不同之处在于,对系数的转置操作是预先执行的。例如,在开始对层进行任何评估之前,可以在控制器获得神经网络的定义之后立即执行该操作。具体地,在步骤808a中,MMM 200将转置操作应用于系数数据。在步骤804中,MMM将经转置的系数数据存储在存储器25中。这些步骤在运行前执行。随后,在运行时,在步骤806a中,MMM 200从存储器25检索经转置的系数数据。然后,在步骤810中,控制器17控制硬件加速器100以将经转置的系数数据加载到输入缓冲器中。该方法接着如前所述进行步骤818、820、830和(潜在地)832。通过预先对系数数据执行转置操作并将经转置的系数数据存储在存储器25中以供以后使用,第二实施例的方法可以在评估全连接层时减少运行时的处理负荷。
图9C图示了根据第二方面的第三实施例的方法。此方法是图9B的方法的扩展,用于存在多个连续全连接层的情况。在这种上下文中,图9C图示了第二全连接层的评估,所述第二全连接层将先前的第一全连接层的输出数据作为其输入数据。步骤808a、804、806a和810与图9B的实施例中相同。也就是说,第二全连接层的系数数据是预先转置的,并且存储在存储器25中以供以后使用。在步骤819中,硬件加速器100从先前的(第一)全连接层获得输出数据。注意,这是在不将转置操作(步骤832)应用于输出数据的情况下获得的。在步骤821中,控制器17控制硬件加速器100以将输出数据加载到系数缓冲器120中,作为第二全连接层的输入数据。在步骤831中,硬件加速器100借助于处理元件(卷积引擎)130评估第二全连接层。此评估以与第一全连接层的评估完全相同的方式进行。最后,在步骤832中,MMM200可酌情将转置操作应用于第二全连接层的输出数据。
与第一方面的实施例类似,应理解,单个硬件单元(MMM 200)执行所有转置操作并不是必要的。在其它实施例中,不同的转置操作可以由单独的专用的转置单元提供。而且,取决于输入/输出数据和系数数据存储的格式,在一些实施例中,一些或所有转置操作可能是不必要的。数据和/或系数可以以具有已经以所需方式排序的维度的结构存储。独立于对转置操作的需求,如果输入缓冲器110使用的内部数据格式不同于系数缓冲器120使用的内部数据格式,则某种(额外)格式转换可能是必需的。例如,如果这些缓冲器使用不同的位数来表示数值,那么在将系数数据加载到输入缓冲器中或将输入数据加载到系数缓冲器中或这两种操作之前,可能需要格式转换。此类格式转换可由MMM 200或数据处理系统15的一些其它部件处理。
在图4和图8的实施例中,数据处理系统围绕硬件加速器100构建,所述硬件加速器在这些示例中是NNA。然而,数据处理系统可以替代地部分地或完全地在NNA内实现。例如,硬件加速器100、MMM 200和映射单元12或控制单元17可以表示NNA内的子部件。
图10示出了计算机系统,其中可以实现本文所述的数据处理系统。计算机系统包括CPU 902、NNA 904、存储器906和其它装置914,诸如显示器916、扬声器918和相机919。在NNA904上实现处理块910(对应于处理块100、200,以及12或17)。在其它示例中,可以在CPU902上实现处理块910。所述计算机系统的部件可以通过通信总线920(对应于总线250)彼此通信。储存库912(对应于存储器25)被实现为存储器906的一部分。
虽然图9A至图9C图示了NNA的一种实施方式,但是应理解,可以针对图形处理系统绘制类似的框图——例如,通过用图形处理系统(GPU)替代CPU 902或NNA904,或者通过添加GPU作为额外单元。在这种情况下,处理块910可以在GPU中实现。
图4和图8的数据处理系统被示出为包括多个功能块。这仅是示意性的,并不旨在限定此类实体的不同逻辑元件之间的严格划分。每个功能块可以任何合适的方式提供。应当理解,由数据处理系统形成的本文中描述的中间值不需要由数据处理系统在任何时间点物理地生成,并且可以仅仅表示方便地描述由数据处理系统在其输入与输出之间执行的处理的逻辑值。
本文中描述的数据处理系统和/或NNA可以包含在集成电路上的硬件中。本文中描述的数据处理系统和/或NNA可被配置为执行本文所述的任何方法。一般来讲,上文所述的功能、方法、技术或部件中的任一者可在软件、固件、硬件(例如,固定逻辑电路系统)或其任何组合中实现。本文可以使用术语“模块”、“功能”、“部件”、“元件”、“单元”、“块”和“逻辑”来概括地表示软件、固件、硬件或其任何组合。在软件实施方式的情况下,模块、功能、部件、元件、单元、块或逻辑表示程序代码,所述程序码当在处理器上执行时执行指定任务。本文中描述的算法和方法可以由执行码的一个或多个处理器执行,所述码使处理器执行算法/方法。计算机可读存储介质的示例包含随机存取存储器(RAM)、只读存储器(ROM)、光盘、闪存存储器、硬盘存储器以及可以使用磁性、光学和其它技术来存储指令或其它数据并且可以由机器存取的其它存储器装置。
如本文中所使用的术语计算机程序代码和计算机可读指令是指供处理器执行的任何种类的可执行代码,包含以机器语言、解释语言或脚本语言表达的代码。可执行代码包含二进制代码、机器代码、字节代码、定义集成电路的代码(例如硬件描述语言或网表),以及用例如C、或OpenCL等编程语言码表达的代码。可执行代码可以是例如任何种类的软件、固件、脚本、模块或库,当在虚拟机或其他软件环境中被适当地执行、处理、解释、编译、运行时,这些软件、固件、脚本、模块或库使支持可执行代码的计算机系统的处理器执行由该代码指定的任务。
处理器、计算机或计算机系统可以是任何种类的装置、机器或专用电路,或它们的集合或一部分,它具有处理能力使得可以执行指令。处理器可以是任何种类的通用或专用处理器,诸如CPU、GPU、NNA、片上系统、状态机、媒体处理器、专用集成电路(ASIC)、可编程逻辑阵列、现场可编程门阵列(FPGA)等。计算机或计算机系统可以包括一个或多个处理器。
本发明还意图涵盖限定如本文中所描述的硬件的配置的软件,诸如硬件描述语言(HDL)软件,用于设计集成电路或用于配置可编程芯片以执行所需功能。也就是说,可以提供一种计算机可读存储介质,其上编码有集成电路定义数据集形式的计算机可读程序代码,所述集成电路定义数据集当在集成电路制造系统中被处理(即运行)时,将该系统配置为制造被配置为执行本文所述的任何方法的数据处理系统(或NNA),或者制造包括本文所述的任何装置的数据处理系统(或NNA)。集成电路定义数据集可以是例如集成电路描述。
因此,可以提供一种在集成电路制造系统处制造如本文所述的数据处理系统(或NNA)的方法。此外,可以提供一种集成电路定义数据集,该集成电路定义数据集当在集成电路制造系统中被处理时,使制造数据处理系统(或NNA)的方法被执行。
集成电路定义数据集可以是计算机代码的形式,例如作为网表,用于配置可编程芯片的代码,作为定义适合于在集成电路中以任何级别制造的硬件描述语言,包含作为寄存器传输级(RTL)代码,作为高级电路表示法(诸如Verilog或VHDL),以及作为低级电路表示法(诸如OASIS(RTM)和GDSII)。在逻辑上定义适合于在集成电路中制造的硬件的更高级表示法(诸如RTL)可以在计算机系统上处理,所述计算机系统被配置用于在软件环境的上下文中生成集成电路的制造定义,所述软件环境包括电路元件的定义和用于组合这些元件以便生成由所述表示法定义的集成电路的制造定义的规则。如通常软件在计算机系统处执行以便定义机器的情况一样,可能需要一个或多个中间用户步骤(例如,提供命令、变量等),以便将计算机系统配置为生成集成电路的制造定义,以执行定义集成电路以便生成所述集成电路的制造定义的代码。
现在将关于图11描述在集成电路制造系统处处理集成电路定义数据集以便将系统配置成制造数据处理系统(或NNA)的示例。
图11示出了集成电路(IC)制造系统1002的示例,该集成电路制造系统被配置成制造如本文任何示例中描述的数据处理系统(或NNA)。特别地,IC制造系统1002包括布局处理系统1004和集成电路生成系统1006。IC制造系统1002被配置为接收IC定义数据集(例如,定义如本文任何示例中描述的数据处理系统或NNA)、处理IC定义数据集以及根据IC定义数据集生成IC(例如,其包含如本文任何示例中所述的数据处理系统或NNA)。处理IC定义数据集将IC制造系统1002配置成制造集成电路,所述集成电路包含如本文任何示例中所述的数据处理系统(或NNA)。
布局处理系统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)使用掩模来制造集成电路。
在其他示例中,在集成电路制造系统处处理集成电路定义数据集可将系统配置成制造数据处理系统(或NNA),而无需对IC定义数据集进行处理以确定电路布局。例如,集成电路定义数据集可以定义可重新配置的处理器诸如FPGA的配置,并且对该数据集的处理可以将IC制造系统配置为(例如,通过将配置数据加载到FPGA)生成具有该定义的配置的可重新配置的处理器。
在一些实施例中,当在集成电路制造系统中处理时,集成电路制造定义数据集可以使集成电路制造系统生成如本文中描述的装置。例如,通过集成电路制造定义数据集以上文参考图11描述的方式对集成电路制造系统进行配置,可以制造出如本文所述的装置。
在一些示例中,集成电路定义数据集可以包括在数据集处定义的硬件上运行的软件,或者与在数据集处定义的硬件组合运行的软件。在图11所示的示例中,IC产生系统还可以由集成电路定义数据集另外配置成在制造集成电路时根据在集成电路定义数据集中定义的程序代码将固件加载到所述集成电路上,或者以其它方式向集成电路提供与集成电路一起使用的程序代码。
与已知的实施方式相比,在本申请中阐述的概念在装置、设备、模块和/或系统中(以及在本文中实现的方法中)的实施方式可以提高性能。性能改进可以包含计算性能提高、延迟减少、处理量增大和/或功耗降低中的一个或多个。在制造此类装置、设备、模块和系统(例如,在集成电路中)期间,可以在性能改进与物理实施方式之间进行权衡,从而改进制造方法。例如,可以在性能改进与布局面积之间进行权衡,从而匹配已知实施方式的性能,但使用更少的硅。例如,这可以通过以串行方式重复使用功能块或在装置、设备、模块和/或系统的元件之间共享功能块来完成。相反,在本申请中阐述的引起装置、设备、模块和系统的物理实施方式的改进(诸如硅面积减小)的概念可以针对性能提高进行折中。例如,这可以通过在预定义面积预算内制造模块的多个示例来完成。
申请人据此独立地公开了本文中所描述的每个单独的特征以及两个或更多个此类特征的任意组合,到达的程度使得此类特征或组合能够根据本领域的技术人员的普通常识基于本说明书整体来实行,而不管此类特征或特征的组合是否解决本文中所公开的任何问题。鉴于前文描述,本领域的技术人员将清楚,可以在本发明的范围内进行各种修改。
Claims (15)
1.一种在硬件中实现神经网络的全连接层的方法,所述硬件包括:
多个处理元件(130),每个处理元件被配置成在多个硬件周期的每个周期中将一个或多个输入数据值的集合和一个或多个系数的集合相乘;
系数缓冲器(120),所述系数缓冲器被配置成在每个周期中向所有处理元件供应一个或多个系数的单个集合;
输入缓冲器(110),所述输入缓冲器被配置成在每个周期中向每个处理元件供应相应的一个或多个输入数据元的集合,
所述方法包括:
将所述全连接层的输入数据加载(820)到所述系数缓冲器中;
将所述全连接层的系数数据加载(810)到所述输入缓冲器中;以及
使用所述多个处理元件(130)评估(830)所述全连接层,其中,在每个周期中,第一处理元件(130-0)部分地评估所述全连接层的第一输出数据元,同时第二处理元件(130-1)部分地评估所述全连接层的第二输出数据元。
2.根据权利要求1所述的方法,还包括,在将所述系数数据加载(810)到所述输入缓冲器中之前,对所述系数数据应用转置(808)操作以产生经转置的系数数据。
3.根据权利要求2所述的方法,其中,所述系数数据存储在存储器中,并且所述方法包括:
从所述存储器检索(806)所述系数数据;
将所述转置操作(808)应用于检索到的系数数据;以及
将经转置的系数数据加载(810)到所述输入缓冲器中。
4.根据权利要求2所述的方法,包括:
获得所述系数数据;
将所述转置操作(808a)应用于所述系数数据;
将经转置的系数数据存储(804)在存储器中;
从所述存储器检索(806a)经转置的系数数据;以及
将经转置的系数数据加载(810)到所述输入缓冲器中。
5.根据权利要求1至4中任一项所述的方法,其中,所述全连接层是第一全连接层,并且所述神经网络还包括第二全连接层,所述方法还包括:
将所述第一全连接层的输出数据加载(821)到所述系数缓冲器中,作为所述第二全连接层的输入数据;
将所述第二全连接层的系数数据加载(810)到所述输入缓冲器中;以及
使用所述多个处理元件评估(831)所述第二全连接层。
6.根据前述权利要求中任一项所述的方法,其中,所述全连接层的输入数据由单批量的输入数据组成。
7.一种用于实现神经网络的一个或多个全连接层的数据处理系统(15),所述数据处理系统包括:
硬件加速器(100);和
控制器(17),
其中,所述硬件加速器(100)包括:
多个处理元件(130),每个处理元件被配置成在多个硬件周期的每个周期中将一个或多个输入数据值的集合和一个或多个系数的集合相乘;
系数缓冲器(120),所述系数缓冲器被配置成在每个周期中向所有处理元件(130)供应一个或多个系数的单个集合;以及
输入缓冲器(110),所述输入缓冲器被配置成在每个周期中向每个处理元件(130)供应相应的一个或多个输入数据元的集合,
其中,所述控制器(17)被配置成:
将所述全连接层的输入数据加载(820)到所述系数缓冲器中;以及
将所述全连接层的系数数据加载(810)到所述输入缓冲器中,
并且其中,所述硬件加速器(100)被配置成使用所述多个处理元件(130)评估(830)所述全连接层,其中,在每个周期中,第一处理元件(130-0)部分地评估所述全连接层的第一输出数据元,同时第二处理元件(130-1)部分地评估所述全连接层的第二输出数据元。
8.根据权利要求7所述的数据处理系统,还包括转置单元(200),所述转置单元被配置成在将所述系数数据加载到所述输入缓冲器(110)中之前向所述系数数据应用转置操作(808)。
9.根据权利要求8所述的数据处理系统,其中,所述转置单元(200)被配置成:
从存储器检索(806)所述系数数据;
将所述转置操作(808)应用于检索到的系数数据;以及
将经转置的系数数据供应到所述输入缓冲器(110)。
10.根据权利要求8所述的数据处理系统,其中,所述转置单元被配置成:
获得所述系数数据;
将所述转置操作(808a)应用于所述系数数据;
将经转置的系数数据存储(804)在存储器中;
从所述存储器检索(806a)经转置的系数数据;以及
将经转置的系数数据供应到所述输入缓冲器(110)。
11.根据权利要求8至10中任一项所述的数据处理系统,包括用于操控存储在存储器(25)中的数据的存储器操控模块(200),其中,所述存储器操控模块被配置成执行所述转置单元的功能,
其中,所述存储器操控模块包括:
内部缓冲器(210);
存储器读取块(220),所述存储器读取块被配置成从所述存储器读取数据并且将所述数据写入所述内部缓冲器(200);
存储器写入块(230),所述存储器写入块被配置成从所述内部缓冲器(210)读取数据并且将所述数据写入所述存储器(205);以及
在所述存储器读取块(220)与所述存储器写入块(230)之间的控制通道(240),其中,所述存储器读取块和所述存储器写入块被配置成经由所述控制通道(240)进行通信,以分别在将数据写入所述内部缓冲器以及从所述内部缓冲器读取数据时在它们之间保持同步。
12.根据权利要求7至11中任一项所述的数据处理系统,其中,每个处理元件包括:
乘法逻辑(132)的多个元件,每个元件被配置成将权重乘以输入数据元,以及
加法逻辑(134)的多个元件,所述多个元件被配置为树结构以对所述乘法逻辑(132)的元件的输出求和。
13.一种使用集成电路制造系统制造根据权利要求7至12中任一项所述的数据处理系统的方法,所述方法包括:
使用布局处理系统处理所述数据处理系统的计算机可读描述以便生成包含所述数据处理系统的集成电路的电路布局描述;以及
使用集成电路生成系统根据所述电路布局描述制造所述数据处理系统。
14.一种计算机可读存储介质,所述计算机可读存储介质上存储有根据权利要求7至12中任一项所述的数据处理系统的计算机可读描述,所述计算机可读描述当在集成电路制造系统中被处理时使所述集成电路制造系统:
使用布局处理系统处理所述数据处理系统的计算机可读描述以便生成包含所述数据处理系统的集成电路的电路布局描述;以及
使用集成电路生成系统根据所述电路布局描述制造所述数据处理系统。
15.一种集成电路制造系统,包括:
计算机可读存储介质,所述计算机可读存储介质上存储有根据权利要求7至12中任一项所述的数据处理系统的计算机可读描述;
布局处理系统,所述布局处理系统被配置为处理所述计算机可读描述以便生成包含所述数据处理系统的集成电路的电路布局描述;以及
集成电路生成系统,所述集成电路生成系统被配置为根据所述电路布局描述制造所述数据处理系统。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB2100046.8 | 2021-01-04 | ||
GB2100046.8A GB2602494A (en) | 2021-01-04 | 2021-01-04 | Implementing fully-connected neural-network layers in hardware |
GB2100044.3A GB2602493B (en) | 2021-01-04 | 2021-01-04 | Implementing fully-connected neural-network layers in hardware |
GB2100044.3 | 2021-01-04 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114722994A true CN114722994A (zh) | 2022-07-08 |
Family
ID=77179671
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111600769.3A Pending CN114722994A (zh) | 2021-01-04 | 2021-12-24 | 在硬件中实现全连接神经网络层 |
CN202111669283.5A Pending CN114723036A (zh) | 2021-01-04 | 2021-12-31 | 包括矩阵乘法的神经网络 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111669283.5A Pending CN114723036A (zh) | 2021-01-04 | 2021-12-31 | 包括矩阵乘法的神经网络 |
Country Status (4)
Country | Link |
---|---|
US (2) | US20220253683A1 (zh) |
EP (2) | EP4024291A1 (zh) |
CN (2) | CN114722994A (zh) |
GB (2) | GB2602524B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB202008299D0 (en) * | 2020-06-02 | 2020-07-15 | Imagination Tech Ltd | Manipulation of data in a memory |
GB2608791B (en) * | 2021-06-29 | 2023-11-22 | Imagination Tech Ltd | Neural network comprising matrix multiplication |
US11726746B1 (en) * | 2022-09-14 | 2023-08-15 | Moffett International Co., Limited | Vector operation acceleration with convolution computation unit |
EP4361889A1 (en) | 2022-10-31 | 2024-05-01 | Imagination Technologies Limited | Implementing a scatter function on a neural network accelerator |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5195050A (en) * | 1990-08-20 | 1993-03-16 | Eastman Kodak Company | Single chip, mode switchable, matrix multiplier and convolver suitable for color image processing |
US10614354B2 (en) * | 2015-10-07 | 2020-04-07 | Altera Corporation | Method and apparatus for implementing layers on a convolutional neural network accelerator |
EP3330898A1 (en) * | 2016-12-01 | 2018-06-06 | Altera Corporation | Method and apparatus for performing different types of convolution operations with the same processing elements |
US10394929B2 (en) * | 2016-12-20 | 2019-08-27 | Mediatek, Inc. | Adaptive execution engine for convolution computing systems |
GB2582868B (en) * | 2017-11-03 | 2021-06-02 | Imagination Tech Ltd | Hardware implementation of convolution layer of deep neural network |
US10747845B2 (en) * | 2018-08-31 | 2020-08-18 | Arm Limited | System, method and apparatus for computationally efficient data manipulation |
US20200356836A1 (en) * | 2019-05-07 | 2020-11-12 | Apple Inc. | Fast deep learning fully-connected column-major implementation |
US20200356837A1 (en) * | 2019-05-07 | 2020-11-12 | Apple Inc. | Fast deep learning fully-connected inference |
CN110580324B (zh) * | 2019-07-23 | 2020-11-17 | 珠海格力电器股份有限公司 | 图像矩阵运算方法、装置、计算机设备和存储介质 |
-
2021
- 2021-06-29 GB GB2109340.6A patent/GB2602524B/en active Active
- 2021-06-29 GB GB2319942.5A patent/GB2625452A/en active Pending
- 2021-12-24 CN CN202111600769.3A patent/CN114722994A/zh active Pending
- 2021-12-31 CN CN202111669283.5A patent/CN114723036A/zh active Pending
-
2022
- 2022-01-04 US US17/568,132 patent/US20220253683A1/en active Pending
- 2022-01-04 EP EP22150120.8A patent/EP4024291A1/en active Pending
- 2022-01-04 EP EP22150119.0A patent/EP4024290A1/en not_active Withdrawn
- 2022-01-04 US US17/568,325 patent/US20220253716A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
CN114723036A (zh) | 2022-07-08 |
GB202109340D0 (en) | 2021-08-11 |
US20220253683A1 (en) | 2022-08-11 |
US20220253716A1 (en) | 2022-08-11 |
GB2602524B (en) | 2024-02-14 |
GB2602524A (en) | 2022-07-06 |
EP4024290A1 (en) | 2022-07-06 |
GB202319942D0 (en) | 2024-02-07 |
EP4024291A1 (en) | 2022-07-06 |
GB2625452A (en) | 2024-06-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11868426B2 (en) | Hardware implementation of convolutional layer of deep neural network | |
US11886536B2 (en) | Methods and systems for implementing a convolution transpose layer of a neural network | |
EP3480749B1 (en) | Exploiting sparsity in a neural network | |
JP7329533B2 (ja) | 演算を加速するための方法および加速器装置 | |
CN114722994A (zh) | 在硬件中实现全连接神经网络层 | |
US20220129741A1 (en) | Implementation of a neural network in multicore hardware | |
CN114792124A (zh) | 在硬件中实施扩张卷积 | |
CN112884137A (zh) | 神经网络的硬件实现方式 | |
CN115600662A (zh) | 在硬件中实施池化和反池化或反向池化 | |
CN114970807A (zh) | Softmax和指数在硬件中的实施 | |
GB2599910A (en) | Implementation of a neural network in multicore hardware | |
US20230021204A1 (en) | Neural network comprising matrix multiplication | |
US20220351036A1 (en) | Methods and systems for generating the gradients of a loss function with respect to the weights of a convolution layer | |
CN112884138A (zh) | 神经网络的硬件实现方式 | |
CN113887714A (zh) | 用于在硬件中运行动态循环神经网络的方法和系统 | |
GB2602493A (en) | Implementing fully-connected neural-network layers in hardware | |
GB2602494A (en) | Implementing fully-connected neural-network layers in hardware | |
EP4300369A1 (en) | Methods and systems for executing a neural network on a neural network accelerator | |
US20240160692A1 (en) | Implementing a scatter function on a neural network accelerator | |
CN115600661A (zh) | Argmax或argmin在硬件中的实施 | |
GB2621217A (en) | Implementation of a neural network in multicore hardware | |
KR20230059726A (ko) | 심층 신경망 연산을 수행하는 방법 및 전자 장치 | |
CN114254742A (zh) | 在三个或更多个维度中的加窗运算的硬件实施方式 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20220708 |