CN109635944B - 一种稀疏卷积神经网络加速器及实现方法 - Google Patents
一种稀疏卷积神经网络加速器及实现方法 Download PDFInfo
- Publication number
- CN109635944B CN109635944B CN201811582530.6A CN201811582530A CN109635944B CN 109635944 B CN109635944 B CN 109635944B CN 201811582530 A CN201811582530 A CN 201811582530A CN 109635944 B CN109635944 B CN 109635944B
- Authority
- CN
- China
- Prior art keywords
- neuron
- weight
- connection weight
- connection
- unit
- 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.)
- Active
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
- 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
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)
- General Physics & Mathematics (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Complex Calculations (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
一种稀疏卷积神经网络加速器及实现方法,将片外DRAM中的稀疏网络的连接权重读入权值输入缓冲区,通过权值解码单元进行解码后存储在权值片上全局缓冲区;将神经元读入神经元输入缓冲区,然后将读入的神经元通过神经元解码单元进行解码后存储在神经元片上全局缓冲区;按照神经网络当前层的配置参数确定PE计算单元阵列的计算模式,将解码后排列好的神经元和连接权重发送给PE计算单元;计算神经元和连接权重的乘积;在本发明加速器中,PE单元中的乘法器全部被移位器代替,所有的基本模块都可以根据网络计算和硬件资源进行配置,因此具有速度快、功耗低、资源占用小以及数据利用率高的优点。
Description
技术领域
本发明属于深度神经网络加速计算技术领域,涉及一种稀疏卷积神经网络加速器及实现方法。
背景技术
深度神经网络(Deep Neural Network,DNN)的卓越性能来自于它能够使用统计学***台;另一方面有利于将模型部署到嵌入式***。
相比于冯·诺依曼计算机体系架构,神经网络计算机以神经元作为基本的计算和存储单元,构造一种新型的分布式存储和计算的体系结构。现场可编程门阵列(FieldProgrammable Gate Array,FPGA)不仅具有软件的可编程性和灵活性,同时又有专用集成电路(Application Specific Integrated Circuit,ASIC)高吞吐和低延迟的特性,成为了当下DNN硬件加速器设计应用的热门载体。现有的神经网络模型研究大都集中在对网络识别精度的提升,即使是轻量化网络模型也忽视了硬件加速时的计算复杂度,浮点型的数据表示导致硬件资源消耗过大。虽然DNN加速器方案众多,但其中更高效的数据复用、硬件计算的流水线设计以及片上存储资源规划等需要解决或优化的问题还有很多。
发明内容
为了克服上述现有技术的不足,本发明的目的在于提出了一种高能效的稀疏卷积神经网络加速器及实现方法,使得DNN连接权重具有稀疏、硬件计算友好的特点。
为实现上述目的,本发明是通过以下技术方案实现的:
一种稀疏卷积神经网络加速器,包括:片外DRAM,神经元输入缓冲区,神经元解码单元,神经元编码单元,神经元输出缓冲区,神经元片上全局缓冲区,权值输入缓冲区,权值解码单元,权值片上全局缓冲区,PE计算单元阵列,激活单元以及池化单元;其中,
片外DRAM,用于存储压缩好的神经元和连接权重的数据;
神经元输入缓冲区,用于缓存从片外DRAM读取的压缩神经元数据,并传输给神经元解码单元;
神经元解码单元,用于解码压缩神经元数据,并将解码后的神经元传输给神经元片上全局缓冲区;
神经元编码单元,用于将神经元片上全局缓冲区中的数据压缩编码后传输给神经元输出缓冲区;
神经元输出缓冲区,用于将接收到的压缩神经元数据存入到片外DRAM中;
神经元片上全局缓冲区,用于缓存解码后的神经元和PE阵列计算得到的中间结果,并与PE计算单元阵列进行数据通信;
激活单元,用于将PE计算单元阵列计算的结果激活后传输到池化单元或神经元片上全局缓冲区;池化单元,用于对激活单元激活后的结果降采样;
权值输入缓冲区,用于缓存从片外DRAM读取的压缩连接权重数据,并传输给权值解码单元;
权值解码单元,用于解码压缩连接权重数据,并将解码后的连接权重传输给权值片上全局缓冲区;
权值片上全局缓冲区,用于缓存解码后的连接权重,并与PE计算单元阵列进行数据通信;
PE计算单元阵列,用于采用卷积计算模式或全连接计算模式进行计算。
一种稀疏卷积神经网络加速器的实现方法,对数据进行预处理后,存储在DRAM中,将存储在片外DRAM中的稀疏网络的连接权重读入权值输入缓冲区,通过权值解码单元进行解码后存储在权值片上全局缓冲区;将存储在片外DRAM中的神经元读入神经元输入缓冲区,然后将读入的神经元通过神经元解码单元进行解码后存储在神经元片上全局缓冲区;按照神经网络当前层的配置参数确定PE计算单元阵列的计算模式,将解码后排列好的神经元和连接权重发送给对应的PE计算单元;神经元和连接权重数据进入PE后分别缓存在Neuron_Buffer和Weight_Buffer中,当Neuron_Buffer和Weight_Buffer第一次填充满之后,开始计算神经元和连接权重的乘积;其中,Neuron_Buffer为PE内神经元缓冲区,Weight_Buffer为PE内权重缓冲区;
PE计算单元阵列计算得到的结果如果是中间结果,则暂时存入神经元片上全局缓冲区,等待下次与PE计算单元阵列计算出的其他中间结果进行累加;如果是卷积层最终结果,则送入激活单元,然后将激活结果送入池化单元,降采样后再存回神经元片上全局缓冲区;如果是全连接层最终结果,则送入激活单元,然后直接存回神经元片上全局缓冲区;存储于神经元片上全局缓冲区的数据经过神经元编码单元按照稀疏矩阵压缩编码存储格式压缩编码后送入神经元输出缓冲区,再存回片外DRAM,等待下一层计算时再读入;如此循环直到最后一层的全连接层输出一个一维向量,向量长度为分类类别数。
本发明进一步的改进在于,对数据进行预处理的具体过程为:
1),对连接权重剪枝,使神经网络变得稀疏;
2),2n连接权重聚类:首先根据剪枝后网络参数的分布情况,在参数集中的范围内根据量化位宽选取2n形式的聚类中心,计算剩余非零参数和聚类中心的欧式距离,将非零参数聚类到与其欧氏距离最短的聚类中心上,其中n是负整数、正整数或零;
3),针对步骤2)聚类后的稀疏网络,将稀疏网络的连接权重以及特征图神经元采用稀疏矩阵压缩编码存储格式压缩后存储在片外DRAM中。
本发明进一步的改进在于,稀疏矩阵压缩编码存储格式具体为:卷积层特征图和全连接层神经元的编码分为三部分,其中,每个5-bit表示当前非零神经元与上一个非零神经元之间0的个数,每个16-bit表示非零元素本身数值,最后的1-bit用来标记卷积层特征图中非零元素是否换行或全连接层非零元素是否换层,整个存储单元编码三个非零元素以及它的相对位置信息;如果一个存储单元中间包含卷积层特征图某一行最后一个非零元素或全连接层某一层输入神经元最后一个非零元素,则后面的5-bit和16-bit全部补0,并将最后的1-bit标志位置1;连接权重的编码也分为三部分,其中,每个4-bit表示当前非零连接权重与上一个非零连接权重之间0的个数,每个5-bit表示非零连接权重索引,最后的1-bit用来标记卷积层中非零连接权重是否对应同一张输入特征图或全连接层中非零连接权重是否对应同一个输出神经元,整个存储单元编码七个非零连接权重以及它的相对位置信息;同样,如果一个存储单元中间包含卷积层中对应同一张输入特征图的最后一个非零连接权重或全连接层某一层中对应同一个输出神经元的最后一个非零连接权重,则后面的4-bit和5-bit全部补0,并将最后的1-bit标志位置1。
本发明进一步的改进在于,当PE计算单元阵列的计算模式为卷积计算时,若卷积窗大小为k×k,卷积窗滑动步长为s,则填满后的Neuron_Buffer和Weight_Buffer按照先入先出的原则分别从先到后存储了神经元1~k以及连接权重1~k;
若卷积窗滑动步长s等于1,则在第一个时钟周期计算神经元1与连接权重1的乘积后直接丢掉神经元1,并将连接权重1转存到Weight_Buffer最后面;第二个时钟周期读入新的神经元k+1同时计算神经元2与连接权重2的乘积后,将神经元2与连接权重2都转存到各自Buffer最后面;第三个时钟周期计算神经元3与连接权重3的乘积后,将神经元3与连接权重3都转存到各自Buffer最后面;以此类推,直到第k个时钟周期PE单元计算完成一个卷积窗一行的乘累加,输出结果的同时按照步长大小s调整Buffer中数值的顺序,等待计算下一个卷积窗;
若步长大小s大于1,则在第一个时钟周期计算神经元1与连接权重1的乘积后直接丢掉神经元1,并将连接权重1转存到Weight_Buffer最后面;第二个时钟周期读入新的神经元k+1,计算神经元2与连接权重2的乘积后直接丢掉神经元2,并将连接权重2转存到Weight_Buffer最后面;以此类推,直到第s个时钟周期,读入新的神经元k+s-1,计算神经元s与连接权重s的乘积后直接丢掉神经元s,并将连接权重s转存到Weight_Buffer最后面;在第s+1个时钟周期读入新的神经元k+s同时计算神经元s+1与连接权重s+1的乘积后,将神经元s+1与连接权重s+1都转存到各自Buffer最后面;在第s+2个时钟周期计算神经元s+2与连接权重s+2的乘积后,将神经元s+2与连接权重s+2都转存到各自Buffer最后面;以此类推,直到第k个时钟周期PE单元计算完成一个卷积窗一行的乘累加,输出结果的同时按照步长大小s调整Buffer中数值的顺序,等待计算下一个卷积窗。
本发明进一步的改进在于,当PE计算单元阵列的计算模式为全连接计算时,若每个PE单元计算的输入神经元为m个,则Neuron_Buffer和Weight_Buffer填满后按照先入先出的原则分别从先到后存储了神经元1~m以及连接权重1~m;第一个时钟周期计算神经元1与连接权重1的乘积后直接丢掉连接权重1,并将神经元1转存到Neuron_Buffer最后面;第二个时钟周期读入新的连接权重m+1同时计算神经元2与连接权重2的乘积后,直接丢掉连接权重2,并将神经元2转存到Neuron_Buffer最后面;以此类推,直到第m个时钟周期PE单元计算完成一个输出神经元的中间结果,输出结果的同时调整Buffer中数值的顺序,等待计算下一组输出神经元。
与现有技术相比,本发明具有的有益效果:
本发明采用了一种稀疏矩阵压缩编码存储格式,使得神经网络不同层的数据具有统一的编码格式,并且考虑到了神经网络中卷积层和全连接层各自的计算特点,最大程度节约存储资源的同时,简化了硬件设计时编解码电路的复杂度。本发明针对PE单元中神经元和连接权重缓存的数据流也做了相应优化设计,提出了一种高数据复用率的PE内数据流方式,在降低存储空间的同时使得计算更加高效。本发明的操作灵活,编解码简单,且压缩效果较好,每个输入神经元采用16-bit定点表示,连接权重采用5-bit表示。
进一步的,经过本发明中的数据预处理过程后,神经网络剩余的非零连接权重全部变为2n或2n组合,因此,在本发明中PE计算单元中的乘法器被优化为更加节省资源的移位器。
进一步的,本发明包括剪枝、2n聚类和压缩编码三个主要步骤。压缩后的LeNet、AlexNet、VGG相较原始网络模型分别减少了大约222倍、22倍、68倍的存储消耗。在本发明的加速器中,PE单元中的乘法器全部被移位器代替,所有的基本模块都可以根据网络计算和硬件资源进行配置,因此具有速度快、功耗低、资源占用小以及数据利用率高的优点。
附图说明
图1为神经网络模型预处理的整体流程图。
图2为2n连接权重聚类的流程图。
图3为压缩编码存储格式。
图4为本发明的神经网络硬件加速器的整体架构图。
图5为PE阵列配置为卷积计算模式时的示意图。
图6为PE阵列配置为卷积计算模式时数据流分配示意图。
图7为PE阵列配置为全连接计算模式时的示意图。
图8为PE阵列配置为全连接计算模式时的数据流分配示意图。
图9为PE单元内部结构及PE阵列的基本列单元的结构示意图。
图10a为卷积计算时,PE中神经元和连接权重的数据流。
图10b为全连接计算时,PE中神经元和连接权重的数据流。
图11为本发明的可配置设计图。
具体实施方式
下面将结合附图,对本申请的技术方案进行清楚、完整的描述。
本发明中的连接权重,也称为权值。
参见图4,本发明的神经网络加速器包括:片外DRAM,神经元输入缓冲区,神经元解码单元,神经元编码单元,神经元输出缓冲区,权值输入缓冲区,权值解码单元,神经元片上全局缓冲区,权值片上全局缓冲区,PE计算单元阵列,激活单元以及池化单元。
片外DRAM,用于存储压缩好的神经元和连接权重的数据。
神经元输入缓冲区,用于缓存从片外DRAM读取的压缩神经元数据,传输给神经元解码单元。
神经元解码单元,用于解码压缩神经元数据,并将解码后的神经元传输给神经元片上全局缓冲区。
权值输入缓冲区,用于缓存从片外DRAM读取的压缩连接权重数据,传输给权值解码单元。
权值解码单元,用于解码对压缩连接权重数据,并将解码后的连接权重传输给权值片上全局缓冲区。
神经元编码单元,用于将神经元片上全局缓冲区中计算完成的数据压缩编码后传输给神经元输出缓冲区。
神经元输出缓冲区,用于将接收到的压缩神经元数据存入到片外DRAM中。
神经元片上全局缓冲区,用于缓存解码后的神经元和PE阵列计算得到的中间结果,并与PE计算单元阵列进行数据通信。
权值片上全局缓冲区,用于缓存解码后的连接权重,并与PE计算单元阵列进行数据通信。
激活单元,用于将PE计算单元阵列计算的结果进行激活后传输到池化单元或神经元片上全局缓冲区。常见的激活函数有Sigmoid、Tanh、ReLU等,其中,Sigmoid函数是典型卷积神经网络中最常用的一种,而ReLU函数是目前使用最多的激活函数,因为其能让训练结果快速收敛,并且输出很多的零值,除此之外,ReLu函数不用计算,只需将输入的数据与零做比较,这会比用其他激活函数省去很多的计算资源,相关硬件模块设计也比较简单,只需要比较器就可以实现。对于Sigmoid激活函数,本发明选择分段线性逼近的方式来实现Sigmoid函数的硬件模块设计。分段线性逼近的基本思想是用一系列折线段来逼近激活函数本身。具体实现时,可以将每段折线的参数k和b存入查找表,断点间的值按照公式(1)代入相应参数k和b计算得到。
y=kx+b (1)
需要注意的是,Sigmoid函数是关于(0,0.5)点中心对称的,所以只需要存储x轴正半轴的拟合线段参数,即可通过1-f(x)计算得到x轴负半轴的函数值。由于x>8时f(x)的值已经非常接近1,所以本设计发明中只拟合x从0到8的部分,x大于8时激活函数输出全部为1。首先将输入x值与分段折线x区间进行比较,得到相应区间索引,然后根据索引去查找表中获取相应线段的计算参数k和b,最后通过乘法器和加法器计算得到最终的激活输出结果。
池化单元,用于对激活单元激活后的结果降采样。在卷积神经网络中,通常激活函数对卷积计算结果激活后,都会进入池化层降采样。常见的池化方式有平均池化、最大池化、空间金字塔池化等。本发明针对最常见的最大池化和平均池化设计硬件。最大池化只需将所有需要池化的卷积结果送入比较器进行比较,得到其中的最大值即为最大池化输出结果。平均池化计算时首先将所有需要池化的卷积结果送入加法器进行累加,再将累加结果除以所有输入卷积值的个数即可得到平均池化输出结果。在平均池化中,最常见的池化窗大小一般为2,在设计硬件电路时,平均池化最后一步的除法操作其实是可以用移位操作来代替的,即当池化窗大小为2时,只需要将累加结果右移两位即可。
PE计算单元阵列,可以配置为卷积计算模式或全连接计算模式。PE计算单元阵列包括若干个PE单元,每一列PE单元称为一个基本列单元。每一个PE单元的主要输入端口是输入神经元(16bits)和与输入神经元对应的连接权重(5bits),这两种数据进入PE单元后分别缓存在Neuron_Buffer(PE内神经元缓冲区)和Weight_Buffer(PE内权重缓冲区)中,当Neuron_Buffer和Weight_Buffer第一次填充满之后,开始计算神经元和连接权重的乘积。经过本发明中的数据预处理过程后,神经网络剩余的非零连接权重全部变为2n或2n组合,因此,在本发明中PE计算单元中的乘法器被优化为更加节省资源的移位器。
参见图9,从Neuron_Buffer和Weight_Buffer分别读出神经元和连接权重,首先判断神经元和连接权重是否为0,若两个数据中有一个为0或两个都为0,则将计算使能信号en置为0,否则为1。如果使能信号en为0,则不进行移位操作,直接将移位计算结果赋为0并发送给加法器去累加。Count_out用来计数PE单元计算的移位-累加操作次数,卷积计算时一个PE单元计算每个卷积窗一行的移位-累加,全连接计算时一个PE单元计算一个输出神经元与一组输入神经元相连的移位-累加。PE计算单元阵列的基本列单元计算得到的输出结果存在Regfile中,经过数据选择器(Select)选择加操作数发送给该列PE单元对应的加法器进行累加操作,并加上对应的偏置值bias,得到最终的列输出结果Colunm_out。
由于卷积计算模式和全连接计算模式的数据复用与计算并行不一样,因此针对卷积计算过程和全连接计算过程的PE单元内部具体的数据流方式略有差异。
卷积计算过程中,卷积神经网络(CNN)是一个由结构相似的卷积层堆叠而成的前向传播网络结构,层间运算具有独立性且各层运算具有高度相似性,因此可以抽象整合卷积层计算的特点设计PE计算单元阵列的通用卷积计算模式,本发明中选择拆分输出特征图并行并融合输入特征图并行和相同输入特征图卷积窗口间并行,使得片上数据复用最大化的同时不给片上缓存带来更多压力。
全连接计算过程中,本发明在类比了神经网络中全连接层与卷积层计算特点的同时,考虑了各种不同结构的卷积神经网络中的全连接层结构、数据计算流水线、***时钟周期和硬件资源等一系列实际情况后,设计了一种PE计算单元阵列的参数化、可配置的全连接计算模式。
参见图11,各种各样的卷积神经网络模型不同卷积层的卷积核大小、输入特征图数量、输出特征图数量以及不同全连接层的输入神经元数量、输出神经元数量都不相同,为了让运算单元有较强的通用性,本发明分别从卷积计算模式、全连接计算模式、激活函数选择和池化方式选择等优化了神经网络硬件加速器的可配置设计。PE计算单元阵列、激活单元和池化单元等关键模块的可配置设计是通过参数化卷积神经网络的一些关键特征尺寸来实现的。
表1列举了代码实现时一些关键模块中基本单元的配置参数及参数意义。当alculate_layer为0时代表当前PE阵列需要计算卷积层第一层,为1代表当前PE阵列需要计算卷积层中间层,为2代表当前计算池化层,为3代表当前PE阵列需要计算全连接层;当connet_mu_or_ad_pe为0时代表PE单元执行乘法操作,为1代表PE单元执行加法操作,为2代表PE单元执行乘累加操作;当active_type为0时代表选择Sigmoid激活函数,为1代表选择ReLU激活函数;当pooling_type为0时代表选择最大池化方式,为1代表选择平均池化方式。这些参数都可以在程序的顶层文件配置,用户根据卷积神经网络中不同计算层的输入输出大小、激活函数选择、池化方式选择来修改配置文件,就可以搭建自己想要的网络模型,并快速在硬件上生成相应规模和需求的神经网络映射。
表1代码实现时一些关键模块中基本单元的配置参数及参数意义
一种基于上述稀疏卷积神经网络加速器的实现方法,包括以下步骤:
其中,数据预处理包括以下步骤:
步骤1),对连接权重剪枝,使神经网络变得稀疏;
步骤2),2n连接权重聚类:首先根据剪枝后网络参数的分布情况,在参数集中的范围内根据量化位宽选取2n形式的聚类中心,计算剩余非零参数和聚类中心的欧式距离,将非零参数聚类到与其欧氏距离最短的聚类中心上,其中n可以是负整数、正整数或零;
步骤3),针对步骤2)聚类后的稀疏网络,将稀疏网络的连接权重以及特征图神经元采用稀疏矩阵压缩编码存储格式压缩后存储在片外DRAM中。具体的存储格式为:卷积层特征图和全连接层神经元的编码分为三部分,其中,每个5-bit表示当前非零神经元与上一个非零神经元之间0的个数,每个16-bit表示非零元素本身数值,最后的1-bit用来标记卷积层特征图中非零元素是否换行或全连接层非零元素是否换层,整个存储单元可以编码三个非零元素以及它的相对位置信息。如果一个存储单元中间包含卷积层特征图某一行最后一个非零元素或全连接层某一层输入神经元最后一个非零元素,则后面的5-bit和16-bit全部补0,并将最后的1-bit标志位置1。连接权重的编码也分为三部分,其中,每个4-bit表示当前非零连接权重与上一个非零连接权重之间0的个数,每个5-bit表示非零连接权重索引,最后的1-bit用来标记卷积层中非零连接权重是否对应同一张输入特征图或全连接层中非零连接权重是否对应同一个输出神经元,整个存储单元可以编码七个非零连接权重以及它的相对位置信息。同样,如果一个存储单元中间包含卷积层中对应同一张输入特征图的最后一个非零连接权重或全连接层某一层中对应同一个输出神经元的最后一个非零连接权重,则后面的4-bit和5-bit全部补0,并将最后的1-bit标志位置1。
步骤4),将存储在片外DRAM中的稀疏网络的连接权重读入权值输入缓冲区,通过权值解码单元进行解码后存储在权值片上全局缓冲区;将存储在片外DRAM中的神经元读入神经元输入缓冲区,然后将读入的神经元通过神经元解码单元进行解码后存储在神经元片上全局缓冲区;按照神经网络当前层的配置参数(见表1)来确定PE计算单元阵列的计算模式,将解码后排列好的神经元和连接权重发送给对应的PE计算单元;这两种数据进入PE后分别缓存在Neuron_Buffer和Weight_Buffer中,当Neuron_Buffer和Weight_Buffer第一次填充满之后,开始计算神经元和连接权重的乘积。
当PE计算单元阵列的计算模式配置为卷积计算时,若卷积窗大小为k×k,卷积窗滑动步长为s,则填满后的Neuron_Buffer和Weight_Buffer按照先入先出的原则分别从先到后存储了神经元1~k以及连接权重1~k。
若卷积窗滑动步长s等于1,则在第一个时钟周期计算神经元1与连接权重1的乘积后直接丢掉神经元1,并将连接权重1转存到Weight_Buffer最后面;第二个时钟周期读入新的神经元k+1同时计算神经元2与连接权重2的乘积后,将神经元2与连接权重2都转存到各自Buffer最后面;第三个时钟周期计算神经元3与连接权重3的乘积后,将神经元3与连接权重3都转存到各自Buffer最后面;以此类推,直到第k个时钟周期PE单元计算完成一个卷积窗一行的乘累加,输出结果的同时按照步长大小s调整Buffer中数值的顺序,等待计算下一个卷积窗。
若步长大小s大于1,则在第一个时钟周期计算神经元1与连接权重1的乘积后直接丢掉神经元1,并将连接权重1转存到Weight_Buffer最后面;第二个时钟周期读入新的神经元k+1,计算神经元2与连接权重2的乘积后直接丢掉神经元2,并将连接权重2转存到Weight_Buffer最后面;以此类推,直到第s个时钟周期,读入新的神经元k+s-1,计算神经元s与连接权重s的乘积后直接丢掉神经元s,并将连接权重s转存到Weight_Buffer最后面;在第s+1个时钟周期读入新的神经元k+s同时计算神经元s+1与连接权重s+1的乘积后,将神经元s+1与连接权重s+1都转存到各自Buffer最后面;在第s+2个时钟周期计算神经元s+2与连接权重s+2的乘积后,将神经元s+2与连接权重s+2都转存到各自Buffer最后面;以此类推,直到第k个时钟周期PE单元计算完成一个卷积窗一行的乘累加,输出结果的同时按照步长大小s调整Buffer中数值的顺序,等待计算下一个卷积窗。
当PE计算单元阵列的计算模式配置为全连接计算时,若每个PE单元计算的输入神经元为m个,则Neuron_Buffer和Weight_Buffer填满后按照先入先出的原则分别从先到后存储了神经元1~m以及连接权重1~m。第一个时钟周期计算神经元1与连接权重1的乘积后直接丢掉连接权重1,并将神经元1转存到Neuron_Buffer最后面;第二个时钟周期读入新的连接权重m+1同时计算神经元2与连接权重2的乘积后,直接丢掉连接权重2,并将神经元2转存到Neuron_Buffer最后面;以此类推,直到第m个时钟周期PE单元计算完成一个输出神经元的中间结果,输出结果的同时调整Buffer中数值的顺序,等待计算下一组输出神经元。
PE计算单元阵列计算得到的结果如果是中间结果,则暂时存入神经元片上全局缓冲区,等待下次与PE计算单元阵列计算出的其他中间结果进行累加;如果是卷积层最终结果,则送入激活单元,然后将激活结果送入池化单元,降采样后再存回神经元片上全局缓冲区;如果是全连接层最终结果,则送入激活单元,然后直接存回神经元片上全局缓冲区。存储于神经元片上全局缓冲区的数据经过神经元编码单元按照稀疏矩阵压缩编码存储格式压缩编码后送入神经元输出缓冲区,再存回片外DRAM,等待下一层计算时再读入。如此循环直到最后一层的全连接层输出一个一维向量,向量长度为分类类别数。
本发明的操作灵活,编解码简单,且压缩效果较好,每个输入神经元采用16-bit定点表示,连接权重采用5-bit表示。
图1为神经网络模型预处理的整体流程图,第一步称为连接权重的剪枝,在训练好的模型上移除连接权重较小的连接,再训练使网络识别精度恢复初始状态;第二步称为2n连接权重聚类,在第一步训练好的模型上进行固定聚类中心的聚类操作,并用这些聚类中心代替所有的非零连接权重;第三步称为连接权重压缩编码。
图2是本发明实现的2n连接权重聚类的具体流程图。得到剪枝后的稀疏网络后,进行训练,直到识别准确率不再上升,然后根据此时的参数分布选取N个2n形式的聚类中心,将所有权重聚类到与其欧氏距离最小的聚类中心上,判断此时网络正确率是否损失,若有损失则继续进行训练,直到准确率不再上升,以此类推直到聚类后网络准确率没有损失。
图3给出了本发明的稀疏矩阵压缩编码存储格式。
图4给出了神经网络硬件加速器的整体架构,包括片外DRAM,神经元输入缓冲区,神经元解码单元,神经元编码单元,神经元输出缓冲区,权值输入缓冲区,权值解码单元,神经元片上全局缓冲区,权值片上全局缓冲区,PE计算单元阵列,激活单元以及池化单元。
图5给出了PE阵列配置为卷积计算模式时的示意图,虚线框内是大小为m行n列的PE单元阵列,每一列PE单元称为一个基本列单元,对应一个加操作数选择器(SEL),用来选择对应一列PE单元的计算结果是否送给累加器进行累加。图5中所有的PE单元都对应同一张输入特征图,其中同一行PE单元接收输入特征图同一行的神经元以及对应不同输出特征图的相同行卷积核连接权重,同一列PE单元分别接收需要卷积计算的输入特征图不同行的神经元以及对应输出特征图的同一个卷积核不同行的连接权重,最终同时计算得到n张输出特征图相同位置的连续t个神经元,t=m/k,其中k为卷积核尺寸大小。
图6举例说明了本发明中卷积计算模式下PE阵列具体的数据流分配方式,左边是对应第一张输出特征图的卷积核以及需要进行卷积计算的输入特征图,假设卷积核大小k=5,PE阵列大小m=n=5。对应第一张输出特征图的卷积核的每行5个连接权重作为一组,5组连接权重分别记作Wr1~Wr5,将这5组连接权重分别发送给PE阵列第一列。也就是说,实例中5列PE单元需要分别接收对应5张输出特征图的不同卷积核。输入特征图大小为N×N,N行神经元数据记作Row1~RowN,每次卷积计算需要输入PE单元的神经元数据记作Nk1~Nk5,将这5组输入神经元数据分别发送给PE阵列同一行的PE单元。也就是说,第一行PE单元共享Nk1神经元数据,第二行PE单元共享Nk2神经元数据,以此类推,最终,实例中5×5的PE阵列同时计算得到5张输出特征图相同位置的1个输出神经元值。
图7给出了通用PE阵列配置为全连接计算模式时的示意图,虚线框内是大小为m行n列的PE单元阵列,每一列PE单元称为一个基本列单元,对应一个加操作数选择器(SEL),用来选择对应一列PE单元的计算结果是否送给累加器进行累加。本发明最终选择将所有输入神经元和输出神经元都进行分组再计算的并行方式来实现最大化的数据复用。因此,图7中所有的PE单元对应所有输入神经元的不同部分,其中同一行PE单元接收同一组输入神经元以及与之连接的不同输出神经元的连接权重,同一列PE单元分别接收不同组输入神经元以及与之连接的不同输出神经元的连接权重,最终同时计算得到连续n个输出神经元。
图8举例说明了本发明中全连接计算模式下PE阵列具体的数据流分配方式,左边是一层全连接层,假设输入神经元为20个,输出神经元为10个,则该层全连接层连接权重总共为200个,PE阵列大小m=4,n=5。将所有输入神经元分为4组,每组5个输入神经元,分别记作N1~N4,PE阵列的每一行共享同一组输入神经元。也就是说,实例中4行PE单元分别需要接收对应4组输入神经元,第一行PE单元共享N1神经元数据,第二行PE单元共享N2神经元数据,以此类推,第m行PE单元共享Nm神经元数据。由于PE阵列的列数为5,故将所有输出神经元分为2组,分别记作F1、F2,每组计算得到5个输出神经元。N1~N4组输入神经元与F1组第一个输出神经元的连接连接权重分别记作W111~W114,与F1组第二个输出神经元的连接连接权重分别记作W121~W124,以此类推,与F2组第五个输出神经元的连接连接权重分别记作W251~W254,共有40组连接连接权重,每组5个。将这40组连接连接权重分别发送给PE阵列中的计算单元,第一列PE单元分别接收W111~W114的连接连接权重,第二列PE单元分别接收W121~W124的连接连接权重,以此类推,第五列PE单元分别接收W151~W154的连接连接权重。最终,实例中4×5的PE阵列同时计算得到F1组的5个输出神经元值。
图9展示了单个PE计算单元的内部结构以及PE阵列中由m个PE计算单元组成的基本列单元之间的数据流。整个PE阵列最终由n个这样的基本列单元组成。从图中可以看出,每一个PE单元的主要输入端口是输入神经元(16bits)和与之对应的连接权重(5bits),这两种数据进入PE单元后分别缓存在Neuron_Buffer和Weight_Buffer中。除此之外,还有数据输入有效信号以及PE单元计算使能信号等,图中未标注。
图10a和图10b分别给出了卷积计算模式和全连接计算模式时PE单元的数据流示例。假设卷积计算模式时配置的卷积窗大小为5×5,滑动步长为1,全连接计算模式时每个PE单元计算的输入神经元为5个,Neuron_Buffer和Weight_Buffer填满后开始计算。
卷积计算模式的数据流示例如图10a所示,第一个时钟周期计算神经元1与连接权重1的乘积后直接丢掉神经元1,并将连接权重1转存到Weight_Buffer最后面;第二个时钟周期读入新的神经元6同时计算神经元2与连接权重2的乘积后,将神经元2与连接权重2都转存到各自Buffer最后面;第三个时钟周期计算神经元3与连接权重3的乘积后,将神经元3与连接权重3都转存到各自Buffer最后面;以此类推,直到第五个时钟周期PE单元计算完成一个卷积窗一行的乘累加,输出结果的同时调整Buffer中数值的顺序,等待计算下一个卷积窗。
全连接计算模式的数据流示例如图10b所示,第一个时钟周期计算神经元1与连接权重1的乘积后直接丢掉连接权重1,并将神经元1转存到Neuron_Buffer最后面;第二个时钟周期读入新的连接权重6同时计算神经元2与连接权重2的乘积后,直接丢掉连接权重2,并将神经元2转存到Neuron_Buffer最后面;以此类推,直到第五个时钟周期PE单元计算完成一个输出神经元的中间结果,输出结果的同时调整Buffer中数值的顺序,等待计算下一组输出神经元。
图11为本发明的可配置设计。卷积计算模式时不仅可以根据卷积核尺寸和输出特征图数量配置PE阵列大小,还可以根据可提供的硬件资源和输入特征图数量配置可并行计算的PE阵列数量。其中,每一个PE阵列对应一张输入特征图的卷积计算,与之对应的加法器阵列用来累加PE单元的输出值以及相对应的偏置值bias。当输入通道数不为1时,每个PE阵列计算得到的输出神经元都是相应输出特征图的中间结果,因此在多个PE阵列外又需要一个加法器阵列用来累加所有PE阵列计算得到的中间结果,加法器阵列的输出才是相应输出特征图神经元的最终输出结果。
本发明根据一种有效的神经网络模型压缩算法并且针对压缩后的稀疏卷积神经网络数据特点,设计了一种高能效、参数化、可配置的硬件加速器。本发明提出的硬件友好的应用于模型离线训练时的神经网络模型压缩算法,包括剪枝、2n聚类和压缩编码三个主要步骤。压缩后的LeNet、AlexNet、VGG相较原始网络模型分别减少了大约222倍、22倍、68倍的存储消耗。然后,在本发明设计的硬件加速器中,PE单元中的乘法器全部被移位器代替,所有的基本模块都可以根据网络计算和硬件资源进行配置。因此具有速度快、功耗低、资源占用小以及数据利用率高的优点。
Claims (6)
1.一种稀疏卷积神经网络加速器,其特征在于,包括:片外DRAM,神经元输入缓冲区,神经元解码单元,神经元编码单元,神经元输出缓冲区,神经元片上全局缓冲区,权值输入缓冲区,权值解码单元,权值片上全局缓冲区,PE计算单元阵列,激活单元以及池化单元;其中,
片外DRAM,用于存储压缩好的神经元和连接权重的数据;
神经元输入缓冲区,用于缓存从片外DRAM读取的压缩神经元数据,并传输给神经元解码单元;
神经元解码单元,用于解码压缩神经元数据,并将解码后的神经元传输给神经元片上全局缓冲区;
神经元编码单元,用于将神经元片上全局缓冲区中的数据压缩编码后传输给神经元输出缓冲区;
神经元输出缓冲区,用于将接收到的压缩神经元数据存入到片外DRAM中;
神经元片上全局缓冲区,用于缓存解码后的神经元和PE阵列计算得到的中间结果,并与PE计算单元阵列进行数据通信;
激活单元,用于将PE计算单元阵列计算的结果激活后传输到池化单元或神经元片上全局缓冲区;池化单元,用于对激活单元激活后的结果降采样;
权值输入缓冲区,用于缓存从片外DRAM读取的压缩连接权重数据,并传输给权值解码单元;
权值解码单元,用于解码压缩连接权重数据,并将解码后的连接权重传输给权值片上全局缓冲区;
权值片上全局缓冲区,用于缓存解码后的连接权重,并与PE计算单元阵列进行数据通信;
PE计算单元阵列,用于采用卷积计算模式或全连接计算模式进行计算。
2.一种基于权利要求1中所述的稀疏卷积神经网络加速器的实现方法,其特征在于,对数据进行预处理后,存储在DRAM中,将存储在片外DRAM中的稀疏网络的连接权重读入权值输入缓冲区,通过权值解码单元进行解码后存储在权值片上全局缓冲区;将存储在片外DRAM中的神经元读入神经元输入缓冲区,通过神经元解码单元进行解码后存储在神经元片上全局缓冲区;按照神经网络当前层的配置参数确定PE计算单元阵列的计算模式,将解码后排列好的神经元和连接权重发送给对应的PE计算单元;神经元和连接权重数据进入PE后分别缓存在Neuron_Buffer和Weight_Buffer中,当Neuron_Buffer和Weight_Buffer第一次填充满之后,开始计算神经元和连接权重的乘积;其中,Neuron_Buffer为PE内神经元缓冲区,Weight_Buffer为PE内权重缓冲区;
PE计算单元阵列计算得到的结果如果是中间结果,则暂时存入神经元片上全局缓冲区,等待下次与PE计算单元阵列计算出的其他中间结果进行累加;如果是卷积层最终结果,则送入激活单元,然后将激活结果送入池化单元,降采样后再存回神经元片上全局缓冲区;如果是全连接层最终结果,则送入激活单元,然后直接存回神经元片上全局缓冲区;存储于神经元片上全局缓冲区的数据经过神经元编码单元按照稀疏矩阵压缩编码存储格式压缩编码后送入神经元输出缓冲区,再存回片外DRAM,等待下一层计算时再读入;如此循环直到最后一层的全连接层输出一个一维向量,向量长度为分类类别数。
3.根据权利要求2中所述的稀疏卷积神经网络加速器的实现方法,其特征在于,对数据进行预处理的具体过程为:
1),对连接权重剪枝,使神经网络变得稀疏;
2),2n连接权重聚类:首先根据剪枝后网络参数的分布情况,在参数集中的范围内根据量化位宽选取2n形式的聚类中心,计算剩余非零参数和聚类中心的欧氏距离,将非零参数聚类到与其欧氏距离最短的聚类中心上,其中n是负整数、正整数或零;
3),针对步骤2)聚类后的稀疏网络,将稀疏网络的连接权重以及特征图神经元采用稀疏矩阵压缩编码存储格式压缩后存储在片外DRAM中。
4.根据权利要求2中所述的稀疏卷积神经网络加速器的实现方法,其特征在于,稀疏矩阵压缩编码存储格式具体为:卷积层特征图和全连接层神经元的编码分为三部分,其中,每个5-bit表示当前非零神经元与上一个非零神经元之间0的个数,每个16-bit表示非零元素本身数值,最后的1-bit用来标记卷积层特征图中非零元素是否换行或全连接层非零元素是否换层,整个存储单元编码三个非零元素以及它的相对位置信息;如果一个存储单元中间包含卷积层特征图某一行最后一个非零元素或全连接层某一层输入神经元最后一个非零元素,则后面的5-bit和16-bit全部补0,并将最后的1-bit标志位置1;连接权重的编码也分为三部分,其中,每个4-bit表示当前非零连接权重与上一个非零连接权重之间0的个数,每个5-bit表示非零连接权重索引,最后的1-bit用来标记卷积层中非零连接权重是否对应同一张输入特征图或全连接层中非零连接权重是否对应同一个输出神经元,整个存储单元编码七个非零连接权重以及它的相对位置信息;同样,如果一个存储单元中间包含卷积层中对应同一张输入特征图的最后一个非零连接权重或全连接层某一层中对应同一个输出神经元的最后一个非零连接权重,则后面的4-bit和5-bit全部补0,并将最后的1-bit标志位置1。
5.根据权利要求2中所述的稀疏卷积神经网络加速器的实现方法,其特征在于,当PE计算单元阵列的计算模式为卷积计算时,若卷积窗大小为k×k,卷积窗滑动步长为s,则填满后的Neuron_Buffer和Weight_Buffer按照先入先出的原则分别从先到后存储了神经元1~k以及连接权重1~k;
若卷积窗滑动步长s等于1,则在第一个时钟周期计算神经元1与连接权重1的乘积后直接丢掉神经元1,并将连接权重1转存到Weight_Buffer最后面;第二个时钟周期读入新的神经元k+1同时计算神经元2与连接权重2的乘积后,将神经元2与连接权重2都转存到各自Buffer最后面;第三个时钟周期计算神经元3与连接权重3的乘积后,将神经元3与连接权重3都转存到各自Buffer最后面;以此类推,直到第k个时钟周期PE单元计算完成一个卷积窗一行的乘累加,输出结果的同时按照步长大小s调整Buffer中数值的顺序,等待计算下一个卷积窗;
若步长大小s大于1,则在第一个时钟周期计算神经元1与连接权重1的乘积后直接丢掉神经元1,并将连接权重1转存到Weight_Buffer最后面;第二个时钟周期读入新的神经元k+1,计算神经元2与连接权重2的乘积后直接丢掉神经元2,并将连接权重2转存到Weight_Buffer最后面;以此类推,直到第s个时钟周期,读入新的神经元k+s-1,计算神经元s与连接权重s的乘积后直接丢掉神经元s,并将连接权重s转存到Weight_Buffer最后面;在第s+1个时钟周期读入新的神经元k+s同时计算神经元s+1与连接权重s+1的乘积后,将神经元s+1与连接权重s+1都转存到各自Buffer最后面;在第s+2个时钟周期计算神经元s+2与连接权重s+2的乘积后,将神经元s+2与连接权重s+2都转存到各自Buffer最后面;以此类推,直到第k个时钟周期PE单元计算完成一个卷积窗一行的乘累加,输出结果的同时按照步长大小s调整Buffer中数值的顺序,等待计算下一个卷积窗。
6.根据权利要求2中所述的稀疏卷积神经网络加速器的实现方法,其特征在于,当PE计算单元阵列的计算模式为全连接计算时,若每个PE单元计算的输入神经元为m个,则Neuron_Buffer和Weight_Buffer填满后按照先入先出的原则分别从先到后存储了神经元1~m以及连接权重1~m;第一个时钟周期计算神经元1与连接权重1的乘积后直接丢掉连接权重1,并将神经元1转存到Neuron_Buffer最后面;第二个时钟周期读入新的连接权重m+1同时计算神经元2与连接权重2的乘积后,直接丢掉连接权重2,并将神经元2转存到Neuron_Buffer最后面;以此类推,直到第m个时钟周期PE单元计算完成一个输出神经元的中间结果,输出结果的同时调整Buffer中数值的顺序,等待计算下一组输出神经元。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811582530.6A CN109635944B (zh) | 2018-12-24 | 2018-12-24 | 一种稀疏卷积神经网络加速器及实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811582530.6A CN109635944B (zh) | 2018-12-24 | 2018-12-24 | 一种稀疏卷积神经网络加速器及实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109635944A CN109635944A (zh) | 2019-04-16 |
CN109635944B true CN109635944B (zh) | 2020-10-27 |
Family
ID=66076874
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811582530.6A Active CN109635944B (zh) | 2018-12-24 | 2018-12-24 | 一种稀疏卷积神经网络加速器及实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109635944B (zh) |
Families Citing this family (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110070178B (zh) * | 2019-04-25 | 2021-05-14 | 北京交通大学 | 一种卷积神经网络计算装置及方法 |
CN110390385B (zh) * | 2019-06-28 | 2021-09-28 | 东南大学 | 一种基于bnrp的可配置并行通用卷积神经网络加速器 |
US10977002B2 (en) * | 2019-07-15 | 2021-04-13 | Facebook Technologies, Llc | System and method for supporting alternate number format for efficient multiplication |
CN110543936B (zh) * | 2019-08-30 | 2022-03-25 | 北京空间飞行器总体设计部 | 一种cnn全连接层运算的多并行加速方法 |
CN111492369B (zh) * | 2019-09-19 | 2023-12-12 | 香港应用科技研究院有限公司 | 人工神经网络中移位权重的残差量化 |
CN112561050B (zh) * | 2019-09-25 | 2023-09-05 | 杭州海康威视数字技术股份有限公司 | 一种神经网络模型训练方法及装置 |
CN110728358B (zh) * | 2019-09-30 | 2022-06-10 | 上海商汤智能科技有限公司 | 基于神经网络的数据处理方法和装置 |
CN110738310B (zh) * | 2019-10-08 | 2022-02-01 | 清华大学 | 一种稀疏神经网络加速器及其实现方法 |
CN110942145A (zh) * | 2019-10-23 | 2020-03-31 | 南京大学 | 基于可重构计算的卷积神经网络池化层、硬件实现方法及*** |
CN111008698B (zh) * | 2019-11-23 | 2023-05-02 | 复旦大学 | 用于混合压缩循环神经网络的稀疏矩阵乘法加速器 |
CN110991631A (zh) * | 2019-11-28 | 2020-04-10 | 福州大学 | 一种基于fpga的神经网络加速*** |
CN113159267A (zh) * | 2020-01-07 | 2021-07-23 | Tcl集团股份有限公司 | 一种图像数据处理方法、装置及终端设备 |
CN111275167A (zh) * | 2020-01-16 | 2020-06-12 | 北京中科研究院 | 一种用于二值卷积神经网络的高能效脉动阵列架构 |
CN111368988B (zh) * | 2020-02-28 | 2022-12-20 | 北京航空航天大学 | 一种利用稀疏性的深度学习训练硬件加速器 |
CN111488983B (zh) * | 2020-03-24 | 2023-04-28 | 哈尔滨工业大学 | 一种基于fpga的轻量级cnn模型计算加速器 |
CN111340198B (zh) * | 2020-03-26 | 2023-05-05 | 上海大学 | 基于fpga的数据高度复用的神经网络加速器 |
CN111427895B (zh) * | 2020-04-01 | 2022-10-25 | 西安交通大学 | 一种基于两段式缓存的神经网络推理加速方法 |
CN111667063B (zh) * | 2020-06-30 | 2021-09-10 | 腾讯科技(深圳)有限公司 | 基于fpga的数据处理方法及装置 |
CN112966729B (zh) * | 2021-02-26 | 2023-01-31 | 成都商汤科技有限公司 | 一种数据处理方法、装置、计算机设备及存储介质 |
CN113269316B (zh) * | 2021-03-26 | 2022-10-11 | 复旦大学 | 支持稀疏神经网络计算加速器的稀疏数据选择逻辑模块 |
CN113138957A (zh) * | 2021-03-29 | 2021-07-20 | 北京智芯微电子科技有限公司 | 用于神经网络推理的芯片及加速神经网络推理的方法 |
CN113592066B (zh) * | 2021-07-08 | 2024-01-05 | 深圳市易成自动驾驶技术有限公司 | 硬件加速方法、装置、设备及存储介质 |
CN115828044B (zh) * | 2023-02-17 | 2023-05-19 | 绍兴埃瓦科技有限公司 | 基于神经网络双重稀疏性矩阵乘法运算电路、方法和装置 |
CN116187408B (zh) * | 2023-04-23 | 2023-07-21 | 成都甄识科技有限公司 | 稀疏加速单元、计算方法及稀疏神经网络硬件加速*** |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107992329A (zh) * | 2017-07-20 | 2018-05-04 | 上海寒武纪信息科技有限公司 | 一种计算方法及相关产品 |
-
2018
- 2018-12-24 CN CN201811582530.6A patent/CN109635944B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107992329A (zh) * | 2017-07-20 | 2018-05-04 | 上海寒武纪信息科技有限公司 | 一种计算方法及相关产品 |
Non-Patent Citations (2)
Title |
---|
Exploring Resource-Aware Deep Neural Network Accelerator and Architecture Design;Baoting Li 等;《2018 IEEE 23rd International Conference on Digital Signal Processing (DSP)》;20181121;第1-5页 * |
MAERI: Enabling Flexible Dataflow Mapping over DNN Accelerators via Reconfigurable Interconnects;Hyoukjun Kwon 等;《Session 5B Neural Networks》;20180328;第1-15页 * |
Also Published As
Publication number | Publication date |
---|---|
CN109635944A (zh) | 2019-04-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109635944B (zh) | 一种稀疏卷积神经网络加速器及实现方法 | |
US11803738B2 (en) | Neural network architecture using convolution engine filter weight buffers | |
Yuan et al. | High performance CNN accelerators based on hardware and algorithm co-optimization | |
CN107229967B (zh) | 一种基于fpga实现稀疏化gru神经网络的硬件加速器及方法 | |
US11462003B2 (en) | Flexible accelerator for sparse tensors in convolutional neural networks | |
CN109409511B (zh) | 一种用于动态可重构阵列的卷积运算数据流调度方法 | |
TWI827432B (zh) | 計算裝置、機器學習運算裝置、組合處理裝置、神經網絡芯片、電子設備、板卡、及計算方法 | |
US20180046895A1 (en) | Device and method for implementing a sparse neural network | |
CN107423816B (zh) | 一种多计算精度神经网络处理方法和*** | |
WO2017214728A1 (en) | Accelerator for deep neural networks | |
CN107256424B (zh) | 三值权重卷积网络处理***及方法 | |
CN112329910B (zh) | 一种面向结构剪枝结合量化的深度卷积神经网络压缩方法 | |
US11797830B2 (en) | Flexible accelerator for sparse tensors in convolutional neural networks | |
CN110543939A (zh) | 一种基于fpga的卷积神经网络后向训练的硬件加速实现架构 | |
GB2568102A (en) | Exploiting sparsity in a neural network | |
CN110543936B (zh) | 一种cnn全连接层运算的多并行加速方法 | |
CN113741858B (zh) | 存内乘加计算方法、装置、芯片和计算设备 | |
Chang et al. | Reducing MAC operation in convolutional neural network with sign prediction | |
CN111768458A (zh) | 一种基于卷积神经网络的稀疏图像处理方法 | |
CN113762493A (zh) | 神经网络模型的压缩方法、装置、加速单元和计算*** | |
CN115186802A (zh) | 基于卷积神经网络的块稀疏方法、装置及处理单元 | |
CN112396072B (zh) | 基于asic与vgg16的图像分类加速方法及装置 | |
CN113313244B (zh) | 面向加法网络的近存储神经网络加速器及其加速方法 | |
CN117454946A (zh) | 支持非结构化稀疏矩阵计算的张量核架构*** | |
CN110766136B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |