一种实现卷积神经网络前向计算的硬件结构的制作方法

文档序号:11519285阅读:278来源:国知局
一种实现卷积神经网络前向计算的硬件结构的制造方法与工艺

本申请涉及计算机及电子信息技术领域,尤其涉及一种实现卷积神经网络前向计算的硬件结构。



背景技术:

随着人工智能的兴起,深度学习成为目前非常热门的一个领域,被广泛应用在计算机视觉、语音识别以及其它一些大数据应用上,受到了越来越广泛的关注。卷积神经网络作为深度学习中的一个很重要的算法模型,在图像分类、人脸识别、视频检测、语音识别等方面得到了很广泛的应用。卷积神经网络是仿照人类大脑中的神经系统而提出的,由很多层构成,输入的信息从最开始的输入层,经过一些卷积、乘加运算、激活函数等传递到下一层,以此方式一层一层往后传递,直到最后的输出层。卷积神经网络中最常见的层有三类,分别是卷积层、下采样层和全连接层。

目前,已经有很多影响力较大的卷积神经网络模型被提出,并实现了很好的应用效果,如2012年在大规模视觉识别挑战赛(ilsvrc,imagenetlargescalevisualrecognitioncompetition)中取得图像分类冠军的alexnet,2014年提出的vgg和googlenet等。可见,卷积神经网络的应用越来越多。随着对准确率和识别率越来越高的要求,卷积神经网络模型的规模也随之变得越来越大,因此其包含的运算量也变得非常庞大。使用传统的通用处理器来实现卷积神经网络中的计算将变得非常低效,需要很长的耗时才能得到最终的结果。随着人们对速度的要求不断提高,使用硬件对卷积神经网络进行加速的需求变得越来越迫切。

现有对于卷积神经网络的硬件加速实现,主要采取的方式是:同一时间,使用板上尽可能多的资源实现卷积神经网络中的一层,然后将该层结果存储在片外,再使用板上的尽可能多的资源来实现接下来的一层。在这种方案下,由于每次都是只实现卷积神经网络中的一层,板上资源很可能无法充分被利用,并且由于实现不同层基本都使用了相同的并行策略,无法使不同层都达到各自最优的并行策略,这会进一步降低资源利用率和性能。



技术实现要素:

本申请实施例提供一种实现卷积神经网络前向计算的硬件结构,用以解决现有技术中卷积神经网络的硬件加速实现存在的不能有效充分利用板上资源进行最大程度地并行加速,降低资源利用率和性能的问题。

本申请的一个方面提供了一种实现卷积神经网络前向计算的硬件结构,包括:

数据片外缓存模块,用于将外部输入的各张待处理图片中的参数数据缓存在该模块中,等待被多级流水线加速模块读取出来;

多级流水线加速模块,与所述数据片外缓存模块连接,用于从数据片外缓存模块中读取参数,实现卷积神经网络的核心计算;

参数读取仲裁模块,与所述多级流水线加速模块连接,用于处理多级流水线加速模块中多个读取参数请求,使多级流水线加速模块获取需要的参数;

参数片外缓存模块,与所述参数读取仲裁模块连接,用于存储卷积神经网络前向计算所需要的参数。

进一步的,所述多级流水线加速模块由多级流水线构成,所述每一级流水线包括:

计算模块,用于实现卷积神经网络每层中的运算;

乒乓缓存结构模块,用于缓存与相邻流水线级之间的数据。

进一步的,所述计算模块,还用于根据卷积神经网络结构中不同层的运算量,给不同的流水线级分配不同数量的硬件资源。

进一步的,所述计算模块,采用三个维度的并行,分别是:多张特征图并行输入、多张特征图并行输出、卷积核中多个像素点并行计算。

进一步的,所述计算模块,采用基于批处理的batch-based的计算方式,将多张图片作为一个批处理并行同时计算。

进一步的,所述乒乓缓存结构模块,包括两个片上缓存结构单元。

进一步的,所述参数读取仲裁模块,采用轮循机制的仲裁方式,轮循响应从各级流水线加速模块发来的读取参数请求。

进一步的,实现卷积神经网络前向计算的硬件结构采用现场可编程门阵列fpga芯片或专用集成电路asic芯片实现。

与现有技术相比,本申请实施例包括数据片外缓存模块,用于将外部输入的各张待处理图片中的参数数据缓存在该模块中,等待被多级流水线加速模块读取出来,主要用以应对计算模块的处理速度与外部输入图片速度相差较大的情况;多级流水线加速模块,与所述数据片外缓存模块连接,用于从数据片外缓存模块中读取参数,实现卷积神经网络的核心计算,实现较大的并行度和较高的处理性能;参数读取仲裁模块,与所述多级流水线加速模块连接,用于处理多级流水线加速模块中多个读取参数请求,尽可能使多级流水线加速模块及时获取需要的参数,高效计算;参数片外缓存模块,与所述参数读取仲裁模块连接,用于存储卷积神经网络前向计算所需要的参数,计算过程中每次只读取当前计算需要的少量参数,从而起到减小片上缓存需求的作用。综上,本申请采用了一种全并行流水的方式,可以使所有层同时并行处理,实现较高的资源利用率和较高的性能。

附图说明

通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:

图1示出根据本申请一个方面的一种实现卷积神经网络前向计算的硬件结构示意图;

图2示出根据本申请一个方面的每一级流水线的结构示意图。

附图中相同或相似的附图标记代表相同或相似的部件。

具体实施方式

为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。

下面结合说明书附图对本申请实施例作进一步详细描述。

如图1所示,根据本申请的一个方面提供了一种实现卷积神经网络前向计算的硬件结构,该硬件结构可采用现场可编程门阵列fpga芯片或专用集成电路asic芯片实现,具体包括:

数据片外缓存模块,用于将外部输入的各张待处理图片中的参数数据缓存在该模块中,等待被多级流水线加速模块读取出来;

多级流水线加速模块,与所述数据片外缓存模块连接,用于从数据片外缓存模块中读取参数,实现卷积神经网络的核心计算;

参数读取仲裁模块,与所述多级流水线加速模块连接,用于处理多级流水线加速模块中多个读取参数请求,使多级流水线加速模块获取需要的参数;

参数片外缓存模块,与所述参数读取仲裁模块连接,用于存储卷积神经网络前向计算所需要的参数。

具体的,本申请实施例,数据片外缓存模块,其被配置为,外部输入的各张待处理图片中的各个像素数据首先缓存在该模块中,等待被多级流水线加速模块中的计算模块读取出来,该模块相当于一个较大的先入先出队列(fifo,firstinputfirstoutput),用以应对计算模块的处理速度与外部输入图片速度相差较大的情况,否则如果外部直接发送数据到内部的计算模块,将需要比较复杂的握手信号,以确保当两者速度不匹配的时候没有数据漏发或者重发等情况。

本申请实施例,与所述数据片外缓存模块连接的多级流水线加速模块,用来实现卷积神经网络的核心计算,其内部由多级流水线构成,每一级流水线用来实现卷积神经网络中的一层或几层。例如,本申请实施例中,可采用alexnet神经网络模型,该结构共有8层,采用全并行流水的方式,使用了8级流水线,每一级流水线实现卷积神经网络中的一层。本申请输入的数据从最前面的第一级流水线开始计算,逐级向后,直到最后一级流水线,当第一张输入图片的数据开始在第二级流水线中计算的时候,第一级流水线开始计算第二张输入图片的数据,当流水线全部被填满的时候可以实现较大的并行度和较高的处理性能。

本申请实施例与所述多级流水线加速模块连接的参数读取仲裁模块,其主要用于处理多级流水线中多个读取参数请求。例如,在本申请实施例中,由于有8级流水线,因此最多情况下会有8个读取参数请求同时发出。由于多级流水线并行计算,每级流水线中的计算都需要从数据片外缓存模块读取参数,参数读取仲裁模块可以起到仲裁的作用,尽可能使多级流水线及时获取需要的参数,高效计算。

优选的,在本申请实施例中,参数读取仲裁模块可采用轮循机制的仲裁方式,轮循响应从8个流水线级发来的8个请求。需要说明的是,针对不同流水线级之间计算量和参数需求量的关系,本申请也可以采用其它轮循方式,例如设置优先级等方法处理多级流水线中多个读取参数请求。

本申请实施例,与所述参数读取仲裁模块连接的参数片外缓存模块,其用来存储卷积神经网络前向计算所需要的参数,由于卷积神经网络的规模较庞大,参数数量也非常庞大,所以需要使用片外的动态随机存取存储器(dram,dynamicrandomaccessmemory)缓存。具体实施中,在发送图片开始计算之前,首先外部会把所有的参数发送进来并存储到片外的dram上,计算过程中每级流水线每发送一次请求只读取当前计算需要的少量参数,因此片上只需要较小的一块缓存就可以存储参数了,从而起到减小片上缓存需求的作用。

进一步的,本申请多级流水线加速模块由多级流水线构成,如图2所示,所述每一级流水线包括:

计算模块,用于实现卷积神经网络每层中的运算;

乒乓缓存结构模块,用于缓存与相邻流水线级之间的数据。

进一步的,所述乒乓缓存结构模块,包括两个片上缓存结构单元。

本申请实施例,多级流水线加速模块,由多级流水线构成,每一级流水线的硬件结构包括计算模块和乒乓结构的两个片上缓存结构单元。计算模块用来实现卷积神经网络每层中的运算,具体的,实现卷积神经网络中该层的乘法运算、加法运算,有的层还有下采样运算和激活函数运算。片上缓存结构单元用来缓存与相邻流水线级之间的数据,具体的,需要缓存当前层与相邻层之间的所有特征图的数据,这样可以减少片外数据的访问,降低对读取片外数据的带宽需求。需要注意的是,此处是把相邻两层之间所有的特征图数据都缓存在了片上缓存结构单元中。

本申请实施例片上对于参数的缓存采用乒乓缓存结构模块,使用了两块缓存结构单元,当某一级流水线完成一张图片的计算,并将结果都缓存在其中一块缓存结构单元中时,下一级流水线可以从这块缓存中读取数据开始计算,同时,该级流水线可以开始计算下一张图片数据并将新生成的结果存在另外一块缓存结构单元中。即,当其中一块缓存结构单元中存储的参数正在被用来计算的时候,一边读取接下来要使用的参数到乒乓结构中的另一块缓存结构单元中,这样当前计算结束之后就可以直接进行接下来的计算,无需等待新的参数。本申请采用乒乓结构的缓存可以使相邻流水线级之间的计算能够流畅进行。

进一步的,所述计算模块,还用于根据卷积神经网络结构中不同层的运算量,给不同的流水线级分配不同数量的硬件资源,如乘法器、加法器和存储器等。

本申请实施例为了实现流水线的高效率工作,不同级流水线的计算时间应该近似相等,因此需要根据卷积神经网络结构中不同层的运算量来给不同的流水线级分配不同数量的硬件资源,经过多级流水线的处理,最后一级流水线可以得到最终图像分类排序的结果并发送出去。

进一步的,所述计算模块,采用三个维度的并行,分别是:多张特征图并行输入、多张特征图并行输出、卷积核中多个像素点并行计算。

本申请实施例设计硬件结构的时候需要确定每一级流水线中的并行策略,也就是确定每一级流水线中的这三个维度的并行度。如前述alexnet神经网络模型,即需要为alexnet中8层的每一层确定三个维度的并行度。本申请实施例在为每一级流水线制定相应的并行策略的时候,需要考虑以下几个方面的因素:每一级流水线所需要的时间应基本一致,这样才不会有一个耗时最久的流水线级成为速度瓶颈,流水线性能较高;考虑该层的输入输出特征图的数量以及卷积核大小;考虑层与层、相邻流水线级之间的连接关系,保证输入和输出的数据流能顺利流通。在本申请实施例中,相邻流水线级之间通过片上块存储器bram缓存中间数据,因此上一层的输出并行度和该层的输入并行度应该小于bram的数量。优选的,输入并行度最好应该是该层总的输入特征图的约数,同样的,输出并行度最好应该是该层总的输出特征图的约数,这样可以使控制复杂度大幅度降低。

进一步的,所述计算模块,采用基于批处理的batch-based的计算方式,将多张图片作为一个批处理并行同时计算。

本申请实施例在计算卷积神经网络后面的几层全连接层的时候采用了一种batch-based的计算方式,将多张图片作为一个batch并行同时计算,这样做的好处是可以降低对参数片外缓存的访问频率,降低访问片外缓存的数据带宽需求。由于全连接层的参数量非常庞大,因此对片外dram参数访问带宽需求的优化可以通过优化全连接层的参数访问来实现,采用batch的方案,这样计算一组图片只需要读取一次参数,从而降低了参数访问频率。

综上,本申请实施例采用并行流水方式的硬件架构来实现算法,可以获得很好的加速效果进而达到实时处理的目的。本申请充分利用了板上的资源,并且针对不同层的计算特点,可以为不同的流水线级配置不同的硬件资源和并行策略,从而让每层都尽可能工作在较优的配置下,实现较高的性能。本申请实施例通过将流水线级之间的数据缓存在片上缓存结构单元,将参数缓存在片外缓存模块中,大大减少了片外存储的访问,降低了对片外存储的数据访问带宽需求。针对全连接层,还采用了batch-based计算方式,这样可以进一步降低全连接层从片外读取参数的带宽需求。本申请实施例可以实现较高的卷积神经网络硬件加速比,同时又在一定程度上优化了片外存储访问带宽需求。

本领域内的技术人员应明白,本申请的实施例可提供为方法、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的硬件结构。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令硬件结构的制造品,该指令硬件结构实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。

显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

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