一种基于FPGA的卷积神经网络加速器及其优化方法技术

技术编号:32675730 阅读:13 留言:0更新日期:2022-03-17 11:31
本申请涉及神经网络计算技术领域,具体提供了一种基于FPGA的卷积神经网络加速器及其优化方法。一种基于FPGA的卷积神经网络加速器,该加速器包括程序指令存储单元、程序指令译码单元、数据控制单元、数据缓冲单元、参数缓冲单元、片外存储单元、并行处理单元、图像缓存单元、图像拼接单元、片外存储单元。一种基于FPGA的卷积神经网络加速器的优化方法,包括如下步骤:步骤一,获取不同操作类型的前向推理指令CN

【技术实现步骤摘要】
一种基于FPGA的卷积神经网络加速器及其优化方法


[0001]本申请涉及神经网络计算
,具体而言,涉及一种基于FPGA的卷积神经网络加速器及其优化方法。

技术介绍

[0002]随着神经网络的不断发展,网络复杂度越来越高,对硬件计算能力的要求也不断增加,CPU作为通用处理器已经不能满足实际应用需求。为此,神经网络在硬件平台部署的研究成为热点。现有的深度学习框架,如PyTorch、Caffe、TensorFlow等,均是基于GPU进行网络加速的。虽然GPU具有强大的算力,但是存在价格昂贵、功耗大、噪音高、体积大等缺点。FPGA具有功耗低、可定制化、可重构、体积小、并行度高等优点,成为神经网络硬件部署的研究热点。
[0003]FPGA的可定制化、可重构的特点使得研发人员能够根据应用需求灵活地在 FPGA上部署SSD、YOLOV3、VGG16等经典卷积神经网络模型。卷积神经网络模型在FPGA上的加速主要依靠并行计算单元数量,并行计算单元数量越高,算法并行度就越高,计算速度越快。实际中,并行计算单元通常包括3
×
3卷积单元、池化单元、 1
×
1卷积单元、激活单元,在有限的FPGA资源下,提高一种并行计算单元的数量,会导致另一种并行计算单元的数量降低。通常实际部署中,各种并行计算单元的数量不匹配,例如3
×
3卷积单元部署数量多,1
×
1卷积单元部署数量少,对于一种具体的卷积神经网络模型,例如SSD卷积神经网络模型,在前向推理中会因为受限于1r/>×
1 卷积单元的数量,而导致卷积神经网络模型前向推理速度降低。
[0004]公布号为CN109086867A,专利名称为“一种基于FPGA的卷积神经网络加速系统”的专利公开了一种基于FPGA的卷积神经网络加速系统,该加速系统包含数据预处理模块、数据后处理模块、数据存储模块、网络模型配置模块和卷积神经网络计算模块,其中卷积神经网络计算模块包括卷积计算子模块、激活函数计算子模块、池化计算子模块和全连接计算子模块。该加速系统的不足之处是:在设置过程中并未考虑由于各种卷积神经网络计算子模块的数量不匹配导致针对一种具体的卷积神经网络模型前向推理速度下降问题。
[0005]公布号为CN112766479A,专利名称为“一种基于FPGA的支持通道分离卷积的神经网络加速器”的专利公开的加速器的功能单元模块用以实现池化、激活以及批量归一化等功能。该加速器的不足之处是:该加速器的功能单元模块实现各种功能的并行计算单元数量相同,未能灵活配置各种功能的并行计算单元数量,未考虑由于各种功能的并行计算单元数量不匹配导致针对一种具体的卷积神经网络模型前向推理速度下降问题。
[0006]基于FPGA的卷积神经网络加速器的可重构优点,针对一种具体的卷积神经网络模型,例如SSD卷积神经网络模型,均可以重新配置各种并行计算单元的数量,以便卷积神经网络模型可达到更快的前向推理速度。但是,现有的加速器及优化方法均未考虑由于各种并行计算单元的数量不匹配问题而导致卷积神经网络模型前向推理速度下降的问题。

技术实现思路

[0007]本专利技术的目的在于,针对上述现有技术中的不足,提供一种基于FPGA的卷积神经网络加速器及其优化方法,以解决现有技术中未考虑由于各种并行计算单元的数量不匹配问题而导致卷积神经网络模型前向推理速度下降的问题。
[0008]为实现上述目的,本专利技术采用的技术方案如下:
[0009]本申请提供一种基于FPGA的卷积神经网络加速器及其优化方法。基于FPGA 的卷积神经网络加速器包括通过FPGA实现的程序指令存储单元、程序指令译码单元、数据控制单元、数据缓冲单元、参数缓冲单元、片外存储单元、并行处理单元、图像缓存单元、图像拼接单元,和在动态随机存取内存上实现的片外存储单元。
[0010]更进一步地,程序指令存储单元包含一片ROM,ROM中存储由卷积神经网络层L
n
的前向推理指令CN
n

[0011]更进一步地,前向推理指令CN
n
由卷积神经网络层L
n
的操作类型、卷积步长、卷积核数量、输入特征图通道数、输入特征图宽度、输入特征图起始地址、输出特征图宽度、神经网络参数起始地址、输出图像块起始地址、卷积偏置起始地址、填充标志对应的二进制数据顺次拼接而成。
[0012]更进一步地,程序指令译码单元,顺次级联于指令存储单元与数据控制单元之间。
[0013]更进一步地,数据控制单元连接并行处理单元、图像缓存单元、数据缓冲单元、参数缓冲单元、图像拼接单元和片外存储器控制单元。
[0014]更进一步地,参数缓存单元内设置有两个相同的参数缓冲器。
[0015]更进一步地,并行处理单元包括3
×
3卷积单元、1
×
1卷积单元和池化单元。
[0016]更进一步地,数据缓存单元内设置有两个相同的数据缓冲器。
[0017]更进一步地,数据缓冲器内部包含一个尺寸为的嵌入式块RAM,其中,x0表示3
×
3卷积单元的数量,W、H分别表示并行处理单元一次可处理的图像块的宽度和高度。
[0018]基于FPGA的卷积神经网络加速器的优化方法,该方法包括以下步骤:
[0019]步骤一:获取不同操作类型的前向推理指令CN
n
前向推理所使用的时钟周期数;
[0020]步骤二:构建卷积神经网络前向推理一次所使用的时钟周期数;
[0021]步骤三:构建硬件资源约束表达式;
[0022]步骤四:构建并求解有约束的优化函数F


[0023]步骤五:根据优化函数F

的最优解设置3
×
3卷积单元、1
×
1卷积单元、池化单元的数量。
[0024]与现有技术相比,本专利技术的有益效果:
[0025]本专利技术加速器通过先对待输入特征图进行分块,再将其划分为单通道图像,以充分利用FPGA的资源从而提高加速器运行速度;通过先对卷积操作进行分块,再将其划分为单通道卷积核,以充分利用FPGA的资源从而提高加速器运行速度。
[0026]本专利技术通过构建FPGA硬件资源约束表达式,使得在不超过FPGA总体硬件资源情况下,卷积神经网络中各种并行处理单元的数量达到最多,从而提升运算速度。
[0027]通过优化步骤得到对应最优的3
×
3卷积单元、1
×
1卷积单元、池化单元的数量,充
分考虑了各种并行计算单元的数量匹配,解决了由于未考虑各种并行计算单元的数量不匹配问题而导致卷积神经网络模型前向推理速度下降的问题,从而提升加速器对卷积神经网络的处理速度。
附图说明
[0028]图1为本专利技术提供的一种基于FPGA的卷积神经网络加速器的示意图;
[0029]图2为本发本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种基于FPGA的卷积神经网络加速器,其特征在于,所述加速器包括通过FPGA实现的程序指令存储单元、程序指令译码单元、数据控制单元、数据缓冲单元、参数缓冲单元、片外存储单元、并行处理单元、图像缓存单元、图像拼接单元,和在动态随机存取内存上实现的片外存储单元。2.根据权利要求1所述的基于FPGA的卷积神经网络加速器,其特征在于,所述程序指令存储单元包含一片ROM,ROM中存储由卷积神经网络层L
n
的前向推理指令CN
n
。3.根据权利要求2所述的基于FPGA的卷积神经网络加速器,其特征在于,所述前向推理指令CN
n
由所述卷积神经网络层L
n
的操作类型、卷积步长、卷积核数量、输入特征图通道数、输入特征图宽度、输入特征图起始地址、输出特征图宽度、神经网络参数起始地址、输出图像块起始地址、卷积偏置起始地址、填充标志对应的二进制数据顺次拼接而成。4.根据权利要求3所述的基于FPGA的卷积神经网络加速器,其特征在于,所述程序指令译码单元,顺次级联于所述指令存储单元与所述数据控制单元之间。5.根据权利要求4所述的基于FPGA的卷积神经网络加速器,其特征在于,所述数据控制单元连接所述并行处理单元、所述图像缓存单元、所述数据缓冲单元、所述参数缓冲单元、所述图像拼接单元...

【专利技术属性】
技术研发人员:李甫李旭超付博勋
申请(专利权)人:西安电子科技大学重庆集成电路创新研究院
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1