一种面向物联网领域的动态可重构卷积神经网络加速器架构的制作方法

文档序号:17066098发布日期:2019-03-08 22:56阅读:189来源:国知局
一种面向物联网领域的动态可重构卷积神经网络加速器架构的制作方法

本发明属于神经网络加速器领域,尤其涉及一种面向物联网领域的动态可重构卷积神经网络加速器架构。



背景技术:

人工智能是目前热门的计算机科学之一,作为实现人工智能的主要方式,深度学习也得到了深远的发展,随着网络层数和每层神经元个数的增加,模型的计算复杂度会随着网络规模增大以指数增长。所以深度学习算法的学习速度和运行速度瓶颈越来越依赖于云计算等大规模计算平台。对于深度学习算法的硬件加速,目前通常有三类实现方式——多核cpu、gpu和fpga,它们的共同特点是可以实现高并行度的计算。然而,现有的硬件实现方式功耗较高,还存在着能量效率(性能/功耗)较低的问题,并不能应用在智能移动终端上,例如智能手机、可穿戴设备或者是自动驾驶汽车等。在此背景下,可重构处理器已经被证明是一种兼具高灵活性和高能量效率的并行计算架构形式,它的优势在于可以根据不同的模型大小来选择合适的资源配置策略,扩大专用处理器使用范围的同时提高处理性能,是多核cpu和fpga技术进一步发展受到限制的解决途径之一,有可能成为未来实现高效能深度学习soc的方案之一。

卷积神经网络加速器首先要满足可重构,可配置的要求,支持算法层面上网络结构的不断演进,满足丰富多样的应用场景;其次要满足高性能、低能耗的要求,需要克存储带宽限制,充分利用硬件资源。



技术实现要素:

本发明的目的在于提供一种面向物联网领域的动态可重构卷积神经网络加速器架构,其通过设计高并行度、高利用率的处理单元阵列以及可提升数据复用率的缓存架构提高卷积神经网络加速器的性能,降低功耗,同时设计具有一定的可配置性,可适用于多种应用场景。

本发明采用如下技术方案来实现的:

一种面向物联网领域的动态可重构卷积神经网络加速器架构,包括缓存架构、处理单元阵列、计算模块和控制器;其中,

缓存架构用于存储来自储外部存储器的数据或者计算过程中产生的数据,将其组织、排列后,以预设的数据结构传送到处理单元阵列中进行计算;处理单元阵列用于接收来自缓存架构的数据,进行卷积操作处理后存储在缓存架构中;计算模块用于接收来自处理单元阵列的数据,选择进行池化、标准化、或者激活函数三种操作,并将输出数据存储在缓存架构中;控制器用于向缓存架构、处理单元阵列和计算模块发送命令,并设计有外部接口,用于和外部系统进行通信。

本发明进一步的改进在于,缓存架构由输入数据缓存、卷积核缓存和输出数据缓存组成;控制器的输出端与输入数据缓存的输入端、卷积核缓存的输入端和输出数据缓存的输入端连接,输入数据缓存的输出端和卷积核缓存的输出端与处理单元阵列的输入端连接,处理单元阵列的输出端与计算模块的输入端连接,计算模块的输出端与输出数据缓存的输入端连接;

输入数据缓存用于接收多输入通道的输入图像数据,并同时将多个输入通道的数据传送至处理单元阵列进行运算;卷积核数据缓存用于接收多输入通道的卷积核数据,并同时将多个输入通道的数据传送至处理单元阵列进行运算;输出数据缓存用于存储来自计算模块或者处理单元阵列中产生的中间数据,并且将数据通过控制器传送至外部系统。

本发明进一步的改进在于,处理单元阵列由20个处理单元组成,每个处理单元均由输入数据转换模块、卷积核转换模块、乘法器、输出数据转换模块和通道累加模块组成;

输入数据转换模块用于将来自输入数据缓存的多通道输入图像数据在多个处理单元上同时进行转换;卷积核转换模块用于将来自卷积核缓存的多通道卷积核数据在多个处理单元上同时进行转换;乘法器用于将来自输入数据转换模块和卷积核转换模块的输出数据进行相乘;输出数据转换模块用于将乘法器的输出结果进行转换;通道累加模块用于将多通道数据进行加和得到一个通道的数据。

本发明进一步的改进在于,处理单元阵列用于接收来自输入数据缓存、输出数据缓存或者卷积核缓存的数据,输出数据传向输出数据缓存;每个处理单元实现窗口为5*5的winograd算法,其中winograd算法的公式表示如下:

u=gfgt(1)

v=btinb(2)

out=at[u·v]a(3)

其中,公式(1)表示卷积核的转换,f矩阵为卷积核,g为转换矩阵,u为卷积核转换后的结果;公式(2)表示输入数据的转换,in矩阵表示输入数据,b为转换矩阵,v为输入数据转换后的结果;公式(3)表示输出数据转换,a为转换矩阵,out为最终的输出结果。

本发明进一步的改进在于,计算模块由池化模块、激活函数模块、数据标准化模块、输入选择模块和输出选择模块组成;

控制器的输出端与输入选择模块的输入端和输出选择模块的输入端连接,且处理单元阵列的输出端与输入选择模块的输入端连接,输入选择模块的输出端与池化模块的输入端、激活函数模块的输入端和数据标准化模块的输入端连接,池化模块的输出端、激活函数模块的输出端和数据标准化模块的输出端与输入选择模块的输入端连接,输入选择模块的输出端与输出数据缓存的输入端连接;

输入选择模块用于选择对来自处理单元阵列的数据进行池化、标准化、或者激活函数操作;池化模块用于实现池化操作;数据标准化模块用于实现标准化操作;激活函数模块用于实现relu激活函数操作;输出选择模块用于选择将池化模块、数据标准化模块或激活函数模块中的一个作为结果输出到缓存架构中。

本发明进一步的改进在于,激活函数模块执行relu激活函数,其表达式如公式(4)所示:

f(x)=x(x>0);f(x)=0(x<=0)(4)

其中,公式(4)中x表示relu激活函数的输入,即为通道累加模块的输出结果,f表示激活函数模块的输出。

本发明具有如下有益的技术效果:

1、加速器架构面向shufflenet等轻量级网络,该类网络具有准确度较高,网络结构较简单,网络参数少的特点。

2、加速器采用了winograd算法来加速卷积运算,可以减少乘法次数,提升加速器速度,系统能效。

3、加速器支持卷积、池化、激活函数、标准化、全连接操作。可以一次完成多种操作,减少外存访问。

4、加速器完全可配置,包括输入、输出通道数、输入图像大小、卷积核大小、卷积步长。

5、加速器有三个片上缓存,缓存结构中提出了“交换输入输出数据缓存”的操作,对输入图像数据(行和列),和中间数据进行了数据复用,极大减少了外存读取,片上缓存读取,提升了能效。

6、加速器具有不同层次的高并行度:输入、输出通道并行,输入图像内部并行,卷积窗口内部并行,而且并行度可根据带宽修改。

7、可以在通用soc平台上集成加速器,可通过软件平台更便捷的配置多种网络结构。

综上所述,本发明面向物联网移动端领域,通过设计高并行度、高利用率的处理单元阵列以及合适的缓存架构,实现了低功耗、高性能要求,同时具有一定的可配置性,适用于多种轻量级卷积神经网络和部分深度神经网络。

附图说明

图1为本发明面向物联网领域的动态可重构卷积神经网络处理器架构示意图。

图2为输入数据缓存片外工作模式示意图。

图3为输出数据缓存片上工作模式示意图。

图4为处理单元结构示意图。

附图标记说明:

1为缓存架构,10为输入数据缓存,11为卷积核缓存,12为输出数据缓存;

2为处理单元阵列,21为输入数据转换模块,22卷积核转换模块,23为乘法器,24位输出数据转换模块,25为通道累加模块;

3为计算模块,31为池化模块,32为数据标准化模块,33为激活函数模块,34为输入选择模块,35为输出选择模块;

4为控制器。

具体实施方式

以下结合附图对本发明做出进一步的说明。

如图1所示,本发明提供的一种面向物联网领域的动态可重构卷积神经网络加速器架构,由缓存架构1、处理单元阵列2、计算模块3和控制器4四个部分组成。

本发明所提出的缓存架构1由输入数据缓存10、输出数据缓存12和卷积核缓存11三部分组成。缓存架构1作用是存储输入数据,临时中间数据,输出数据等。增加数据间的复用率,减少外部存储访问带来的高能耗和高延迟。输入数据缓存、输出数据缓存、卷积核缓存的大小由所要实现的卷积神经网络大小所决定。整个缓存架构有两种工作模式:

1)片外数据工作模式

适用于卷积神经网络的第一层,输入数据存储在输入数据缓存中,输出数据存储在输出数据缓存中,卷积核存储在卷积核缓存中。具体工作模式如图2所示。

2)片上数据工作模式

适用于卷积神经网络的中间层运算,输入数据来自输出数据缓存,卷积核来自卷积核缓存,输出的临时数据覆盖旧数据存储在输出数据缓存中。这样操作不用将临时数据存在片外,减少外存访问,但前提是临时数据大小合适,对于shufflenet等轻量级网络,临时数据较小,此操作具有可行性。具体工作模式如图3所示。

本发明所提出的缓存架构1由以下模块组成,具体的功能及实现如下:

1)输入数据缓存

输入数据缓存10从外部存储接收数据,一般为图像数据,并将数据按照约定结构输出到处理单元阵列2,作用是将大块的图像数据转为容易处理的小块数据,并且利用块与块之间“行与列”的数据重合,如图2所示,提高数据重复利用率。输入数据缓存10由两片存储器组成,两片存储器以“乒乓”得方式接受数据,即一块存储器接收数据另一块存储器输出数据,反之亦然。

2)输出数据缓存

输出数据缓存12接受来自处理单元阵列2或者计算模块3的数据,在缓存架构片上处理模式下,将输出数据再返回到处理单元阵列2或者计算模块3,进行下一批次处理。输出数据缓存12由多组存储器并列而成,数量根据所要实现的卷积神经网络而定。

3)卷积核缓存

卷积核缓存11存储每一层卷积神经网络的卷积核,并将数据按照约定结构输出到处理单元阵列。卷积核缓存11由多组存储器并列而成,数量根据所要实现的卷积神经网络而定。每层卷积神经网络的卷积核不同,所以卷积核存储中的数据需要在批次运算之后重新导入。

本发明所提出的处理单元阵列2由20个相同的处理单元组成,处理单元阵列2接收来自输入数据缓存10、输出数据缓存12或者卷积核缓存11的数据,输出数据传向输出数据缓存12。处理单元阵列2的作用是接收输入图像数据或者中间临时数据,进行不同步长、不同卷积核大小、不同图像大小的卷积操作。每个处理单元实现窗口为5*5的winograd算法。winograd算法的公式表示如下:

u=gfgt(1)

v=btinb(2)

out=at[u·v]a(3)

其中,公式(1)表示卷积核的转换,f矩阵为卷积核,g为转换矩阵,u为卷积核转换后的结果;公式(2)表示输入数据的转换,in矩阵表示输入数据,b为转换矩阵,v为输入数据转换后的结果;公式(3)表示输出数据转换,a为转换矩阵,out为最终的输出结果。

每个处理单元的结构如图4所示,由输入数据转换模块21、卷积核转换模块22、乘法器23、输出数据转换模块24和通道累加模块25五个模块组成。其中:

1)输入数据转换模块

输入数据转换模块21实现公式(2),将从输入数据缓存中输出的数据按列先进行转换,五个周期后可得到结果为5*5的矩阵。

2)卷积核转换模块

卷积核转换模块22实现公式(1),将从卷积核缓存中输出的数据按列先进行转换,五个周期后可得到结果为5*5的矩阵。

3)乘法器

每个处理单元有25个乘法器23,乘法器23执行转换后的输入数据和转换后的卷积核,实现两个5*5矩阵的矩阵点乘,得到一个5*5的矩阵。

4)输出数据转换模块

输出数据转换模块24实现公式(3),将乘法器23输出的5*5结果按列进行转换,得到一个5*5的新矩阵。

5)通道累加模块

对于每一个输入通道,输出数据转换模块24会产生一个5*5的矩阵,通道累加模块25将所有输入通道输出的矩阵进行加和,得到最终的卷积结果。

本发明所提出的计算模块3包含池化模块31、数据标准化模块32、激活函数模块33、输入选择器34和输出选择器35。计算模块3实现神经网络中除卷积层外其它层的操作,各个子模块分别对应池化层,激活函数relu层,batchnormalization层。计算模块3通过输入选择器连接在处理单元阵列2后,通过输出选择器连接在输出数据缓存12中,作用是处理卷积之后的数据。其中:

1)池化模块

池化模块31执行池化操作,即求取窗口中数据的最大值或者平均值。

2)激活函数模块

激活函数模块33执行relu激活函数,其表达式如公式(4)所示:

f(x)=x(x>0);f(x)=0(x<=0)(4)

公式(4)中x表示relu激活函数的输入,即为通道累加模块25的输出结果,f表示激活函数模块33的输出。

3)数据标准化模块

数据标准化模块32将每一层的输出数据做标准化处理,将结果传送到输出数据缓存12中。

4)输入选择模块和输出选择模块

输入选择模块34选择处理单元阵列2的输出数据进行入到池化模块31、激活函数模块33或者数据标准化模块32,输出选择模块35选择将那个模块的输出数据传送到输出数据缓存12中。

本发明所提出的控制器4向输入数据缓存10、输出数据缓存12、卷积核缓存11和输入选择模块34以及输出选择模块35发送控制信号,即通知输入数据缓存、卷积核缓存何时接受外部缓存的数据,何时将数据输送到处理单元阵列中;通知输出数据缓存何时接受来自计算模块或者处理单元阵列的数据;通知输入选择模块和输出选择模块选择进行卷积神经网络哪一层的操作选择。除此之外,还有连接外部总线的slave接口,将加速器内部缓存和寄存器进行了统一编址。

本发明的性能测试如下:

卷积神经网络加速器的评估指标最主要的是资源、速度和功耗。在测试中,选取轻量级卷积神经网络shufflenet作为目标,将其映射至加速器上。在性能和功耗测试中,将输入数据与卷积核读入到加速器中的输入数据缓存和卷积核缓存中,统计最终输出结果的时间,结合shufflenet网络的复杂程度,相除即可得到加速器的速度。功耗的大小取决于实现平台,在此选用xilinx的zynqxc7z102作为实现平台。加速器的资源如下表所示:

此外本发明与现有技术在的速度和功耗指标下的对比如下表:

由上表可以看出,在工作频率上虽然只有150mhz,但更具有实际意义的加速器计算速度的上,本发明达到了2137.2gop/s远远超过了同类型对比对象,同时功耗保持在一个可以接受的范围内,单位能耗速度达到了82.39gops/w,也好于其他对比对象。片上缓存大小只有0.781mb。

实施例

对于速度指标,本发明的优越性来自于处理单元阵列与缓存架构的设计。首先处理单元采用winograd卷积加速算法,例如对于5*5大小输入数据,3*3卷积核大小,步长为1的卷积操作,传统卷积需要引人入81次乘法操作,而本发表每个处理单元只需要引入25次乘法,此外处理单元阵列在卷积网络中,输入通道和输出通道都采取一定程度的并行性处理,使得卷积操作速度增快。另一方面,缓存架构有两种工作模式,在片上工作模式下,卷积神经网络中间层产生的数据不需要存储在片外,可以直接输送到下一层网络中,这是由于面向物联网轻量级的卷积神经网络模型如shufflenet,中间层数据量并不是很大,可以存储在片上。

对于资源和功耗指标,由于采用了winograd卷积加速算法,大量节省了乘法器资源,每个处理单元中的模块由简单逻辑构成,处理单元粒度较大,每个处理单元可以完成一个输入通道的运算操作,所以总共只使用了20个处理单元,节省了大量资源。加速器工作频率较低,同时片上缓存较小,可以大量节省功。

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