CN115186802A - 基于卷积神经网络的块稀疏方法、装置及处理单元 - Google Patents

基于卷积神经网络的块稀疏方法、装置及处理单元 Download PDF

Info

Publication number
CN115186802A
CN115186802A CN202210844507.XA CN202210844507A CN115186802A CN 115186802 A CN115186802 A CN 115186802A CN 202210844507 A CN202210844507 A CN 202210844507A CN 115186802 A CN115186802 A CN 115186802A
Authority
CN
China
Prior art keywords
data
weight
rearrangement
sparse
data blocks
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
Application number
CN202210844507.XA
Other languages
English (en)
Inventor
王中风
徐铭阳
鲁金铭
林军
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nanjing University
Original Assignee
Nanjing University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Nanjing University filed Critical Nanjing University
Priority to CN202210844507.XA priority Critical patent/CN115186802A/zh
Publication of CN115186802A publication Critical patent/CN115186802A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • General Health & Medical Sciences (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Neurology (AREA)
  • Complex Calculations (AREA)

Abstract

本申请涉及数据处理技术领域,提供一种基于卷积神经网络的块稀疏方法、装置及处理单元,所述基于卷积神经网络的块稀疏方法,通过将维度为N×C×K×K的原始权重,转换为K2个C×K的重排权重,然后根据预设维度,将重排权重分割为多个数据块,最后根据预先设置的数据稀疏度,剪去所述多个数据块内冗余的非零值。对于数据块而言,剪去的是对数据块影响较小的数据,这可以减少稀疏对于训练精度的影响,因此可以达到较高的稀疏度,同时,在硬件设计时,解决传统训练加速器在处理稀疏张量时,存在的不同处理单元之间运算任务不平衡的问题,且在前向传播和反向传播过程中,避免造成权重数据在存储上的读写冲突。

Description

基于卷积神经网络的块稀疏方法、装置及处理单元
技术领域
本申请涉及数据处理技术领域,尤其涉及一种基于卷积神经网络的块稀疏方法、装置及处理单元。
背景技术
卷积神经网络(CNN)近年来被广泛的应用于人工智能的各个领域。在图像处理方面展现出了优越的性能。但是训练一个卷积神经网络往往需要大量乘累加运算,大量乘累加运算需要消耗大量的运算资源和运算时间。当卷积神经网络被部署在边缘设备上,使用用户的私有数据集进行进一步训练时,这种大量乘累加运算为网络的部署带来了极大的困难。
对此,一种有效的解决方案是通过剪枝技术,剪去权重网络中不重要的权重值,从而减少参数量,现有的剪枝技术可以分为两类:一类为结构化剪枝,另一类为非结构化剪枝,结构化剪枝以通道或层为单位进行剪枝,修剪完的稀疏模型比较规则,方便部署在传统硬件上进行计算,但是会对于网络的精度造成较大的影响;非结构化剪枝能够得到精度较好的稀疏模型。
对于非结构化剪枝的方法,一方面,一个典型的卷积神经网络,通常都包括大量的网络层,其中,最重要的网络层是卷积层,也是卷积神经网络中运算量最大的网络层,每一个卷积层都存在一组权重矩阵和一组输入的激活矩阵,其中,权重矩阵中包含大量的权重数据,激活矩阵中包含大量的激活数据。如图1所示,在训练神经网络时,卷积层的权重张量在前向传播和反向传播需要进行转置操作,这种转置操作导致在存储权重数据时,前向传播和反向传播需要的在内存上的数据排布是不一样的,换言之,如果在训练之前权重张量以卷积前向传播时所需的数据排布进行排列,则训练中,在进行反向传播时,就需要在内存上对权重张量重排后重新存储,否则就会造成读写上的冲突。由于在训练过程中,前向传播和反向传播是交替反复进行的,从而导致权重数据的重排造成额外的成本和资源消耗。
另一方面,对于一个传统的训练加速器,在处理稀疏张量时,尤其是面对非结构化稀疏,不同处理阶段的运算任务会不平衡,这是由于对于一个非结构化的稀疏,其稀疏0值在权重张量中的位置是不确定的。这导致不同处理单元(PE)在处理一块数据时,需要进行的乘累加的次数是不同的,如果加速器跳过了所有的零值计算,就会带来不同处理单元工作量的不平衡,如果一个数据块内的稀疏度高,则稀疏的零值就多,所需要进行的有效乘累加数量就较少,则需要更少的时钟去处理这一块数据;但是如果一个数据块的稀疏度低,稀疏零值就较少,则需要进行的有效乘累加数量就较多,这样的一种工作量的不平衡会导致不同处理单元之间数据流的混乱,导致加速器无法正常的完成运算任务。但是如果加速器在运算时,不跳过稀疏零值的计算,则非结构化稀疏带来的加速效果就会消失。
发明内容
为了解决现有技术中当卷积神经网络被部署在边缘设备上,使用用户的私有数据集进行进一步训练时,常规的剪枝方法,在训练过程中,导致权重数据的重排造成额外的成本和资源消耗,或者,不同处理单元的工作量,导致不同处理单元之间数据流混乱的问题,本申请实施例提供一种基于卷积神经网络的块稀疏方法、装置及处理单元。
本申请实施例第一方面提供一种基于卷积神经网络的块稀疏方法,所述基于卷积神经网络的块稀疏方法包括:
将维度为N×C×K×K的原始权重,转换为K2个C×K的重排权重,其中,N为卷积核数量,C为单个卷积核的特征图数量,K×K单个特征图的张量;采用
Figure BDA0003751792900000021
表示原始权重中的数据点,其中0≤i0≤N-1,0≤i1≤C-1,0≤i2,i3≤K-1,采用
Figure BDA0003751792900000022
表示重排权重的数据点,其中,0≤K≤K2-1,0≤r≤C-1,0≤s≤N-1,M为,
Figure BDA0003751792900000023
根据预设维度,将重排权重分割为多个数据块;
根据预先设置的数据稀疏度,剪去所述多个数据块内冗余的非零值,获得压缩过的权重数据,并记录数据块的稀疏掩膜信息,所述稀疏掩膜信息中包含非零值权重在数据块中的索引信息。
在一种实现方式中,所述根据预设维度,将重排权重分割为多个数据块的步骤中,还包括:
根据预设维度,判断所述重排权重是否可以被分割为整数个数据块,若所述重排权重无法被分割为整数个数据块,则对所述重排权重的张量进行补零操作,直至补零后的重排权重能够被分割为整数个数据块。
本申请实施例第二方面提供一种处理单元,其特征在于,多个所述处理单元以脉动阵列的形式排布,所述处理单元包括:
控制模块,被配置为接收数据块的稀疏掩膜信息、前向传播信息和反向传播信息,稀疏掩膜信息中包含非零值权重在数据块中的索引信息;
还被配置为根据前向传播信息和/或反向传播信息,生成运算控制指令,以及将运算控制指令和稀疏掩膜信息发送至乘累加模块;
激活数据预处理模块,被配置为接收激活数据以及数据块的稀疏掩膜信息,并根据稀疏掩膜信息,从所述激活数据中筛选出有效的激活数据,以及,将所述有效的激活数据发送至乘累加模块;
乘累加模块,被配置为从外部接收压缩后的权重数据,从激活数据预处理模块接收有效的激活数据,从控制模块接收相应的寄存器控制信号;
还被配置为对相互匹配的权重数据和激活数据乘累加运算,生成部分和结果;
结果选择模块,被配置为从乘累加模块接收所述部分和结果,以及从上一个邻近的处理单元接收一组已经完成的卷积运算结果;
还被配置为从外部接收结果选择信号,并根据所述结果选择信号将所述部分和结果或卷积运算结果输出至下一个相邻的处理单元;
其中,所述压缩后的权重数据采用以下方法获得:
将维度为N×C×K×K的原始权重,转换为K2个C×K的重排权重,其中,N为卷积核数量,C为单个卷积核的特征图数量,K×K单个特征图的张量;采用
Figure BDA0003751792900000024
表示原始权重中的数据点,其中0≤i0≤N-1,0≤i1≤C-1,0≤i2,i3≤K-1,采用
Figure BDA0003751792900000025
表示重排权重的数据点,其中,0≤K≤K2-1,0≤r≤C-1,0≤s≤N-1,M为标志位,
Figure BDA0003751792900000026
根据预设维度,将重排权重分割为多个数据块;
根据预先设置的数据稀疏度,剪去所述多个数据块内冗余的非零值,获得压缩后的权重数据,并记录数据块的稀疏掩膜信息。
在一种实现方式中,所述根据预设维度,将重排权重分割为多个数据块的步骤中,还包括:
根据预设维度,判断所述重排权重是否可以被分割为整数个数据块,若所述重排权重无法被分割为整数个数据块,则对所述重排权重的张量进行补零操作,直至补零后的重排权重能够被分割为整数个数据块;
在一种实现方式中,所述乘累加模块包括:一个乘法器、一个加法器、第一数据选择模块、第二数据选择模块、S个存储器,其中,数据块的维度为S×T,且S≥T;
乘法器,被配置为接收相互匹配的权重值和激活值,并对相互匹配的权重数据和激活数据乘累加运算;
加法器,被配置为将乘法器运算的结果与第二数据选择器输出的部分和结果进行累加;
第一数据选择器,被配置为将乘累加结果存储到对应的存储器中;
第二数据选择器,被配置为选择相应的存储器,将所述相应的存储器中存储的部分和结果输出至加法器。
本申请实施例第三方面提供一种处理装置,其特征在于,所述处理装置包括多个处理单元,多个所述处理单元按照阵列形式排布为运算阵列,所述处理装置还包括:
第一缓存器,被配置为存储激活数据,以及将激活数据以行广播的方式广播到至处理单元中;
第二缓存器,被配置为存储压缩后的权重张量和稀疏掩膜信息,并将压缩后的权重张量和稀疏掩膜信息以列广播的方式广播至处理单元中。
数据路由,被配置为控制第一缓存器和第二缓存器。
本申请实施例第四方面提供一种基于卷积神经网络的块稀疏装置,其特征在于,所述基于卷积神经网络的块稀疏装置包括:
重排模块,被配置为将维度为N×C×K×K的原始权重,转换为K2个C×K的重排权重,其中,N为卷积核数量,C为单个卷积核的特征图数量,K×K单个特征图的张量;采用
Figure BDA0003751792900000031
表示原始权重中的数据点,其中0≤i0≤N-1,0≤i1≤C-1,0≤i2,i3≤K-1,采用
Figure BDA0003751792900000032
表示重排权重的数据点,其中,0≤K≤K2-1,0≤r≤C-1,0≤s≤N-1,M为标志位,
Figure BDA0003751792900000033
张量分块模块,被配置为根据预设维度,将重排权重分割为多个数据块;
稀疏模块,被配置为根据预先设置的数据稀疏度,剪去所述多个数据块内冗余的非零值,获得压缩过的权重数据,并记录数据块的稀疏掩膜信息,所述稀疏掩膜信息中包含非零值权重在数据块中的索引信息。
在一种实现方式中,还包括:
补零模块,被配置为根据预设维度,判断所述重排权重是否可以被分割为整数个数据块,若所述重排权重无法被分割为整数个数据块,则对所述重排权重的张量进行补零操作,直至补零后的重排权重能够被分割为整数个数据块。
本申请实施例第五方面提供一种计算机设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现本申请实施例第一方面提供的基于卷积神经网络的块稀疏方法的步骤。
本申请实施例第六方面提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理执行时实现本申请实施例第一方面提供的基于卷积神经网络的块稀疏方法的步骤。
本申请实施例提供的一种基于卷积神经网络的块稀疏方法、装置及处理单元,其中,所述基于卷积神经网络的块稀疏方法,通过将维度为N×C×K×K的原始权重,转换为K2个C×K的重排权重,然后根据预设维度,将重排权重分割为多个数据块,最后根据预先设置的数据稀疏度,剪去所述多个数据块内冗余的非零值,获得压缩过的权重数据。对于一个数据块而言,其剪去的是对数据块影响较小的数据,这种剪枝方式带来的稀疏是随机的,这可以减少稀疏对于训练精度的影响,因此可以达到较高的稀疏度。同时本申请实施例提供的基于提出卷积神经网络的块稀疏方法,在硬件设计时,当一个处理单元处理一整个数据块内的乘累加运算,因为每个数据块内的非零值数量是相同的,因此每一个处理单元处理一个数据块花费的时间也是相同的,从而解决传统训练加速器在处理稀疏张量时,存在的不同处理单元之间运算任务不平衡的问题,且在前向传播和反向传播是可以使用相同数据格式的权重数据,因此只要在存储时存储所有的重排权重,运算时就不需要进行额外的转置,也不会造成存储上的读写冲突。
附图说明
为了更清楚地说明本申请的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为在训练神经网络时,卷积层的权重张量在前向传播和反向传播需要进行转置操作示意图;
图2为本申请实施例提供的基于卷积神经网络的块稀疏方法的流程示意图;
图3为本申请实施例提供的权重张量重排示意图;
图4为本申请实施例提供的稀疏修剪示意图;
图5为本申请实施例提供的一种处理单元的结构示意图;
图6为本申请实施例提供的乘累加模块的结构示意图;
图7为本申请实施例提供的处理单元如何跳过零值对数据块运算的示意图;
图8为本申请实施例提供的一种处理装置的结构示意图。
具体实施方式
本申请实施例第一方面提供一种基于卷积神经网络的块稀疏方法,如图2所示,所述基于卷积神经网络的块稀疏方法包括步骤210至步骤230。
步骤210,将维度为C×K×K的原始权重,转换为K2个C×K的重排权重,其中,N为卷积核数量,C为单个卷积核的特征图数量,K×K单个特征图的张量;采用
Figure BDA0003751792900000041
表示原始权重中的数据点,其中0≤i0≤N-1,0≤i1≤C-1,0≤i2,i3≤K-1,采用
Figure BDA0003751792900000042
表示重排权重的数据点,其中,0≤K≤K2-1,0≤r≤C-1,0≤s≤N-1,M为标志位,用于区分和前者W的区别,没有数值上的意义,
Figure BDA0003751792900000043
如图3所示,以一个CNN网络中的卷积层为例,假设卷积层的原始权重包括了N个卷积核,每一个卷积核由C个特征图,每一个特征图为一个K×K的张量,那么对于该卷积层,其原始权重的维度为N×C×K×K。对于原始N个C×N×N卷积核,目标是将卷积核映射成K2个C×N的张量。对于原始权重中的某个数据点,用
Figure BDA0003751792900000044
表示,其中0≤i0≤N-1,0≤i1≤C-1,0≤i2,i3≤K-1。对于重排权重中的数据点,用
Figure BDA0003751792900000045
表示,其中0≤k≤K2-1,0≤r≤C-1,0≤s≤N-1,M为标志位。接着对原始权重进行重排,其中数据点的坐标做如下映射:
i0=s;
i1=r;
Figure BDA0003751792900000051
Figure BDA0003751792900000052
在完成以上运算和映射后,可以的:
Figure BDA0003751792900000053
对于重排之后的K2个权重,每一个重排权重都包含N列数据,每列数据有C个,分别来自于N个原始权重中的一个通道,因此对于每一个重排权重,其维度为C×N。
步骤220,据预设维度,将重排权重分割为多个数据块。
其中,在将重排权重分割为多个数据块的步骤中,还包括根据预设维度,判断所述重排权重是否可以被分割为整数个数据块,若所述重排权重无法被分割为整数个数据块,则对所述重排权重的张量进行补零操作,直至补零后的重排权重能够被分割为整数个数据块。
在完成原始权重的重排后,需要在K2个重排权重上进行稀疏。如图4所示,稀疏的第一步是对于每一个重排权重进行数据分块,每一个数据块的大小是不固定的,可以根据实际情况进行选择。在本实施例中,数据块的维度大小一般是2的次幂,例如2×2,2×4,4×4的数据块。在部分情况下,若重排权重不能被完整的分成整数个数据块,则对重排权重进行补零操作,直到可以恰好分成整数个数据块。以4×4的数据块为例子,如果重排权重的维度是4a,则可以进行分块,若重排权重的某个维度是4a+1,4a+2,4a+3,则无法进行完整的分块,需要将重排权重的维度补齐为4a+4,其中补充的所有数据都为0,因此不会影响原本的计算结果。在图3中,展示了对于一个8×12的重排权重进行4×4的数据分块,因为两个维度都是4的整倍数,因此可以整个重排权重可以被完整的分成6个数据块。
步骤230,据预先设置的数据稀疏度,剪去所述多个数据块内冗余的非零值,获得压缩过的权重数据,并记录数据块的稀疏掩膜信息,所述稀疏掩膜信息中包含非零值权重在数据块中的索引信息。
在对重排权重分块之后,需要通过剪枝操作,剪去重排权重中多余的非零值。稀疏的探索是以一个数据块为单元进行的,对于每一个数据块,冗余的非零值将被置为零。一般来说,可以将一个数据块内较小的数据剪去,这种剪枝方式对于精度的影响较小,在一个数据块内对于数据位置的信息可以使用多种记录方式。在本实施例中,一个数据块内采取坐标列表(COO)的方式来表示非零值的位置信息,也可以使用其他的数据表示方式,例如CSR(Compressed Sparse Column,按列压缩稀疏张量)CSC(Compressed Sparse Row,按行压缩稀疏张量),Bitmap(位图)等。如图7所示,对于一个4×4的数据块,坐标列表方式按顺序将16个位置定义为0到15,因此在表示非零值的坐标时,只需要4-bit的位宽就可以表示一个非零值在一个数据块内的绝对位置。因为这种方式不需要记录一个非零值在整个重排权重中的位置,因此可以用较小的位宽来表示数据的位置,降低了存储的成本。另一方面,因为使用了非常直接的方式表示数据的位置,因此在硬件上检索非零值时,不需要设计过于复杂的稀疏检测模块,从而降低硬件设计的成本。
本申请实施例提供的一种基于卷积神经网络的块稀疏方法,在对重排权重稀疏后,所有数据块内的稀疏度都是相同的,保证了每一个数据块内都包含了相同数量的非零值。如图4所示,对于4×4的数据块,若选择剪去一半冗余值,则完成稀疏后,所有的数据块内都将包含8个非零值和8个0值,对于一个数据块而言,其稀疏度是50%,则对于整个重排权重,其稀疏度同样为50%,对于这一层的权重,其稀疏度也为50%。而对于为了进行完整分块而进行了补零的数据块,其在稀疏时,补充的零值也会参与剪枝,例如,如果原本的重排权重是4a+1,因此会存在一些数据块内,在没有稀疏前只包含了4个非零值和12个零值。如果需要的稀疏度是50%,目标是要剪去8个冗余值,但是对于这4个非零值而言是没有变化的,因此这会对最终的稀疏度造成略微的影响,但这种影响是可以被忽略的。如图4所示,对于一个数据块而言,其剪去的是对数据块影响较小的数据,这种剪枝方式带来的稀疏是随机的,这可以减少稀疏对于训练精度的影响,因此可以达到较高的稀疏度。同时本申请实施例提供的基于提出卷积神经网络的块稀疏方法,在硬件设计时,当一个处理单元处理一整个数据块内的乘累加运算,因为每个数据块内的非零值数量是相同的,因此每一个处理单元处理一个数据块花费的时间也是相同的,从而解决传统训练加速器在处理稀疏张量时,存在的不同处理单元之间运算任务不平衡的问题。
本申请实施例提供的基于卷积神经网络的块稀疏方法,还解决了稀疏网络在训练时,前向传播和反向传播的权重需要转置的问题,一个网络在训练时,在完成了前向传播之后,需要对于权重进行转置,然后再用转置之后的权重进行反向传播的就算。由于在前向传播和反向传播是在训练过程中反复进行的,因此这种数据存储方式的不同会带来存储上的读写冲突。而如果提前将两种数据全部存储好,则会带来存储成本的大幅增加。本申请实施例提出的基于卷积神经网络的块稀疏方法,则可以解决权重转置带来的问题,对于重排完之后的权重,所有K2个权重中的相同列的数据代表着一个卷积核。则在进行前向传播时,只需要将重排权重同一列所有的非零值与相应的激活数据进行乘累加运算,接着将所有重排权重中相同列的部分和进行累加,就可以得到相应的卷积结果。相似的,在反向传播中,所有K2个权重的相同行的数据代表着一个卷积核,因此只要将重排权重中相同行的所有非零值与相应激活数据进行乘累加,就可以得到反向传播时相应的卷积结果。这种运算方式的好处在于前向传播和反向传播是可以使用相同数据格式的权重数据,因此只要在存储时存储所有的重排权重,运算时就不需要进行额外的转置,也不会造成存储上的读写冲突。
本申请第二方面提供一种处理单元,所述处理单元适用于处理上述种基于卷积神经网络的块稀疏方法压缩后的权重数据。所述处理单元在运算时能够一次性处理一个数据块中的运算,解决了训练加速器在处理稀疏张量是会带来的运算任务不平衡的问题。同时整个硬件结构中的处理单元阵列采取了脉动阵列的设计方式,可以提高数据的复用率,增大加速器的吞吐量,加快训练速度。
在整个训练加速器的硬件设计中,最重要的是基本处理单元的设计。在稀疏算法中,将数据在重排权重上进行分块,假设数据块的维度是A×B,因为在前向传播中需要以列为单元进行累加,在反向传播中需要以行为单位进行累加,因此对于A×B的数据块,前向传播时,会产生B个相互独立的部分和结果,在反向传播时会产生A个相互独立的部分和结果,因此对于基本处理单元来说,需要能够同时处理这A(或B)个相互独立的部分和结果。
如图5所示,所述处理单元包括:控制模块,激活数据预处理模块,乘累加模块以及结果选择模块。
所述控制模块,被配置为接收数据块的稀疏掩膜信息、前向传播信息和反向传播信息,稀疏掩膜信息中包含非零值权重在数据块中的索引信息;还被配置为根据前向传播信息和/或反向传播信息,生成运算控制指令,以及将运算控制指令和稀疏掩膜信息发送至乘累加模块。
所述激活数据预处理模块,被配置为接收激活数据以及数据块的稀疏掩膜信息,并根据稀疏掩膜信息,从所述激活数据中筛选出有效的激活数据,以及,将所述有效的激活数据发送至乘累加模块。
所述乘累加模块,被配置为从外部接收压缩后的权重数据,从激活数据预处理模块接收有效的激活数据,从控制模块接收相应的寄存器控制信号,还被配置为对相互匹配的权重数据和激活数据乘累加运算,生成部分和结果。
所述结果选择模块,被配置为从乘累加模块接收所述部分和结果,以及从上一个邻近的处理单元接收一组已经完成的卷积运算结果,还被配置为从外部接收结果选择信号,并根据所述结果选择信号将所述部分和结果或卷积运算结果输出至下一个相邻的处理单元。
其中,如图6所示,所述乘累加模块包括:一个乘法器、一个加法器、第一数据选择模块、第二数据选择模块、S个存储器,其中,数据块的维度为S×T,且S≥T。
所述乘法器,被配置为接收相互匹配的权重值和激活值,并对相互匹配的权重数据和激活数据乘累加运算。
所述加法器,被配置为将乘法器运算的结果与第二数据选择器输出的部分和结果进行累加。
所述第一数据选择器,被配置为将乘累加结果存储到对应的存储器中。
所述第二数据选择器,被配置为选择相应的存储器,将所述相应的存储器中存储的部分和结果输出至加法器。
本申请实施例第三方面提供一种处理装置,所述处理装置包括多个处理单元,多个所述处理单元按照阵列形式排布为运算阵列,在本申请实施例中,如图8所示,所述处理装置的所有处理单元以脉动阵列的形式排布成一个32×32的运算阵列,图中,PE表示处理单元。
所述处理装置还包括:
第一缓存器,被配置为存储激活数据,以及将激活数据以行广播的方式广播到至处理单元中。
第二缓存器,被配置为存储压缩后的权重张量和稀疏掩膜信息,并将压缩后的权重张量和稀疏掩膜信息以列广播的方式广播至处理单元中。
数据路由,被配置为控制第一缓存器和第二缓存器,一个数据路由器会控制两个缓存正确的将结果输出到运算阵列中。
其中,本申请实施例中所说的行广播是指以运算阵列的行为单位进行广播,列广播是指以运算阵列的列为单位进行广播。
本申请实施例第四方面提供一种基于卷积神经网络的块稀疏装置,所述基于卷积神经网络的块稀疏装置包括:
重排模块,被配置为将维度为N×C×K×K的原始权重,转换为K2个C×K的重排权重,其中,N为卷积核数量,C为单个卷积核的特征图数量,K×K单个特征图的张量;采用
Figure BDA0003751792900000071
表示原始权重中的数据点,其中0≤i0≤N-1,0≤i1≤C-1,0≤i2,i3≤K-1,采用
Figure BDA0003751792900000072
表示重排权重的数据点,其中,0≤K≤K2-1,0≤r≤C-1,0≤s≤N-1,M为标志位,
Figure BDA0003751792900000073
张量分块模块,被配置为根据预设维度,将重排权重分割为多个数据块。
稀疏模块,被配置为根据预先设置的数据稀疏度,剪去所述多个数据块内冗余的非零值,获得压缩过的权重数据,并记录数据块的稀疏掩膜信息,所述稀疏掩膜信息中包含非零值权重在数据块中的索引信息。
补零模块,被配置为根据预设维度,判断所述重排权重是否可以被分割为整数个数据块,若所述重排权重无法被分割为整数个数据块,则对所述重排权重的张量进行补零操作,直至补零后的重排权重能够被分割为整数个数据块。
本申请实施例第五方面提供一种计算机设备,包括:
存储器,用于存储计算机程序。
处理器,用于执行所述计算机程序时实现本申请实施第一方面提供的基于卷积神经网络的块稀疏方法的步骤。
本申请实施例第六方面提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理执行时实现本申请实施第一方面提供的基于卷积神经网络的块稀疏方法的步骤。
本申请实施例提供的一种基于卷积神经网络的块稀疏方法、装置及处理单元,其中,所述基于卷积神经网络的块稀疏方法,通过将维度为N×C×K×K的原始权重,转换为K2个C×K的重排权重,然后根据预设维度,将重排权重分割为多个数据块,最后根据预先设置的数据稀疏度,剪去所述多个数据块内冗余的非零值,获得压缩过的权重数据。对于一个数据块而言,其剪去的是对数据块影响较小的数据,这种剪枝方式带来的稀疏是随机的,这可以减少稀疏对于训练精度的影响,因此可以达到较高的稀疏度。同时本申请实施例提供的基于提出卷积神经网络的块稀疏方法,在硬件设计时,当一个处理单元处理一整个数据块内的乘累加运算,因为每个数据块内的非零值数量是相同的,因此每一个处理单元处理一个数据块花费的时间也是相同的,从而解决传统训练加速器在处理稀疏张量时,存在的不同处理单元之间运算任务不平衡的问题,且在前向传播和反向传播是可以使用相同数据格式的权重数据,因此只要在存储时存储所有的重排权重,运算时就不需要进行额外的转置,也不会造成存储上的读写冲突。
以上的具体实施方式,对本申请的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上仅为本申请的具体实施方式而已,并不用于限定本申请的保护范围,凡在本申请的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本申请的保护范围之内。

Claims (10)

1.一种处理单元,其特征在于,多个所述处理单元以脉动阵列的形式排布,所述处理单元包括:
控制模块,被配置为接收数据块的稀疏掩膜信息、前向传播信息和反向传播信息,稀疏掩膜信息中包含非零值权重在数据块中的索引信息;
还被配置为根据前向传播信息和/或反向传播信息,生成运算控制指令,以及将运算控制指令和稀疏掩膜信息发送至乘累加模块;
激活数据预处理模块,被配置为接收激活数据以及数据块的稀疏掩膜信息,并根据稀疏掩膜信息,从所述激活数据中筛选出有效的激活数据,以及,将所述有效的激活数据发送至乘累加模块;
乘累加模块,被配置为从外部接收压缩后的权重数据,从激活数据预处理模块接收有效的激活数据,从控制模块接收相应的寄存器控制信号;
还被配置为对相互匹配的权重数据和激活数据乘累加运算,生成部分和结果;
结果选择模块,被配置为从乘累加模块接收所述部分和结果,以及从上一个邻近的处理单元接收一组已经完成的卷积运算结果;
还被配置为从外部接收结果选择信号,并根据所述结果选择信号将所述部分和结果或卷积运算结果输出至下一个相邻的处理单元;
其中,所述压缩后的权重数据采用以下方法获得:
将维度为N×C×K×K的原始权重,转换为K2个C×K的重排权重,其中,N为卷积核数量,C为单个卷积核的特征图数量,K×K单个特征图的张量;采用
Figure FDA0003751792890000011
表示原始权重中的数据点,其中0≤i0≤N-1,0≤i1≤C-1,0≤i2,i3≤K-1,采用
Figure FDA0003751792890000012
表示重排权重的数据点,其中,0≤K≤K2-1,0≤r≤C-1,0≤s≤N-1,M为标志位,
Figure FDA0003751792890000013
根据预设维度,将重排权重分割为多个数据块;
根据预先设置的数据稀疏度,剪去所述多个数据块内冗余的非零值,获得压缩后的权重数据,并记录数据块的稀疏掩膜信息。
2.根据权利要求1所述的处理单元,其特征在于,所述根据预设维度,将重排权重分割为多个数据块的步骤中,还包括:
根据预设维度,判断所述重排权重是否可以被分割为整数个数据块,若所述重排权重无法被分割为整数个数据块,则对所述重排权重的张量进行补零操作,直至补零后的重排权重能够被分割为整数个数据块。
3.根据权利要求1所述的处理单元,其特征在于,所述乘累加模块包括:一个乘法器、一个加法器、第一数据选择模块、第二数据选择模块、S个存储器,其中,数据块的维度为S×T,且S≥T;
乘法器,被配置为接收相互匹配的权重值和激活值,并对相互匹配的权重数据和激活数据乘累加运算;
加法器,被配置为将乘法器运算的结果与第二数据选择器输出的部分和结果进行累加;
第一数据选择器,被配置为将乘累加结果存储到对应的存储器中;
第二数据选择器,被配置为选择相应的存储器,将所述相应的存储器中存储的部分和结果输出至加法器。
4.一种处理装置,其特征在于,所述处理装置包括多个权利要求1至3任一项所述的处理单元,多个所述处理单元按照阵列形式排布为运算阵列,所述处理装置还包括:
第一缓存器,被配置为存储激活数据,以及将激活数据以行广播的方式广播到至处理单元中;
第二缓存器,被配置为存储压缩后的权重张量和稀疏掩膜信息,并将压缩后的权重张量和稀疏掩膜信息以列广播的方式广播至处理单元中
数据路由,被配置为控制第一缓存器和第二缓存器。
5.一种基于卷积神经网络的块稀疏方法,其特征在于,所述基于卷积神经网络的块稀疏方法包括:
将维度为N×C×K×K的原始权重,转换为K2个C×K的重排权重,其中,N为卷积核数量,C为单个卷积核的特征图数量,K×K单个特征图的张量;采用
Figure FDA0003751792890000021
表示原始权重中的数据点,其中0≤i0≤N-1,0≤i1≤C-1,0≤i2,i3≤K-1,采用
Figure FDA0003751792890000022
表示重排权重的数据点,其中,0≤K≤K2-1,0≤r≤C-1,0≤s≤N-1,M为标志位,
Figure FDA0003751792890000023
根据预设维度,将重排权重分割为多个数据块;
根据预先设置的数据稀疏度,剪去所述多个数据块内冗余的非零值,获得压缩过的权重数据,并记录数据块的稀疏掩膜信息,所述稀疏掩膜信息中包含非零值权重在数据块中的索引信息。
6.根据权利要求5所述的基于卷积神经网络的块稀疏方法,其特征在于,所述根据预设维度,将重排权重分割为多个数据块的步骤中,还包括:
根据预设维度,判断所述重排权重是否可以被分割为整数个数据块,若所述重排权重无法被分割为整数个数据块,则对所述重排权重的张量进行补零操作,直至补零后的重排权重能够被分割为整数个数据块。
7.一种基于卷积神经网络的块稀疏装置,其特征在于,所述基于卷积神经网络的块稀疏装置包括:
重排模块,被配置为将维度为N×C×K×K的原始权重,转换为K2个C×K的重排权重,其中,N为卷积核数量,C为单个卷积核的特征图数量,K×K单个特征图的张量;采用
Figure FDA0003751792890000024
表示原始权重中的数据点,其中0≤i0≤N-1,0≤i1≤C-1,0≤i2,i3≤K-1,采用
Figure FDA0003751792890000025
表示重排权重的数据点,其中,0≤K≤K2-1,0≤r≤C-1,0≤s≤N-1,M为标志位,
Figure FDA0003751792890000026
张量分块模块,被配置为根据预设维度,将重排权重分割为多个数据块;
稀疏模块,被配置为根据预先设置的数据稀疏度,剪去所述多个数据块内冗余的非零值,获得压缩过的权重数据,并记录数据块的稀疏掩膜信息,所述稀疏掩膜信息中包含非零值权重在数据块中的索引信息。
8.根据权利要求7所述的基于卷积神经网络的块稀疏装置,其特征在于,还包括:
补零模块,被配置为根据预设维度,判断所述重排权重是否可以被分割为整数个数据块,若所述重排权重无法被分割为整数个数据块,则对所述重排权重的张量进行补零操作,直至补零后的重排权重能够被分割为整数个数据块。
9.一种计算机设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求5-6任一项所述的基于卷积神经网络的块稀疏方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理执行时实现如权利要求5-6任一项所述的基于卷积神经网络的块稀疏方法的步骤。
CN202210844507.XA 2022-07-18 2022-07-18 基于卷积神经网络的块稀疏方法、装置及处理单元 Pending CN115186802A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210844507.XA CN115186802A (zh) 2022-07-18 2022-07-18 基于卷积神经网络的块稀疏方法、装置及处理单元

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210844507.XA CN115186802A (zh) 2022-07-18 2022-07-18 基于卷积神经网络的块稀疏方法、装置及处理单元

Publications (1)

Publication Number Publication Date
CN115186802A true CN115186802A (zh) 2022-10-14

Family

ID=83519074

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210844507.XA Pending CN115186802A (zh) 2022-07-18 2022-07-18 基于卷积神经网络的块稀疏方法、装置及处理单元

Country Status (1)

Country Link
CN (1) CN115186802A (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113869500A (zh) * 2021-10-18 2021-12-31 安谋科技(中国)有限公司 模型的运行方法、数据处理方法、电子设备及介质
CN116070685A (zh) * 2023-03-27 2023-05-05 南京大学 一种存内计算单元、存算阵列及存算芯片
GB2618399A (en) * 2022-10-31 2023-11-08 Imagination Tech Ltd Implementing a scatter function on a neural network accelerator
GB2618400A (en) * 2022-10-31 2023-11-08 Imagination Tech Ltd Implementing a scatter function on a neural network accelerator

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113869500A (zh) * 2021-10-18 2021-12-31 安谋科技(中国)有限公司 模型的运行方法、数据处理方法、电子设备及介质
GB2618399A (en) * 2022-10-31 2023-11-08 Imagination Tech Ltd Implementing a scatter function on a neural network accelerator
GB2618400A (en) * 2022-10-31 2023-11-08 Imagination Tech Ltd Implementing a scatter function on a neural network accelerator
GB2618400B (en) * 2022-10-31 2024-06-12 Imagination Tech Ltd Implementing a scatter function on a neural network accelerator
GB2618399B (en) * 2022-10-31 2024-06-12 Imagination Tech Ltd Implementing a scatter function on a neural network accelerator
CN116070685A (zh) * 2023-03-27 2023-05-05 南京大学 一种存内计算单元、存算阵列及存算芯片
CN116070685B (zh) * 2023-03-27 2023-07-21 南京大学 一种存内计算单元、存算阵列及存算芯片

Similar Documents

Publication Publication Date Title
US20220012593A1 (en) Neural network accelerator and neural network acceleration method based on structured pruning and low-bit quantization
CN115186802A (zh) 基于卷积神经网络的块稀疏方法、装置及处理单元
US10096134B2 (en) Data compaction and memory bandwidth reduction for sparse neural networks
CN111898733B (zh) 一种深度可分离卷积神经网络加速器架构
US20240265234A1 (en) Digital Processing Circuits and Methods of Matrix Operations in an Artificially Intelligent Environment
CN112668708B (zh) 一种提高数据利用率的卷积运算装置
CN109993293B (zh) 一种适用于堆叠式沙漏网络的深度学习加速器
CN112990454B (zh) 基于集成dpu多核异构的神经网络计算加速方法及装置
US20230068450A1 (en) Method and apparatus for processing sparse data
US20230229917A1 (en) Hybrid multipy-accumulation operation with compressed weights
CN109902821B (zh) 一种数据处理方法、装置及相关组件
Shu et al. High energy efficiency FPGA-based accelerator for convolutional neural networks using weight combination
CN113313244B (zh) 面向加法网络的近存储神经网络加速器及其加速方法
CN112200310B (zh) 智能处理器、数据处理方法及存储介质
CN111047037B (zh) 数据处理方法、装置、设备及存储介质
CN110766136B (zh) 一种稀疏矩阵与向量的压缩方法
KR101989793B1 (ko) 컨볼루션 신경망을 위한 가속기 인식 가지 치기 방법 및 기록 매체
CN117035028A (zh) 一种基于fpga的卷积加速器高效计算方法
CN113222160A (zh) 一种量子态的转换方法及装置
CN116090518A (zh) 基于脉动运算阵列的特征图处理方法、装置以及存储介质
CN115481364A (zh) 基于gpu加速的大规模椭圆曲线多标量乘法的并行计算方法
US20230068941A1 (en) Quantized neural network training and inference
CN115859011A (zh) 矩阵运算方法、装置及单元、电子设备
KR102372869B1 (ko) 인공 신경망을 위한 행렬 연산기 및 행렬 연산 방법
CN116301727A (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