CN112633484A - 神经网络加速器、卷积运算实现方法、装置及存储介质 - Google Patents
神经网络加速器、卷积运算实现方法、装置及存储介质 Download PDFInfo
- Publication number
- CN112633484A CN112633484A CN201910907750.XA CN201910907750A CN112633484A CN 112633484 A CN112633484 A CN 112633484A CN 201910907750 A CN201910907750 A CN 201910907750A CN 112633484 A CN112633484 A CN 112633484A
- Authority
- CN
- China
- Prior art keywords
- convolution
- convolution kernel
- sub
- weight
- unit array
- 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
- 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
- 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/15—Correlation function computation including computation of convolution operations
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Biomedical Technology (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Biophysics (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Neurology (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Complex Calculations (AREA)
Abstract
本发明实施例提供一种神经网络加速器、卷积运算实现方法、装置及存储介质,先获取原始卷积核对应的多个压缩子卷积核以及权重索引,然后从待处理的原始数据中读取规格与子卷积核规格相匹配的原始数据块,控制计算单元阵列根据原始数据块、压缩子卷积核以及权重索引执行迭代流程,其中,计算单元阵列中包括多个乘累加计算器;迭代流程结束后,获取计算单元阵列的输出结果。本发明实施例所提供的神经网络卷积运算实现方案通过对卷积核中的权重进行压缩,去除原始权卷积核中的零值权重,从而减少了卷积运算的运算量。同时,因为采用了阵列式的计算单元阵列对数据与权重进行卷积运算,能够提升卷积运算的数据复用度,减少神经网络处理过程中的带宽占用与功耗。
Description
技术领域
本发明涉及人工智能领域,尤其涉及一种神经网络加速器、卷积运算实现方法、装置及存储介质。
背景技术
近些年来,人工智能技术在在全世界范围内得到了迅猛的发展,业界投入了大量的精力开展人工智能技术的研究工作,取得了显著的成果,特别是在图像检测和识别以及语言识别等方向上,人工智能的识别率已经超过了人类。神经网络处理是实现人工智能的重要处理技术,不过,神经网络规模的不断增长,导致典型的神经网络动辄几十层甚至上百层,神经元之间的连接数以亿记,即随着算法的性能指标不断提升,计算量不断的增加,完成推理需要的时间也需来越长。
因此,神经网络的硬件加速器或处理器如何降低处理时间,提高处理效能,是目前业界都在关注的重点技术问题。
发明内容
本发明实施例提供的神经网络加速器、卷积运算实现方法、装置及存储介质,主要解决的技术问题是如何降低神经网络硬件加速器或处理器的处理时间,提高处理效能。
为解决上述技术问题,本发明实施例提供一种神经网络卷积运算实现方法,包括:
获取原始卷积核对应的子卷积核、压缩子卷积核以及权重索引,子卷积核通过对原始卷积核进行切分处理得到,压缩子卷积核和权重索引通过去除子卷积核中的零值权重,对剩余权重值进行重排得到;
从待处理的原始数据中读取规格与子卷积核规格相匹配的原始数据块;
控制计算单元阵列根据原始数据块、压缩子卷积核以及权重索引执行迭代流程,计算单元阵列中包括多个乘累加计算器;
迭代流程结束后,获取计算单元阵列的输出结果。
本发明实施例还提供一种神经网络卷积运算实现装置,包括:
数据获取模块,用于获取原始卷积核对应的子卷积核、压缩子卷积核以及权重索引,子卷积核通过对原始卷积核进行切分处理得到,压缩子卷积核和权重索引通过去除子卷积核中的零值权重,对剩余权重值进行重排得到;
数据读取模块,用于从待处理的原始数据中读取规格与子卷积核规格相匹配的原始数据块;
迭代计算模块,用于控制计算单元阵列根据原始数据块、压缩子卷积核以及权重索引执行迭代流程,计算单元阵列中包括多个乘累加计算器;
结果获取模块,用于在迭代流程结束后,获取计算单元阵列的输出结果。
本发明实施例还提供一种神经网络加速器,包括处理器、存储器、计算单元阵列以及通信总线;
通信总线用于实现处理器和存储器之间的连接通信;
处理器用于执行存储器中存储的一个或者多个程序,以实现上述神经网络卷积运算实现方法的步骤。
本发明实施例还提供一种存储介质,该述存储介质存储有一个或者多个程序,一个或者多个程序可被一个或者多个处理器执行,以实现上述神经网络卷积运算实现方法的步骤。
本发明的有益效果是:
根据本发明实施例提供的神经网络加速器、卷积运算实现方法、装置及存储介质,先获取原始卷积核对应的多个压缩子卷积核以及权重索引,压缩子卷积核通过对原始卷积核进行切分处理与压缩处理得到,切分处理包括对原始卷积核进行切分得到的子卷积核,压缩处理包括去除子卷积核中的零值权重,对剩余权重值进行重排并确定权重索引;然后从待处理的原始数据中读取规格与子卷积核规格相匹配的原始数据块,控制计算单元阵列根据原始数据块、压缩子卷积核以及权重索引执行迭代流程,其中,计算单元阵列中包括多个乘累加计算器;迭代流程结束后,获取计算单元阵列的输出结果。本发明实施例所提供的神经网络卷积运算实现方案通过对卷积核中的权重进行压缩,去除原始权卷积核中的零值权重,从而减少了卷积运算的运算量。同时,因为采用了阵列式的计算单元阵列对数据与权重进行卷积运算,能够提升卷积运算的数据复用度,减少神经网络处理过程中的带宽占用与功耗。
本发明其他特征和相应的有益效果在说明书的后面部分进行阐述说明,且应当理解,至少部分有益效果从本发明说明书中的记载变的显而易见。
附图说明
图1为本发明实施例一中示出的神经网络卷积运算实现系统的一种结构示意图;
图2为本发明实施例一中提供的神经网络卷积运算实现方法的一种流程图;
图3为本发明实施例一中示出的对原始卷积核进行权重压缩得到压缩子卷积核的一种示意图;
图4为本发明实施例一中提供的计算单元的一种示意图;
图5为本发明实施例一中提供的计算单元阵列的一种示意图;
图6为图5中计算单元阵列对权重与数据进行卷积运算的一种示意图;
图7为本发明实施例二中示出的神经网络卷积运算实现装系统的一种结构示意图;
图8为本发明实施例二中提供的神经网络卷积运算实现方法的一种流程图;
图9为本发明实施例二中示出的神经网络卷积运算实现系统的另一种结构示意图;
图10为本发明实施例三中示出的编译器进行权重压缩的示意图;
图11为本发明实施例三中示出的根据卷积核适配计算单元阵列规格的一种示意图;
图12为本发明实施例四中提供的神经网络加速器的一种硬件结构示意图;
图13为本发明实施例四中提供的神经网络卷积运算实现装置的一种结构示意图;
图14为本发明实施例四中提供的神经网络卷积运算实现装置的另一种结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,下面通过具体实施方式结合附图对本发明实施例作进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
实施例一:
为了提升神经网络处理的处理效率,减少神经网络卷积运算的计算量,本实施例提供一种神经网络卷积运算实现方法,在介绍该神经网络卷积运算实现方法之前,本实施例先介绍一种可以实现该神经网络卷积运算实现方法的神经网络卷积运算实现装置,请参见图1:
神经网络卷积运算实现系统1,包括CPU 11、全局缓存12与神经网络加速器10,其中,神经网络加速器10包括输入输出缓存13、命令解析单元14以及计算控制单元15和计算单元阵列16。
其中,CPU 11与命令解析单元14通信连接,CPU 11可以向命令解析单元14发送控制指令,而命令解析单元14与计算控制单元15以及输入输出缓存13之间通信连接,其能够对CPU 11发送的控制指令进行解析,然后将根据控制指令获取到的运算策略发送给计算控制单元15,让计算控制单元15对计算单元阵列16进行配置;同时,命令解析单元14在接收到CPU 11发送的控制指令之后,还可以获取到卷积计算准备策略,命令解析单元14可以将该卷积准备策略发送给输入输出缓存13,让输入输出缓存从全局缓存12中读取卷积运算所需要的信息。在全局缓存12当中存储的信息包括待推理的原始数据、压缩子卷积核、权重索引。在本实施例的一些示例当中全局缓存12中还可以存储控制指令。在本实施例的另外一些示例当中,全局缓存12中还可以用于存储计算单元阵列16的中间结果。
下面结合图1示出神经网络卷积运算实现系统对神经网络卷积运算实现方法进行介绍,请参见图2,图2示出的是神经网络卷积运算实现方法的一种流程图:
S202:神经网络加速器获取原始卷积核对应的子卷积核、压缩子卷积核以及权重索引。
在本实施例中,原始卷积核是指原本需要参与卷积运算的卷积核。而压缩子卷积核则是通过对原始卷积核进行切分处理以及压缩处理得到的卷积核。
在切分处理当中,可以从原始卷积核切分出子卷积核。这里假定原始卷积核的规格为R*S*CH,其中R为原始卷积核的列宽,S为原始卷积核的行宽,CH为原始卷积核的通道数。通过切分处理得到的子卷积核的规格为R*S*C,其中C≤CH。可见,子卷积核的列宽、行宽同原始卷积核的列宽、行宽保持一致,如图3,在图3中,原始卷积核31与由该原始卷积核31切分得到的某一个子卷积核32相比,仅仅是通道数存在差别。
在进行切分处理之后,还需要进行压缩处理,压缩处理是指去除切分处理得到的各子卷积核中的零值权重,保留非零权重,并对非零权重进行重排的过程。应当理解的是,在对非零权重进行重拍后,为了通过压缩子卷积核表征出压缩之前的子卷积核,可以根据压缩前子卷积核中零值权重的绝对位置、非零权重的绝对位置或者是零值权重与零值权重间的相对位置、非零权重与非零权重之间的相对位置确定出压缩子卷积核对应的权重索引,通过权重索引与压缩子卷积核以及确定权重索引的规则能够恢复出压缩之前的子卷积核。
对于卷积神经网络,卷积核一般都是三维立体结构,可以通过训练的方式对卷积核中的权重剪枝成同一个通道C都为零值权重的状态,各压缩子卷积核所对应的权重索引是一致的,也即整个权重索引中仅有一种权重索引。这样可以进一步减少权重压缩索引表,提升压缩效率。下面结合示例对本实施例中提出的可供参考的几种确定权重索引的方式进行介绍:
方式一:按照零值权重在子卷积核中的绝对位置确定压缩子卷积核对应的权重索引。
例如,子卷积核为{1,0,3,0,0,0,0,9},共8个数,那么经过压缩后的压缩子卷积核为{1,3,9},对应的权重索引为{0,2,8},即权重索引表示压缩后保留的权重在子卷积核中的绝对位置。具体地,针对压缩后保留的权重值“1”,其在子卷积核中的位置序号为0,而针对压缩后保留的权重值“3”,其在子卷积核中的位置序号为2,针对压缩后保留的权重值“9”,其在子卷积核中的位置序号为8.可以理解的是,方式一比较适合权重压缩率比较高场景,也即子卷积核中零值权重比较多的场景。
方式二:按照子卷积核中非零权值相对前一非零权值之间所间隔的零值权重的数目确定压缩子卷积核对应的权重索引。
继续假定子卷积核为{1,0,3,0,0,0,0,9},压缩子卷积核为{1,3,9},对应的权重索引为{0,1,4},权重索引表示的是子卷积核中非零权值相对前一非零权值之间所间隔的零值权重的数目,例如,针对压缩后保留的权重值“1”,其相对前一非零权重而言,中间并不存在零值权重,也即间隔的零值权重数目为0(其前面也不存在非零权重);针对压缩后保留的权重值“3”,在子卷积核中其相对于前一非零权值而言,中间存在1个零值权重;针对压缩后保留的权重值“9”,其在子卷积核中相对前一非零权重而言,中间间隔了4个零值权重。
应当理解的是,按照方式二确定权重索引,则压缩子卷积核中所保留的权重值数目越少,则权重索引也越简单,确定权重索引也越简单,因此,方式二也是更适合压缩率较高的场景。
方式三:按照非零权重在子卷积核中的绝对位置确定压缩子卷积核对应的权重索引。
假设子卷积核为{1,4,3,0,7,7,0,9},共8个数,经过权重压缩后得到的压缩子卷积核为{1,4,3,7,7,9}。由于在这种压缩场景下,压缩子卷积核相对于压缩前的子卷积核而言,保留的权重值较多,也即压缩率较低,因此,如果继续采用前述方式一或方式二提供的方案确定权重索引,则确定权重索引的工作比较大,权重索引的类型也会比较多,因此,这里提供一种适合于压缩率较低的场景的权重索引确定方式:按照非零权重在子卷积核中的绝对位置确定压缩子卷积核对应的权重索引,通过这种压缩方式可以确定出来的权重索引为{3,7},其中“3”表示压缩前的子卷积核中零值权重在子卷积核中的据对位置,也即位置序号(位置序号从0起始)为3,因此,子卷积核中的第一个零值权重在“3”的后面;对应的,“7”表示子卷积核中的第二个零值权重的位置序号为7,因此,第二个零值权重出现在9的前面。
方式四:按照子卷积核中零值权值相对前一零值权值之间所间隔的非零权重的数目确定压缩子卷积核对应的权重索引。
继续假设压缩前的子卷积核为{1,4,3,0,7,7,0,9},那么经过压缩后的压缩子卷积核为{1,4,3,7,7,9},对应的权重索引为{3,2}。因为本方式是按照子卷积核中零值权值相对前一零值权值之间所间隔的非零权重的数目确定权重索引的,因此权重索引的“3”表征的是子卷积核中第一个零值权重相对前一零值权重中间所间隔的非零权重的数目为3,所以,第一个零值权重出现在子卷积核中的位置序号3上;而“2”则表示子卷积核当中第二个零值权重相对前一零权重之间间隔了非零权重的数目是2。
可以理解的是,相较于压缩率高的场景,方式四所提出的确定权重索引的方式也是更适合应用于压缩率较低的场景中。
S204:神经网络加速器从待处理的原始数据中读取规格与子卷积核规格相匹配的原始数据块。
所谓“原始数据块”是指从待推理或待处理的原始数据中读取规格与子卷积核规格相匹配的原始数据数据块。这里所谓“相匹配”可以是指原始数据块与子卷积核规格完全相同,但也可以不同。在卷积准备策略中,会指示输入输出缓存如何从全局缓存中读取原始数据块,也即会指示原始数据块的规格。这个规格是根据子卷积核的尺寸规格以及MAC阵列大小共同确定的。
在本实施例中,神经网络加速器可以从终端的CPU处接收控制指令,然后解析控制指令确定进行神经网络卷积运算的运算策略以及卷积准备策略。
在本实施例中,控制指令是用于指示神经网络卷积运算的运算策略以及指示进行神经网络卷积运算前的数据准备工作的指令。所以,通过解析控制指令,可以获取到运算策略与卷积准备策略。
根据运算策略对计算单元阵列进行配置,并根据卷积准备策略从原始数据中读取规格与子卷积核规格相匹配的原始数据块,将原始数据块、压缩子卷积核以及权重索引存储到输入输出缓存中。
在本实施例的一些示例当中,运算策略实际上就是用于指示对计算单元阵列进行功能配置的信息,运算策略可以指示计算单元阵列的规格,因为在本实施例的一些示例当中,计算单元阵列的规格是可以根据待处理或待推理原始数据的计算需求进行规格适配的,这样,当原始数据中需要参与卷积运算的数据量不多时,可以考虑用规格尺寸小一点的计算单元阵列,也即采用乘累加单元数目较少的计算单元阵列,这样可以避免计算单元阵列过大,但运算数据量少而导致计算单元阵列计算效率低的问题。
另外,运算策略还可以指示计算单元阵列如何对权重值与数据进行卷积运算,如运算策略可以指示计算过程中的迭代次数等。在本实施例中,计算单元MAC实际就是累加乘(Multiply Accumulate,MAC)单元,请参见图4示出的乘累加单元的示意图:乘累加单元40中包括乘法器41与累加器42,数据与权重在每个节拍中不停输入到乘法器41中,经过乘法器41的乘法运算后,送到累加器42中,完整相应卷积运算的结果。图5中示出了一种计算单元阵列的示意图:在图5当中,计算单元阵列50中包括多个计算单元,这些计算单元构成矩阵。
而卷积准备策略则是用于指示在进行卷积计算之前现读取原始数据块、压缩子卷积核以及权重索引,然后将这些内容存储在输入输出缓存当中,因为在进行卷积运算的时候,从输入输出缓存向计算单元阵列输入权重值与数据比临时从全局缓存等处获取数据与权重更快,减少了原始数据块或压缩卷积核等从全局缓存中读写的次数,减少了数据的搬移过程,从而有效减低带宽与功耗。
当解析了控制指令确定出运算策略与卷积准备策略之后,可以根据运算策略对本次神经网络卷积运算所采用的计算单元阵列进行功能配置,并根据卷积准备策略从全局缓存中读取规格与子卷积核规格相匹配的原始数据块,以及压缩子卷积核、权重索引,并将这些内容存储到输入输出缓存,进行卷积运算之前的准备工作。
S206:神经网络加速器控制计算单元阵列根据原始数据块、压缩子卷积核以及权重索引执行迭代流程。
在本实施例中,计算单元阵列可以根据压缩子卷积核、权重索引以及原始数据块进行卷积运算,在图6示出了图5中计算单元阵列进行卷积运算的一种示意图:
可以将压缩子卷积核(A1、A2…Ai;B1、B2…Bi;C1、C2…Ci等)中的权重值按照计算单元阵列50的计算节拍逐渐从计算单元阵列的第一侧输入,并从原始数据块中读取数据(a1、a2…aj;b1、b2…bj;c1、c2…cj等)按照计算单元阵列50的计算节拍逐渐从计算单元阵列的第二侧输入。进入到计算单元阵列50中的权重值将随着计算节拍逐渐从第一侧向着与第一侧相对的第三侧流动,而进入到计算单元阵列50中的数据将随着计算节拍逐渐从第二侧向着与第四侧流程。由于计算单元阵列50是矩阵式的阵列,计算单元阵列50包括四个侧边,第一侧与第三侧相对,而第二侧与第四侧相对,因此,如果第一侧是计算单元阵列50的长边侧,则第二侧是计算单元阵列50的宽边侧;如果第一侧是计算单元阵列50的宽边侧,则第二侧是计算单元阵列50的长边侧。在图5当中,是将压缩子卷积核中的权重值从计算单元阵列50的上边缘输入计算单元阵列,并将原始数据块中读取的数据自计算单元阵列50的左边缘输入计算单元阵列。
可以理解的是,在第一个计算节拍下,压缩子卷积核中的权重值A1、B1、C1…N1是输入到计算单元阵列50的第一行计算单元中,而原始数据块中的数据a1、b1、c1…m1是输入到计算单元阵列50的第一列计算单元中。而在下一计算节拍中,权重值A1、B1、C1…N1将进入到计算单元阵列50的第二行计算单元中,权重值A2、B2、C2…N2将输入到计算单元阵列50的第一行计算单元中;而原始数据块中的数据a1、b1、c1…m1是输入到计算单元阵列50的第二列计算单元中,原始数据块中的数据a2、b2、c2…m2将被输入到计算单元阵列50的第一列计算单元中……依次类推直到计算单元阵列50获得输出结果。
需要说明的是,计算单元阵列进行卷积运算的过程是一个迭代进行的过程,因此,当计算单元阵列获得输出结果之后,又会把该输出结果作为下一次迭代的原始数据块。
另外,值得注意的是,由于计算单元阵列所进行的卷积运算中使用的是压缩子卷积核,压缩子卷积核经历过压缩,去除了零值权重。而原始数据块的尺寸规格却是与压缩前的子卷积核尺寸规格相匹配的数据块,因此,原始数据块中的数据并不是全部都会输入到计算单元阵列中去。计算单元阵列在从输入输出缓存中读取数据的时候,可以根据压缩子卷积核对应的权重索引确定读取哪些数据。可选地,对于任一压缩子卷积核,计算单元阵列根据权重索引确定原始数据块中与压缩子卷积核中各权重对应的数据,然后将确定出的数据自计算单元阵列的第二侧输入。
S208:迭代流程结束之后,神经网络加速器获取计算单元阵列的输出结果。
在迭代流程结束之后,可以获取计算单元阵列最后一次迭代的输出结果,该结果即为原始数据与原始卷积核进行卷积运算的卷积结果。
本实施例中,提供的神经网络卷积运算实现系统与神经网络卷积运算实现方法,通过计算单元阵列随着计算节拍对原始数据块与压缩子卷积核中的权重值进行“流水式”的卷积运算,计算速度快,计算效率高,能够缩短神经网络处理过程中卷积运算所花费的时间。
同时,在本实施例中,因为参与计算单元阵列的卷积运算的权重是经过压缩的,去除了原始卷积核中的很多零值权重,因此,这减少了全局缓存在存储卷积核时所需要的存储资源,更重要的是,计算单元阵列在进行卷积运算的时候,可以不对零值权值以及原始数据块中与零值权重相对应的权重值进行计算,因此这极大地减少了卷积运算的计算量。
实施例二:
本实施例将继续对本发明所提供的神经网络卷积运算实现方法和装置进行介绍,请参见图7:
在图7示出的神经网络卷积运算实现系统7当中,同样包括CPU 71、全局缓存72与神经网络加速器70。不过,和实施例一中不同的是,本实施例中,神经网络加速器70不仅包括输入输出缓存73、命令解析单元74、计算控制单元75和计算单元阵列76,还包括Winograde(威诺格拉德)转换单元77。Winograde转换单元77设置在输入输出缓存73与计算单元阵列76之间,其用于在确定压缩子卷积核为支持Winograde算法的卷积核后,将压缩子卷积核与原始数据块转换到Winograde域,然后将转到Winograde域的压缩子卷积核与原始数据块中的数据输入给计算单元阵列76,以供计算单元阵列76按照配置在Winograde域下执行压缩子卷积与原始数据块之间的卷积运算。Winograde转换单元77还用于将计算单元阵列最后一次迭代的输出结果转换到数字域得到本次神经网络卷积运算的最终结果。
下面结合图8示出的流程图本实施例中提供的神经网络卷积运算实现方法进行说明:
S802:全局缓存获取原始卷积核对应的多个压缩子卷积核以及权重索引。
在本实施例中,对原始卷积核进行压缩的过程可以由神经网络卷积运算实现系统7以外的其他设备实现,全局缓存72可以从其他设备上获取到的原始卷积核对应的压缩子卷积核以及对应的权重索引,并对压缩子卷积核与权重索引进行存储。
通常,在全局缓存当中还可以存储待推理的原始数据以及控制指令。本领域技术人员可以理解的是,全局缓存可以存储控制指令,当CPU需要向命令解析单元下发控制指令的时候,CPU从全局缓存中提取控制指令;但在本实施例的另外一些示例当中,全局缓存中也可以不用存储控制指令,这样,CPU可以在向命令解析单元下发控制指令的时候进行控制指令的实时生成。
S804:CPU向命令解析单元下发控制指令。
可以理解的是,全局缓存72除了可以存储压缩子卷积核与权重索引以外,还可以存储CPU 71发送给命令解析单元74的控制指令。在图7当中,全局缓存72与CPU 71之间存在通信连接。
S806:命令解析单元解析控制指令确定进行神经网络卷积运算的运算策略以及卷积准备策略。
在本实施例中,控制指令是用于指示神经网络卷积运算运算策略以及指示进行神经网络卷积运算前的数据准备工作的指令。所以,通过解析控制指令,可以获取到运算策略与卷积准备策略。
S808:计算控制单元根据运算策略对计算单元阵列进行配置。
当解析了控制指令确定出运算策略与卷积准备策略之后,可以根据运算策略对本次神经网络卷积运算所采用的计算单元阵列进行功能配置。运算策略可以指示计算单元阵列76的规格,所以计算控制单元75可以根据运算策略所指示的规格配置计算单元阵列76的规格。
S810:输入输出缓存根据卷积准备策略从原始数据中读取规格与子卷积核规格相匹配的原始数据块,将原始数据块、压缩子卷积核以及权重索引存储到输入输出缓存中。
命令解析单元74解析得到卷积准备策略之后,输入输出缓存73可以根据卷积准备策略从全局缓存72中读取规格与子卷积核规格相匹配的原始数据块以及压缩子卷积核、权重索引,并将这些内容进行缓存。
可以理解的是,在本实施例中,输入输出缓存73进行卷积运算准备工作的流程在计算控制单元75对计算单元阵列76进行配置的流程之后,但本领域技术人员可以理解的是,从全局缓存72中提取原始数据块等信息的流程也可以在对计算单元阵列76的配置过程之前执行,或者是两个过程同时进行。
S812:将压缩子卷积核与原始数据块转换到Winograde域。
由于在Winograde域进行卷积运算能够减少卷积运算的计算量,因此,在本实施例的一些示例当中,在计算单元阵列对压缩子卷积终端的权重值与原始数据块中的数据进行卷积运算之前,Winograde转换单元77可以将原始数据块的数据和压缩子卷积转换到Winograde域。Winograde的转换公式如下:
U=GFGT V=BTInB
其中,F为输入权重,In为输入数据。数据进行BT以及B的转换,用于将数据转换成Winograd域,其中BT为B的转置矩阵。权重进行GT以及G的转换,用于将权重转换成Winograd域,其中GT为G的转置矩阵。将经过转换的权重U以及数据V进行卷积运算后,需要再转换到数据域,然后输入结果,对于通过优化,可以转换为的形式,这样可以进一步有效减少乘法器运算,从而提升处理能力。
应当理解的是,Winograd转换单元77进行Winograd域转换是有条件的,也即Winograd转换单元77并不能将所有的压缩子卷积核都转换到Winograd域,也不能将所有的原始数据块都转换到Winograd域。Winograd转换单元77在进行Winograd域转换的时候,对压缩子卷积核与原始数据块的规格有要求,Winograd转换单元77要求压缩子卷积核的行宽与列宽相同,也即压缩子卷积核的一个面为正方形,如果不满足该条件,则Winograd转换单元77不能对压缩子卷积核进行Winograd域转换。
由于在对子卷积核进行压缩的时候,会保证压缩子卷积核与子卷积核之间的行宽与列宽一致(即压缩子卷积核与子卷积核的行宽一致,压缩子卷积核与子卷积核的列宽一致),而原始数据块的规格与子卷积核的规格相匹配,因此,如果Winograd转换单元77能够对压缩子卷积核进行Winograd域转换,则Winograd转换单元77能够对原始数据块进行Winograd域转换。
S814:控制计算单元阵列按照配置执行迭代流程。
可以理解的是,经过Winograd转换单元77的Winograd域转换操作,计算单元阵列76在进行卷积运算的时候,就是在Winograd域下对压缩子卷积核中的权重值与原始数据块中的数据进行卷积运算。计算单元阵列76可以将压缩子卷积核中的权重值从上侧输入,让权重值随着计算节拍逐渐向下侧流动;同时,计算单元阵列76可以根据权重索引从输入输出缓存73中读取原始数据块中的数据,并将读取的数据自左侧输入,让数据随着计算节拍向着右侧流动。
在计算单元阵列76获得卷积运算的输出结果之后,将输出结果作为中间结果存储到输入输出缓存73当中,在下一次迭代过程中,将读取中间结果中的数据与权重进行卷积运算。可以理解的是,输入输出缓存73的存储能力比较有限,因此,如果输入输出缓存73的存储资源不足以存储计算单元阵列76的中间结果时,输入输出缓存73可以将中间结果存储到全局缓存72当中。
在本实施例的一些示例当中,在输入输出缓存73与全局缓存72之间还可以设置压缩与解压缩单元,请参见图9示出的神经网络卷积运算实现系统7的另一种结构示意图:
压缩与解压缩单元78可以在全局缓存72对计算单元阵列76每层的中间结果进行存储之前,先对中间结果进行压缩,丢弃中间结果中的0值数据;然后在输入输出缓存73从全局缓存72中读取中间结果之前,先从全局缓存72中提取出压缩后的中间结果,并对压缩后的中间结果进行解压缩,恢复原本的中间结果,然后再传输给输入输出缓存73。
S816:Winograd转换单元获取计算单元阵列最后一次迭代的输出结果,并将最后一次迭代的输出结果转换到数字域得到本次神经网络卷积运算的最终结果。
在迭代流程结束之后,Winograd转换单元77可以获取到计算单元阵列76最后一次迭代的输出结果,然后将该输出结果从Winograd域转换到数字域,从而得到本次神经网络卷积运算的最终结果。
可以理解的是,本实施例中提供的神经网络卷积运算实现方法及装置,只是实现神经网络处理过程中的卷积运算,对于整个神经网络处理过程,除了卷积运算以外,还需要经历ReLU(Rectified Linear Unit,修正线性单元)激活函数运算以及池化运算,才能得到最终的推理结果。
本发明实施例提供的神经网络卷积运算实现方法及装置,不仅可以通过压缩卷积核来减少卷积运算的计算量,并且,还可以通过Winograd域转换来进一步减少卷积运算的计算量,提升了卷积运算处理的效率,降低了卷积运算处理对处理资源的占用。
实施例三:
本实施例将结合图7或图8示出的神经网络卷积运算实现系统以及一些示例继续对前述实施例中提供的神经网络卷积运算实现进行介绍:
【权重转换】
图10示出了一种采用编译器进行权重压缩的示意图:
编译器内分为切分模块101与压缩模块102,经过两个模块处理后,原始卷积核变成压缩子卷积核与权重索引。
对于卷积神经网络,由于卷积核一般都是三维立体结构,可以通过训练的方式将卷积核中的权重剪枝成同一个通道C都为0的形式,这样可以进一步减少权重索引中的内容,提升压缩效率,下面以3×3原始卷积核为例说明:
假设原始卷积核的规格为3×3×8,其初始值为:
{
{1,0,3,0,0,0,0,9}
{8,0,4,0,0,0,0,6}
{1,0,5,0,0,0,0,8}
{2,0,6,0,0,0,0,5}
{4,0,3,0,0,0,0,6}
{6,0,5,0,0,0,0,7}
{3,0,8,0,0,0,0,5}
{7,0,0,0,0,0,0,1}
{9,0,1,0,0,0,0,2}
}
经过压缩后的卷积核为:
{
{1,3,9}
{8,4,6}
{1,5,8}
{2,6,5}
{4,3,6}
{6,5,7}
{3,8,5}
{7,0,1}
{9,1,2}
}
按照实施例一中提供的方式一确定权重索引,则权重索引为:{1,3,9}。
按照实施例一中提供的方式一确定权重索引,则权重索引为:{0,1,4}。
【命令解析和参数配置】
计算控制单元对CPU发送的控制指令进行解析之后,可以对计算单元阵列进行配置。
【卷积准备】
对于计算单元阵列的一次调度执行,输入输出缓存可以从全局缓存中读取与子卷积核相同大小(R*S*C)的原始数据块进行存储。另一方面,输入输出缓存还可以从全局缓存中将需要处理的子卷积核权重指示符读取到指示符缓存中。
计算控制单元可以按照顺序读取压缩子卷积核中的权重值,并根据权重压缩表从输入输出缓存中读取原始数据块中的数据。
【Winograd转换】
Winograde的转换公式如下:
U=GFGT V=BTInB
其中,F为输入权重,In为输入数据。数据进行BT以及B的转换,用于将数据转换成Winograd域,其中BT为B的转置矩阵。权重进行GT以及G的转换,用于将权重转换成Winograd域,其中GT为G的转置矩阵。将经过转换的权重U以及数据V进行卷积运算后,需要再转换到数据域,然后输入结果,对于通过优化,可以转换为的形式,这样可以进一步有效减少乘法器运算,从而提升处理能力。
【乘累加操作】
对于卷积神经网络,其乘加处理单元如图4所示,采用乘法器41和累加器42来实现,数据与权重在每个节拍中不停输入到乘法器41中,经过乘法运算后,送到累加器42,完整相应卷积运算的结果。
图6示出的值由M*N个乘累加单元组成的计算单元阵列,从图中可知,数据从左到右在每个节拍下输入数据到计算单元阵列中,并通过乘累加单元送给下一列乘累加单元完成其他卷积运算处理;权重从上到下在每个节拍下输入数据到计算单元阵列中,并通过乘累加单元送给下一行乘累加单元完成其他卷积运算处理。
如,在第一个节拍中,数据a1,b1,...,m1送入第一列乘累加单元中,权重A1,B1,...,N1送入第一行乘累加单元中,完成第一节拍运算。在第二节拍中,数据a1,b1,...,m1送入第二列乘累加单元中,权重A1,B1,...,N1送入第二行乘累加单元中,而第一列乘累加单元中的数据被更新,变成a2,b2,...,m2,同时第一行乘累加单元中的权重被更新,变成A2,B2,...,N2;完成第二个节拍的运算,以此类推,最终完成所有卷积运算。
由于不同网络模型的尺寸不一样,如SSD300的尺寸大小为300×300,YOLO V2或YOLO V3的尺寸大小为416×416;另外,不同的网络,其滤波器大小也可能不一致,如1×1,3×3,5×5,7×7以及全连接层等。因此,计算单元阵列设计为弹性可伸缩结构,即在对应不同网络模型时,可以将计算单元阵列匹配到对应的网络结构中,达到最大限度利用计算资源。
如下图11所示举例,如果卷积核为1×1或者3×3时,或者特征图片为4x4及一下,可以变成下图11左边的形状,若卷积核大于3×3或者特征图谱大于4×4时,计算单元阵列的结构可以变成图11右边形状。
完成神经网络处理的流程可以参见如下示例:
第一步,将训练好的权重数据,按照根据稀疏情况提前对权重进行压缩处理,并将压缩后的权重与权重索引存储在全局缓存中。
特别地,对于权重为0的数据,由于其运算结果也为0,则不需要存储,即被压缩掉了,后续运算直接跳过。
对于需要推理的原始数据,也按照顺序存储在全局缓存中。
第二步,CPU中的软件根据当前处理的网络模型下发对应的指令给神经网络加速器,使得计算控制单元根据该网络模型配置生成对应的计算单元阵列。
同时,软件会给硬件下发控制指令,让输入输出缓存去对应的全局缓存中读出相应的压缩子卷积核以及原始数据块。硬件解析软件下发的指令,分别送给对应的控制以及输入输出缓存单元。
第三步,运算前的数据准备,根据软件配置信息,硬件需要将当前处理进度的权重数据以及特征数据提前存放在缓存单元中。硬件先从缓存单元中获取权重以及权重索引,并根据权重对应的索引信息(权重位置信息),从输入输出缓存单元中索引对应的数据。
获取权重以及对应的数据后,根据软件对应的配置信息,将权重和数据送入相应的计算单元阵列中,用来完成相应的卷积运算。
特别地,权重为0的数据由于完成卷积运算结果还是0,则将权重为0的数据丢弃,不参与计算,即在输入输出缓存中都不需要存储与读出,从而节省存储资源与数据读写带宽,并提高资源处理效率,进而达到支持稀疏运算的效果。
第四步,Winograd转换,将数据和权重进行Winograd转换,在Winograd域进行卷积乘法运算,然后再进行累加求和,并通过AT和A矩阵转换回数字域,最终得到卷积结果。
第五步,神经网络算子计算,数据和权重在进行完累加运算后,再进行ReLU激活函数运算以及池化运算,最后输出神经网络处理的最终运算结果。
实施例四:
本实施例提供一种存储介质,该存储介质中可以存储有一个或多个可供一个或多个处理器读取、编译并执行的计算机程序,在本实施例中,该存储介质可以存储有神经网络卷积运算实现程序,该神经网络卷积运算实现程序可供一个或多个处理器执行实现前述实施例介绍的任意一种神经网络卷积运算实现方法的流程。
本实施例中还提供一种神经网路加速器,如图12所示:神经网路加速器120包括处理器121、存储器122、计算单元阵列123以及用于分别将存储器122、计算单元阵列123与处理器121通信连接的通信总线124,其中存储器122可以为前述存储有神经网络卷积运算实现程序的存储介质。处理器121可以读取神经网络卷积运算实现程序,进行编译并执行实现前述实施例中介绍的神经网络卷积运算实现方法的流程:
处理器121获取原始卷积核对应的子卷积核、压缩子卷积核以及权重索引,子卷积核通过对原始卷积核进行切分处理得到,压缩子卷积核和权重索引通过去除子卷积核中的零值权重,对剩余权重值进行重排得到;随后,处理器121从待处理的原始数据中读取规格与子卷积核规格相匹配的原始数据块,并控制计算单元阵列123根据原始数据块、压缩子卷积核以及权重索引执行迭代流程,计算单元阵列123中包括多个乘累加计算器;迭代流程结束后,处理器121获取计算单元阵列123的输出结果。
在本实施例的一些示例当中,迭代流程包括:处理器121将压缩子卷积核中的权重值按照计算单元阵列123的计算节拍逐渐从计算单元阵列123的第一侧输入,同时随着计算节拍根据权重索引的指示从原始数据块中读取数据自计算单元阵列123的第二侧输入,一个压缩子卷积核中的各权重值将按照计算节拍逐渐流向与第一侧相对的第三侧,数据将按照计算节拍逐渐流向与第二侧相对的第四侧;计算单元阵列123的输出结果作为下一次迭代的原始数据块。
在本实施例的一些示例当中,处理器121控制计算单元阵列123根据原始数据块、压缩子卷积核以及权重索引执行迭代流程之前,还会先确定压缩子卷积核是否为为支持Winograde算法的卷积核,若是,则将压缩子卷积核与原始数据块转换到Winograde域,随后控制计算单元阵列123在Winograde域下根据权重索引执行压缩子卷积与原始数据块之间的卷积运算。在获取计算单元阵列123的输出结果之后,处理器121还会将获取的输出结果转换到数字域得到本次神经网络卷积运算的最终结果。
在本实施例的一些示例当中,处理器121可以将压缩子卷积核中的权重值按照计算节拍逐渐从计算单元阵列123的上边缘输入计算单元阵列123,并随着计算节拍根据权重索引的指示从原始数据块中读取数据自计算单元阵列123的左边缘输入计算单元阵列123。
可选地,对于任一压缩子卷积核,处理器121根据权重索引确定原始数据块中与压缩子卷积核中各权重对应的数据,然后将确定出的数据自计算单元阵列123的第二侧输入。
处理器121确定权重索引的方式包括以下几种中的任意一种:
按照零值权重在子卷积核中的绝对位置确定压缩子卷积核对应的权重索引;
按照子卷积核中非零权值相对前一非零权值之间所间隔的零值权重的数目确定压缩子卷积核对应的权重索引;
按照非零权重在子卷积核中的绝对位置确定压缩子卷积核对应的权重索引;
按照子卷积核中零值权值相对前一零值权值之间所间隔的非零权重的数目确定压缩子卷积核对应的权重索引。
在本实施例的一些示例当中处理器121从待处理的原始数据中读取规格与子卷积核规格相匹配的原始数据块之前,还会先解析终端CPU发送的控制指令;然后根据对控制指令的解析结果配置本次神经网络卷积运算所采用的计算单元阵列123。
对于神经网路加速器120执行神经网络卷积运算实现方法的具体细节,请参见前述实施例的介绍,这里不再赘述。
本实施例提供一种可以实现前述神经网络卷积运算实现方法的神经网络卷积运算实现装置,请参见图13:
神经网络卷积运算实现装置13包括:数据获取模块130、数据读取模块132、迭代计算模块134以及结果获取模块136,其中数据获取模块130用于获取原始卷积核对应的子卷积核、压缩子卷积核以及权重索引,其中,子卷积核通过对原始卷积核进行切分处理得到,压缩子卷积核和权重索引通过去除子卷积核中的零值权重,对剩余权重值进行重排得到;数据读取模块132用于从待处理的原始数据中读取规格与子卷积核规格相匹配的原始数据块;迭代计算模块134用于控制计算单元阵列根据原始数据块、压缩子卷积核以及权重索引执行迭代流程,计算单元阵列中包括多个乘累加计算器;结果获取模块136用于在迭代流程结束后,获取计算单元阵列的输出结果。
迭代计算模块134可以将压缩子卷积核中的权重值按照计算单元阵列的计算节拍逐渐从计算单元阵列的第一侧输入,同时随着计算节拍根据权重索引的指示从原始数据块中读取数据自计算单元阵列的第二侧输入,一个压缩子卷积核中的各权重值将按照计算节拍逐渐流向与第一侧相对的第三侧,数据将按照计算节拍逐渐流向与第二侧相对的第四侧;计算单元阵列的输出结果作为下一次迭代的原始数据块。
在本实施例的另外一些示例当中,神经网络卷积运算实现装置13还包括Winograde转换模块,请参见图14,Winograde转换模块138用于在确定压缩子卷积核为支持Winograde算法的卷积核后,将压缩子卷积核与原始数据块转换到Winograde域,然后将转到Winograde域的压缩子卷积核与原始数据块中的数据输入给计算单元阵列,以供计算单元阵列置在Winograde域下执行压缩子卷积与原始数据块之间的卷积运算;Winograde转换模块138还用于将计算单元阵列的最终输出结果转换到数字域得到本次神经网络卷积运算的最终结果。
在本实施例中,神经网络卷积运算实现装置13可以部署在神经网络加速器上,其中,数据获取模块130、数据读取模块132、以及结果获取模块136以及Winograde转换模块138的功能均可以通过神经网络加速器的处理器121实现,迭代计算模块134的功能可以通过神经网络加速器中的计算单元阵列123实现。
本实施例提供的神经网络卷积运算实现装置,神经网络加速器通过对卷积核中的权重进行压缩,去除原始权卷积核中的零值权重,从而减少了卷积运算的运算量。同时,因为采用了阵列式的计算单元阵列对数据与权重进行卷积运算,能够提升卷积运算的数据复用度,减少神经网络处理过程中的带宽占用与功耗。
显然,本领域的技术人员应该明白,上文中所公开方法中的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件(可以用计算装置可执行的程序代码来实现)、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些物理组件或所有物理组件可以被实施为由处理器,如中央处理器、数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于RAM,ROM,EEPROM、闪存或其他存储器技术、CD-ROM,数字多功能盘(DVD)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。所以,本发明不限制于任何特定的硬件和软件结合。
以上内容是结合具体的实施方式对本发明实施例所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。
Claims (10)
1.一种神经网络卷积运算实现方法,包括:
获取原始卷积核对应的子卷积核、压缩子卷积核以及权重索引,所述子卷积核通过对所述原始卷积核进行切分处理得到,所述压缩子卷积核和所述权重索引通过去除所述子卷积核中的零值权重,对剩余权重值进行重排得到;
从待处理的原始数据中读取规格与所述子卷积核规格相匹配的原始数据块;
控制计算单元阵列根据所述原始数据块、压缩子卷积核以及权重索引执行迭代流程,所述计算单元阵列中包括多个乘累加计算器;
迭代流程结束后,获取所述计算单元阵列的输出结果。
2.如权利要求1所述的神经网络卷积运算实现方法,其特征在于,所述迭代流程包括:将所述压缩子卷积核中的权重值按照所述计算单元阵列的计算节拍逐渐从所述计算单元阵列的第一侧输入,同时随着所述计算节拍根据所述权重索引的指示从所述原始数据块中读取数据自所述计算单元阵列的第二侧输入,一个所述压缩子卷积核中的各权重值将按照所述计算节拍逐渐流向与所述第一侧相对的第三侧,所述数据将按照所述计算节拍逐渐流向与所述第二侧相对的第四侧;所述计算单元阵列的输出结果作为下一次迭代的原始数据块。
3.如权利要求2所述的神经网络卷积运算实现方法,其特征在于,所述控制计算单元阵列根据所述原始数据块、压缩子卷积核以及权重索引执行迭代流程之前,还包括:
确定所述压缩子卷积核为支持威诺格拉德Winograde算法的卷积核;
将所述压缩子卷积核与所述原始数据块转换到Winograde域;
所述控制计算单元阵列根据所述原始数据块、压缩子卷积核以及权重索引执行迭代流程包括:控制所述计算单元阵列在所述Winograde域下根据所述权重索引执行所述压缩子卷积与所述原始数据块之间的卷积运算;
所述获取所述计算单元阵列的输出结果之后,还包括:
将获取的输出结果转换到数字域得到本次神经网络卷积运算的最终结果。
4.如权利要求2所述的神经网络卷积运算实现方法,其特征在于,所述将所述压缩子卷积核中的权重值按照所述计算单元阵列的计算节拍逐渐从所述计算单元阵列的第一侧输入,同时随着所述计算节拍根据所述权重索引的指示从所述原始数据块中读取数据从所述计算单元阵列的第二侧输入包括:
将所述压缩子卷积核中的权重值按照所述计算节拍逐渐从所述计算单元阵列的上边缘输入所述计算单元阵列,并随着所述计算节拍根据所述权重索引的指示从所述原始数据块中读取数据自所述计算单元阵列的左边缘输入所述计算单元阵列。
5.如权利要求2所述的神经网络卷积运算实现方法,其特征在于,所述随着所述计算节拍根据所述权重索引的指示从所述原始数据块中读取数据自所述计算单元阵列的第二侧输入包括:
对于任一压缩子卷积核,根据所述权重索引确定所述原始数据块中与所述压缩子卷积核中各权重对应的数据;
将确定出的数据自所述计算单元阵列的第二侧输入。
6.如权利要求1-5任一项所述的神经网络卷积运算实现方法,其特征在于,确定权重索引的方式包括以下几种中的任意一种:
按照零值权重在所述子卷积核中的绝对位置确定所述压缩子卷积核对应的权重索引;
按照所述子卷积核中非零权值相对前一非零权值之间所间隔的零值权重的数目确定所述压缩子卷积核对应的权重索引;
按照非零权重在所述子卷积核中的绝对位置确定所述压缩子卷积核对应的权重索引;
按照所述子卷积核中零值权值相对前一零值权值之间所间隔的非零权重的数目确定所述压缩子卷积核对应的权重索引。
7.如权利要求1-5任一项所述的神经网络卷积运算实现方法,其特征在于,所述从待处理的原始数据中读取规格与所述子卷积核规格相匹配的原始数据块之前,还包括:
解析终端CPU发送的控制指令;
根据对所述控制指令的解析结果配置本次神经网络卷积运算所采用的计算单元阵列。
8.一种神经网络卷积运算实现装置,包括:
数据获取模块,用于获取原始卷积核对应的子卷积核、压缩子卷积核以及权重索引,所述子卷积核通过对所述原始卷积核进行切分处理得到,所述压缩子卷积核和所述权重索引通过去除所述子卷积核中的零值权重,对剩余权重值进行重排得到;
数据读取模块,用于从待处理的原始数据中读取规格与所述子卷积核规格相匹配的原始数据块;
迭代计算模块,用于控制计算单元阵列根据所述原始数据块、压缩子卷积核以及权重索引执行迭代流程,所述计算单元阵列中包括多个乘累加计算器;
结果获取模块,用于在迭代流程结束后,获取所述计算单元阵列的输出结果。
9.一种神经网络加速器,包括处理器、存储器、计算单元阵列以及通信总线;
所述通信总线用于实现处理器和存储器之间的连接通信;
所述处理器用于执行存储器中存储的一个或者多个程序,以实现如权利要求1至7中任一项所述的神经网络卷积运算实现方法的步骤。
10.一种存储介质,其特征在于,所述存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现如权利要求1至7中任一项所述的神经网络卷积运算实现方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910907750.XA CN112633484A (zh) | 2019-09-24 | 2019-09-24 | 神经网络加速器、卷积运算实现方法、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910907750.XA CN112633484A (zh) | 2019-09-24 | 2019-09-24 | 神经网络加速器、卷积运算实现方法、装置及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112633484A true CN112633484A (zh) | 2021-04-09 |
Family
ID=75282879
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910907750.XA Pending CN112633484A (zh) | 2019-09-24 | 2019-09-24 | 神经网络加速器、卷积运算实现方法、装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112633484A (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113570031A (zh) * | 2021-06-08 | 2021-10-29 | 中国科学院深圳先进技术研究院 | 卷积运算的处理方法、电子设备及计算机可读存储介质 |
CN113688976A (zh) * | 2021-08-26 | 2021-11-23 | 哲库科技(上海)有限公司 | 一种神经网络加速方法、装置、设备及存储介质 |
CN113869500A (zh) * | 2021-10-18 | 2021-12-31 | 安谋科技(中国)有限公司 | 模型的运行方法、数据处理方法、电子设备及介质 |
CN114723033A (zh) * | 2022-06-10 | 2022-07-08 | 成都登临科技有限公司 | 数据处理方法、装置、ai芯片、电子设备及存储介质 |
CN114780910A (zh) * | 2022-06-16 | 2022-07-22 | 千芯半导体科技(北京)有限公司 | 用于稀疏化卷积计算的硬件系统和计算方法 |
CN115640494A (zh) * | 2022-12-14 | 2023-01-24 | 北京登临科技有限公司 | 卷积计算单元、ai运算阵列及相关设备 |
WO2023030061A1 (zh) * | 2021-09-03 | 2023-03-09 | Oppo广东移动通信有限公司 | 卷积运算电路及方法、神经网络加速器和电子设备 |
CN115983337A (zh) * | 2022-12-14 | 2023-04-18 | 北京登临科技有限公司 | 卷积计算单元、ai运算阵列及相关设备 |
CN116167424A (zh) * | 2023-04-23 | 2023-05-26 | 深圳市九天睿芯科技有限公司 | 基于cim的神经网络加速器、方法、存算处理系统与设备 |
-
2019
- 2019-09-24 CN CN201910907750.XA patent/CN112633484A/zh active Pending
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113570031A (zh) * | 2021-06-08 | 2021-10-29 | 中国科学院深圳先进技术研究院 | 卷积运算的处理方法、电子设备及计算机可读存储介质 |
CN113570031B (zh) * | 2021-06-08 | 2024-02-02 | 中国科学院深圳先进技术研究院 | 卷积运算的处理方法、电子设备及计算机可读存储介质 |
CN113688976A (zh) * | 2021-08-26 | 2021-11-23 | 哲库科技(上海)有限公司 | 一种神经网络加速方法、装置、设备及存储介质 |
WO2023030061A1 (zh) * | 2021-09-03 | 2023-03-09 | Oppo广东移动通信有限公司 | 卷积运算电路及方法、神经网络加速器和电子设备 |
CN113869500A (zh) * | 2021-10-18 | 2021-12-31 | 安谋科技(中国)有限公司 | 模型的运行方法、数据处理方法、电子设备及介质 |
CN114723033A (zh) * | 2022-06-10 | 2022-07-08 | 成都登临科技有限公司 | 数据处理方法、装置、ai芯片、电子设备及存储介质 |
CN114723033B (zh) * | 2022-06-10 | 2022-08-19 | 成都登临科技有限公司 | 数据处理方法、装置、ai芯片、电子设备及存储介质 |
CN114780910A (zh) * | 2022-06-16 | 2022-07-22 | 千芯半导体科技(北京)有限公司 | 用于稀疏化卷积计算的硬件系统和计算方法 |
CN115640494A (zh) * | 2022-12-14 | 2023-01-24 | 北京登临科技有限公司 | 卷积计算单元、ai运算阵列及相关设备 |
CN115983337A (zh) * | 2022-12-14 | 2023-04-18 | 北京登临科技有限公司 | 卷积计算单元、ai运算阵列及相关设备 |
CN116167424A (zh) * | 2023-04-23 | 2023-05-26 | 深圳市九天睿芯科技有限公司 | 基于cim的神经网络加速器、方法、存算处理系统与设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112633484A (zh) | 神经网络加速器、卷积运算实现方法、装置及存储介质 | |
EP3340129B1 (en) | Artificial neural network class-based pruning | |
CN111382867B (zh) | 神经网络压缩的方法、数据处理的方法及相关装置 | |
CN109858613B (zh) | 一种深度神经网络的压缩方法、系统及终端设备 | |
US20220058486A1 (en) | System and method of accelerating execution of a neural network | |
EP3637327A1 (en) | Computing device and method | |
CN110751265A (zh) | 一种轻量型神经网络构建方法、系统及电子设备 | |
CN111353591A (zh) | 一种计算装置及相关产品 | |
CN112101547A (zh) | 一种对网络模型的剪枝方法、装置、电子设备及存储介质 | |
CN113420651A (zh) | 深度卷积神经网络的轻量化方法、系统及目标检测方法 | |
CN110503152B (zh) | 用于目标检测的双路神经网络训练方法及图像处理方法 | |
CN115016965A (zh) | 计量自动化主站的故障检测方法、装置、设备及存储介质 | |
CN112766397B (zh) | 一种分类网络及其实现方法和装置 | |
CN114358252A (zh) | 目标神经网络模型中的操作执行方法及装置、存储介质 | |
CN108416425B (zh) | 一种卷积运算方法及装置 | |
CN112771546A (zh) | 运算加速器和压缩方法 | |
CN112232477A (zh) | 图像数据处理方法、装置、设备及介质 | |
KR102426605B1 (ko) | 인공신경망 모델을 이용한 데이터 분석 방법 및 장치 | |
CN114065923A (zh) | 一种卷积神经网络的压缩方法、系统及加速装置 | |
CN110610227B (zh) | 人工神经网络调整方法及神经网络计算平台 | |
CN113033422A (zh) | 基于边缘计算的人脸检测方法、系统、设备和存储介质 | |
CN111614358A (zh) | 基于分通道量化的特征提取方法、系统、设备及存储介质 | |
CN112183725A (zh) | 提供神经网络的方法、计算装置和计算机可读存储介质 | |
CN111045687B (zh) | 一种人工智能应用的部署方法及相关装置 | |
CN110276332B (zh) | 一种视频特征处理方法及装置 |
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 |