CN114127739A - 用于生成架构特定的卷积梯度核的方法和装置 - Google Patents
用于生成架构特定的卷积梯度核的方法和装置 Download PDFInfo
- Publication number
- CN114127739A CN114127739A CN201980098449.7A CN201980098449A CN114127739A CN 114127739 A CN114127739 A CN 114127739A CN 201980098449 A CN201980098449 A CN 201980098449A CN 114127739 A CN114127739 A CN 114127739A
- Authority
- CN
- China
- Prior art keywords
- format
- data set
- output
- input
- tensor
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- 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
- G06N3/084—Backpropagation, e.g. using gradient descent
-
- 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
- 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)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Neurology (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Complex Calculations (AREA)
Abstract
一种用于加速卷积运算的方法,包括从I/O接口接收第一数据集和第二数据集。将所述第一数据集变换为第一转换数据集,所述第一转换数据集具有第一格式。将所述第二数据集变换为第二转换数据集,所述第二转换数据集具有第二格式。将所述第一转换数据集和所述第二转换数据集加载到卷积功能单元中,其中,所述卷积功能单元用于接收第一格式的第一数据,接收第二格式的第二数据,以及输出第三格式的第三数据。所述任务调度器从所述卷积功能单元接收所述第三格式的结果。
Description
技术领域
本发明涉及神经网络领域,具体涉及用于确定用于训练神经网络的卷积运算符参数的方法和装置。
背景技术
卷积神经网络(convolutional neural network,CNN)是一类常用于视觉图像分析的神经网络。在CNN中,对数据集和权重集应用卷积运算。卷积是现代神经网络中使用的最消耗资源的数学运算符之一,已经做了大量工作对其进行优化。提出了许多方案,其中许多方案使用常见的例程,例如快速傅里叶变换(Fast Fourier Transform,FFT)或图像到列(image to column,Im2Col)变换。FFT需要大量内存,因此很难在内存或内存带宽有限的系统上执行。另一方面,Im2Col例程将卷积转换为基于等效通用矩阵乘法(general matrixmultiplication,GEMM)的操作。其优点在于,矩阵乘法运算应用广泛,并且通常针对选定的硬件和处理器架构进行了高度优化。
CNN接纳了数据输入集和相关权重。在使用之前,神经网络必须使用输入和输出集进行训练。训练操作包括处理输入和权重的正向传递和反向处理梯度和更新权重的反向传递。
当神经网络是训练模式的反向传递时,必须使用卷积运算的逆运算。由于卷积的正向传递可以使用Im2Col例程,因此反向传递通常使用Im2Col例程的逆例程,即列到图像(column to image,Col2Im)例程。在Col2Im中,梯度从矩阵分散回到正向传递中使用的输入的对应分量中。在许多计算架构中,Col2Im函数包括大量未优化的矢量运算,从而导致计算缓慢。由于训练CNN可能需要大量的反向传递,这可能会使优化神经网络的开发大幅延迟。
需要一种不受现有技术的一个或多个限制影响的反向传递卷积运算的方法和装置。
提供该背景信息是为了揭示申请人认为可能与本发明相关的信息。不必有意承认,也不应该解释任何前述信息构成针对本发明的现有技术。
发明内容
本发明实施例的目的是提供用于加速卷积运算的方法和装置,所述卷积运算可用于神经网络的训练。根据本发明的实施例,提供了一种用于加速卷积运算的系统,包括:任务调度器;多个核,所述多个核中的每个核包括卷积功能单元,所述卷积功能单元中的每个卷积功能单元用于接收第一格式的第一数据,接收第二格式的第二数据,以及输出第三格式的第三数据。所述系统还包括:I/O接口,耦合到所述任务调度器;非瞬时性计算机可读存储介质,用于存储软件指令,所述软件指令用于控制所述任务调度器。所述任务调度器执行从所述I/O接口接收第一数据集和第二数据集的步骤。将所述第一数据集变换为第一转换数据集,所述第一转换数据集具有所述第一格式。将所述第二数据集变换为第二转换数据集,所述第二转换数据集具有所述第二格式。将所述第一转换数据集和所述第二转换数据集加载到所述卷积功能单元中。从所述卷积功能单元接收所述第三格式的结果。
在另外的实施例中,所述软件指令还控制所述任务调度器执行将所述结果变换为转换结果的步骤。
在另外的实施例中,所述结果是5D格式,所述转换结果是分形格式。
在另外的实施例中,所述第一数据集是第二卷积运算的数据集,所述第二数据集是所述数据集和权重集的所述第二卷积运算的传播误差。
在另外的实施例中,所述第一数据是5D格式,所述第一转换数据集是5D格式,所述第二数据集是5D格式,所述第二转换数据集是分形格式。
在另外的实施例中,所述结果是相对于所述权重集的梯度。
在另外的实施例中,所述第一数据集是第二卷积运算的权重集,所述第二数据集是数据集和所述权重集的第二卷积运算的传播误差。
在另外的实施例中,所述第一数据集是分形格式,所述第一转换数据集是分形格式,所述第二数据集是5D格式,所述第二转换数据是5D格式。
在另外的实施例中,所述结果是相对于所述数据集的梯度。
在另外的实施例中,所述相对于所述数据集的梯度是5D格式。
在一些实施例中,所述系统还包括:可重定目标的数据转换器,其中,所述将所述第一数据集变换为第一转换数据集由运行所述可重定目标的数据转换器的核上的矢量或标量功能单元执行,以执行所述变换。
在另外的实施例中,所述卷积功能单元处理三维矩阵。
在另外的实施例中,所述卷积功能单元执行img2col函数,接着执行矩阵乘法函数。
在另外的实施例中,所述第一数据集和所述第二数据集是张量格式。
根据另一个方面,实施例包括一种用于加速卷积运算的方法。所述方法包括:任务调度器从I/O接口接收第一数据集和第二数据集。所述任务调度器将所述第一数据集变换为第一转换数据集,所述第一转换数据集具有第一格式。所述任务调度器将所述第二数据集变换为第二转换数据集,所述第二转换数据集具有第二格式。所述任务调度器将所述第一转换数据集和所述第二转换数据集加载到卷积功能单元中,所述卷积功能单元用于接收第一格式的第一数据,接收第二格式的第二数据,以及输出第三格式的第三数据。所述任务调度器从所述卷积功能单元接收所述第三格式的结果。
本发明的另一方面包括一种用于变换张量的方法。所述方法包括:接收具有输入格式的输入张量,所述输入格式具有输入迭代器集合,并将所述输入张量存储到输入存储器中。分配输出存储器以存储具有输出格式的输出张量,所述输出格式具有输出迭代器集合。在所述输出存储器上迭代,以将所述输入张量的输入分量复制到所述输出存储器的对应于所述输出张量的输出分量的一部分,所述输入分量的索引定义为所述输出迭代器集合的函数。
在一些实施例中,所述方法还包括:分配链式存储器以存储具有链式格式的链式张量,所述链式格式具有链式迭代器集合;在所述链式存储器上迭代,以将所述输出张量的输出分量复制到所述链式存储器的对应于所述链式张量的链式分量的一部分,所述输出分量的索引定义为所述链式迭代器集合的第二函数。
另外的实施例包括:对于输出张量Y[i],所述输出格式具有形式(HW,1),所述输出迭代器集合为i,对于输入张量X[j],所述输入格式具有形式(H,W),所述输入迭代器集合为j0、j1,所述函数为Y[i]=X[i/W,i%W]。
另外的实施例包括:对于输出张量Y[i],所述输出格式具有形式(CHW,1),所述输出迭代器集合为i,对于输入张量X[j],所述输入格式具有形式(C,H,W),所述输入迭代器集合为j0、j1、j2,所述函数为
另外的实施例包括:对于输出张量Y[i],所述输出格式具有形式(H,W),所述输出迭代器集合为i0、i1,对于输入张量X[j],所述输入格式具有形式(HW,1),所述输入迭代器集合为j0,所述函数为Y[i0,i1]=X[i0*W+i1]。
另外的实施例包括:对于输出张量Y[i],所述输出格式具有形式(C,H,W),所述输出迭代器集合为i0、i1、i2,对于输入张量X[j],所述输入格式具有形式(CHW,1),所述输入迭代器集合为j0,所述函数为Y[i0,i1,i2]=X[i0*HW+i1*W+i2]。
另外的实施例包括:对于输出张量Y[i],输出格式具有形式(H,W),所述输出迭代器集合为i0、i1,对于输入张量X[j],所述输入格式具有形式(H,W),所述输入迭代器集合为j0、j1,所述函数为Y[i0,i1]=X[H–1–i0,W–1–i1]。
另外的实施例包括:对于输出张量Y[i],输出格式具有形式(H,W),所述输出迭代器集合为i0、i1,对于输入张量X[j],所述输入格式具有(H,W),所述输入迭代器集合为j0、j1,所述函数为Y[i]=X[i1,i0]。
根据本发明的实施例,提供了一种……
附图说明
结合附图,通过以下详细描述,本发明的其它特征和优点将变得显而易见,在附图中:
图1示出了用于反向卷积的系统的简化视图;
图2示出了具有分形数据格式的张量处理器所需的数据格式的反向卷积系统;
图3示出了具有分形数据格式的张量处理器所需的数据格式的反向卷积系统,其中,卷积输出经历进一步的变换;
图4示出了用于加速执行反向卷积运算的系统;
图5示出了实施例提供的分形数据格式的示例;
图6示出了可用于实施例或与实施例连接的计算装置的配置。
需要说明的是,在整个附图中,相同的特征由相同的附图标记标识。
具体实施方式
本发明的实施例包括用于加速卷积运算的系统和方法。这可以利用专用硬件,例如ASIC、协处理器、卡、模块、协处理器或本领域已知的类似半导体或电子设备。本发明的实施例可用于在AI系统中执行CNN的训练。
实施例可以以各种方式设计,并且在专用硬件资源的情况下,设计成支持有限数量的输入和输出格式。本领域中使用的常见格式有4维(dimensional,D)格式、5D格式和分形格式。为了使硬件单元正确处理数据,输入数据必须采用正确的格式。为了使外部计算设备正确解译硬件单元的输出,外部计算设备必须了解输出格式。
在涉及CNN训练的实施例中,使用一组数据和权重执行正向预测运算以产生输出。输入数据和权重都将具有自己的格式,这些格式可能由数据的来源决定。预测运算的输出也将具有自己的格式。如果使用硬件加速,则输出格式将由硬件的设计决定。
在大多数应用程序中,预测运算涉及使用卷积功能单元对数据和权重进行卷积。卷积层是深度神经网络中最重要的层之一。卷积层的实现方法有很多。一种常见而高效的方法是将卷积转换为通用矩阵-矩阵乘法(general matrix-matrix multiplication,GEMM)。该方法执行图像到列(image to column,im2col)变换,以将图像转换为矩阵,然后调用GEMM函数来执行实际计算。该方法已针对性能进行了密集优化。一些硬线架构和加速器提供了im2col处理器和矩阵乘法单元来加快卷积。
当训练CNN时,卷积的梯度是通过反向卷积运算计算的,与正向卷积运算相比,反向卷积运算通常优化得少得多。实现反向卷积的通常方法利用列到图像(column toimage,col2im)变换,这是im2col的逆运算。col2im比im2col慢得多,因为它包含了附加运算,而且通常缺乏硬件加速。
本发明的实施例重新格式化输入和输出数据,以使得可以使用卷积运算。在许多实施例中,该卷积运算将使用与上述正向卷积运算使用的相同的优化卷积功能单元。
CNN训练过程的反向传递涉及在给定头部的情况下确定损失相对于(withrespect to,wrt)输入数据和权重的梯度、损失相对于正向传递运算的输出的梯度的张量。实施例重新用公式表示该计算,以使用可以利用架构优化的卷积运算。
对于没有填充或膨胀的情况,提供具有X.shape=(H,W)的X和具有W.shape=(kh,kw)的W的2D数据卷积的数学公式,其中,步幅为(sh,sw),通过以下公式提供:
输出相对于数据输入的梯度通过以下公式提供:
输出相对于权重输入的梯度通过以下公式提供:
这两个公式(2)和(3)可以将损失函数相对于输入数据和权重的反向梯度表示为:
或使用单独的填充、步幅和膨胀参数的形式,表示为:
对于4D数据布局,其中,X具有X(N,Cin,H,W)形状,W具有W(Cout,Cin,kh,kw),正向卷积通过以下公式提供:
因此,两个反向梯度是:
其中,FlipRot(W):在H维度和W维度上翻转张量W,在N维度和C维度上转置,
Strided(Head):仅在上述H维度和W维度上拉伸头部张量,
TNC(X):转置张量x的N维度和C维度。
使用膨胀参数,可以进一步简化权重的梯度:
Conv(TNC(X),TNC(Strided(Head)))=Conv(TNC(X),TNC(Head),dilation=sforward)
在步幅>1且膨胀>1的情况下,最终公式变为:
对于具有分形数据格式的张量处理器,卷积要求输入数据张量必须为5D NC1HWC0格式,输入权重张量必须为分形(C1HW)N1N0C0格式,其中,
其中,‘//’是整数除法,‘%’是整数模。
图1示出了用于在训练CNN系统时使用的执行反向卷积运算104的简化系统。在该示图中,反向卷积有3个输入:头部118是误差(或损失)相对于正向传递中使用的正向卷积106的输出y 116、数据X 112和权重W 114的梯度。反向卷积必须生成两个梯度,一个是相对于数据输入X 120的梯度(表示为dL/dX),另一个是相对于权重输入W 122的梯度(表示为dL/dX)。此外,一些具有分形数据格式的张量处理器需要数据和输出为5D格式,权重为分形数据格式。
本发明的实施例使用两个卷积运算符108、110来计算梯度120、122。同时,数据格式要求需要实现适当的数据格式转换器。图2示出了实施例提供的系统。
本发明的实施例可以实现针对特定的计算机架构、实现或输入和输出数据格式优化的操作。例如,一些实施例可以针对张量处理器和分形数据布局优化。
优化过程开始于通过检查运算符的公式和属性来确定运算符是否是2D卷积运算符。然后,可以为输入数据和输入权重的反向梯度构造两个新的Conv2D运算符。
实施例还可以使用中间或临时数据格式。数据格式转换可以首先表示为一连串多个格式转换,然后组合为最终的复合变换。在一些实施例中,可以使用临时数据格式,例如4D格式、NCHW和6D格式,N1N0C1C0HW。
在实施例中,数据转换可以使用张量迭代器表示如下:
如果X.shape=(H,W)、Y.shape=(H,W)和Xij=Yij,则
iX=iY;jX=jY
翻转张量Xij=YH–1–i,W–1–j的示例可以写成:
iX=H–1–iY;jX=W–1–jY
使用这些表示法,特定的数据转换器可以确定如下。
对于变换Strided(X),输入张量和结果都需要为5D格式。具有对应迭代器的X的5D格式为:
具有对应迭代器的Xstrided的5D格式为:
使用各自迭代器的张量之间的关系是:
对应的代码可以用域特定的计算机语言(例如TVM)生成:
对于变换FlipRot(X),张量X为分形格式,并且可以使用链接在一起的临时步骤来确定变换。分形格式的第一数据被变换为NCHW格式。随后,应用翻转变换将NCHW格式化的数据转换为分形格式。在给定原始张量X为NCHW格式的情况下,该原始张量的形状和对应的迭代器可以表示为:
(N,C,H,W)→[i0,i1,i2,i3]
以TVM表示的对应的代码为:
对于变换TNC(X),输入张量X为5D格式。张量X可以用具有对应迭代器的NCHW格式表示:
(N,C,H,W)→[i0,i1,i2,i3]
具有对应迭代器的X的5D格式为:
以及
X的N维度和C维度可以通过交换对应迭代器来转置:
(C,N,H,W)→[i1,i0,i2,i3]
TNC(X)从5D格式到5D格式的变换可以通过将[j0,j1,j2,j3,j4]写为[k0,k1,k2,k3,k4]的函数来确定:
由于对称性,将[k0,k1,k2,k3,k4]写为[j0,j1,j2,j3,j4]的函数的公式是类比的。
以TVM表示的对应实现为:
可以类似地确定变换TNC·Frac(X),以得到一个公式,用于转置以下公式中的N和C:
同时转换为分形格式
公式如下所示:
以TVM表示的对应实现为:
图3示出了在训练CNN时使用数据变换来实现反向卷积传递的实施例。头部相对于数据120的梯度通过对通过FlipRot变换202变换的权重114和通过Strided变换204变换的头部118进行卷积108得到。头部相对于权重122的梯度的中间值通过对通过TNC变换208变换的数据112和通过TNC·Frac变换206变换的头部118进行卷积110得到。在该实施例中,然后,中间梯度通过TNC·Frac变换206变换,以产生头部相对于权重122的梯度。
本发明的实施例可以用于其它应用和其它框架,其中,反向卷积可以表示为正向卷积。
实施例可以使用迭代的方法来使用本文的方法执行数据转换和变换。
图4示出了实施例提供的计算系统400的示例性硬件实现。计算系统400可以是片上系统(system-on-chip,SoC)、卡、模块、协处理器,并且可以位于主机系统内部或外部。系统400包括监督和控制其它系统资产的使用的任务调度器。任务调度器可以是可以具有相同或不同的架构一个或多个传统CPU。在一些实施例中,它也可以是简化的控制器或状态机。任务调度器耦合到可以访问系统的其它块的互连件404。网络I/F 406用于向/从外部设备或主机设备发送和接收数据,并且可以包括有线或无线网络技术,如以太网。该网络I/F406还可以包括并行或串行总线技术,如PCI、Firewire、Thunderbolt、SATA等。I/O 408类似于网络I/F,但包括连接到外围设备的接口、用户接口、低速接口,如低速USB或I2C。固件410包括非易失性存储器,存储在系统通电、重置或重新启动时使用的固件、BIOS、启动代码、配置参数等。存储器/缓冲器412包括系统400所需的内部易失性和非易失性存储器。DMA 414可用于在系统400内以及外部读取、写入和传输存储器的块,而任务调度器402所需的输入很少。存储器I/F 416用于与外部存储器(如SRAM、DRAM、闪存等)通信。
核420包括专用的卷积功能单元,以加速卷积运算。在一些实施例中,存在多个核。在一些实施例中,核还将包含用于执行数据格式变换和im2col操作的硬件。接口422为任务调度器或DMA 414提供接口,以接收用于核420的数据或指令。DMA引擎424可用于从网络I/F406、存储器/缓冲器412或存储器I/F 416向核420读取或写入数据。在可以使用来自外部源的数据之前,可能需要通过变换428对数据进行变换。变换后的数据在加载到输入寄存器434之前被复制到两个缓冲器A430和B 432中。在一些应用中,缓冲器A和缓冲器B的内容将是卷积运算的数据和权重。矩阵乘法单元436和累积单元438根据需要用于执行卷积。结果存储在输出寄存器440中,以便在核420外部使用。该示例性核420存在变化,并且可以针对特定的应用和操作进行自定义和优化。
卷积功能单元420通常对输入数据的大小具有限制。最小输入数据(称为分形)通常是一个具有预定长度(如16)的方阵。到卷积功能单元420的输入数据应该是分形的乘数。硬件还提供分形指令,这将比标量和矢量指令更高效。在卷积码生成期间考虑了这些因素。
为了表示这种矩阵,使用4D格式,其中,两个维度表示分形的索引(称为块索引),另外两个维度表示分形内的元素的索引(称为分形索引)。例如,在图5中,矩阵A502由4个小分形Ai j组成,其中,1≤i≤2且1≤j≤2。每个分形Ai j是一个16×16的矩阵{Ai jkl},其中,1≤k,l≤16。这里i和j是分形的索引,k和l是分形内的元素的索引。如果想要以分形格式转置矩阵,需要互换{i,j}(转置分形的位置)和{k,l}(转置分形)两者。
1对于i、j、k、l:
2 A_transpose[i,j,k,l]=A[j,i,l,k]
在实施例中,卷积功能单元420将输入矩阵502视为块矩阵,并且每个块是分形。卷积通过块矩阵乘法进行,如图5所示。
图6示出了通用计算平台的实施例,该平台可以在较大系统中执行主机处理器的功能,或者与协处理器系统、ASIC、卡或加速卷积运算的模块连接。图4为可以用于实现本文公开的各种设备和方法的计算系统的框图。特定设备可以使用所有示出的组件或仅使用这些组件的子集,且设备之间的集成程度可能不同。此外,设备可以包含组件的多个实例,例如多个处理单元、处理器、存储器、发射器、接收器等。计算系统包括处理单元600。处理单元600通常包括中央处理器(central processing unit,CPU)610、总线和存储器620,并且可选地还可以包括大容量存储设备630、视频适配器640和I/O接口660(每个设备都以虚线示出,以表示它们是可选的)。计算系统还可以包括一个或多个网络接口650,用于将计算系统连接到通信网络655。
CPU可以包括任何类型的电子数据处理器,并且可以包括一个或多个核或处理元件。存储器可以包括任何类型的非瞬时性系统存储器,例如静态随机存取存储器(staticrandom access memory,SRAM)、动态随机存取存储器(dynamic random access memory,DRAM)、同步DRAM(synchronous DRAM,SDRAM)、只读存储器(read-only memory,ROM)或其组合。在一个实施例中,存储器可以包括在开机时使用的ROM以及在执行程序时使用的存储程序和数据的DRAM。总线可以是任何类型的几种总线架构中的一种或多种,包括存储器总线或存储器控制器总线、外围设备总线或视频总线。
大容量存储器可以包括任何类型的非瞬时性存储设备,用于存储数据、程序和其它信息,并使得这些数据、程序和其它信息可通过总线访问。大容量存储器可以包括例如固态硬盘、硬盘驱动器、磁盘驱动器或光盘驱动器中的一种或多种。
视频适配器640和I/O接口660提供可选接口以使外部输入和输出设备与处理单元耦合。输入和输出设备的示例包括与视频适配器640耦合的显示器670和与I/O接口660耦合的I/O设备580,例如触摸屏。其它设备可以与处理单元耦合,并且可以使用其它或更少接口。例如,可使用如通用串行总线(universal serial bus,USB)等串行接口(未示出)为外部设备接口提供。或者,计算系统可以依靠一个或多个网络接口连接到可用的大容量存储器、视频适配器和网络上可用的I/O接口。
根据本发明的实施例,提供了一种用于加速卷积运算的系统,包括:任务调度器;多个核,所述多个核中的每个核包括卷积功能单元,所述卷积功能单元中的每个卷积功能单元用于接收第一格式的第一数据,接收第二格式的第二数据,以及输出第三格式的第三数据。所述系统还包括:I/O接口,耦合到所述任务调度器;非瞬时性计算机可读存储介质,用于存储软件指令,所述软件指令用于控制所述任务调度器。所述任务调度器执行从所述I/O接口接收第一数据集和第二数据集的步骤。将所述第一数据集变换为第一转换数据集,所述第一转换数据集具有所述第一格式。将所述第二数据集变换为第二转换数据集,所述第二转换数据集具有所述第二格式。将所述第一转换数据集和所述第二转换数据集加载到所述卷积功能单元中。从所述卷积功能单元接收所述第三格式的结果。
在另外的实施例中,所述软件指令还控制所述任务调度器执行将所述结果变换为转换结果的步骤。
在另外的实施例中,所述结果是5D格式,所述转换结果是分形格式。
在另外的实施例中,所述第一数据集是第二卷积运算的数据集,所述第二数据集是所述数据集和权重集的所述第二卷积运算的传播误差。
在另外的实施例中,所述第一数据是5D格式,所述第一转换数据集是5D格式,所述第二数据集是5D格式,所述第二转换数据集是分形格式。
在另外的实施例中,所述结果是相对于所述权重集的梯度。
在另外的实施例中,所述第一数据集是第二卷积运算的权重集,所述第二数据集是数据集和所述权重集的第二卷积运算的传播误差。
在另外的实施例中,所述第一数据集是分形格式,所述第一转换数据集是分形格式,所述第二数据集是5D格式,所述第二转换数据是5D格式。
在另外的实施例中,所述结果是相对于所述数据集的梯度。
在另外的实施例中,所述相对于所述数据集的梯度是5D格式。
在一些实施例中,所述系统还包括:可重定目标的数据转换器,其中,所述将所述第一数据集变换为第一转换数据集由运行所述可重定目标的数据转换器的核上的矢量或标量功能单元执行,以执行所述变换。
在另外的实施例中,所述卷积功能单元处理三维矩阵。
在另外的实施例中,所述卷积功能单元执行img2col函数,接着执行矩阵乘法函数。
在另外的实施例中,所述第一数据集和所述第二数据集是张量格式。
根据另一个方面,实施例包括一种用于加速卷积运算的方法。所述方法包括:任务调度器从I/O接口接收第一数据集和第二数据集。所述任务调度器将所述第一数据集变换为第一转换数据集,所述第一转换数据集具有第一格式。所述任务调度器将所述第二数据集变换为第二转换数据集,所述第二转换数据集具有第二格式。所述任务调度器将所述第一转换数据集和所述第二转换数据集加载到卷积功能单元中,所述卷积功能单元用于接收第一格式的第一数据,接收第二格式的第二数据,以及输出第三格式的第三数据。所述任务调度器从所述卷积功能单元接收所述第三格式的结果。
本发明的另一方面包括一种用于变换张量的方法。所述方法包括:接收具有输入格式的输入张量,所述输入格式具有输入迭代器集合,并将所述输入张量存储到输入存储器中。分配输出存储器以存储具有输出格式的输出张量,所述输出格式具有输出迭代器集合。在所述输出存储器上迭代,以将所述输入张量的输入分量复制到所述输出存储器的对应于所述输出张量的输出分量的一部分,所述输入分量的索引定义为所述输出迭代器集合的函数。
在一些实施例中,所述方法还包括:分配链式存储器以存储具有链式格式的链式张量,所述链式格式具有链式迭代器集合;在所述链式存储器上迭代,以将所述输出张量的输出分量复制到所述链式存储器的对应于所述链式张量的链式分量的一部分,所述输出分量的索引定义为所述链式迭代器集合的第二函数。
另外的实施例包括:对于输出张量Y[i],所述输出格式具有形式(HW,1),所述输出迭代器集合为i,对于输入张量X[j],所述输入格式具有形式(H,W),所述输入迭代器集合为j0、j1,所述函数为Y[i]=X[i/W,i%W]。
另外的实施例包括:对于输出张量Y[i],所述输出格式具有形式(CHW,1),所述输出迭代器集合为i,对于输入张量X[j],所述输入格式具有形式(C,H,W),所述输入迭代器集合为j0、j1、j2,所述函数为
另外的实施例包括:对于输出张量Y[i],所述输出格式具有形式(H,W),所述输出迭代器集合为i0、i1,对于输入张量X[j],所述输入格式具有形式(HW,1),所述输入迭代器集合为j0,所述函数为Y[i0,i1]=X[i0*W+i1]。
另外的实施例包括:对于输出张量Y[i],所述输出格式具有形式(C,H,W),所述输出迭代器集合为i0、i1、i2,对于输入张量X[j],所述输入格式具有形式(CHW,1),所述输入迭代器集合为j0,所述函数为Y[i0,i1,i2]=X[i0*HW+i1*W+i2]。
另外的实施例包括:对于输出张量Y[i],输出格式具有形式(H,W),所述输出迭代器集合为i0、i1,对于输入张量X[j],所述输入格式具有形式(H,W),所述输入迭代器集合为j0、j1,所述函数为Y[i0,i1]=X[H–1–i0,W–1–i1]。
另外的实施例包括:对于输出张量Y[i],输出格式具有形式(H,W),所述输出迭代器集合为i0、i1,对于输入张量X[j],所述输入格式具有(H,W),所述输入迭代器集合为j0、j1,所述函数为Y[i]=X[i1,i0]。
除非另有定义,否则本文所用的所有技术和/或科学术语都具有与本发明普通技术人员公知的含义相同的含义。
通过上述实施例的描述,本发明可以仅通过硬件实现,也可以通过软件和必要的通用硬件平台实现。基于这样的理解,本发明的技术方案可以以软件产品的形式体现。软件产品可以存储在非易失性或非瞬时性存储介质中,非易失性或非瞬时性存储介质可以是光盘只读存储器(compact disk read-only memory,CD-ROM)、USB闪存盘或可移动硬盘。软件产品包括许多指令,这些指令使得计算机设备(个人计算机、服务器或网络设备)能够执行本发明实施例中提供的方法。例如,这样的执行可以对应于本文所述的逻辑运算的模拟。根据示例性实施例,软件产品可以附加地或替代地包括多个指令,这些指令使得计算机设备能够执行配置或编程数字逻辑装置的操作。
尽管已经参考本发明的特定特征和实施例描述了本发明,但是显然在不偏离本发明的范围的情况下,可以进行各种修改和组合。说明书和附图因此仅被视为所附权利要求书所定义的本发明的说明并且考虑落于本说明书的范围内的任何和所有修改、变体、组合或均等物。
Claims (36)
1.一种用于加速卷积运算的系统,其特征在于,所述系统包括:
任务调度器;
多个核,所述多个核中的每个核包括卷积功能单元,所述卷积功能单元中的每个卷积功能单元用于接收第一格式的第一数据,接收第二格式的第二数据,以及输出第三格式的第三数据;
I/O接口,耦合到所述任务调度器;
非瞬时性计算机可读存储介质,用于存储软件指令,所述软件指令控制所述任务调度器进行以下操作:
从所述I/O接口接收第一数据集和第二数据集;
将所述第一数据集变换为第一转换数据集,所述第一转换数据集具有所述第一格式;
将所述第二数据集变换为第二转换数据集,所述第二转换数据集具有所述第二格式;
将所述第一转换数据集和所述第二转换数据集加载到所述卷积功能单元中;
从所述卷积功能单元接收所述卷积运算的所述第三格式的结果。
2.根据权利要求1所述的系统,其特征在于,所述软件指令还控制所述任务调度器将所述结果变换为转换结果。
3.根据权利要求2所述的系统,其特征在于,所述结果是5D格式,所述转换结果是分形格式。
4.根据权利要求1至3中任一项所述的系统,其特征在于,所述第一数据集是第二卷积运算的数据集,所述第二数据集是所述数据集和权重集的所述第二卷积运算的传播误差。
5.根据权利要求1至4中任一项所述的系统,其特征在于,所述第一数据是5D格式,所述第一转换数据集是5D格式,所述第二数据集是5D格式,所述第二转换数据集是分形格式。
6.根据权利要求1至5中任一项所述的系统,其特征在于,所述结果是相对于所述权重集的梯度。
7.根据权利要求1所述的系统,其特征在于,所述第一数据集是第二卷积运算的权重集,所述第二数据集是数据集和所述权重集的第二卷积运算的传播误差。
8.根据权利要求7所述的系统,其特征在于,所述第一数据集是分形格式,所述第一转换数据集是分形格式,所述第二数据集是5D格式,所述第二转换数据是5D格式。
9.根据权利要求7或8所述的系统,其特征在于,所述结果是相对于所述数据集的梯度。
10.根据权利要求9所述的系统,其特征在于,所述相对于所述数据集的梯度是5D格式。
11.根据权利要求1至10中任一项所述的系统,其特征在于,还包括可重定目标的数据转换器,其中,所述将所述第一数据集变换为第一转换数据集由运行所述可重定目标的数据转换器的核上的矢量或标量功能单元执行,以执行所述变换。
12.根据权利要求1至11中任一项所述的系统,其特征在于,所述卷积功能单元处理三维矩阵。
13.根据权利要求1至12中任一项所述的系统,其特征在于,所述卷积功能单元执行img2col函数,接着执行矩阵乘法函数。
14.根据权利要求1所述的系统,其特征在于,所述第一数据集和所述第二数据集是张量格式。
15.一种用于加速卷积运算的方法,其特征在于,所述方法包括:
任务调度器从I/O接口接收第一数据集和第二数据集;
所述任务调度器将所述第一数据集变换为第一转换数据集,所述第一转换数据集具有第一格式;
所述任务调度器将所述第二数据集变换为第二转换数据集,所述第二转换数据集具有第二格式;
所述任务调度器将所述第一转换数据集和所述第二转换数据集加载到卷积功能单元中,所述卷积功能单元用于接收第一格式的第一数据,接收第二格式的第二数据,以及输出第三格式的第三数据;
所述任务调度器从所述卷积功能单元接收所述卷积运算的所述第三格式的结果。
16.根据权利要求15所述的方法,其特征在于,还包括:所述任务调度器将所述结果变换为转换结果。
17.根据权利要求16所述的方法,其特征在于,所述结果是5D格式,所述转换结果是分形格式。
18.根据权利要求15至17中任一项所述的方法,其特征在于,所述第一数据集是第二卷积运算的数据集,所述第二数据集是所述数据集和权重集的所述第二卷积运算的传播误差。
19.根据权利要求15至18中任一项所述的方法,其特征在于,所述第一数据是5D格式,所述第一转换数据集是5D格式,所述第二数据集是5D格式,所述第二转换数据集是分形格式。
20.根据权利要求15至19中任一项所述的方法,其特征在于,所述结果是相对于所述权重集的梯度。
21.根据权利要求15所述的方法,其特征在于,所述第一数据集是第二卷积运算的权重集,所述第二数据集是数据集和所述权重集的第二卷积运算的传播误差。
22.根据权利要求21所述的方法,其特征在于,所述第一数据集是分形格式,所述第一转换数据集是分形格式,所述第二数据集是5D格式,所述第二转换数据是5D格式。
23.根据权利要求21或22所述的方法,其特征在于,所述结果是相对于所述数据集的梯度。
24.根据权利要求23所述的方法,其特征在于,所述相对于所述数据集的梯度是5D格式。
25.根据权利要求15至24中任一项所述的方法,其特征在于,所述将所述第一数据集变换为第一转换数据集由运行可重定目标的数据转换器的核上的矢量或标量函数单元执行,以执行所述变换。
26.根据权利要求15至25中任一项所述的方法,其特征在于,所述卷积功能单元处理三维矩阵。
27.根据权利要求15至26中任一项所述的方法,其特征在于,所述卷积功能单元执行img2col函数,接着执行矩阵乘法函数。
28.根据权利要求15所述的方法,其特征在于,所述第一数据集和所述第二数据集是张量格式。
29.一种用于变换张量的方法,其特征在于,所述方法包括:
接收具有输入格式的输入张量,所述输入格式具有输入迭代器集合,并将所述输入张量存储到输入存储器中;
分配输出存储器以存储具有输出格式的输出张量,所述输出格式具有输出迭代器集合;
在所述输出存储器上迭代,以将所述输入张量的输入分量复制到所述输出存储器的对应于所述输出张量的输出分量的一部分,所述输入分量的索引定义为所述输出迭代器集合的函数。
30.根据权利要求29所述的方法,其特征在于,所述方法还包括:
分配链式存储器以存储具有链式格式的链式张量,所述链式格式具有链式迭代器集合;
在所述链式存储器上迭代,以将所述输出张量的输出分量复制到所述链式存储器的对应于所述链式张量的链式分量的一部分,所述输出分量的索引定义为所述链式迭代器集合的第二函数。
33.根据权利要求29所述的方法,其特征在于,对于输出张量Y[i],所述输出格式具有形式(H,W),所述输出迭代器集合为i0、i1,对于输入张量X[j],所述输入格式具有形式(HW,1),所述输入迭代器集合为j0,所述函数为Y[i0,i1]=X[i0*W+i1],其中,j0=i0*W+i1。
34.根据权利要求29所述的方法,其特征在于,对于输出张量Y[i],所述输出格式具有形式(C,H,W),所述输出迭代器集合为i0、i1、i2,对于输入张量X[j],所述输入格式具有形式(CHW,1),所述输入迭代器集合为j0,所述函数为Y[i0,i1,i2]=X[i0*HW+i1*W+i2],其中,j0=i0*HW+i1*W+i2。
35.根据权利要求29所述的方法,其特征在于,对于输出张量Y[i],所述输出格式具有形式(H,W),所述输出迭代器集合为i0、i1,对于输入张量X[j],所述输入格式具有形式(H,W),所述输入迭代器集合为j0、j1,所述函数为Y[i0,i1]=X[H–1–i0,W–1–i1],其中,j0=H–1–i0,j1=W–1–i1。
36.根据权利要求29所述的方法,其特征在于,对于输出张量Y[i],所述输出格式具有形式(H,W),并且所述输出迭代器集合为i0、i1,对于输入张量X[j],所述输入格式具有形式(H,W),所述输入迭代器集合为j0、j1,所述函数为Y[i]=X[i1,i0],其中,j0=i1,j1=i0。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2019/105118 WO2021046713A1 (en) | 2019-09-10 | 2019-09-10 | Method and apparatus for generating architecture specific convolution gradient kernels |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114127739A true CN114127739A (zh) | 2022-03-01 |
Family
ID=74866812
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980098449.7A Pending CN114127739A (zh) | 2019-09-10 | 2019-09-10 | 用于生成架构特定的卷积梯度核的方法和装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20220188968A1 (zh) |
EP (1) | EP4026057A4 (zh) |
CN (1) | CN114127739A (zh) |
WO (1) | WO2021046713A1 (zh) |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9646243B1 (en) * | 2016-09-12 | 2017-05-09 | International Business Machines Corporation | Convolutional neural networks using resistive processing unit array |
JP6767660B2 (ja) * | 2017-01-27 | 2020-10-14 | 富士通株式会社 | プロセッサ、情報処理装置及びプロセッサの動作方法 |
JP7029321B2 (ja) * | 2017-04-20 | 2022-03-03 | パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ | 情報処理方法、情報処理装置およびプログラム |
CN109190758B (zh) * | 2018-09-04 | 2021-06-15 | 地平线(上海)人工智能技术有限公司 | 用于展开卷积神经网络的张量数据的方法和装置 |
-
2019
- 2019-09-10 CN CN201980098449.7A patent/CN114127739A/zh active Pending
- 2019-09-10 EP EP19945044.6A patent/EP4026057A4/en not_active Withdrawn
- 2019-09-10 WO PCT/CN2019/105118 patent/WO2021046713A1/en unknown
-
2022
- 2022-03-08 US US17/689,295 patent/US20220188968A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
EP4026057A4 (en) | 2023-02-15 |
WO2021046713A1 (en) | 2021-03-18 |
US20220188968A1 (en) | 2022-06-16 |
EP4026057A1 (en) | 2022-07-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102562715B1 (ko) | 다수의 프로세서들 및 뉴럴 네트워크 가속기를 갖는 뉴럴 네트워크 프로세싱 시스템 | |
US10956218B2 (en) | Enqueuing kernels from kernels on GPU/CPU | |
CN101556543B (zh) | 用于执行翻译后的应用程序的计算系统 | |
US20210065005A1 (en) | Systems and methods for providing vector-wise sparsity in a neural network | |
US7836116B1 (en) | Fast fourier transforms and related transforms using cooperative thread arrays | |
JP2020537785A (ja) | ホスト通信されるマージされた重みと層単位命令のパッケージとを使用するニューラルネットワークアクセラレータによる多層ニューラルネットワーク処理 | |
US11586601B2 (en) | Apparatus and method for representation of a sparse matrix in a neural network | |
CN101398753A (zh) | 用于执行扫描运算的系统、方法及计算机程序产品 | |
US9645802B2 (en) | Technique for grouping instructions into independent strands | |
US20210319289A1 (en) | Frequency domain neural network accelerator | |
WO2021000281A1 (en) | Instructions for operating accelerator circuit | |
CN111353575A (zh) | 用于卷积神经网络的图块化格式 | |
WO2024027039A1 (zh) | 数据处理方法、装置、设备和可读存储介质 | |
EP2738675A2 (en) | System and method for efficient resource management of a signal flow programmed digital signal processor code | |
CN114830135A (zh) | 算子的层次分区 | |
US9244886B1 (en) | Minimum resource fast fourier transform | |
Tolmachev | VkFFT-a performant, cross-platform and open-source GPU FFT library | |
WO2021115149A1 (zh) | 神经网络处理器、芯片和电子设备 | |
CN114127739A (zh) | 用于生成架构特定的卷积梯度核的方法和装置 | |
Khan et al. | Accelerating SpMV multiplication in probabilistic model checkers using GPUs | |
CN116997909A (zh) | 稀疏机器学习加速 | |
US20140244232A1 (en) | Simulation apparatus and simulation method | |
Saybasili et al. | Highly parallel multi-dimentional fast fourier transform on fine-and coarse-grained many-core approaches | |
JP2022512311A (ja) | 行列数学命令セットのタイリングアルゴリズム | |
Geraci et al. | A transpose-free in-place SIMD optimized FFT |
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 |