神经网络处理装置、控制方法以及计算系统

文档序号:1525399 发布日期:2020-02-11 浏览:5次 >En<

阅读说明:本技术 神经网络处理装置、控制方法以及计算系统 (Neural network processing device, control method, and computing system ) 是由 杨康 李鹏 韩峰 谷骞 于 2018-11-28 设计创作,主要内容包括:提供一种神经网络处理装置、控制方法以及计算系统。该神经网络处理装置包括:计算电路;控制电路,根据一条目标指令,控制计算电路执行神经网络的至少两个层对应的计算。采用“一条”目标指令实现神经网络的至少两层的计算,使得保证神经网络处理装置灵活性的前提下,减少了控制信号的占比,节省了神经网络处理装置的功耗和面积,从而能够提高神经网络处理装置的性能。(Provided are a neural network processing apparatus, a control method, and a computing system. The neural network processing apparatus includes: a computing circuit; and the control circuit controls the calculation circuit to execute the calculation corresponding to at least two layers of the neural network according to a target instruction. The calculation of at least two layers of the neural network is realized by adopting the &#39;one&#39; target instruction, so that the occupation ratio of control signals is reduced on the premise of ensuring the flexibility of the neural network processing device, the power consumption and the area of the neural network processing device are saved, and the performance of the neural network processing device can be improved.)

神经网络处理装置、控制方法以及计算系统

版权申明

本专利文件披露的内容包含受版权保护的材料。该版权为版权所有人所有。版权所有人不反对任何人复制专利与商标局的官方记录和档案中所存在的该专利文件或者该专利披露。

技术领域

本申请涉及人工智能领域,并且更为具体地,涉及一种神经网络处理装置、控制方法以及计算系统。

背景技术

随着神经网络技术的发展,神经网络处理装置的应用越来越广。

传统的神经网络处理装置有些灵活性较差,有些计算性能较差,无法满足人们对神经网络计算的性能要求。

发明内容

本申请提供一种神经网络处理装置、控制方法以及计算系统,能够提高神经网络处理装置的性能。

第一方面,提供一种神经网络处理装置,包括:计算电路;控制电路,根据一条目标指令,控制所述计算电路执行神经网络的至少两个层对应的计算。

第二方面,提供一种神经网络的计算系统,包括:如第一方面所述的神经网络处理装置;处理器,用于为所述神经网络处理装置分配计算任务。

第三方面,提供一种神经网络处理装置的控制方法,包括:根据一条目标指令,控制所述神经网络处理装置中的计算电路执行神经网络的至少两个层对应的计算。

第四方面,提供一种计算机可读存储介质,其上存储有用于执行第三方面所述的方法的指令。

第五方面,提供一种计算机程序产品,包括用于执行第三方面所述的方法的指令。

采用“一条”目标指令实现神经网络的至少两层的计算,使得保证神经网络处理装置灵活性的前提下,减少了控制信号的占比,节省了神经网络处理装置的功耗和面积,从而能够提高神经网络处理装置的性能。

附图说明

图1是本申请一个实施例提供的神经网络处理装置的示意性结构图。

图2是本申请另一实施例提供的神经网络处理装置的示意性结构图。

图3是本申请实施例提供的神经网络处理装置的控制方法的示意性流程图。

图4是本申请实施例提供的目标指令的一个示例图。

图5是本申请实施例提供的目标指令的另一示例图。

具体实施方式

本申请提供的神经网络处理装置也可称为神经网络处理器或神经网络加速器。该神经网络处理装置可以是专用的神经网络处理装置,如可以是专门用于神经网络计算的硬件电路或芯片。

本申请提及的神经网络处理装置可用于计算各种类型的神经网络,如卷积神经网络(convolutional neural network,CNN)或递归神经网络(recurrentneural networks,RNN)。

神经网络通常具有多层结构。为了便于理解,下面以卷积神经网络为例,对神经网络的多层结构进行举例说明。

卷积神经网络可以包括一个或多个卷积层。此外,卷积神经网络还可以包括其它层。该其它层可以是以下层中的一种或多种:池化层、激活层、按元素操作层(elementwise层)。

神经网络的计算量通常比较大,因此,如何进行高性能的神经网络计算成为人们关注的重点。

为了满足一定的灵活性,在进行神经网络计算之前,传统的神经网络处理装置先采用多条指令对神经网络的每个层进行配置。可以理解的是,指令的内容与期望的神经网络结构(神经网络结构可以采用预先训练的方式训练得到)有关,而不同的神经网络结构能够用于实现不同的功能。换句话说,用户可以根据指令配置出不同的神经网络结构,从而实现不同的神经网络功能。

例如,当用户希望神经网络处理装置用于图像定位时,可以利用指令对神经网络的每个层进行配置,使配置出的神经网络结构具有图像定位功能。又如,当用户期望神经网络处理装置用于图像分类时,可以利用指令对神经网络的每个层进行配置,使配置出的神经网络结构具有图像分类功能。

对于传统的神经网络处理装置,神经网络的每个层需要采用一条或多条指令进行配置。指令通常通过控制信号承载,因此,指令越多,意味着控制信号的占比越大。控制信号的占比过大会导致神经网络处理装置的整体性能较差。例如,控制信号的占比越大,意味着神经网络处理装置的功耗越大;控制信号的占比越大,意味着神经网络处理装置的结构也就越复杂,其所占的面积也就越大。

为了提高神经网络处理装置的整体性能,下文本申请实施例提供的神经网络处理装置进行介绍。

如图1所示,本申请实施例提供的神经网络处理装置1可以包括计算电路2和控制电路4。

计算电路2可用于执行神经网络的多个层对应的计算。计算电路2的具体形式与神经网络的类型有关,本申请实施例对此并不限定。

以卷积神经网络为例,如图2所示,计算电路2可以包括第一计算电路21和第二计算电路22。第一计算电路21可用于执行神经网络的卷积层对应的计算;第二计算电路22可用于执行神经网络的其它层(如池化层、激活层或按元素操作层中的至少一层)对应的计算。

第一计算电路21例如可以包括处理引擎阵列(process engine array)和芯片上的网络(network on chip,NOC)。

处理引擎阵列可以简称PE阵列。该PE阵列可以包括多个PE。该多个PE可用于执行卷积操作中的矩阵乘法操作。因此,该PE阵列也可称为卷积专用加速器。

NOC可用于实现PE阵列与外界的通讯和控制。例如,外部可以通过NOC对PE阵列中的每个PE的计算对象和计算时序进行控制。

第二计算电路22可用于实现偏置操作、激活操作和池化操作中的一种或多种。作为一种可能实现方式,第二计算电路22可以包括以下电路中的至少一种:用于实现偏置操作的偏置电路,用于实现激活操作的激活电路以及用于实现池化操作的池化电路。

应理解,图2示出的第一计算电路21和第二计算电路22仅是第一计算电路21和第二计算电路22的一种可能的实现方式,本申请实施例不限于此,还可以采用其他方式实现。例如,第一计算电路21也可以仅由多个乘累加单元组成;第二计算电路22可以包括用于实现按元素操作层对应的计算的电路。

需要说明的是,上文是以卷积神经网络为例进行说明的,当神经网络处理装置1用于执行其他类型的神经网络(如递归神经网络)计算时,计算电路2还可以采用完全不同的实现方式。

控制电路4可以根据指令控制计算电路2执行神经网络计算。不同于传统神经网络处理装置的控制方式,在本申请实施例中,控制电路4可以根据接收到的“一条”目标指令,控制计算电路2执行神经网络的“至少两个层”对应的计算。

本申请实施例采用“一条”目标指令实现神经网络的至少两层的计算,在保证神经网络处理装置的灵活性的前提下,减少了控制信号的占比,节省了神经网络处理装置的功耗和面积。因此,本申请实施例提供的神经网络处理装置更适于高性能神经网络计算。

目标指令可用于对神经网络的至少两个层进行配置,因此,该目标指令可以包含神经网络的至少两个层的配置参数。目标指令中的配置参数可用于指示该至少两个层的计算方式或实现方式。

目标指令配置的至少两个层可以包括功能相同的层,也可以是功能不同的层的组合。以卷积神经网络为例,该至少两个层可以是两个卷积层,也可以是卷积层与其它层(如池化层、激活层、按元素操作层)中的一个或多个层的组合。同理,以递归神经网络为例,该至少两个层可以是递归神经网络的输入层、隐藏层、输出层的任意组合。

目标指令对神经网络的至少两个层进行配置实际上是对实现该至少两个层对应的计算的计算电路进行配置。因此,目标指令包含该至少两个层的配置参数也可理解为:目标指令包括用于执行该两个层对应的计算的计算电路的配置参数。该配置参数可用于指导计算电路执行相应的神经网络层的计算,如指导数据的读取方式,操作方式,输出方式等。

目标指令的内容具体可以包括以下参数中的一种或多种:卷积层的配置参数;池化层的配置参数;激活层的配置参数;按元素操作层的配置参数;偏置单元的参数。

卷积层的配置参数可用于对计算电路中的卷积电路进行配置。如配置卷积电路中的计算单元的计算对象,计算单元之间的数据传递方式等,使得各个计算单元可以相互配合,完成该卷积层的计算。

池化层的配置参数可用于对计算电路中的池化电路进行配置。如配置池化的类型(最大池化或平均池化),池化窗口的尺寸等。

激活层的配置参数可用于配置激活模式,或激活函数的类型等。

按元素操作层的配置参数可用于配置输入至按元素操作层的数据的操作方式。操作方式例如可以包括按元素乘积,按元素求和,保存最大元素等。

偏置单元的配置参数可用于配置是否对数据施加偏置以及偏置值的大小等。

目标指令可以包括多个字段或多个域(field),每个字段可用于承载神经网络计算所需的一种配置参数,相当于采用串行的方式将多条指令集成在一条指令中。举例说明,如图4所示,目标指令40可以包括第一配置域42和第二配置域44,其中第一配置域42可包括卷积层的配置参数,第二配置域44可以包括池化层的配置参数。可以这样理解,本申请实施例将原本需要通过多条指令配置的卷积层配置参数和池化层配置参数集成在一条目标指令中进行配置。该目标指令实际上相当于包含了一组指令,该一组指令中的各个指令在目标指令中可以串行布置,分别承载于目标指令的不同的配置域。

图5示出了目标指令的另一示例。如图5所示,目标指令50可以包括第一配置域51至第五配置域55。其中,第一配置域51可以包含卷积层的配置参数;第二配置域52可以包含池化层的配置参数;第三配置域53可以包含激活层的配置参数;第四配置域54可以包含按元素操作层的配置参数;第五配置域55可以包含偏置单元的配置参数。可以这样理解,本申请实施例将原本需要通过多条指令配置的卷积层的配置参数、池化层的配置参数、激活层的配置参数、按元素操作层的配置参数和偏置单元的配置参数集成在一条目标指令中进行配置。该目标指令实际上相当于包含了一组指令,该一组指令中的各个指令在目标指令中可以串行布置,分别承载于目标指令的不同的配置域。

可选地,作为一个实施例,该目标指令可以包括神经网络的每个层的配置参数。换句话说,可以利用一条目标指令,完成整个神经网络的配置,从而极大降低神经网络处理装置中的控制信号的占比,提高神经网络处理装置的性能。

本申请实施例对目标指令的获取方式不做具体限定。作为一个示例,该目标指令可以是神经网络处理装置1内部生成的指令。作为另一个示例,该目标指令可以是从外部的存储器读取到的指令。该外部的存储器可以是与神经网络处理装置1在同一系统的内存设备(如双倍速率(double data rate,DDR))。

神经网络处理装置1可以包括输入接口,并利用该输入接口从外部的存储器9读取目标指令。在某些实施例中,该输入接口可以是总线接口。以图2为例(图2中未示出该输入接口),该输入接口可以是神经网络处理装置1与内存互联模块7之间的连接接口。该内存互联模块7可以起到连接神经网络处理装置1与外部存储器9的作用,在某些实施例中,该内部互联模块7也可以集成在神经网络处理装置1的内部(即集成在片上)。

可选地,如图2所示,在一些实施例中,神经网络处理装置1还可以包括解析电路5。该解析电路5可用于对目标指令进行解析。例如,假设目标指令包括多个字段,每个字段用于对神经网络的一部分功能进行配置。该解析电路5可以对目标指令的每个字段进行解析,得到神经网络的配置参数;然后将解析出的配置参数分发至对应的电路。

可选地,在某些实现方式中,如果目标指令中的配置参数设计成能够被神经网络装置的各个功能电路直接识别的参数,则神经网络处理装置1中也可以不设置上述解析电路。当接收到目标指令之后,神经网络处理装置1直接将目标指令中的配置参数分发至神经网络装置的各个功能电路即可。

可选地,在一些实施例中,神经网络处理装置1内部可以设置一些缓存。如图2所示,神经网络处理装置1的缓存例如可以包括输入数据的第一缓存61和权值数据的第二缓存62。

神经网络的输入数据有时也可称为输入特征图(input feature map),因此,第一缓存61也可称为输入特征图缓存(input feature map buffer,简称IF_BUF)。

神经网络的权值数据(有时也可称为权重)可用于对输入特征图进行滤波,因此,第二缓存62也可称为滤波器缓存(filter buffer,简称FILT_BUF)。

在上述实施例中,目标指令还可以包括第一缓存61和第二缓存62的配置参数。

第一缓存61的配置参数可用于配置缓存61从外部的存储器9(也可称为外部的内存)中读取输入特征图的方式。举例说明,第一缓存61的配置参数可用于配置以下信息中的至少一种:输入特征图在存储器9中的位置,输入特征图的数量,输入特征图的高度和宽度,输入特征图的分割方式等。

第二缓存62的配置参数可用于配置第二缓存62从外部的存储器9中读取权值数据的方式。举例说明,第二缓存62的配置参数可用于配置以下信息中的至少一种:权值数据在存储器9中的位置,卷积核的大小等。

可选地,在一些实施例中,上文提及的输入接口还可用于接收神经网络的输入数据(或称特征图)和/或权值数据(或称权重)。

可选地,在一些实施例中,如图2所示,神经网络处理装置1还可以包括写控制电路3。神经网络的计算结果可以在写控制电路3的控制下写入至外部的存储器9。

上文指出,卷积神经网络可以包括按元素操作层。图2未示出该按元素操作层对应的电路。作为一种可能的实现方式,该按元素操作层对应的电路可以集成在第二计算电路22中;作为另一种可能的实现方式,该按元素操作层对应的电路可以集成在写控制电路3中。

可选地,作为一个实施例,在神经网络处理装置1中,各层对应的计算电路可以将中间结果传输到片上的临时缓存(如随机存取存储器(randomaccess memory,RAM))。

可选地,作为另一实施例,如图2所示,神经网络处理装置1的相邻两层对应的两个计算电路(如图2中的第一计算电路21和第二计算电路22)之间可以不设置临时缓存。在这种情况下,可以利用控制电路4控制第一计算电路21与第二计算电路22之间的数据传递,使得第一计算电路21的输出结果无需经过缓存直接传递至第二计算电路22。这种控制方式可以进一步降低神经网络处理装置1的功耗和面积。

本申请实施例还提供一种神经网络的计算系统。如图2所示,该计算系统包括如前文任一实施例提及的神经网络处理装置1和处理器8。处理器8可用于为神经网络处理装置1分配计算任务。神经网络处理装置1和处理器8之间可以通过总线相连。

可选地,该计算系统还可包括存储器9。该存储器9可以与神经网络处理装置1相连。该存储器9可用于存储神经网络的以下数据中的至少一种:输入数据、权值数据和输出数据。

上文结合图1至图2,详细描述了本申请的装置实施例,下面结合图3,详细描述本申请的方法实施例。应理解,方法实施例的描述与装置实施例的描述相互对应,因此,未详细描述的部分可以参见前面装置实施例。

本申请实施例还提供一种神经网络处理装置的控制方法。该控制方法可以由上文提及的神经网络处理装置1执行。如图3所示,该控制方法可以包括步骤S34。

在步骤S34中,根据一条目标指令,控制神经网络处理装置中的计算电路执行神经网络的至少两个层对应的计算。

目标指令可以包含至少两个层的配置参数。

可选地,图3的方法还可包括步骤S32。在步骤S32中,从外部的存储器读取目标指令。

可选地,目标指令包含神经网络的每个层的配置参数。

可选地,目标指令可以包含神经网络的以下配置参数中的至少一种:卷积层的配置参数;池化层的配置参数;激活层的配置参数;按元素操作层的配置参数;偏置单元的参数。

可选地,目标指令还可以包括神经网络处理装置中的缓存的配置参数。

可选地,缓存可用于存储神经网络的输入数据和/或权值数据。

可选地,图3的方法还可包括:对目标指令进行解析。

可选地,图3的方法还可包括:接收神经网络的输入数据和/或权值数据;和/或向外输出神经网络的计算结果。

可选地,步骤S34可包括:控制第一计算电路执行神经网络的第一层对应的计算;控制第二计算电路执行神经网络的第二层对应的计算;其中,第一层为卷积层,第二层包括池化层、激活层或按元素操作层中的至少一个。

可选地,图3的方法还可包括:控制第一计算电路与第二计算电路之间的数据传递,使得第一计算电路的输出结果无需经过缓存直接传递至第二计算电路。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其他任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如数字视频光盘(digital video disc,DVD))、或者半导体介质(例如固态硬盘(solid state disk,SSD))等。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

13页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:自动驾驶车辆中乘客的提前上车

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!