一种基于ZYNQ的通用卷积神经网络加速结构及设计方法与流程

文档序号:18902226发布日期:2019-10-18 22:06阅读:1527来源:国知局
一种基于ZYNQ的通用卷积神经网络加速结构及设计方法与流程

本发明涉及卷积神经网络硬件加速技术领域,特别涉及一种基于zynq的通用卷积神经网络加速结构及设计方法。



背景技术:

卷积神经网络(convolutionneuralnetwork,cnn)在计算机视觉领域应用广泛,尤其是在目标检测和图像识别等方面体现出了良好的应用前景。边缘计算是一种全新的计算模式,其概念是在靠近数据中心的边缘地带直接对数据进行处理,而不用传回服务器处理。在目标检测中使用边缘计算能够带来一系列好处:直接在采集端的硬件设备上处理图像,不需要传回上位机,节省数据传输的时间、减少数据传输的开销。通过优化加速卷积神经网络,实现在硬件设备上的高效处理具有重要的实际意义。

目前,gpu是加速模型训练或应用的主流选择,而gpu由于其很大的功耗,而这对于像无人机,嵌入式设备这些对功耗效率实时性要求高的终端应用场景来说不适合移动应用。相比之下,fpga效率高、适应性强,更适合于移动加速。目前提出的fpga设计方法主要集中在特定的神经网络加速方法上,仅对特定的算法实现了电路结构的加速,通用性差,无法实现其他算法的复用。

随着深度卷积神经网络层数的增加,参数量的爆炸性增长,其计算复杂度和计算力需求也水涨船高。人工智能芯片主要用于训练和推理两个环节,其中在线推理环节是指利用训练出来的模型在线响应用户需求,如无人驾驶,智能家居等领域,基于实时性和隐私安全的考虑,需要在嵌入式智能终端部署计算平台,并且要尽可能地减少时延,这就对计算速度提出了要求。另外,对于可穿戴设备等嵌入式设备对功耗和效率的要求也非常高。



技术实现要素:

本发明提供了一种可以用来加速卷积神经网络中多通道卷积运算的方法,其特点是该加速器可以加速任何结构的神经网络,可编程、可在线配置,支持的特征图大小、特征图通道数、卷积核大小、卷积核通道数、卷积步幅灵活可变,控制逻辑简单,卷积运算并行度高,该加速器可以应用到任何zynq架构的平台上,用户可以根据自己芯片中dsp的资源对加速电路裁剪,最小可以支持128个dsp(digitalsignalprocessing)资源。本发明的技术方案具体实现方案如下:

本发明所述一种基于zynq的通用卷积神经网络加速结构,包括:zynq芯片、内存条;

所述内存条,用于存储卷积网络计算的中间特征数据、每层网络的权重数据、偏置数据,以完成整个网络的运算;

所述zynq芯片,用于完成整个加速器电路的部署及实现,包括:arm处理器、总线互联、ddr4控制器、fpga;

所述arm处理器,用于配置和调度所述fpga中设计的硬件电路;

所述总线互联模块,用于将所述fpga与所述ddr4控制器中的数据接口转换成统一的接口以供所述arm处理器访问;

所述ddr4控制器,用于访问所述内存条中的数据以及控制从所述总线互联写入数据到所述内存条;

所述fpga,包括:寄存器、卷积运算通路、辅助运算通路、池化运算通路、访存模块;

所述寄存器,用于存储电路的配置信息,以完成不同规模的卷积网络计算,同时,可以通过每次配置不同的数据,以完成不同结构的卷积网络的计算;

所述卷积运算通路,用于从所述访存模块中传输来的权重数据与特征数据完成卷积网络中的卷积计算,所述卷积运算通路的dsp;

所述辅助运算通路,用于从所述访存模块中传输来的权重数据与特征数据用于完成所述卷积运算通路数据的加载与重构,保证计算资源充分利用,可通过所述辅助运算通路对特征子块提前分割与加载;

所述池化运算通路,用于从所述访存模块中传输来的特征数据完成卷积网络中的池化运算;

所述访存模块,用于完成将所述总线互联模块中传输的权重数据、特征数据加载到所述卷积运算通路、所述辅助运算通路、所述池化运算通路来完成卷积网络的计算,同理,所述卷积运算通路、所述辅助运算通路、所述池化运算通路计算完成的结果会通过所述访存模块传输到所述总线互联模块中。

本发明的有益效果为:本发明实施例提出的基于fpga的通用定点数神经网络卷积加速器硬件结构,在通用fpga平台上实现了高速、通用的卷积神经网络卷积运算,理论上可实现无限大复杂度的卷积运算,适用于任何使用卷积运算的神经网络加速,具有高度的通用性,此外具有比以往单fpga实现计算有更低的设计复杂度和更高的通用性,比单cpu、gpu实现计算有更高的计算速度和便携性。本发明在基于vgg16网络算法验证,在180hz的工作频率下,每秒可以完成920亿次乘累加计算,加速器整体功耗为3.459w,适合运行在嵌入式设备中,能效比为106.5gops/w,大约是1080ti显卡的4倍左右,有效解决了卷积神经网络加速计算中存在的结构适应性和海量数据交换问题。

附图说明

图1为本加速器的整体架构图;

图2为特征数据在内存中的排布示意图;

图3为权重数据在内存中的排布示意图;

图4为是浮点卷积运算模块结构示意图;

图5为横向池化电路原理的结构图;

图6为纵向池化电路原理的结构图;

图7为数据处理方法的总设计结构图;

图8为本加速器通过vgg16网络实测的峰值算力。

具体实施方式

下面结合附图和具体实现案例对本发明进行详细说明。

如图1,一种基于zynq的通用卷积神经网络加速结构主要由arm处理器、总线互联模块、寄存器、卷积运算通路、辅助运算通路、池化运算通路、访存模块、ddr4控制器与内存条组成。arm处理器,用于配置和调度所述fpga中设计的硬件电路,包括特征图大小、特征图通道数、卷积核大小、卷积核通道数、输出结果大小、输出结果通道数、卷积步幅和卷积模式,寄存器接收启动信号来启动各个子模块,根据配置信息在内部计算出每次卷积运算循环的索引值,根据索引值与卷积模式的寄存器值会作用给卷积运算通路、辅助运算通路与池化运算通路,卷积运算通路、辅助运算通路与池化运算通路会跟寄存器中的配置信息作用给访存模块,访存模块会通过总线互联来控制ddr4控制器读取排列在内存中权重数据与特征数据。

本实例中特征数据在内存中排布参见图2,由于一般卷积网络中特征数据的数据量比较大,无法一次性加载到卷积运算通路上,因此需要对三维的特征数据分块,当分割成较小的数据块之后就可以加载到卷积运算通路上,首先对一个三维特征进行分块,在输入通道方向需要每k个通道切块一次,最后不足k个通道的为一组,其中k的值为16*n,n=1,2,3…;k的具体值根据用户板卡中dsp资源而定,k代表着卷积电路和池化电路的并行度,并行度越大,表示在一个时钟周期内有更多的数据同时计算;对特征分块切割之后,输入特征的每行数据一次按顺序存入地址当中,行与行之间可以不紧密连接,存放一行数据的区域被称为行跨步,依次类推,当01到15的子块全部存入到内存中后,接着按照同样的方法会存入16到31的子块信息。

在本实例中权重数据在内存中排布的方式参见图3,一次完整的卷积运算不仅需要特征数据,而且还需要网络训练后的权重数据,同样,为了高效的计算,权重数据在内存中的排布方式也至关重要,因为在计算过程中取数据的速度影响这个卷积计算的速度;权重数据是一个四维数据,首先将一个权重数据展开为三维数据,每个三维数据被称为1个kernel,依次为kernel0、kernel1、kernel2k-1,从kernel0到kernelk-1一组数据,首先将每组kernel的第一个数依次存入到内存中,再将每组卷积核的第二个数依次取出放入内存中,以此类推,将整个权重全部存入到内存中。通过这种方式将权重存入内存的目的是为了后续的卷积计算可以更加方便读取的数据。

如图4,卷积运算通路是完成卷积网络的卷积运算,按照上述的方式排列后,就可以计算卷积神经网络的核心计算了,即乘累加运算,首先以突发传输的方式将ddr内存中的权重数据从k0_00到k(k-1)_00加载到片上内存中,之后对特征数据中00数据加载到片上缓存。可构成矩阵w[k][k]和矩阵c[k][1]的乘积,通过k个dsp资源完成mac(乘累加)运算后得到矩阵d[k][1]。通过上述的方式,第二次重新加载每个kernel的01数据和特征数据中的01数据完成一次条带运算,通过多次的条带运算,将会加载完成所有的特征数据和权重数据。

本实例的池化运算方式参见如图5、图6,在池化运算通路中,由于每次池化计算的规格可能会发生变化,因此我们采取先横向池化,后纵向池化的方法来完成池化计算,输入特征的大小为w*h,以输入特征中的数据a经横向池化后会变成a0,数据的高度不会变,只是宽度变成小了,通过这种方法仅仅需要一组比较器就可以完成横向池化,同理,数据b经过横向池化会变成数据b0,经过整体的横向池化后,特征数据的大小会变成h*wout,当横向池化完成后就需要纵向池化,纵向池化的宽度不变,高度会变小,纵向池化前数据块x与y经纵向池化后变成数据x0与y0,通过这种结构可以大大减少寄存器的数量,由于特征数据在ddr内存中的特殊排布,因此在数据读取的时候可在内存中突发读取,提高了数据在传输时的带宽。

在本发明的实施例中当卷积运算通路、池化运算通路、辅助运算通路均在ddr内存的访下可以完成卷积运算与池化运算,如图7,但由于每层网络的结构的规模各不相同,因此,整个过程需要arm处理器的配置与调度,首先会将排列好的数据从ddr内存中加载到片上缓存,由于加载前的特征数据与权重数据比较大,因此需要按照上述的方式对权重数据与特征数据切块,切块后通过状态机1采用dma突发传输的方式加载到访存模块,从而进一步的加载到片上缓存,当权重数据与特征数据均加载到片上缓存后,需要进一步的加载到乘加器阵列中才可以完成乘累加运算,因此需要状态机2通过dma的方式从片上缓存加载数据,最后计算完成的结果需要送入到累加器阵列中,最后将计算完成的结果数据。

参见图8在实际工程中,任何卷积网络模型,都必须依赖于具体的计算平台,例如cpu、gpu、asic等才能计算出结果。此时,模型和计算平台的"默契程度"会决定模型的实际表现。评价加速器性能的指标有计算时延及吞吐量,时延用于衡量计算响应的实时性,对于并行系统,由于其响应时间未必会随着计算任务的增加而线性增长,因此吞吐量被更广泛地应用于评价加速器的性能,roofline模型提出了使用计算强度进行定量分析的方法,并给出了模型在计算平台上所能达到理论计算性能上限公式。roofline模型中纵坐标表示计算平台的峰值算力,横坐标表示计算强度,斜率表示计算平台的存储器访问带宽速率;通过对每一层卷积网络的性能监测,得出卷积层的实际算力并绘制在图中。可以看出,实际的峰值算力逼近rooflinemodel的理论值368.6gops,最高mac利用率达到99.80%,说明该加速器的计算性能优秀。

本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,本领域技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1