一种对支持多精度卷积神经网络处理器的设计方法与流程

文档序号:15493324发布日期:2018-09-21 21:05阅读:294来源:国知局
本发明涉及神经网络处理器,尤其涉及针对神经网络处理器的设计方法。
背景技术
::随着人工智能技术的发展,越来越多的研究着力于开发神经网络方面的应用。卷积神经网络是一种主流的神经网络类型,其可以被看作是具有良好的容错能力、并行处理能力和自学习能力一种多层感知器。其对于许多应用场景表现出了良好的计算能力和鲁棒性,尤其是在处理图形的应用中,能够高效地识别位移、缩放、扭曲,这使得卷积神经网络成为了深度学习中最常用的一种基准神经网络架构,被广泛地用于图像识别、视频追踪及自主导航等领域。通常,一个卷积神经网络包含卷积层、池化层、和全连接层,其中卷积层和全连接层的操作中均包含大量的卷积运算(全连接层可以看做是特征图及卷积核均为1×1的卷积操作)。有研究显示,在一个卷积神经网络的计算过程中,卷积运算的操作一般能占操作总量的90%以上,其可以包括通道间(输入、输出的特征图之间)的卷积运算、通道内(单个输入或输出的特征图内部)的卷积运算、及核级操作的卷积运算。如本领域所公知地,卷积运算可以被看作是从输入的特征图的一角开始,以与卷积核相同大小的窗口按照一定的步长移动,每次移动时均以特征图的窗口内的部分与卷积核中相应的元素相乘再相加以作为卷积结果中的一个元素,在按照所述步长完成全部移动之后可以获得卷积结果中的全部元素。这样的卷积运算中包含大量的乘、加、累加的操作,而卷积神经网络的算法中往往还需要以多次迭代的方式执行这样的卷积计算,这使得用于完成上述计算的处理器需要消耗极长的时间来完成极其大量的计算,并且要求处理器的硬件具有相应的存储容量。已有一些算法提出,可以通过改变卷积神经网络计算中所使用的数据的精度来适当地减少计算量。例如,在2017年的fpga会议上r.zhao等人发表的acceleratingbinarizedconvolutionalneuralnetworkswithsoftware-programmablefpgas以及y.umuroglu等人发表的finn:aframeworkforfast,scalablebinarizedneuralnetworkinference中均提出了类似的低精度卷积神经网络,所述低精度卷积神经网络以牺牲少量识别准确度的方式获取更高的性能,其所采用的数据位宽相对较低,可通过简单的逻辑进行实现,因而极大程度地节省了计算及存储资源。尽管低精度卷积神经网络具有其优势,这并不意味着采用全精度卷积神经网络是没有意义的。全精度及低精度的卷积神经网络在性能、功耗、准确度上各具优劣,实际应用场景中往往需要根据相应的需求进行选择,这便存在着对能够兼容全精度与低精度的卷积神经网络处理器的需求。例如,在针对一个视频文件逐帧地进行识别时,存在针对其中的某些帧图像需要快速地进行识别,而针对其他某些帧图像需要进行精准地识别,若是卷积神经网络处理器能够兼具对全精度、以及低精度的处理能力,则可以满足上述需求。在一些现有技术中已经提出了兼具采用全精度、以及低精度进行处理的能力的卷积神经网络处理器。然而这样的处理器大多是将用于处理全精度数据的硬件与用于处理低精度数据的硬件简单地组合在一起,并没有对硬件进行提高处理性能的优化设计。而现有的卷积神经网络处理器的设计方法(尤其基于现场可编程门阵列(fieldprogrammablegatearray,fpga)的设计方法)往往仅针对全精度的卷积神经网络或者仅针对低精度的卷积神经网络,这是由于现有技术中普遍认为低精度和全精度的卷积实现方式完全不同,使得他们所需的资源的类型也不相同。全精度的卷积神经网络以传统的窗口方式准确地计算卷积的结果,其卷积中的乘加操作可通过专用乘法器(digitalsignalprocessor,dsp)实现,片上存储通常采用随机存储块(blockrandomaccessmemory,bram)实现,并且,在执行完卷积运算之后还需要继续实施非线性激活函数(non-linearfunction)和池化(pooling)操作,因而需要与之匹配的存储资源。相比之下,低精度的卷积神经网络往往通过逻辑操作来实现卷积运算,例如二值化网络,在以逻辑电路获得了近似的卷积结果后,继续执行池化操作、归一化(batchnormalization,bn)及二值化(binarization)操作,因此其卷积计算消耗的主要资源为查找表(lookuptable,lut)和寄存器,片上存储通常采用基于查找表的存储器(lut-basedmemory,mlut)及bram等。现有技术中普遍认为并不存在能够针对支持多精度的卷积神经网络处理器的通用的设计方法,然而如前文中所述,由于卷积神经网络的各类精度在性能、功耗、准确度上各具优劣,实际场景中存在许多应用场景需要实时地在不同精度之间进行切换以满足不同的需求,或者需要通过混合精度来平衡分类结果的准确度与资源的使用情况。因此,需要提供一种能够支持多精度的卷积神经网络处理器的设计方法。技术实现要素:因此,本发明的目的在于克服上述现有技术的缺陷,提供一种对支持多精度卷积神经网络处理器的设计方法,包括:1)针对卷积神经网络处理器所需支持的多精度中的每一个,确定在该精度下需要的片上资源,所述在该精度下需要的片上资源表示为所述卷积神经网络处理器的计算核单元的并行化参数的函数;2)根据所述计算核单元可利用的最大片上资源、以及所述卷积神经网络处理器所支持的每个精度下需要的片上资源,将所述卷积神经网络处理器的计算吞吐量或计算时延作为优化目标,计算获得针对所述计算核单元的并行化参数。优选地,根据所述方法,所述并行化参数包括以下一项或多项参数:针对卷积神经网络的多个网络层所设置的流水线的级数、各级所述流水线中所包含的网络层的数量、通道间的循环展开参数、通道内的循环展开参数、核间的循环展开参数、通道间的循环分块参数、通道内的循环分块参数、核间的循环分块参数、批处理参数。优选地,根据所述方法,其中步骤2)包括:利用贪心算法求解所述通道间的循环展开参数、和/或所述通道内的循环展开参数、和/或所述核间的循环展开参数、和/或所述通道间的循环分块参数、和/或所述通道内的循环分块参数、和/或所述核间的循环分块参数、和/或所述批处理参数。优选地,根据所述方法,其中步骤2)包括:将所述计算核单元中的至少部分作为一个基因片段,采用遗传算法求解所述针对卷积神经网络的多个网络层所设置的流水线的级数、和/或所述各级所述流水线中所包含的网络层的数量。优选地,根据所述方法,其中步骤1)还包括:选择卷积神经网络处理器所采用的计算核单元的可编程器件以及访存通信单元;步骤2)还包括:根据所选择的所述访存通信单元所消耗的片上资源,确定所述卷积神经网络处理器的计算核单元可利用的最大片上资源。优选地,根据所述方法,所述计算核单元为脉动阵列、或1-d、或2-d的可编程器件或它们的组合,所述访存通信单元为总线接口、或万兆以太网的器件或它们的组合。优选地,根据所述方法,所述片上资源包括:计算资源、和/或存储资源、和/或访存资源;所述计算资源包括以下至少一项:全精度网络所需的乘法器的数量、低精度网络的逻辑门所需的查找表的数量、低精度网络的逻辑门所需的寄存器的数量、低精度网络的汉明计数所需的查找表的数量、低精度网络的汉明计数所需的寄存器的数量、低精度网络所需的计算位宽的数量;所述存储资源包括以下至少一项:全精度网络所需的随机存储块的数量、低精度网络用于存储所需的查找表的数量。优选地,根据所述方法,所述吞吐量的表示为其中f为卷积神经网络处理器的频率,并且f为片上资源的函数,max(ncycle)为卷积神经网络处理器完成计算所需的时钟周期数的最大值。以及,一种计算机可读存储介质,其中存储有计算机程序,所述计算机程序在被执行时用于实现上述任意一项所述的方法。以及,一种用于设计支持多精度卷积神经网络处理器的系统,包括:处理器、和存储装置,其中所述存储装置用于存储计算机程序,所述计算机程序在被所述处理器执行时用于实现上述任意一项所述的方法。与现有技术相比,本发明的优点在于:提供了一种能够支持多精度的卷积神经网络处理器的设计方法,以获得经过设计的可支持全精度和低精度的处理器。通过该方法获得的处理器可以在使用过程中实时地在不同的精度之间切换以满足应用场景的需要,。在设计的过程中对处理器的计算吞吐量或计算时延进行优化,使得所获得的处理器可以表现出良好的计算吞吐量或计算时延。根据本发明的方法可以采用fpga作为设计平台,处理器的各个器件以可编程器件的方式进行设计,以较短的周期开发出具有低功耗并且可灵活地重新配置的处理器。并且,根据本发明的方法,设计者在设计卷积神经网络处理器时可以灵活地选择任意期望的并行策略,例如选择通道间、通道内、核级的并行化参数以加快诸如卷积运算的速度、选择网络层间所设置的流水线级数以提高针对连续输入的数据的处理能力、选择批处理参数以缓解带宽造成的瓶颈等。此外,对于引入了相对较多种类的并行化参数进行求解,需要在庞大的探索空间中求解的情况,本发明还提出了可以通过将遗传算法嵌套贪心算法的启发式算法求解,从而有效地对不同精度的卷积神经网络进行探索。附图说明以下参照附图对本发明实施例作进一步说明,其中:图1是根据本发明的一个实施例的对支持多精度卷积神经网络处理器的设计方法的流程图;图2-1是根据本发明的一个实施例的卷积神经网络处理器的结构图;图2-2是根据本发明的一个实施例的如图2-1中一级流水线的结构图;图2-3是根据本发明的一个实施例的如图2-2中基本处理单元的结构图;图2-4是根据本发明的一个实施例的如图2-3中基本运算子单元的结构图;图3-1是对采用本发明的方法而获得的卷积神经网络处理器进行测试所获得的全精度网络的运行效果的结果;图3-2是对采用本发明的方法而获得的卷积神经网络处理器进行测试所获得的低精度网络的运行效果的结果。具体实施方式下面结合附图和具体实施方式对本发明作详细说明。本发明提供了一种对支持多精度卷积神经网络处理器的设计方法。考虑到采用gpu设计获得的处理器的功耗相对较大、而采用专用集成电路(asic)的研发周期通常较长,因而在本发明中采用了fpga作为设计方法的目标平台,以基于fpga平台以较短的周期开发出具有低功耗并且可灵活地重新配置的处理器。基于fpga的卷积神经网络处理器的开发主要是在寄存器传输级(registertransferlevel,rtl)上完成,以基本处理单元(processingengine,pe)作为设计的最小单元,通过对计算资源与存储资源的分配以及一定的设计空间探索方法来确定针对pe或包含多个pe的计算核单元的并行参数。在本发明中,设计空间探索方法的输入包括可编程器件的资源参数、卷积神经网络的实现精度及结构参数等,以吞吐量或计算时延作为优化目标。并且,为了达到较高的吞吐量或较短的时延,本发明中可以引入多类并行化参数以用于进行设计空间探索从而提高卷积神经网络处理器中硬件的并行度,例如,可以采用多个具有不同参数的pe来提升卷积神经网络的各个网络层之间并行度、以及三维卷积下的并行度(即通道间、通道内及核间的并行度)、以及批处理能力等。本领域所定义的卷积神经网络的全精度与低精度的数据位宽之间存在非常大的差异。例如,在y.umuroglu等人的文章中将采用大于等于4bit的数据位宽定义为全精度,将采用小于4bit的数据位宽定义为低精度。本领域中普遍将直接代表实数值的(32-bit的)浮点型数据、以及(包括但不限于16-bit、8-bit等的)定点型数据定义为全精度,将代表实数的近似值的二值化(1-bit)数据或三值化(2-bit)数据等定义为低精度。如
背景技术
:中所介绍地,全精度和低精度在计算资源与存储资源方面的需求并不相同。通常全精度的卷积采用乘加器实现,受到并行度的限制,其片上存储的位宽往往不高而深度较深;低精度的卷积通常采用逻辑操作实现,由于比特位宽的降低极大提升了可实现的最大并行度,其片上存储的位宽较高而深度较低。考虑到通过面向fpga的设计方法而获得的处理器在所支持的精度、并行策略与探索效率方面存在显著差异,本发明将对上述三个方面进行改进。对于第一方面,本发明提出建立能够支持不同精度的模型库,在所述模型库中包括与全精度的卷积、低精度的卷积相对应的计算资源与存储资源模型,以及将比特位宽作为可调参数的通信模型。对于第二方面,本发明在设计空间探索中采用多类并行策略不同的基本处理单元以提升层间并行度,采用批处理以平衡存储资源与带宽,其中,单一并行策略的基本处理单元为前者的特殊情况;此外,基本处理单元内的并行策略包含通道间、通道内、核间的循环展开与循环分块策略以适应不同规模的网络。针对第三个方面,发明人将该设计空间探索问题分解为两个子问题,即层间并行度的探索及每个基本处理单元内并行策略的探索,采用遗传算法、贪心算法嵌套的启发式算法求解,即可有效地对不同精度的卷积神经网络进行探索实现较高性能。下面将通过具体的实施例详细地进行介绍。参考图1,根据本发明的一个实施例,对支持多精度卷积神经网络处理器的设计方法,包括:步骤1.选择卷积神经网络处理器所采用的计算核单元的可编程器件以及访存通信单元。图2-1示出了根据本发明的一个实施例的所设计的卷积神经网络处理器的结构示意图。如图2-1所示,卷积神经网络处理器100通过可编程器件来实现,其中包括计算核单元10、访存通信单元20、和存储器30。其中,所述计算核单元10作为卷积神经网络处理器中的一个部件,主要用于执行卷积神经网络的计算操作,通过确定针对所述计算核单元10的并行化参数(即将多少个计算核单元以何种并行的方式组合在一起)则可以确定一个卷积神经网络处理器的硬件结构。访存通信单元20,用于实现计算核单元10、存储器30、外部设备间的访存和通信。存储器30,用于对需要计算核单元10处理的数据或经由计算核单元10处理而获得的中间处理结果进行读取和写入。在步骤1中需要对所设计的卷积神经网络处理器采用的计算核单元10和访存通信单元20进行选择。考虑到本实施例中,以fpga的方式来设计支持多精度卷积神经网络处理器,而如前文中所述,在寄存器传输级上完成对处理器的设计需要通过资源分配的方式来实现。这里选择所采用的计算核单元的原因在于,可以在随后的步骤中对所述计算核单元进行片上资源的分配。而在此步骤中选择访存通信单元的原因在于,用于执行访存和通信操作的访存通信单元本身也需要消耗一定的片上资源,通过确定所选择的访存通信单元可以在随后的步骤中确定总共具有多少片上资源可供计算核单元所使用,从而进一步地确定在计算核单元可利用的最大片上资源的限制下,采用何种并行化参数可以使得所获得的卷积神经网络处理器的性能最优,例如使得计算吞吐量最大、或计算时延最小。在本发明中,可以根据设计的需要选择任意恰当的计算核单元和/或访存通信单元。例如,选择脉动阵列、或1-d、或2-d的可编程器件或它们的组合以作为计算核单元,选择总线接口、或万兆以太网的器件或它们的组合以作为访存通信单元。在图2-1所示出的实施例中,计算核单元10中包含m级流水线50,每级流水线50针对卷积神经网络中不同的网络层。在使用时,各个网络层可以以流水线的方式进行处理,从而节省处理时间。在一些现有的卷积神经网络处理器中也会采用这样的方式,我们将其称作为层间并行。在设计这样的卷积神经网络处理器时,可以将所采用的流水线50的级数m、每级流水线50包含的网络层{nj1,...,njk}作为需要确定的并行化参数(这里可以将采用流水线的方式称作为层间并行策略),nj1…njk表示卷积神经网络中分配给该流水级进行计算的网络层序号。在选择卷积神经网络处理器所采用的计算核单元时,还可以一并确定期望该卷积神经网络处理器所支持的精度,可以根据需要在计算核单元10中设置相应的硬件结构。在本发明中,只要在计算核单元10中具有用于全精度计算的乘法器、加法器、片上存储等、以及用于低精度计算的逻辑电路、查找表、寄存器等,则该硬件结构可以满足处理多精度数据的能力。图2-2示出了根据本发明的一个实施例的对图2-1中计算核单元10中至少一级流水线50的内部硬件结构示意图。参考图2-2,其中,数据存储子单元14用于从前一级流水线50处接收数据或者向下一流水线50传输数据;控制子单元12用于控制数据存储子单元14的开启、暂停、以及提供相应的读写地址;基本处理单元11用于计算和处理数据,针对不同精度所采用的基本处理单元11的硬件存在差异,例如全精度的基本处理单元中可以包括乘法器、和加法器,而低精度的基本处理单元中可以包括逻辑电路、查找表、寄存器等;加法树/汉明计数15,用于执行加法运算,对于与全精度的基本处理单元11对应时一般采用加法树,相对地针对低精度一般采用汉明计数。图2-2中示出了通道间的循环展开参数pin和pout,其中pin是通道间针对输入的循环展开参数(即该实施例中针对从前一级流水线50处接收数据的数据存储子单元14的操作量),pout是通道间针对输出的循环展开参数(即该实施例中针对向下一流水线50传输数据的数据存储子单元14和/或加法树/汉明计数15的操作量)。图2-3示出了根据本发明的一个实施例的对图2-2中基本处理单元11的内部硬件结构示意图。其中,包括用于数据移位的数据移位寄存器116、用于寄存参数移位的参数移位寄存器117、用于执行具体的计算操作的基本运算子单元113、用于存储数据的数据存储子单元114。图2-3中示出了通道内的循环展开参数poy和pox,其中poy是输出纵向尺寸的并行度参数(即该实施例中针对数据移位寄存器116、基本运算子单元113、数据存储子单元114在纵向上的操作量),pox是输出横向尺寸的并行度参数(即该实施例中针对基本运算子单元113、参数移位寄存器117在横向上的操作量)。图2-4示出了根据本发明的一个实施例的对图2-3中基本运算子单元113的内部硬件结构示意图。其中,包括用于对参数及输入数据进行移位的参数及数据移位寄存器216、用于执行更小规模的运算的基本运算子单元213、和用于对基本运算子单元213计算获得的结果执行加法运算的加法树/汉明计数215。图2-3中示出了核间的循环展开参数pky和pkx,其中pky是卷积核纵向的并行度参数(即该实施例中基本运算子单元213、加法树/汉明计数215在纵向上的操作量),pkx是卷积核横向的并行度参数(即该实施例中基本运算子单元213在横向上的操作量)。通过上述图1、以及图2-1至图2-4示出了根据本发明的一个实施例的计算核单元内部的硬件布局和并行度参数(通道间、通道内、核间的循环展开参数)之间的关系。可以理解,在设计卷积神经网络处理器时,还可以根据需要选择其他并行度参数,例如通道间、通道内、核间的循环分块参数、批处理参数、流水线级数、每级流水线所针对的网络层等。步骤2.针对卷积神经网络处理器设计所期望支持的每个精度,获得在该精度下需要的计算资源、存储资源、和访存资源的表达式,所述需要的计算资源、存储资源、和访存资源的表达式均为并行化参数的函数。这里确定需要的计算资源、存储资源、和访存资源的表达式的过程可以被理解为是一种建模过程,将上述资源表达为并行化参数的函数以便在随后的步骤中通过选择恰当的并行化参数来优化卷积神经网络处理器的性能。根据本发明的一个实施例,结合图1、以及图2-1至图2-4所示出的期望卷积神经网络所具有的基本硬件结构,可以对上述资源进行建模。这里选择以下并行化参数进行建模,包括:流水线级数{m},即针对卷积神经网络中的多个网络层以流水线的方式并行地进行处理时所划分的流水线的级数;流水线中的每一级所包含的网络层即每一级流水线是针对几个网络层而设置;通道间、通道内、核间的循环展开参数{pin,pout,pox,poy,pkx,pky},即同一时刻内通道间、通道内、核间可同时计算的操作量;其中,pin是通道间针对输入的循环展开参数,pout是通道间针对输出的循环展开参数,poy是输出纵向尺寸的循环展开参数,pox是输出横向尺寸的循环展开参数,pky是卷积核纵向的循环展开参数,pkx是卷积核横向的循环展开参数;通道间、通道内、核间的循环分块参数{tin,tout,tox,toy,tkx,tky},即同一时刻内通道间、通道内、核间可缓存到片上的数据量;其中tin是通道间针对输入的循环分块参数,tout是通道间针对输出的循环分块参数,toy是输出纵向尺寸的循环分块参数,tox是输出横向尺寸的循环分块参数,tky是卷积核纵向的循环分块参数,tkx是卷积核横向的循环分块参数;批处理参数bs,即可同时计算的输入特征图的数量。基于图1、以及图2-1至图2-4的硬件结构,采用上述并行化参数对计算资源、存储资源、和访存资源进行建模的结果如下:针对计算资源:全精度网络中的单个基本处理单元11所需的专用乘法器的数量为ndsp=pin·pout·pox·poy·pkx·pky。低精度网络中,由于一个x-bit位宽的一个逻辑门(例如,或门、异或门、与门)所需的查找表及寄存器个数均为x,一个x-bit位宽的汉明计数所需查找表个数为x、寄存器个数为x+1,又由于单个基本处理单元11的计算位宽为nbw=pin·pout·pox·poy·pkx·pky,因此单个基本处理单元11所需的查找表及寄存器的个数可通过遍历上述计算过程估算得到。针对存储资源:全精度网络中的单个基本处理单元11所需随机存储块的个数为其中,bdepth为在指定位宽下单个随机存储块的深度,为批处理相关可调参数,由于批处理会将全连接层中间数据结果的存储需求增加bs倍,因此当网络层t为全连接层时为bs,否则为1。对于低精度网络,由于数据存储子单元14、114还可用基于查找表的存储器来实现,因此单个基本处理单元11用于存储的查找表的个数为其中nlut为实现一个基于查找表的存储器所需查找表的个数,lw、ld分别为单个基于查找表的存储器的位宽及深度。针对访存:单级流水线对外的访存需求为,其中,及为可调参数,当片上资源足以存储对应的数据时其值为0,即无对外访存,否则为1。bitd、bitw及bitbias为数据、参数及偏置量位宽,全精度与低精度网络可根据自身精度需求确定对应的数据位宽值。由此,可以针对卷积神经网络处理器设计所期望支持的每个精度,在该精度下需要的计算资源、存储资源、和访存资源表示为并行化参数的函数。步骤3.根据所选择的所述访存通信单元所消耗的片上资源,确定所述卷积神经网络处理器的计算核单元可利用的最大片上资源。可以理解,除计算核单元之外,卷积神经网络处理器中的访存通信单元本身也需要消耗片上资源。在去除了为访存通信单元所预留的片上资源后,便可以确定有多少片上资源可供计算核单元所使用。因此,在此步骤中,可以提取所选择的访存通信单元的占用各类片上资源的信息,结合可编程器件所提供的资源及带宽的上限,确定在针对计算核单元确定对应的并行化参数时对计算资源、存储资源、及带宽的约束。例如,对于fpga的arria10gtx1150芯片而言,其可提供的总的片上资源是427200个可编程逻辑资源(alm),在确定了访存通信单元所预留的片上资源后,例如连接ddr3的通信单元需消耗32862个alm,将fpga平台可提供的总的片上资源减去为访存通信单元所预留的片上资源即可获得可供计算核单元所使用的最大片上资源,即394388。步骤4.根据所述计算核单元可利用的最大片上资源、以及所述卷积神经网络处理器所支持的每个精度下需要的片上资源,将所述卷积神经网络处理器的计算吞吐量(或计算时延)作为优化目标,计算获得针对所述计算核单元的并行化参数。在获得了在各个精度下采用并行化参数而表达的对计算资源、存储资源、和访存资源的需求后,可以对卷积神经网络的设计空间探索进行问题抽象。如前文所述,卷积神经网络处理器的计算资源及带宽使用不能超过预期上限值,因此可以将能够分配给计算核单元的最大片上资源作为资源分配时的约束条件。并且,为了优化通过根据本发明的方法设计获得的卷积神经网络处理器的性能,可以将使得卷积神经网络处理器的计算吞吐量最大化、或者计算时延最小化作为优化目标,来求解对应的并行化参数。在设计卷积神经网络处理器时,若是希望处理器的批处理参数bs=1,即同时计算的输入特征图的数量为1,此时既可以将使得计算吞吐量最大化作为优化目标,也可以将使得计算时延最小化作为优化目标。若是希望处理器的批处理参数bs>1,即可以同时对多幅输入特征图进行计算,则可以考虑以计算吞吐量最大化为优化目标。在此实施例中,以所述卷积神经网络处理器的计算吞吐量作为优化目标来确定对应的并行化参数。假设,目标器件的专用乘法器、随机存储块、查找表、寄存器及带宽上限分别为bwtotal,可通过设计所选用的目标器件板确定。则卷积神经网络的设计空间探索问题可以描述为:优化目标:即使得计算吞吐量最大,其中ncycle为流水级完成一次图像计算所需的时钟周期数。约束条件:即为各精度所需计算及存储资源resource(p,t)小于等于为目标器件可提供的资源上限即处理器的频率f小于等于资源对频率的限制fresource以及带宽对频率的限制这两者中较小的取值。由于循环展开参数应尽可能为卷积神经网络结构参数的公因数,以保证计算资源时刻得到充分利用,因此各级流水完成计算所需的时钟周期数为根据上述优化目标和约束条件,可以求解各个并行化参数。在本发明中,并不限制所采用的求解算法,设计者可以根据需要选择合适的算法求解,例如,贪心算法、遗传算法、梯度下降法,等等。根据本发明的一个实施例,可以采用贪心算法求解批处理参数以及通道间、通道内、核间的循环展开参数及循环分块参数,由此可以有指向性的快速求解;采用遗传算法求解针对卷积神经网络的多个网络层所设置的流水线的级数以及各级所述流水线中所包含的网络层的数量,使得可以快速收敛到较优解。这里还可以采用遗传算法嵌套贪心算法的方式一次性地求解上述全部并行化参数,将卷积神经网络的前馈运算建模为一个基因链,将所述各类基本处理单元模块及其所需计算的网络层建模为其中的一个基因片段,这样做的好处在于采用贪心算法能够有指向性的快速求解详细并行策略,采用遗传算法能够快速收敛到较优解,采用嵌套的方式能够兼顾并行策略与网络层划分间的关系能够综合地以较快速度搜索到较优解。所述遗传算法部分用于求解层间并行化参数,所述贪心算法部分用于求解通道间、通道内、核间并行化参数及批处理参数。包含选取、变异、交叉操作。选取是根据父代群体成本函数的排序,保留前gs个最优结果遗传给下一代,交叉是对随机选取的两个父代划分方式,在cnn的n-1个分割点中随机选取一点并交换该点之前的全部流水级划分标记。变异是对随机选取的一个父代划分方式,随机选取一个分割点并对其划分标记取反,例如,若该点被标记为流水级分割点,则取消该标记,将已有的两级流水合并为一级。算法的成本函数与问题建模中的优化目标相同,例如实现吞吐量的最大化。结合图1、图2-1至图2-4所示出的结构、以及在前述步骤中确定的在各个精度下所需的由并行化参数所表示的片上资源的函数,采用下述遗传算法嵌套贪心算法的方式,将所述卷积神经网络处理器的计算吞吐量作为优化目标,求解针对所述计算核单元的并行化参数的方法,包括:步骤4.1.初始化种群,将卷积神经网络的前馈运算建模为一个基因链,将所述各类基本处理单元模块及其所需计算的网络层建模为其中的一个基因片段;步骤4.2.将循环分块参数t=<tin,tout,tox,toy,tkx,tky>赋值为片上存储全部中间数据结果及参数,将批处理参数赋值为bs=1;步骤4.3.判断片上存储资源需求nbram、nmlut是否满足约束若满足则转至步骤4.5,否则转至步骤4.4;步骤4.4.减小循环分块参数t=<tin,tout,tox,toy,tkx,tky>,转至步骤4.3;步骤4.5.将循环展开参数赋值为得到的循环分块参数,即<pin,pout,pox,poy,pkx,pky>=<tin,tout,tox,toy,tkx,tky>;步骤4.6.判断片上计算资源需求ndsp、nlut、nreg是否满足约束及若满足则转至步骤4.8,否则转至步骤4.7;步骤4.7.减小循环展开参数p=<pin,pout,pox,poy,pkx,pky>,转至步骤4.6;步骤4.8.估算加速器最大频率f;步骤4.9.判断加速器最大频率是否带宽受限及片上存储是否可存储多幅图像,若是则转至步骤4.10,否则转至步骤4.11;步骤4.10.批处理参数增bs=bs+1,估算片上存储资源需求nbram、nmlut及加速器最大频率f,转至步骤4.9;步骤4.11.估算成本函数即预期吞吐量;步骤4.12.选择,交叉,变异;步骤4.13.判断是否达到迭代上限,若不是则转至步骤4.2,否则结束。通过上述步骤则可以完成以计算吞吐量为优化目标,计算获得针对所述计算核单元的并行化参数。至此,完成了对卷积神经网络处理器的优化设计。为了验证采用根据本发明的方法所获得的支持多精度的卷积神经网络处理器的性能,发明人针对intelalteraarria10芯片的目标器件进行了测试。图3-1示出了针对处理器采用全精度网络alexnet计算时完成任务的运行时间,图3-2为了针对处理器采用低精度网络bnn计算时完成任务的运行时间,其中横坐标为求解出的流水级数,纵坐标为各级流水线运算所需的运行时间,整个处理器计算一幅图的时间等于各级流水线的运行时间中的最大值。这里,吞吐量=总操作数/计算单附图的总时延,其中总操作数对于给定的网络模型是已知的,从图中可以看出总时延是多少,即各流水级中的最大时延,然后做除法即可获得性能指标,即吞吐量。从图3-1和3-2中可以看出各级流水的运行时间相对均匀,保证了各流水级具有较小的空闲时间。并且,全精度网络alexnet包含8个流水级,最高性能达到1510.34gops;低精度网络bnn包含5个流水级,最高性能达到70.06tops,都实现了较高的性能。综合本发明的实施例可以看出,本发明提供了一种能够支持多精度的卷积神经网络处理器的设计方法,以获得经过设计的可支持全精度和低精度的处理器。通过该方法获得的处理器可以在使用过程中实时地在不同的精度之间切换以满足应用场景的需要,例如针对一个视频中的某些帧采用全精度进行处理以获得准确的图像识别结果,针对某些帧采用低精度进行处理以快速地识别图像中大致包含的内容。在设计的过程中对处理器的计算吞吐量或计算时延进行优化,使得所获得的处理器可以表现出良好的计算吞吐量或计算时延。根据本发明的方法可以采用fpga作为设计平台,处理器的各个器件以可编程器件的方式进行设计,以较短的周期开发出具有低功耗并且可灵活地重新配置的处理器。并且,根据本发明的方法,设计者在设计卷积神经网络处理器时可以灵活地选择任意期望的并行策略,例如选择通道间、通道内、核级的并行化参数以加快诸如卷积运算的速度、选择网络层间所设置的流水线级数以提高针对连续输入的数据的处理能力、选择批处理参数以缓解带宽造成的瓶颈等。此外,对于引入了相对较多种类的并行化参数进行求解,需要在庞大的探索空间中求解的情况,本发明还提出了可以通过将遗传算法嵌套贪心算法的启发式算法求解,从而有效地对不同精度的卷积神经网络进行探索。需要说明的是,上述实施例中介绍的各个步骤并非都是必须的,本领域技术人员可以根据实际需要进行适当的取舍、替换、修改等。最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制。尽管上文参照实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,对本发明的技术方案进行修改或者等同替换,都不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1