一种基于多FPGA异构架构的CNN神经网络加速设计方法技术

技术编号:34823780 阅读:45 留言:0更新日期:2022-09-03 20:35
本发明专利技术公开一种基于多FPGA异构架构的CNN神经网络加速设计方法,包括以下步骤:根据模块的功能判断,在RTL级使用Verilog HDL设计能实现完整的计算功能的模块,其余的模块使用Vivado的HLS工具进行开发;对卷积神经网络进行量化;CPU依据任务分配法分配计算任务给FPGA板;FPGA板和外部存储器进行初始化配置;CPU获取加载信息并将加载信息通过数据收发单元加载至各个FPGA开发板;两个卷积计算单元通过流水交替方式进行计算;直到当前卷积神经网络计算完成,输出结果。本发明专利技术采取HLS与HDL相结合的方式,对神经网络的不同模块分别使用HLS和HDL开发,缩短了开发时长,降低研究成本。降低研究成本。

【技术实现步骤摘要】
一种基于多FPGA异构架构的CNN神经网络加速设计方法


[0001]本专利技术涉及卷积神经网络加速
,更具体地,涉及一种基于多FPGA异构架构的CNN神经网络加速设计方法。

技术介绍

[0002]近年来,深度学习已经成为了学术界和工业界的研究热点。以卷积神经网络作为模型的算法在目标检测、语音算法方面取得了重大突破,而YOLO系列的卷积神经网络在目标检测领域中极具代表性,其中YOLOv3作为目前主流的检测方法有着优秀的性能,但由于目前的相关算法不断更新迭代且规模巨大,在嵌入式端的部署是一个长期存在的问题,利用CPU进行处理存在的问题是耗时较长,因此目前主流的解决方式是采用GPU、FPGA、ASIC芯片。
[0003]GPU是作为应对图像处理需求而出现的芯片、其数量众多的运算单元以及超高的并行运算能力非常契合深度学习的训练,但利用GPU进行神经网络训练存在的问题是能效比低且硬件结构固定。专用集成电路芯片(ASIC)是针对某一个场景定制的,是一种比GPU更加高效的方法,但是由于其开发周期长开发代价昂贵,并且由于ASIC都是定制的,这就使得它的可迁移性低。现场可编程门阵列FPGA是一种可编程器件,FPGA的可编程性和强大的并行计算能力使得FPGA成为深度学习处理器的主力军,但利用FPGA训练神经网络存在的问题是当训练的网络模型规模较大时,一些的FPGA板性能不足导致网络训练结果不够理想甚至由于计数单元不足无法完成网络部署。另一个问题就是目前利用FPGA进行神经网络开发时会利用到两种方法,第一种方法用HLS(High Level Synthesis,高层次综合),先通过C/C++语言对系统进行编写,在通过HLS可以快速生成卷积神经网络加速器IP核,做到降低FPGA代码的开发时间,但是对系统的底层构架无法做到精准描述,导致所设计的方案解决问题的能效不佳。第二种方法是利用HDL语言,可以对特定的网络获得出色的能效和吞吐率,但是存在的问题就是描述大型网络代码规模太大,流程复杂且开发效率低。
[0004]针对上述现有技术缺陷,本专利技术基于FPGA异构架构设计了CNN神经网络加速设计方法,通过对传统的FPGA加速CNN网络进行了改进,对算法进行权值剪枝,压缩模型大小。在量化训练时将32位浮点运算转换为16位或8位定点运算,降低内存占用。针对不同的网络模型采用灵活可变的FPGA异构架构,有效的减少网络模型对单个FPGA开发板的性能需求,降低研究成本。在进行神经网络开发时,采取HLS与HDL相结合的方式,对神经网络的不同模块分别使用HLS和HDL开发,相比HDL开发缩短了开发时长,相比HLS开发有更加高效的硬件利用率和更好的性能。

技术实现思路

[0005]本专利技术的目的在于提供一种基于多FPGA异构架构的CNN神经网络加速设计方法,对传统的FPGA加速CNN网络进行了改进,对算法进行权值剪枝,压缩模型大小,采用灵活可变的FPGA异构架构,有效的减少网络模型对单个FPGA开发板的性能需求,降低研究成本,采
取HLS与HDL相结合的方式,对神经网络的不同模块分别使用HLS和HDL开发,相比HDL开发缩短了开发时长,相比HLS开发有更加高效的硬件利用率和更好的性能。
[0006]为达到上述目的,提供了一种基于多FPGA异构架构的CNN神经网络加速设计方法,包括以下步骤:步骤1、设计卷积神经网络在FPGA开发板的若干个模块;根据模块的功能判断,在RTL级使用Verilog HDL设计能实现完整的计算功能的模块,其余的模块使用Vivado的HLS工具进行开发;所述FPGA开发板包括指令控制单元、数据收发单元、数量成对的卷积计算单元、输入缓存;步骤2、对卷积神经网络进行量化,将卷积神经网络的浮动32位数据量化为定点16位或8位数据;步骤3、利用PCIe总线连接CPU、外部存储器与若干个FPGA板,CPU依据任务分配法分配计算任务给FPGA板;步骤4、CPU依据卷积神经网络的计算神经网络的相关信息对FPGA板和外部存储器进行初始化配置;所述初始化配置包括加载信息、计算参数;步骤5、CPU获取加载信息并将加载信息通过数据收发单元加载至各个FPGA开发板;步骤6、指令控制单元接受CPU的指令后,FPGA开发板通过输入缓存载入计算参数;步骤7、两个卷积计算单元通过流水交替方式进行计算;步骤8、对卷积计算单元的工作状态进行检测并依据计算检测方法进行调整;步骤9、满足步骤8的条件下,重复6~8的操作,直到当前卷积神经网络计算完成,输出结果。
[0007]特别的,所述卷积神经网络采用YOLOv3网络。
[0008]特别的,步骤2中将卷积神经网络的浮动数据量化为定点数据具体包括量化卷积神经网络的权重数据步骤和量化卷积神经网络的特征图数据步骤。
[0009]特别的,所述量化网络的权重数据步骤的方法为:历遍卷积神经网络的每一个卷积层的权重数据,历遍不同的阶码,在保证量化后的整数表示范围比权重数据分布大的前提下,找到每层最优的权重阶码,根据原始权重和量化后的权重误差和的最小值确定16位动定点量化的小数点位置,确定小数部分的位长Q,将权重数据乘以比例2^Q,取整数数据即为int16动定点量化的结果;对int16动定点量化的结果进行反量化,反量化的过程为int16型量化结果除以比例系数2^Q,得到反量化的浮点数结果;对卷积神经网络的每一卷积层权重数据进行上述操作,最后形成该卷积层的量化权重数据。
[0010]特别的,所述量化卷积神经网络的特征图数据步骤的方法为:准备校准数据集,数量为训练集数据的10%;遍历网络每一层的特征图输入数据,找出每一层输入特征图数据的最值,确定16位动定点量化的小数点位置,即确定小数部分的位长Q,对网络的每一层进行量化操作,确定每一层的量化小数位数Q,对校准数据集中的所有图片进行量化操作,对每一层的量化小数位数Q求平均值,得出最后的网络输入特征图的量化小数位数Q。
[0011]特别的,所述任务分配法具体包括以下步骤:使用预设的程序对卷积神经网络的网络模型大小进行分析,并获取每个FPGA板的参数性能来评估各个FPGA板的算力,依据算力分配每个FPGA板对应的任务量来保证每块开发板的执行时间基本持平。
[0012]特别的,所述步骤4中所述相关信息为卷积神经网络相关计算层的层数信息,各个层的连接关系、计算规模、权重数值信息。
[0013]特别的,所述步骤5中的加载信息为卷积神经网络的网络层数、节点数。
[0014]特别的,所述步骤7中流水交替方式具体为:将存于输入缓存中相应位置的参数载入第一个置闲的卷积计算单元中;同时从外部存储器中取出用于下次卷积计算单元的参数存于输入缓存的相应位置;将输入缓存参数载入第二个卷积计算单元,完成第二个卷积计算单元的参数配置。
[0015]特别的,所述步骤8中计算检测方法的具体方法为:检测到有卷积计算单元处于空闲状态时,就继续从外部存储器中对应位置取出用于下一个卷积计算单元载入的参数放置到输入缓存中。
[0016]本专利技术的有益效果:1本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于多FPGA异构架构的CNN神经网络加速设计方法,其特征在于:包括以下步骤:步骤1、设计卷积神经网络在FPGA开发板的若干个模块;根据模块的功能判断,在RTL级使用Verilog HDL设计能实现完整的计算功能的模块,其余的模块使用Vivado的HLS工具进行开发;所述FPGA开发板包括指令控制单元、数据收发单元、数量成对的卷积计算单元、输入缓存;步骤2、对卷积神经网络进行量化,将卷积神经网络的浮动32位数据量化为定点16位或8位数据;步骤3、利用PCIe总线连接CPU、外部存储器与若干个FPGA板,CPU依据任务分配法分配计算任务给FPGA板;步骤4、CPU依据卷积神经网络的计算神经网络的相关信息对FPGA板和外部存储器进行初始化配置;所述初始化配置包括加载信息、计算参数;步骤5、CPU获取加载信息并将加载信息通过数据收发单元加载至各个FPGA开发板;步骤6、指令控制单元接受CPU的指令后,FPGA开发板通过输入缓存载入计算参数;步骤7、两个卷积计算单元通过流水交替方式进行计算;步骤8、对卷积计算单元的工作状态进行检测并依据计算检测方法进行调整;步骤9、满足步骤8的条件下,重复6~8的操作,直到当前卷积神经网络计算完成,输出结果。2.根据权利要求1所述的一种基于多FPGA异构架构的CNN神经网络加速设计方法,其特征在于:所述卷积神经网络采用YOLOv3网络。3.根据权利要求1所述的一种基于多FPGA异构架构的CNN神经网络加速设计方法,其特征在于:步骤2中将卷积神经网络的浮动数据量化为定点数据具体包括量化卷积神经网络的权重数据步骤和量化卷积神经网络的特征图数据步骤。4.根据权利要求3所述的一种基于多FPGA异构架构的CNN神经网络加速设计方法,其特征在于:所述量化网络的权重数据步骤的方法为:历遍卷积神经网络的每一个卷积层的权重数据,历遍不同的阶码,在保证量化后的整数表示范围比权重数据分布大的前提下,找到每层最优的权重阶码,根据原始权重和量化后的权重误差和的最小值确定16位动定点量化的小数点位置,确定小数部分的位长Q,将权重数据乘以比例2^Q,取整数数据即为int16动定点量化的结果;对int16动定点量化的结果进行反量化,反量化的过...

【专利技术属性】
技术研发人员:许晨曦黄品高唐宁党选举王辉高超于文龙
申请(专利权)人:桂林电子科技大学
类型:发明
国别省市:

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

1