CN113077047A - 一种基于特征图稀疏性的卷积神经网络加速器 - Google Patents
一种基于特征图稀疏性的卷积神经网络加速器 Download PDFInfo
- Publication number
- CN113077047A CN113077047A CN202110379879.5A CN202110379879A CN113077047A CN 113077047 A CN113077047 A CN 113077047A CN 202110379879 A CN202110379879 A CN 202110379879A CN 113077047 A CN113077047 A CN 113077047A
- Authority
- CN
- China
- Prior art keywords
- module
- matrix
- feature map
- calculation
- input
- 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.)
- Granted
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/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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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
本发明公开了一种基于特征图稀疏性的卷积神经网络加速器。所述卷积神经网络加速器包括输入特征图编码模块、权重编码模块、数据流控制模块、稀疏矩阵计算模块和总线;总线分别连接数据流控制模块、输入特征图编码模块、权重编码模块和稀疏矩阵计算模块;输入特征图编码模块根据特征图中的0元素,对特征图编码;权重编码模块根据输入特征图编码模块的编码信息,为稀疏矩阵计算模块提供对应的权重数据;数据流控制模块根据寄存器信息控制其余模块的工作模式;稀疏矩阵计算模块使用输入特征图编码模块和权重编码模块提供的数据进行卷积计算。本发明可以将加速器切换为利用权重中的稀疏性,可以灵活应用,对稀疏权重加以支持。
Description
技术领域
本发明涉及卷积神经网络硬件加速器领域,属于集成电路硬件加速技术领域,具体涉及一种基于特征图稀疏性的卷积神经网络加速器。
背景技术
近年来人工智能技术迅速发展,深度神经网络在自然语言处理、计算机视觉等方面取得了重大的突破。随着移动设备的普及和物联网的出现,在移动设备或者物联网设备上部署神经网络的需求与日俱增。然而,算法中大量的数据移动与其计算复杂性对终端设备的功耗以及性能带来的巨大的挑战,阻碍了CNN算法在智能手机、智能汽车、智能家居领域的应用部署。
目前已经出现许多对于CNN算法进行硬件加速的方法,设计在灵活性与乘法器利用效率等方面都表现很好,但是这些设计都无法突破卷积层的算力需求限制,或者是通过引导模型在训练时将权重稀疏化,然后利用权重的稀疏性进行计算,然后对模型进行稀疏化引导需要额外的训练时间,不利于模型的直接部署。
论文《An Efficient Hardware Accelerator for Structured SparseConvolutional Neural Networks on FPGAs》中,通过大规模查找表实现了对权重的0元素的利用,但是论文所采用的方法一方面需要消耗大量查找表资源,另一方面需要在神经网络模型训练阶段额外引导模型权重的产生0元素,不利于模型直接部署。同时,目前主流神经网络模型中,大量采用Relu激活函数(f(x)=MAX(0,x)),使得特征图中出现大量0元素,当前方法并没有对这些0元素加以利用。
发明内容
本发明的目的在于克服现有卷积加速器发明在特征图或者权重中元素稀疏性利用的不足,提出了一种基于特征图稀疏性的卷积神经网络加速器,利用特征图或权重中元素的稀疏性,从原理上减少卷积的计算量,加速神经网络模型的计算。
本发明的目的至少通过如下技术方案之一实现。
一种基于特征图稀疏性的卷积神经网络加速器,包括输入特征图编码模块、权重编码模块、数据流控制模块、稀疏矩阵计算模块和总线;
总线分别连接数据流控制模块、输入特征图编码模块、权重编码模块和稀疏矩阵计算模块;输入特征图编码模块根据特征图中对计算没有贡献的0元素,对特征图编码;权重编码模块根据输入特征图编码模块的编码信息,为稀疏矩阵计算模块提供对应的权重数据;数据流控制模块根据寄存器信息控制其余模块的工作模式;稀疏矩阵计算模块使用输入特征图编码模块和权重编码模块提供的数据进行卷积计算,实现卷积神经网络加速器的功能。
进一步地,数据流控制模块中的寄存器由外接的CPU通过总线进行配置,数据流控制模块根据寄存器配置信息中的卷积层计算参数,访问总线,读取输入特征图数据和权重数据,从而实现卷积计算,将输入特征图数据和权重数据对应灌入输入特征图编码模块和权重编码模块,并且将稀疏矩阵计算模块运算得到的输出特征图数据通过总线写回外部缓存;
同时,数据流控制模块根据输入特征图编码模块和稀疏矩阵计算模块的信息进行反压控制,从而避免由于特征图数据中稀疏度变化导致的各个模块计算速度不一致,协调加速器工作;
采用矩阵运算实现卷积,当稀疏矩阵计算模块经过多次矩阵运算结果并累加后,由数据流控制模块发出指令,控制稀疏矩阵计算模块将输出特征图数据依次输出。
进一步地,所述数据流控制模块根据输入特征图编码模块和稀疏矩阵计算模块的信息进行反压控制,具体如下:
当输入特征图编码模块已经完成下一次矩阵计算所需数据的编码时,若稀疏矩阵计算模块没有完成本次数据计算,则使输入特征图编码模块暂停工作,直至稀疏矩阵计算模块完成本次计算;
而当稀疏矩阵计算模块完成本次计算时,若输入特征图编码模块未准备好下一次稀疏矩阵计算模块所需数据的编码时,则使稀疏矩阵计算模块暂停工作,直至输入特征图比那吗模块完成下一次运算所需数据的编码工作。
进一步地,所述数据流控制模块,将卷积计算中的以滑窗为原子计算的计算模式,转换为以矩阵相乘计算为原子计算的计算模式;将卷积计算在输出特征图宽度、输出特征图高度、输出通道数、卷积核宽度、卷积核高度和输入通道数六个维度上的循环,通过循环之间的合并、拆分和调换次序三种方法,转换以矩阵与矩阵乘法为原子计算的计算模式;
所述计算模式在特征图宽度、输出特征图高度、输出通道数、卷积核宽度、卷积核高度和输入通道数六个维度中,在输入通道数和输出通道数的并行度为P,P表示每个单元存储的数据数量,稀疏矩阵计算模块中计算的矩阵尺寸为P*P矩阵。
进一步地,原子计算进行的矩阵运算与传统计算流程不同,将传统计算流程的矩阵相乘Cnn=Ann*Bnn计算时第一矩阵A的行向量与第二矩阵B的列向量对应相乘后累加的原子操作转换为,将第一矩阵A的列向量与第二矩阵B中对应元素相乘得到一个中间矩阵的原子操作,重复这一操作将所有得到的中间矩阵进行累加,得到结果第三矩阵C。
进一步地,根据以矩阵与矩阵乘法为原子计算的计算模式,输入特征图数据存储格式如下:
输入特征图为一个三维矩阵,其尺寸为[Wi,Hi,Ni],Wi、Hi和Ni分别表示输入特征图宽、输入特征图高和输入通道数;在内存中的以每个单元尺寸为[1,1,P]的方式进行映射,映射顺序为先进行宽方向,再进行高方向,最后通道方向;输出特征图存储格式与输入特征图存储格式一致;
权重数据存储格式如下:
权重数据为一个四维矩阵,其尺寸为[Wk,Hk,Ni,No],Wk、Hk和No分别表示卷积核宽、卷积核高、和输出通道数;在内存中以[1,1,P,1]为单元进行映射,以输出通道方向>卷积核宽度方向>卷积核高度方向>输入通道方向的优先级实现映射。
进一步地,输入特征图编码模块根据输入特征图的稀疏性对特征图进行编码;输入特征图编码模块具有两个特征图数据读取接口,同时读取特征图数据,每周期读取特征图矩阵中的一个行向量,并且对行向量根据其中的0元素进行一次整体移位,并且记录移位以后的元素的原列坐标,作为元素的索引;经过P次移位以后,将所有非零元素紧凑排布,并且每个元素的索引将对应记录下来;
完成P次移位操作后,将压缩后的特征图矩阵送入稀疏矩阵计算模块,将原始索引即对应元素的原始坐标输入权重编码模块。
进一步地,数据流控制模块通过寄存器配置信息,访问总线,将获得的权重数据输入权重编码模块,权重编码模块将权重数据转置存入内部缓存中;然后权重编码模块根据输入特征图编码模块提供的原始索引,将对应的权重数据送入稀疏矩阵计算模块。
进一步地,稀疏矩阵计算模块每个周期将输入特征图编码模块提供的压缩后的特征图矩阵的列向量和权重编码模块提供的转置后的权重矩阵进行相乘,得到中间矩阵并累加,进而得到结果矩阵,根据数据流控制模块的输出指令,在所有中间矩阵累加完成后,逐周期输出结果矩阵的行向量。
进一步地,将输入特征图编码模块和权重编码模块的输入接口交换,即可完成两个待乘矩阵的交换,从而将加速器从利用特征图稀疏性,转换为利用权重参数的稀疏性,具体如下:
两个矩阵相乘,即Cnn=Ann*Bnn,则Cnn T=Bnn T*Ann T,只需要通过数据流控制模块,将输入特征图编码模块与权重编码模块所读取的数据进行交换,并为输入特征图模块的数据输入端口、权重编码模块的数据输入端口和稀疏矩阵运算模块的数据输出端口各添加一个矩阵转置运算模块即可。
相比于现有技术,本发明的优点在于:
1.主流神经网络模型中,大量采用Relu激活函数(f(x)=MAX(0,x)),经过Relu激活函数以后的特征图中存在大量稀疏元素(0元素);本发明利用这一特性,能够利用大部分神经网络中间特征图中的0元素,实现加速。
2.现有技术通常利用权重稀疏性加速,然而权重稀疏性需要在训练时加以引导;本发明利用的是特征图中的稀疏元素,与训练过程无关,具有普适性。
3.本发明可以将加速器切换为利用权重中的稀疏性,可以灵活应用,对稀疏权重加以支持。
附图说明
图1是一种基于特征图稀疏性的卷积神经网络加速器的整体框架图;
图2是特征图数据映射示意图;
图3是权重数据映射示意图;
图4是单次矩阵原子运算示意图;
图5是第二次矩阵原子运算示意图;
图6是矩阵运算原计算模式示意图;
图7是矩阵运运算改进后计算模式示意图;
图8是输入特征图编码模块工作示意图;
图9是输入特征图经过编码后示意图;
图10是权重编码模块工作示意图;
图11是稀疏矩阵运算模块示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下面结合附图并举实施例,对本发明的具体实施进行详细说明。
实施例:
一种基于特征图稀疏性的卷积神经网络加速器,如图1所示,包括输入特征图编码模块、权重编码模块、数据流控制模块、稀疏矩阵计算模块和总线;
总线分别连接数据流控制模块、输入特征图编码模块、权重编码模块和稀疏矩阵计算模块;输入特征图编码模块根据特征图中对计算没有贡献的0元素,对特征图编码;权重编码模块根据输入特征图编码模块的编码信息,为稀疏矩阵计算模块提供对应的权重数据;数据流控制模块根据寄存器信息控制其余模块的工作模式;稀疏矩阵计算模块使用输入特征图编码模块和权重编码模块提供的数据进行卷积计算,实现卷积神经网络加速器的功能。
数据流控制模块中的寄存器由外接的CPU通过总线进行配置,数据流控制模块根据寄存器配置信息中的卷积层计算参数,访问总线,读取输入特征图数据和权重数据,从而实现卷积计算,将输入特征图数据和权重数据对应灌入输入特征图编码模块和权重编码模块,并且将稀疏矩阵计算模块运算得到的输出特征图数据通过总线写回外部缓存;
同时,数据流控制模块根据输入特征图编码模块和稀疏矩阵计算模块的信息进行反压控制,从而避免由于特征图数据中稀疏度变化导致的各个模块计算速度不一致,协调加速器工作,具体如下:
当输入特征图编码模块已经完成下一次矩阵计算所需数据的编码时,若稀疏矩阵计算模块没有完成本次数据计算,则使输入特征图编码模块暂停工作,直至稀疏矩阵计算模块完成本次计算;
而当稀疏矩阵计算模块完成本次计算时,若输入特征图编码模块未准备好下一次稀疏矩阵计算模块所需数据的编码时,则使稀疏矩阵计算模块暂停工作,直至输入特征图比那吗模块完成下一次运算所需数据的编码工作。
采用矩阵运算实现卷积,当稀疏矩阵计算模块经过多次矩阵运算结果并累加后,由数据流控制模块发出指令,控制稀疏矩阵计算模块将输出特征图数据依次输出。
输入特征图为三维矩阵,尺寸为[Wi,Hi,Ni],Wi、Hi和Ni分别表示输入特征图宽、输入特征图高和输入通道数;卷积核为四维矩阵,尺寸为[Wk,Hk,Ni,No],Wk、Hk和No分别表示卷积核宽、卷积核高、和输出通道数;输出特征图为三维矩阵,尺寸为[Wo,Ho,No],Wo和Ho分别表示输出特征图宽和输出特征图高;则根据卷积计算的原理,其计算过程可以采用下面伪代码描述,其中x为输入特征图数据,wt为卷积核数据,out为出输出特征图数据,Sx为横向步长,Sy为纵向步长。
本发明通过对上述伪代码进行改造,将原始计算转换为以矩阵乘法为原子计算的计算模式,根据以矩阵与矩阵乘法为原子计算的计算模式,输入特征图数据存储格式如下:
输入特征图为一个三维矩阵,其尺寸为[Wi,Hi,Ni],Wi、Hi和Ni分别表示输入特征图宽、输入特征图高和输入通道数;在内存中的以每个单元尺寸为[1,1,P]的方式进行映射,映射顺序为先进行宽方向,再进行高方向,最后通道方向;输出特征图存储格式与输入特征图存储格式一致;在一个实施例中,如图2所示,以特征图尺寸[4,4,8],并行度P=4为例,(P同时代表了输入通道并行度,输出通道并行度,矩阵运算尺寸),即每个单元存储的数据数量为P=4,而输入特征图被划分为32个单元,左侧为特征图原始数据,右侧从上至下为数据在内存中的排布方式。
权重数据存储格式如下:
权重数据为一个四维矩阵,其尺寸为[Wk,Hk,Ni,No],Wk、Hk和No分别表示卷积核宽、卷积核高、和输出通道数;在内存中以[1,1,P,1]为单元进行映射,以输出通道方向>卷积核宽度方向->卷积核高度方向->输入通道方向的优先级实现映射。在一个实施例中,如图3所示,以权重尺寸为[3,3,8,4],并行度P=4举例说明,左图每个大块代表一个输出通道对应的特征图数据,大块内部和输入特征图的划分方式一样,从上至下分别为k0,k1,k2和k3,按照输出通道方向>卷积核宽度方向->卷积核高度方向->输入通道方向的优先级,映射到右侧的内存排布中。
所述数据流控制模块,将卷积计算中的以滑窗为原子计算的计算模式,转换为以矩阵相乘计算为原子计算的计算模式;将卷积计算在输出特征图宽度、输出特征图高度、输出通道数、卷积核宽度、卷积核高度和输入通道数六个维度上的循环,通过循环之间的合并、拆分和调换次序三种方法,转换以矩阵与矩阵乘法为原子计算的计算模式;
所述计算模式在特征图宽度、输出特征图高度、输出通道数、卷积核宽度、卷积核高度和输入通道数六个维度中,在输入通道数和输出通道数的并行度为P,P表示每个单元存储的数据数量,稀疏矩阵计算模块中计算的矩阵尺寸为P*P矩阵。
原子计算进行的矩阵运算与传统计算流程不同,将传统计算流程的矩阵相乘Cnn=Ann*Bnn计算时第一矩阵A的行向量与第二矩阵B的列向量对应相乘后累加的原子操作转换为,将第一矩阵A的列向量与第二矩阵B中对应元素相乘得到一个中间矩阵的原子操作,重复这一操作将所有得到的中间矩阵进行累加,得到结果第三矩阵C。
本发明的原子计算为矩阵计算,每次完成第一矩阵A与第二矩阵B的矩阵乘法,其中第一矩阵A的数据来自输入特征图,其尺寸为[P,P],第二矩阵B的数据来自权重数据,其尺寸为[P,P],P为输入通道方向并行度和输出通道方向并行度。
输出特征图尺寸为[Wo,Ho,No],本发明的计算模式每次计算尺寸为[P,1,P]的部分输出特征图,可以使用下面伪代码描述:
伪代码中,计算部分输出特征图部分的具体步骤如下:
A1、初始化缓存矩阵为全0矩阵,卷积核宽度、高度计数器为m和n初始化为0,输入通道和输出通道计数器p和q初始化为0,计数器m,n,p和q的上限分别为Wk,Hk,ceil(Ni/P),ceil(No/P);
A2、根据计数器m,n,p和q,从输入特征图矩阵中取出一个尺寸为[P,1,P]的部分输入特征图;
A3、根据计数器m,n,p和q,从权重数据中取出一个尺寸为[1,1,P,P]的部分权重数据;
A4、将步骤A2和步骤A3中的两个矩阵进行矩阵乘法,并与缓存矩阵累加;
A5、计数器m,n,p和q形成进位链逻辑,进位顺序为m,n,p和q,当前一个溢出时才会使后一个自增,计数器溢出时归零,计数器m每周期自增;
A6、重复步骤A2-步骤A5直至四个计数器都溢出,本次部分输出特征图计算完成。
本实施例中,以输入特征图尺寸为[7,7,8],卷积核尺寸为[3,3,8,4],输出特征图尺寸为[5,5,4]并行度P=4举例说明计算流程。
原子计算为矩阵计算,单次原子计算的示意图如图4所示,左侧为输入特征图数据,右侧为卷积核数据,下侧为输出特征图数据,图中连线标识了数据的对应关系,矩阵运算的结果矩阵为输出特征图数据的部分和。
第二次原子计算如图5所示,根据卷积核尺寸[3,3,8,4],重复3*3*(8/P)*(4/4)=18次原子计算并将原子计算结果矩阵逐元素累加即可完成上图中部分输出特征图的计算。然后重复上述操作即可整个卷积运算。
本发明针对前述过程中的矩阵乘法运算进行优化,由于在神经网络中普遍存在Relu激活函数,其计算公式为f(x)=max(0,x),经过Relu激活函数后,特征图会存在大量稀疏元素(值为0),本发明通过减少稀疏元素参与乘法,从而减少计算时间。
下面以两个尺寸都为[P,P]的矩阵A,B的乘法进行说明,传统计算矩阵的伪代码如下,来自A的行与来自B对应的列元素对应相乘并累加得到C矩阵的元素。
以P=4为例,图6为原子计算
本发明矩阵计算伪代码转换为如下方式
以P=4为例,图7为原子计算
因此,当来自矩阵A的运算为0时,该单位计算可以直接跳过,从而减少计算量。
输入特征图编码模块根据输入特征图的稀疏性对特征图进行编码;输入特征图编码模块具有两个特征图数据读取接口,同时读取特征图数据,每周期读取特征图矩阵中的一个行向量,并且对行向量根据其中的0元素进行一次整体移位,并且记录移位以后的元素的原列坐标,作为元素的索引;经过P次移位以后,将所有非零元素紧凑排布,并且每个元素的索引将对应记录下来;
完成P次移位操作后,将压缩后的特征图矩阵送入稀疏矩阵计算模块,将原始索引即对应元素的原始坐标输入权重编码模块。
本实施例中,输入特征图编码模块的具体编码方式如下:
B1、将特征图矩阵以行为单位送入输入特征图编码模块;
B2、输入特征图编码模块每次对特征图矩阵的行向量的元素进行0元素检测,以左数第一个0元素为分界,左侧元素固定不动,右侧所有元素整体向左侧移动一个位置;并且记录所有元素的原坐标位置,作为元素的索引;
B3、将步骤B2重复P次,所有的非0元素将紧密排布并且靠向左侧,并且每个元素的索引将对应记录下来,形成索引矩阵;
B4、将压缩后的特征图矩阵与索引矩阵从左至右,按照列向量输出,压缩后的特征图矩阵的列向量送入稀疏矩阵计算模块,索引矩阵的列向量输入权重编码模块;
B5、若即将输出的压缩后的特征图矩阵列向量的元素全部为0,则向数据流控制模块发出完成标志,代表本次矩阵运算完成。
本实施例中,图8为当P=4时的示例,空白格子为非0元素,带有阴影的格子为0元素,使用P=4个移位器,行向量从上至下流过4个移位器即可完成编码操作。
本实施例中,如图9所示,经过上述过程后,特征图数据编码完成,矩阵变为向左紧凑排布,并且得到对应的索引值,标识了各非0元素的原始位置。
数据流控制模块通过寄存器配置信息,访问总线,将获得的权重数据输入权重编码模块,权重编码模块将权重数据转置存入内部缓存中。然后权重编码模块根据输入特征图编码模块提供的原始索引,将对应的权重数据送入稀疏矩阵计算模块。
本实施例中,权重编码模块的具体编码方式如下:
C1、权重矩阵使用python,在模型转换时,将权重矩阵进行转置运算;在另一个实施例中,权重矩阵使用c++;
C2、将转置以后的权重矩阵,按照列向量的顺序从总线读取;
C3、将读取的列向量存入内置的P个缓存RAM中;
C4、每次根据从特征图编码模块中的得到的索引矩阵,从P个缓存RAM中获取P个列向量,作为输出,传送至稀疏矩阵计算单元中。
以前述输入特征图编码模块以后的数据和索引矩阵为例,图10为P=4时权重编码模块的工作示意图。
稀疏矩阵计算模块每个周期将输入特征图编码模块提供的压缩后的特征图矩阵的列向量和权重编码模块提供的转置后的权重矩阵进行相乘,得到中间矩阵并累加,进而得到结果矩阵,根据数据流控制模块的输出指令,在所有中间矩阵累加完成后,逐周期输出结果矩阵的行向量。
本实施例中,稀疏矩阵计算模块的工作步骤如下:
D1、接收来自特征图编码模块的压缩后的特征图矩阵的列向量与来自权重编码模块的转置后的权重矩阵;
D2、将列向量和转置后的权重矩阵对应元素相乘,得到一个中间矩阵;
D3、将中间矩阵与缓存矩阵相乘,若没有收到输出信号则重复步骤D1-步骤D2,若收到输出信号则进入步骤D4;
D4、将缓存矩阵按照列向量依次输出。
结合控制模块的控制即可完成卷积计算。图11为并行度P=4时,稀疏矩阵计算模块的示意图。
本发明提出的加速器架构,计算的核心是两个矩阵相乘,待乘的两个矩阵可以对换位置,从而利用权重的稀疏性。具体地,将输入特征图编码模块和权重编码模块的输入接口交换,即可完成两个待乘矩阵的交换,从而将加速器从利用特征图稀疏性,转换为利用权重参数的稀疏性,具体如下:
两个矩阵相乘,即Cnn=Ann*Bnn,则Cnn T=Bnn T*Ann T,只需要通过数据流控制模块,将输入特征图编码模块与权重编码模块所读取的数据进行交换,并为输入特征图模块的数据输入端口、权重编码模块的数据输入端口和稀疏矩阵运算模块的数据输出端口各添加一个矩阵转置运算模块即可。
以上实施例的说明只是用于帮助理解本发明方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求保护范围内。
Claims (10)
1.一种基于特征图稀疏性的卷积神经网络加速器,其特征在于,包括输入特征图编码模块、权重编码模块、数据流控制模块、稀疏矩阵计算模块和总线;
总线分别连接数据流控制模块、输入特征图编码模块、权重编码模块和稀疏矩阵计算模块;输入特征图编码模块根据特征图中的0元素,对特征图编码;权重编码模块根据输入特征图编码模块的编码信息,为稀疏矩阵计算模块提供对应的权重数据;数据流控制模块根据寄存器信息控制其余模块的工作模式;稀疏矩阵计算模块使用输入特征图编码模块和权重编码模块提供的数据进行卷积计算,实现卷积神经网络加速器的功能。
2.根据权利要求1所述的一种基于特征图稀疏性的卷积神经网络加速器,其特征在于,数据流控制模块中的寄存器由外接的CPU通过总线进行配置,数据流控制模块根据寄存器配置信息中的卷积层计算参数,访问总线,读取输入特征图数据和权重数据,从而实现卷积计算,将输入特征图数据和权重数据对应灌入输入特征图编码模块和权重编码模块,并且将稀疏矩阵计算模块运算得到的输出特征图数据通过总线写回外部缓存;
同时,数据流控制模块根据输入特征图编码模块和稀疏矩阵计算模块的信息进行反压控制;
采用矩阵运算实现卷积,当稀疏矩阵计算模块经过多次矩阵运算结果并累加后,由数据流控制模块发出指令,控制稀疏矩阵计算模块将输出特征图数据依次输出。
3.根据权利要求2所述的一种基于特征图稀疏性的卷积神经网络加速器,其特征在于,所述数据流控制模块根据输入特征图编码模块和稀疏矩阵计算模块的信息进行反压控制,具体如下:
当输入特征图编码模块已经完成下一次矩阵计算所需数据的编码时,若稀疏矩阵计算模块没有完成本次数据计算,则使输入特征图编码模块暂停工作,直至稀疏矩阵计算模块完成本次计算;
而当稀疏矩阵计算模块完成本次计算时,若输入特征图编码模块未准备好下一次稀疏矩阵计算模块所需数据的编码时,则使稀疏矩阵计算模块暂停工作,直至输入特征图比那吗模块完成下一次运算所需数据的编码工作。
4.根据权利要求2所述的一种基于特征图稀疏性的卷积神经网络加速器,其特征在于,所述数据流控制模块,将卷积计算中的以滑窗为原子计算的计算模式,转换为以矩阵相乘计算为原子计算的计算模式;将卷积计算在输出特征图宽度、输出特征图高度、输出通道数、卷积核宽度、卷积核高度和输入通道数六个维度上的循环,通过循环之间的合并、拆分和调换次序三种方法,转换以矩阵与矩阵乘法为原子计算的计算模式;
所述计算模式在特征图宽度、输出特征图高度、输出通道数、卷积核宽度、卷积核高度和输入通道数六个维度中,在输入通道数和输出通道数的并行度为P,P表示每个单元存储的数据数量,稀疏矩阵计算模块中计算的矩阵尺寸为P*P矩阵。
5.根据权利要求4所述的一种基于特征图稀疏性的卷积神经网络加速器,其特征在于,原子计算进行的矩阵运算与传统计算流程不同,将传统计算流程的矩阵相乘Cnn=Ann*Bnn计算时第一矩阵A的行向量与第二矩阵B的列向量对应相乘后累加的原子操作转换为,将第一矩阵A的列向量与第二矩阵B中对应元素相乘得到一个中间矩阵的原子操作,重复这一操作将所有得到的中间矩阵进行累加,得到结果第三矩阵C。
6.根据权利要求5所述的一种基于特征图稀疏性的卷积神经网络加速器,其特征在于,根据以矩阵与矩阵乘法为原子计算的计算模式,输入特征图数据存储格式如下:
输入特征图为一个三维矩阵,其尺寸为[Wi,Hi,Ni],Wi、Hi和Ni分别表示输入特征图宽、输入特征图高和输入通道数;在内存中的以每个单元尺寸为[1,1,P]的方式进行映射,映射顺序为先进行宽方向,再进行高方向,最后通道方向;输出特征图存储格式与输入特征图存储格式一致;
权重数据存储格式如下:
权重数据为一个四维矩阵,其尺寸为[Wk,Hk,Ni,No],Wk、Hk和No分别表示卷积核宽、卷积核高、和输出通道数;在内存中以[1,1,P,1]为单元进行映射,以输出通道方向>卷积核宽度方向>卷积核高度方向>输入通道方向的优先级实现映射。
7.根据权利要求1所述的一种基于特征图稀疏性的卷积神经网络加速器,其特征在于,输入特征图编码模块根据输入特征图的稀疏性对特征图进行编码;输入特征图编码模块具有两个特征图数据读取接口,同时读取特征图数据,每周期读取特征图矩阵中的一个行向量,并且对行向量根据其中的0元素进行一次整体移位,并且记录移位以后的元素的原列坐标,作为元素的索引;经过P次移位以后,将所有非零元素紧凑排布,并且每个元素的索引将对应记录下来;
完成P次移位操作后,将压缩后的特征图矩阵送入稀疏矩阵计算模块,将原始索引即对应元素的原始坐标输入权重编码模块。
8.根据权利要求1所述的一种基于特征图稀疏性的卷积神经网络加速器,其特征在于,数据流控制模块通过寄存器配置信息,访问总线,将获得的权重数据输入权重编码模块,权重编码模块将权重数据转置存入内部缓存中;然后权重编码模块根据输入特征图编码模块提供的原始索引,将对应的权重数据送入稀疏矩阵计算模块。
9.根据权利要求1所述的一种基于特征图稀疏性的卷积神经网络加速器,其特征在于,稀疏矩阵计算模块每个周期将输入特征图编码模块提供的压缩后的特征图矩阵的列向量和权重编码模块提供的转置后的权重矩阵进行相乘,得到中间矩阵并累加,进而得到结果矩阵,根据数据流控制模块的输出指令,在所有中间矩阵累加完成后,逐周期输出结果矩阵的行向量。
10.根据权利要求1~9任一项所述的一种基于特征图稀疏性的卷积神经网络加速器,其特征在于,将输入特征图编码模块和权重编码模块的输入接口交换,即可完成两个待乘矩阵的交换,从而将加速器从利用特征图稀疏性,转换为利用权重参数的稀疏性,具体如下:
两个矩阵相乘,即Cnn=Ann*Bnn,则Cnn T=Bnn T*Ann T,只需要通过数据流控制模块,将输入特征图编码模块与权重编码模块所读取的数据进行交换,并为输入特征图模块的数据输入端口、权重编码模块的数据输入端口和稀疏矩阵运算模块的数据输出端口各添加一个矩阵转置运算模块即可。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110379879.5A CN113077047B (zh) | 2021-04-08 | 2021-04-08 | 一种基于特征图稀疏性的卷积神经网络加速器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110379879.5A CN113077047B (zh) | 2021-04-08 | 2021-04-08 | 一种基于特征图稀疏性的卷积神经网络加速器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113077047A true CN113077047A (zh) | 2021-07-06 |
CN113077047B CN113077047B (zh) | 2023-08-22 |
Family
ID=76615717
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110379879.5A Active CN113077047B (zh) | 2021-04-08 | 2021-04-08 | 一种基于特征图稀疏性的卷积神经网络加速器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113077047B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111882028A (zh) * | 2020-06-08 | 2020-11-03 | 北京大学深圳研究生院 | 用于卷积神经网络的卷积运算装置 |
CN113673690A (zh) * | 2021-07-20 | 2021-11-19 | 天津津航计算技术研究所 | 一种水下噪声分类卷积神经网络加速器 |
CN113901747A (zh) * | 2021-10-14 | 2022-01-07 | 北京大学 | 一种可配置稀疏注意力机制的硬件加速器 |
CN115311536A (zh) * | 2022-10-11 | 2022-11-08 | 绍兴埃瓦科技有限公司 | 图像处理中稀疏卷积处理方法及装置 |
WO2024108584A1 (zh) * | 2022-11-25 | 2024-05-30 | 华为技术有限公司 | 稀疏算子处理方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180246855A1 (en) * | 2017-02-28 | 2018-08-30 | Texas Instruments Incorporated | Reconfigurable matrix multiplier system and method |
US20190205746A1 (en) * | 2017-12-29 | 2019-07-04 | Intel Corporation | Machine learning sparse computation mechanism for arbitrary neural networks, arithmetic compute microarchitecture, and sparsity for training mechanism |
CN109993297A (zh) * | 2019-04-02 | 2019-07-09 | 南京吉相传感成像技术研究院有限公司 | 一种负载均衡的稀疏卷积神经网络加速器及其加速方法 |
CN110807513A (zh) * | 2019-10-23 | 2020-02-18 | 中国人民解放军国防科技大学 | 一种基于Winograd稀疏算法的卷积神经网络加速器 |
CN111062472A (zh) * | 2019-12-11 | 2020-04-24 | 浙江大学 | 一种基于结构化剪枝的稀疏神经网络加速器及其加速方法 |
-
2021
- 2021-04-08 CN CN202110379879.5A patent/CN113077047B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180246855A1 (en) * | 2017-02-28 | 2018-08-30 | Texas Instruments Incorporated | Reconfigurable matrix multiplier system and method |
US20190205746A1 (en) * | 2017-12-29 | 2019-07-04 | Intel Corporation | Machine learning sparse computation mechanism for arbitrary neural networks, arithmetic compute microarchitecture, and sparsity for training mechanism |
CN109993297A (zh) * | 2019-04-02 | 2019-07-09 | 南京吉相传感成像技术研究院有限公司 | 一种负载均衡的稀疏卷积神经网络加速器及其加速方法 |
CN110807513A (zh) * | 2019-10-23 | 2020-02-18 | 中国人民解放军国防科技大学 | 一种基于Winograd稀疏算法的卷积神经网络加速器 |
CN111062472A (zh) * | 2019-12-11 | 2020-04-24 | 浙江大学 | 一种基于结构化剪枝的稀疏神经网络加速器及其加速方法 |
Non-Patent Citations (1)
Title |
---|
周国飞;: "一种支持稀疏卷积的深度神经网络加速器的设计", 电子技术与软件工程, no. 04, pages 115 - 118 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111882028A (zh) * | 2020-06-08 | 2020-11-03 | 北京大学深圳研究生院 | 用于卷积神经网络的卷积运算装置 |
CN113673690A (zh) * | 2021-07-20 | 2021-11-19 | 天津津航计算技术研究所 | 一种水下噪声分类卷积神经网络加速器 |
CN113673690B (zh) * | 2021-07-20 | 2024-05-28 | 天津津航计算技术研究所 | 一种水下噪声分类卷积神经网络加速器 |
CN113901747A (zh) * | 2021-10-14 | 2022-01-07 | 北京大学 | 一种可配置稀疏注意力机制的硬件加速器 |
CN115311536A (zh) * | 2022-10-11 | 2022-11-08 | 绍兴埃瓦科技有限公司 | 图像处理中稀疏卷积处理方法及装置 |
CN115311536B (zh) * | 2022-10-11 | 2023-01-24 | 绍兴埃瓦科技有限公司 | 图像处理中稀疏卷积处理方法及装置 |
WO2024108584A1 (zh) * | 2022-11-25 | 2024-05-30 | 华为技术有限公司 | 稀疏算子处理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN113077047B (zh) | 2023-08-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113077047B (zh) | 一种基于特征图稀疏性的卷积神经网络加速器 | |
CN111459877B (zh) | 基于FPGA加速的Winograd YOLOv2目标检测模型方法 | |
CN108108809B (zh) | 一种针对卷积神经元网络进行推理加速的硬件架构及其工作方法 | |
CN110390383A (zh) | 一种基于幂指数量化的深度神经网络硬件加速器 | |
CN109635944A (zh) | 一种稀疏卷积神经网络加速器及实现方法 | |
CN106529670A (zh) | 一种基于权重压缩的神经网络处理器、设计方法、芯片 | |
CN109740739A (zh) | 神经网络计算装置、神经网络计算方法及相关产品 | |
CN106650924A (zh) | 一种基于时间维和空间维数据流压缩的处理器、设计方法 | |
CN109447241A (zh) | 一种面向物联网领域的动态可重构卷积神经网络加速器架构 | |
CN109740754A (zh) | 神经网络计算装置、神经网络计算方法及相关产品 | |
CN103369326B (zh) | 适于高性能视频编码标准hevc的变换编码器 | |
CN112257844B (zh) | 一种基于混合精度配置的卷积神经网络加速器及其实现方法 | |
CN111860773B (zh) | 处理装置和用于信息处理的方法 | |
CN109472734B (zh) | 一种基于fpga的目标检测网络及其实现方法 | |
CN111882053B (zh) | 一种基于拼接卷积的神经网络模型压缩方法 | |
CN114399036B (zh) | 一种基于一维Winograd算法的高效卷积计算单元 | |
CN113301221B (zh) | 一种深度网络相机图像处理方法及终端 | |
CN117217274B (zh) | 向量处理器、神经网络加速器、芯片及电子设备 | |
CN101489129A (zh) | 一种实现高速二维离散余弦变换的集成电路及方法 | |
CN102970545A (zh) | 一种基于二维离散小波变换算法的静态图像压缩方法 | |
Yin et al. | FPGA-based high-performance CNN accelerator architecture with high DSP utilization and efficient scheduling mode | |
CN112101510A (zh) | 卷积神经网络推理加速方法、加速器、设备及存储介质 | |
CN103902762A (zh) | 一种针对正定对称矩阵进行最小二乘方程求解的电路结构 | |
CN113392963B (zh) | 基于fpga的cnn硬件加速系统设计方法 | |
Gao et al. | FPGA-based accelerator for independently recurrent neural network |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |