掌桥专利:专业的专利平台
掌桥专利
首页

神经网络计算设备及其控制方法

文献发布时间:2023-06-19 18:35:48


神经网络计算设备及其控制方法

相关申请的交叉引用

本申请要求2021年8月9日在韩国知识产权局提交的韩国专利申请第10-2021-0104333号以及在2022年8月5日提交的韩国专利申请第10-2022-0098128号的优先权,其公开内容通过引用全部并入本文。

技术领域

本公开涉及一种用于快速确定神经网络计算调度的神经网络计算设备和方法,该神经网络计算调度用作确定何时以及何处在神经网络计算设备中存储卷积操作所需数据的准则。

背景技术

随着人工神经网络技术已经被开发,许多具有用于快速处理卷积操作的神经网络计算设备的硬件被开发出来。

卷积操作所需的数据存储在神经网络计算设备的存储器中并用于卷积操作,当执行卷积操作时,这些数据中的一些可以在多个存储器层次中的每一个层次中被重复使用。神经网络计算数据在没有规则的情况下不能在相邻存储器层次之间发送和接收。因此,包括硬件映射和数据流的神经网络计算调度需要通过被称为调度的过程来确定。

一旦神经网络计算调度被确定,神经网络计算设备就能够计算执行卷积操作所必需的计算成本。也就是说,当存在多个调度候选时,可以为每个调度候选计算计算成本,并且可以通过比较计算成本来确定用于执行卷积操作的最优调度。

然而,取决于具有多维结构的神经网络数据和神经网络计算设备的硬件规格,可能存在无数个适用于神经网络计算设备的调度候选。如果为了确定具有最低计算成本的调度而要为所有调度候选计算计算成本,则过大的计算量应该被执行,从而增加调度所需的时间,这是一个问题。

发明内容

提供了一种神经网络计算设备、控制神经网络计算的方法和计算机程序,该神经网络计算设备能够通过自底向上的调度来减少执行调度所需的时间,在该自底向上的调度中,首先执行神经网络计算设备的低级区段(section)的调度,然后执行高级区段的调度。

提供了一种神经网络计算设备、控制该神经网络计算设备的方法和计算机程序,与计算适用于神经网络计算设备的所有调度候选的计算成本的调度方法相比,该神经网络计算设备能够使神经网络计算调度具有与具有最低计算成本的神经网络计算调度的计算成本类似的计算成本,同时显著地减少执行调度所需的时间。

附加方面将在之后的具体实施方式中部分地阐述,并且将部分地从具体实施方式中显而易见,或者可以通过对本公开所呈现的实施例的实践来了解。

根据本公开的一方面,一种神经网络计算设备,用于通过对输入数据和权重数据执行卷积操作来生成输出数据,神经网络计算设备包括存储器和至少一个处理器,该存储器包括多个存储器层次并被配置为存储包括输入数据、权重数据和输出数据的神经网络计算数据,该至少一个处理器被配置为:执行针对神经网络计算数据的第一移动的第一调度,其中神经网络计算数据在第一存储器层次和第二存储器层次之间发送和接收并且第二存储器层次具有比第一存储器层次的级别更高的级别,第一调度被执行之后,执行针对神经网络计算数据的第二移动的第二调度,其中神经网络计算数据在第二存储器层次和第三存储器层次之间发送和接收并且第三存储器层次具有比第二存储器层次的级别更高的级别,以及基于第一调度的结果和第二调度的结果识别用于执行卷积操作的神经网络计算调度。

在实施例中,至少一个处理器可以基于多个策略中的至少一个来执行第一调度。如果第一调度被执行,则至少一个处理器可以基于多个策略中的至少一个来执行第二调度。至少一个处理器可以基于第一调度的结果和第二调度的结果来识别多个调度候选。至少一个处理器可以将多个调度候选中的一个识别为神经网络计算调度。在过程中,多个策略包括:用于提高多个存储器层次中的低级别存储器层次的利用率的第一策略、用于提高多个存储器层次中的高级别存储器层次的利用率的第二策略、用于保持高级别存储器层次的利用率和低级别存储器层次的利用率之间的平衡的第三策略、以及用于防止神经网络计算数据的重复发送和接收的第四策略。

在实施例中,至少一个处理器可以对基于第一移动的数据流和第二移动的数据流生成的多个数据流组合中的每一个执行第一调度和第二调度。在该过程中,数据流可以基于神经网络计算数据的多个神经网络参数中的关于哪些数据被重新使用的参数来确定。

在实施例中,至少一个处理器可以基于第一策略来执行第一调度,以最小化执行第一移动的神经网络计算数据的移动成本。至少一个处理器可以基于第一策略来执行第二调度,以最小化执行第二移动的神经网络计算数据的移动成本。移动成本可以包括发送和接收神经网络计算数据所需的能量和时间中的至少一个。

在实施例中,至少一个处理器可以基于第二策略来执行第一调度,以最大化执行第一移动的神经网络计算数据的数据块(data tile)大小。至少一个处理器可以基于第二策略来执行第二调度,以最大化执行第二移动的神经网络计算数据的数据块大小。

在实施例中,至少一个处理器可以基于第三策略来执行第一调度,以最大化用于第二移动的映射候选的数量。至少一个处理器可以基于第三策略来执行第二调度,以最大化用于神经网络计算数据的第三移动的映射候选数的数量,其中神经网络计算数据在第三存储器层次和第四存储器层次之间发送和接收并且第四存储器层次具有比第三存储器层次的级别更高的级别。

在实施例中,处理器可以基于第四策略来执行第一调度,以防止在第二移动中神经网络计算数据的重复发送和接收,并且基于第四策略来执行第二调度,以防止在神经网络计算数据的第三移动中神经网络计算数据的重复发送和接收,其中神经网络计算数据在第三存储器层次和第四存储器层次之间发送并且第四存储器层级具有比第三存储器层次的级别更高的级别。

在实施例中,在该过程中,多个神经网络参数可以包括与输入数据的因子相关的多个输入数据参数、与权重数据的因子相关的多个权重数据参数以及与输出数据的因子相关的多个输出数据参数。在该过程中,数据流是以下数据流之一:其中与输入数据参数相关的数据被重复使用的输入静态(input stationary,IS)数据流、其中与权重数据参数相关的数据被重复使用的权重静态(weight stationary,WS)数据流、以及其中与输出数据参数相关的数据被重复使用的输出静态(output stationary,OS)数据流。

在实施例中,在该过程中,多个调度候选可以满足约束条件,该约束条件是基于多个存储器层次的存储容量和包括该多个存储器层次的组件的数量中的至少一个来确定的。

在实施例中,至少一个处理器可以针对多个调度候选中的每一个,识别执行卷积操作所需的计算成本。在一个实施例中,至少一个处理器可以将多个调度候选中的具有最小计算成本的调度候选识别为神经网络计算调度。在该过程中,计算成本可以包括执行卷积操作所需的能量和时间中的至少一个。

神经网络计算设备还可以包括用于执行卷积操作的操作器。至少一个处理器可以基于神经网络计算调度来控制操作器执行卷积操作。

根据本公开的另一方面,一种控制神经网络计算设备的方法,该神经网络计算设备通过对输入数据和权重数据执行卷积操作来生成输出数据,并且使用存储器,该存储器包括多个存储器层次并且被配置为存储包括输入数据、权重数据和输出数据的神经网络计算数据,该方法包括执行针对神经网络计算数据的第一移动的第一调度,其中神经网络计算数据在第一存储器层次和第二存储器层次之间发送和接收并且第二存储器层次具有比第一存储器层次的级别更高的级别,在第一调度被执行之后,执行针对神经网络计算数据的第二移动的第二调度,其中神经网络计算数据在第二存储器层次和第三存储器层次之间发送和接收并且第三存储器层次具有比第二存储器层次的级别更高的级别,以及基于第一调度的结果和第二调度的结果来识别用于执行卷积操作的神经网络计算调度。

在实施例中,第一调度的执行可以包括基于多个策略中的至少一个来执行第一调度。第二调度的执行可以包括在第一调度被执行之后,基于多个策略中的至少一个来执行第二调度。神经网络计算调度的识别可以包括基于第一调度的结果和第二调度的结果来识别多个调度候选,以及将多个调度候选中的一个识别为神经网络计算调度。在该过程中,多个策略可以包括:用于提高多个存储器层次中的低级别存储器层次的利用率的第一策略、用于提高多个存储器层次中的高级别存储器层次的利用率的第二策略、用于保持高级别存储器层次的利用率和低级别存储器层次的利用率之间的平衡的第三策略、以及用于防止神经网络计算数据的重复发送和接收的第四策略。

在实施例中,第一调度的执行可以包括对基于第一移动的数据流和第二移动的数据流生成的多个数据流组合中的每一个执行第一调度。第二调度的执行可以包括对多个数据流组合中的每一个执行第二调度。在该过程中,数据流可以基于神经网络计算数据的多个神经网络参数中的关于哪些数据被重复使用的参数来确定。

在实施例中,第一调度的执行可以包括基于第一策略来执行第一调度,以最小化执行第一移动的神经网络计算数据的移动成本。第二调度的执行可以包括基于第一策略来执行第二调度,以最小化执行第二移动的神经网络计算数据的移动成本。在该过程中,移动成本可以包括发送和接收神经网络计算数据所需的能量和时间中的至少一个。

在实施例中,第一调度的执行可以包括基于第二策略来执行第一调度,以最小化执行第一移动的神经网络计算数据的数据块大小。第二调度的执行可以包括基于第二策略来执行第二调度,以最大化执行第二移动的神经网络计算数据的数据块大小。

在实施例中,第一调度的执行可以包括基于第三策略来执行第一调度,以最大化用于第二移动的映射候选的数量。第二调度的执行可以包括基于第三策略来执行第二调度,以最大化用于神经网络计算数据的第三移动的映射候选的数量,其中神经网络计算数据在第三存储器层次和第四存储器层次之间发送和接收并且第四存储器层次具有比第三存储器层次的级别更高的级别。

在实施例中,第一调度的执行可以包括基于第四策略来执行第一调度,以防止在第二移动中神经网络计算数据的重复发送和接收。第二调度的执行可以包括基于第四策略来执行第二调度,以防止在神经网络计算数据的第三移动中神经网络计算数据的重复发送和接收,其中神经网络计算数据在第三存储器层级和第四存储器层级之间发送并且第四存储器层级具有比第三存储器层级的级别更高的级别。

在实施例中,在该过程中,多个神经网络参数可以包括与输入数据的因子相关的多个输入数据参数、与权重数据的因子相关的多个权重数据参数、以及与输出数据的因子相关的多个输出数据参数。在该过程中,数据流是以下数据流之一:其中与输入数据参数相关的数据被重复使用的输入静态(IS)数据流、其中与权重数据参数相关的数据被重复使用的权重静态(WS)数据流、以及其中与输出数据参数相关的数据被重复使用的输出静态(OS)数据流。

在实施例中,多个调度候选可以满足约束条件,该约束条件是基于多个存储器层次的存储容量和包括该多个存储器层次的组件的数量中的至少一个来确定的。

在实施例中,神经网络计算调度的识别可以包括针对多个调度候选中的每一个,识别执行卷积操作所需的计算成本,以及将在多个调度候选中具有最小计算成本的调度候选识别为神经网络计算调度。在该过程中,计算成本可以包括执行卷积操作所需的能量和时间中的至少一个。

在实施例中,控制神经网络计算设备的方法还可以包括基于所识别的神经网络计算调度来执行卷积操作。

在实施例中,控制神经网络计算设备的方法可以提供存储在非暂时性计算机可读记录介质中的计算机程序,以执行控制神经网络计算设备的方法。

根据本公开,通过自底向上的调度可以减少执行调度所需的时间。

此外,根据本公开,可以找到具有与具有最低计算成本的神经网络计算调度的计算成本相似的计算成本的神经网络计算调度,同时显著减少执行调度所需的时间。

附图说明

从下文结合附图进行的描述中,本公开的某些实施例的上述和其他方面、特征和优点将更加显而易见,其中:

图1是根据实施例的神经网络计算设备的框图;

图2是根据实施例的神经网络计算设备的多级别结构的图;

图3是根据本公开实施例的硬件映射和数据流的图;

图4是根据本公开实施例的自底向上的调度的图;

图5A、图5B和图5C是根据本公开实施例的神经网络参数的图;

图6是根据本公开实施例的调度表的图;

图7A、图7B和图7C是示出根据本公开实施例的计算可以分配到调度表的映射值的组合的数量的方法的图;

图8A、图8B和图8C是示出根据本公开实施例的使用调度表执行自底向上的调度的过程的图;

图9是示出根据本公开实施例的基于分配到调度表的映射值来计算神经网络计算数据的数据块大小和移动成本的方法的图;

图10A和图10B是示出根据本公开实施例的满足约束条件的映射值的组合的图;

图11是示出根据本公开实施例的控制神经网络计算设备的方法的流程图;

图12A和图12B示出将根据本公开实施例的调度方法与根据传统技术的调度方法进行比较的表和图;以及

图13是用于解释由根据本公开实施例的调度方法识别的神经网络计算调度的准确度的图。

具体实施方式

现在将详细参考实施例,这些实施例的示例在附图中示出,在整个说明书中,相似的参考标号指的是相似的元素。就这一点而言,实施例可以具有不同的形式,并且不应被解释为限于本文阐述的描述。因此,下面仅通过参考附图来描述实施例,以解释描述的各方面。如本文所使用,术语“和/或”包括相关联的列出的项目中的一个或多个的任何和所有组合。诸如“至少一个”的表达,当在元素列表之后时,其修饰整个元素列表,而不是修饰列表中的单个元素。

在整个说明书中,相似的参考标号指的是相似的元素。本文没有描述本公开实施例的所有元素,并且省略了所公开的内容。

在整个说明书中,当一部分“包括”一元素时,还可以包括另一元素而不是排除其他元素的存在,除非另有描述。

将理解尽管本文可以使用术语“第一”、“第二”等来描述各种组件,但这些组件不应被这些术语限制。这些组件仅用于将一个组件与另一组件区分。

如本文所使用的,单数形式“一”、“一个”和“该”意在也包括复数形式,除非上下文清楚地另有所指。

此外,在本公开中,指示操作的参考标号为了便于描述而被使用,并且不指示操作的顺序,并且可以以不同的顺序执行操作,除非上下文清楚地另有所指。

在本公开中,“神经网络”是模拟脑神经的人工神经网络模型的代表性示例,而不限于使用某一算法的人工神经网络模型。神经网络也可以称为深度神经网络。

在本公开中,“神经网络加速器”可以指特别优化以处理神经网络工作负载的处理器。

在本公开中,“存储器层次”可以指根据处理速度和容量在层次上区分的存储器。当存储器层次的级别降低时,存储器的容量可以增加,但处理速度可以降低。相反,存储器层次的级别增加,存储器的容量可以减少,但处理速度可以增加。

在本公开中,“神经网络计算数据”可以指用于执行卷积操作的数据。神经网络计算数据可以包括用于执行卷积操作的输入数据和权重数据,以及由卷积操作生成的输出数据。

此外,如本文所使用的,“数据块”可以指神经网络数据的存储在低级别存储器层次中的子集,该子集要被加载到高级别存储器层次中。

下面,将参考附图描述本公开的实施例。

图1是根据实施例的神经网络计算设备的框图。

参考图1,根据实施例的神经网络计算设备100可以包括存储器110、操作器120和处理器130。

存储器110可以存储包括输入数据、权重数据和输出数据的神经网络计算数据。

在实施例中,存储器110可以是易失性存储器,诸如用于临时存储数据的动态随机存取存储器(DRAM)或静态随机存取存储器(SRAM),但不限于此。在实施例中,存储器110还可以包括非易失性存储器,诸如只读存储器(ROM)、可擦除可编程只读存储器(EPROM)或电可擦除可编程只读存储器(EEPROM)。

在实施例中,存储器110可以包括多个存储器层次111、112和113。这里,多个存储器层次111、112和113之间可以具有相对级别。在实施例中,第二存储器层次112的级别可以高于第一存储器层次111的级别。此外,第三存储器层次113的级别可以高于第二存储器层次112的级别。

操作器120可以使用存储在存储器110中的神经网络计算数据来执行卷积操作。

在实施例中,操作器120可以包括乘法累加(MAC)操作器。在这种情况下,操作器120可以从存储器110接收输入数据和权重数据,并且可以通过对接收到的输入数据和权重数据执行MAC操作来生成输出数据。

处理器130可以电连接到存储器110和操作器120,并且可以控制神经网络计算设备100的总体操作和功能。

在实施例中,处理器130可以包括中央处理单元(CPU)或应用处理器(AP),并且可以根据存储在存储器110中的一个或多个指令执行存储在存储器中的一个或多个软件程序。

在实施例中,神经网络计算设备100可以包括用于执行卷积操作的神经网络加速器。在实施例中,神经网络加速器可以包括操作器120和多个存储器层次111、112和113中的至少一个存储器层次。

在实施例中,包括在神经网络加速器中的存储器层次可以指片上存储器。例如,不包括在神经网络加速器中的存储器层次可以指片外存储器。片外存储器的存储器层次的级别可以低于片上存储器的级别。

神经网络加速器可以包括逻辑电路和算术电路,并且可以根据从存储器110提供的程序处理数据以及根据处理数据的结果生成控制信号。

因此,神经网络计算设备100可以通过神经网络加速器对输入数据和权重数据执行卷积操作来生成输出数据203。

在实施例中,卷积操作可以对由多个层组成的深度神经网络的层执行。

在实施例中,神经网络的层可以以卷积层的修改形式来表示。例如,这些层可以包括逐深度(depth-wise)卷积层、逐点(point-wise)卷积层和全连接层。

在通过深度神经网络的学习过程中,前向传播可以在使用预训练的权重来推断或分类初始输入数据时使用。此外,在反向传播过程中,权重可以被更新和训练。

在实施例中,神经网络计算设备100可以执行对加速前向传播的硬件的卷积操作的调度。

然而,神经网络计算设备100的作用不限于执行深度神经网络的卷积操作的调度。也就是说,根据实施例的神经网络计算设备100还可以执行对任意机器学习(诸如另一种卷积神经网络(CNN))的卷积操作的调度。

图2是根据实施例的神经网络计算设备的多级别结构的图。

参考图2,神经网络计算设备100可以具有多级别结构,其中空间级别别和时间级别别交替布置。

在实施例中,神经网络计算设备100可以包括包含多个存储器层次的多个组件和包含存储器层次的多个组件。

例如,神经网络计算设备100的多个存储器层次可以包括DRAM、全局缓冲器、局部缓冲器和寄存器。

在实施例中,神经网络计算设备100的多个组件可以包括包含全局缓冲器的多个核、包含局部缓冲器的多个处理元件(PE)以及包含寄存器的多个MAC操作器。

这里,多个组件可以指神经网络计算设备100的多个级别中的空间级别别[S]。在神经网络计算设备100的空间级别中,空间布置的多个组件可以在执行卷积操作的同时执行数据级别并行。

在实施例中,多个存储器层次可以指神经网络计算设备100的层次的时间级别[T]。在神经网络计算设备100的时间级别中,神经网络计算数据可以在卷积操作的同时在相邻存储器层次之间移动。

在神经网络计算设备100的空间级别和时间级别中,数据的重复使用可以以不同的方式利用。在实施例中,在空间级别中,数据的空间重复使用可以通过数据级别并行来利用。在实施例中,在时间级别中,一些数据在从低级别存储器层次加载的数据块中维护,并且数据的时间重复使用可以通过临时地重复使用所维护的数据来利用。

在实施例中,在神经网络计算设备的空间级别和时间级别中利用的数据重复使用可以减少访问低级别存储器层次的次数,该低级别存储器层次在数据移动所需的移动成本方面相对较高。通过此,降低用于执行神经网络计算设备100的卷积操作所需的计算成本是可能的。

再次参考图2,神经网络计算数据可以在相邻存储器层次之间发送和接收。例如,神经网络计算数据可以在DRAM和全局缓冲器之间、全局缓冲器和DRAM之间、以及局部缓冲器和寄存器之间发送和接收。

在实施例中,DRAM可以存储神经网络计算数据。在实施例中,存储在DRAM中的一些神经网络数据可以是数据块,并且可以在DRAM和数据块被分配到的全局缓冲器之间发送和接收。

神经网络计算数据的发送和接收可以以相同的方式在全局缓冲器和局部缓冲器之间以及在局部缓冲器和寄存器之间执行。

基于通过调度识别的神经网络计算调度,神经网络计算数据可以在相邻存储器层次之间发送和接收。神经网络计算调度可以基于硬件映射和数据流来确定,其细节将在后面参考图3来描述。

此外,可以存在无数神经网络计算调度,这些神经网络计算调度可以由神经网络计算设备根据神经网络计算数据的多维结构和神经网络计算设备100的硬件规格来选择。因此,神经网络计算设备100可以在无数个调度候选中执行用于识别神经网络计算调度的调度,该调度最小化执行卷积操作所需的计算成本。

然而,如果在调度过程期间要计算所有调度候选的计算成本,则要求执行过多的计算。因此,执行调度所需的计算成本可能增加。

因此,根据实施例的神经网络计算设备100可以执行针对神经网络计算数据的第一移动的第一调度,其中神经网络计算数据在第一存储器层次和第二存储器层次之间发送和接收,第二存储器层次具有比第一存储器层次的级别更高的级别。如果执行了第一调度,则神经网络计算设备100可以执行针对神经网络计算数据的第二移动的第二调度,其中神经网络计算数据在第二存储器层次和第三存储器层次之间发送和接收,第三存储器层次具有比第二存储器层次的级别更高的级别。

在实施例中,神经网络计算设备100可以基于第一调度的结果和第二调度的结果来识别神经网络计算调度。

因此,神经网络计算设备100可以通过仅计算所选择的调度候选的计算成本而不计算可能适用于神经网络计算设备100的所有调度候选的计算成本来减少调度所需的时间。此外,通过调度所识别的神经网络计算调度可以具有与所有调度候选中具有最低计算成本的调度候选的计算成本相似的计算成本。

根据本公开实施例的神经网络计算方法可以以程序的形式实现,该程序可以由神经网络计算设备100、神经网络加速器和处理器130中的至少一个运行。

这里,程序可以单独或组合地包括程序命令、数据文件和数据结构。程序可以使用机器代码或高级语言代码来设计和制造。程序可以被专门设计为实现用于修改上述代码的方法,或者可以使用计算机软件领域的普通技术人员可能已知并可以使用的各种功能或定义来实现。用于实施上述信息显示方法的程序可以记录在由神经网络计算设备100、神经网络加速器和处理器130中的至少一个可读的记录介质中。此时,记录介质可以是存储器110。

存储器110可以存储用于执行上述操作和稍后将描述的操作的程序,并且存储器110可以运行所存储的程序。当存在多个处理器130和存储器110时,它们可以集成在一个芯片中,或者可以位于物理分离的位置。

图3是根据本公开实施例的硬件映射和数据流的图。

参考图3,可以根据神经网络计算调度在相邻存储器层次之间发送和接收神经网络计算数据300。

在实施例中,处理器130可以将存储在相邻存储器层次中的低级别存储器层次DRAM中的神经网络数据300中的一些组织为多个数据块。数据块可以包括神经网络数据的输入数据301的部分、权重数据302的部分以及输出数据303的部分。

处理器130可以将多个数据块分配到包括相邻存储器层次中的高级别存储器层次GB1或GB2的至少一个组件核1或核2。

处理器130可以控制高级别存储器层次GB1和GB2从低级别存储器层次DRAM加载分配到包括高级别存储器层次GB1和GB2的组件核1和核2的多个数据块。

在实施例中,处理器130可以将多个数据块分配到包括高级别存储器层次的所有多个组件,但是本公开不限于此,数据块也可以仅分配到这些组件中的一些。

在实施例中,所分配的数据块的大小可以基于数据块被分配到的组件的存储器层次的存储容量来确定。

在实施例中,数据块可以包括输入数据块、权重数据块和输出数据块,并且它们的大小可以单独确定。

同样,处理器可能需要确定神经网络计算数据300的数据块的大小以及数据块被分配到的多个组件,以便允许神经网络计算数据300在相邻存储器层次之间发送和接收。该确定过程可以称为硬件映射。

此外,处理器130可以基于神经网络计算调度来确定其中多个数据块被加载的顺序。

在实施例中,当将多个数据块分配到同一组件核1并且将所分配的数据块从低级别存储器层次DRAM顺序加载到高级别存储器层次GB1时,在特定时间点之前加载的数据块和在特定时间点之后加载的数据块之间可能存在冗余数据。

因此,处理器130可以在高级别存储器层次GB1中连续地存储在特定时间点之前加载的数据块和在特定时间点之后加载的数据块之间的冗余数据中的一些。处理器130可以仅加载除了存储于在特定时间点之后加载的数据块中的数据之外的数据块,并且重复使用数据块之间的冗余数据。

此外,可以根据多个被分配的数据块被加载的顺序来确定冗余数据。换句话说,如果多个被分配的数据块被加载的顺序改变,则重复使用的冗余数据也可以改变。

因此,可以确定多个被分配的数据块被加载的顺序,使得与神经网络计算数据的多个神经网络参数中的某参数相关的数据可以在存储器层次中被重复使用。

同样,基于多个神经网络参数中的关于哪些相关数据被重复使用的参数来确定的数据块加载顺序可以称为数据流。

在实施例中,数据流可以包括其中与输入数据参数相关的数据被重复使用的输入静态(IS)数据流、其中与权重数据参数相关的数据被重复使用的权重静态(WS)数据流、以及其中与输出数据参数相关的数据被重复使用的输出静态(OS)数据流。然而,数据流不限于此,并且可以根据神经网络计算设备100的硬件结构而变化。

同样,神经网络计算数据200在没有规则的情况下不能在相邻存储器层次之间发送和接收。因此,包括硬件映射和数据流的神经网络计算调度需要通过调度来确定。

神经网络计算设备100的优化可以指用于确定一个神经网络层的有效调度的调度。根据实施例的神经网络计算设备100可以基于神经网络计算数据300的神经网络参数,通过执行神经网络计算设备100的优化来确定最优硬件映射和数据流。

一旦针对在神经网络计算设备100的所有存储器层次之间发送和接收的神经网络计算数据的硬件映射和数据流被确定,神经网络计算设备100能够计算执行卷积操作所需的计算成本。

这里,计算成本可以包括用于执行卷积操作所需的能量和时间中的至少一个。此外,计算成本可以基于在相邻存储器层次之间发送和接收的神经网络计算数据的移动成本来确定。

各种调度候选可以根据在神经网络计算设备100中实施的硬件映射和数据流的组合来生成。可以通过比较多个调度候选的计算成本来确定需要最低计算成本的调度。

然而,取决于具有多维结构的神经网络数据和神经计算设备100的硬件规格,可能存在无数适用于神经网络计算设备100的调度候选。因此,如果为了确定具有最低计算成本的调度而要计算所有调度候选的计算成本,则必须执行过大的计算量,从而增加调度所需的时间,这是一个问题。

因此,当调度被执行时,希望通过少量的计算来确定具有接近于最低计算成本的计算成本的调度,而不是通过计算所有调度候选的计算成本来确定具有最低计算成本的调度。

因此,根据实施例的神经网络计算设备100可以通过自底向上的调度来减少确定最优调度所需的时间,在该自底向上的调度中,从神经网络计算设备100的最低级别开始顺序计算在时间级别中生成的部分神经网络计算数据的移动成本。

图4是根据本公开实施例的自底向上的调度的图。

参考图4,处理器130可以顺序地执行针对神经网络计算数据的移动的调度,神经网络计算数据在神经网络计算设备100的相邻存储器层次之间发送和接收。该调度可以从最低级别区段向最高级别区段执行,这可以称为自底向上的调度。

如图4所示,处理器130可以通过执行第一序列Seq1中的调度来执行用于在最低级别区段的相邻存储器层次之间发送和接收的神经网络数据的硬件映射。此外,处理器130可以通过执行第二序列Seq2中的调度来执行用于在下一更高级别区段的相邻存储器层次之间发送和接收的神经网络数据的硬件映射。此外,处理器130可以在第三序列Seq3中执行用于在下一更高级别区段的相邻存储器层次之间发送和接收的神经网络数据的硬件映射。

在实施例中,处理器130可以识别每个序列中的多个映射候选。映射候选可以对应于神经网络数据的数据块的大小,该数据块大小可以由在对应序列中执行的硬件映射以及数据块所分配到的多个组件的组合来确定。

例如,处理器130可以识别第一序列Seq1中的多个映射候选410,识别第二序列Seq2中的多个映射候选420-1和420-2,并且识别第三序列Seq3中的多个映射候选430-1、430-2、430-3、430-4、430-5和430-6。

处理器130可以在多个映射候选中识别满足约束条件的映射候选。满足约束条件的映射候选可以指多个映射候选中的可以在神经网络计算设备100中实际实施的映射候选。

例如,处理器130可以在第一序列Seq1中的多个映射候选410中确定满足约束条件的映射候选411、412、413、414和415。

在实施例中,在每个序列中识别的映射候选中的一些可能需要在神经网络计算设备100中无法实施的数据块大小以及数据块所分配到的多个组件的组合。

因此,处理器130可以识别与可以在神经网络计算设备100中实际实施的数据块大小和数据块所分配到的多个组件的组合相对应的映射候选。

处理器130可以通过选择每个序列中的满足约束条件的映射候选中的一个来执行每个序列中的硬件映射。

此外,在下一序列中识别的多个映射候选可以根据在特定序列中选择的映射候选而变化。例如,当在第一序列Seq1中选择第一映射候选412时在第二序列Seq2中识别的多个映射候选420-1可以不同于当在第一序列Seq1中选择第二映射候选414时在第二序列Seq2中识别的多个映射候选420-2。

处理器130可以基于在每个序列中选择的映射候选的组合来识别多个调度候选。处理器130将多个调度候选中的一个识别为神经网络计算调度。

如图所示,当执行自底向上的调度时,在前一序列中选择的映射候选可能影响在下一序列中可选择的映射候选的数量。也就是说,随着序列的进行,每个序列中可选择的映射候选的数量可以显著减少。

也就是说,与通过对所有级别同时执行硬件映射来确定映射候选组合的方法相比,根据本公开实施例的神经网络计算设备100通过自底向上的调度可以生成更少数量的映射候选组合。所生成的映射候选组合可以对应于应该在调度过程期间计算其计算成本的多个调度候选。

因此,根据本公开的神经网络计算设备100比通过计算所有调度候选中的每一个的计算成本并比较所计算出的计算成本来确定最优的神经网络计算调度的蛮力(brute-force)调度方法快数十倍。

在实施例中,处理器130可以基于多个策略中的至少一个来执行第一调度。在第一调度被执行之后,处理器130可以基于多个策略中的至少一个来执行第二调度。处理器130可以基于第一调度的结果和第二调度的结果来识别多个调度候选。这里,神经网络计算设备100的其中第二调度被执行的级别区段可以是神经网络计算设备100的其中第一调度被执行的更高级别区段。

在实施例中,多个策略可以包括用于提高低级别存储器层次的利用率的第一策略、用于提高高级别存储器层次的利用率的第二策略、用于保持高级别存储器层次的利用率和低级别存储器层次的利用率之间的平衡的第三策略、以及用于防止神经网络计算数据的重复发送和接收的第四策略。

在实施例中,处理器130可以基于第一策略来执行调度。具体地,处理器130可以基于第一策略来执行调度,以最小化在相邻存储器层次之间发送和接收的神经网络计算数据的移动成本。

在实施例中,神经网络计算数据的移动成本可以包括发送和接收神经网络计算数据所需的能量和时间中的至少一个。

为此,处理器130可以确定每个序列中满足约束条件的多个映射候选中的每一个的移动成本。

在实施例中,处理器130可以通过在多个映射候选中选择具有最低移动成本的映射候选来执行硬件映射。然而,本公开不限于此,处理器130可以通过在多个映射候选中选择被包括在根据移动成本来进行的预定排名中的映射候选来执行硬件映射。

参考图4,处理器130可以在所有序列中基于第一策略来执行调度。由顶部k1、顶部k2和顶部k3表示的值可以指移动成本的排名,移动成本可以被选择为每个序列中的映射候选。

例如,“顶部k2=3”可以指在第二序列中,在满足约束条件的映射候选中将被选择的在移动成本方面的三个最佳映射候选。同理,“顶部k3=1”可以指在第三序列中,在满足约束条件的映射候选中将被选择的在移动成本方面排名第一的映射候选。

在实施例中,处理器130可以在顶部k为1的条件下执行硬件映射。换句话说,可以执行硬件映射以最小化在所有级别的相邻存储器层次之间发送和接收的神经网络计算数据的移动成本。

假设处理器130将所有顺序的顶部k值确定为1,即通过执行在所有级别区段中总是选择具有最低移动成本的映射候选的硬件映射来识别神经网络计算调度)。在这种情况下,实验表明,所识别的神经网络计算调度的计算成本与具有最低计算成本的神经网络计算调度的计算成本之间的差小于1%。一些实验甚至表明相同的计算成本。

在实施例中,处理器130可以首先通过基于第一策略执行硬件映射来从神经网络计算设备100的具有相对较大移动成本的低级别中选择映射候选,并且稍后可以选择神经网络计算设备100的具有相对较小移动成本的高级别的映射候选。因此,处理器130可以识别具有与具有最低计算成本的神经网络计算调度的计算成本相似的计算成本的多个调度候选。

在图4中,处理器130在所有序列中基于第一策略来执行调度,但本发明不限于此,并且可以在每个序列中基于其他策略来执行调度。例如,处理器130可以基于第一策略来执行第一调度,并且在第一调度被执行之后,基于第二策略、第三策略和第四策略之一来执行第二调度。

在实施例中,处理器130可以基于第二策略来执行调度。具体地,处理器130可以基于第二策略来执行自底向上的调度,以最大化在相邻存储器层次之间发送和接收的神经网络计算数据的数据块大小。

为此,处理器130可以针对每个序列中满足约束条件的多个映射候选中的每一个映射候选,识别在相邻存储器层次之间发送和接收的神经网络计算数据的数据块大小。

在实施例中,处理器130可以通过在多个映射候选中选择具有最大数据块大小的映射候选来执行硬件映射。然而,本公开不限于此,处理器130可以通过在多个映射候选中选择在根据数据块大小来进行的预定排名内的映射候选来执行硬件映射。

在实施例中,处理器130通过基于第二策略执行硬件映射来选择被分配到高级别存储器层次的具有大的数据块大小的映射候选。因此,处理器130可以识别能够提高包括高级别存储器层次的组件的利用率的多个调度候选。

在实施例中,处理器130可以基于第三策略来执行调度。具体地,处理器130可以执行自底向上的调度,以最大化可以在下一序列中识别的映射候选的数量。

为此,处理器130可以针对每个序列中满足约束条件的多个映射候选中的每一个映射候选识别可以在下一序列中被识别的映射候选的数量。

在实施例中,处理器130可以在多个映射候选中选择具有最大数量的可以在下一序列中被识别的映射候选的映射候选,并对所选择的映射候选执行硬件映射。然而,本公开不限于此,处理器130可以在多个映射候选中选择根据可以在下一序列中被识别的映射候选的数量来进行的预定排名内的映射候选,并对所选择的映射候选执行硬件映射。

在实施例中,处理器130通过基于第三策略执行硬件映射来选择提供下一序列的硬件映射的更大灵活性的映射候选。因此,处理器130可以识别多个调度候选,以在包括高级别存储器层次的组件和包括低级别存储器层次的组件的利用率之间保持平衡。

在实施例中,处理器130可以基于第四策略来执行调度。具体地,处理器130可以基于第四策略执行调度,使得在下一级别区段的相邻存储器层级之间发送和接收的神经网络计算数据。这里,下一级别区段可以指神经网络计算设备(100)的其中调度要在下一序列中被执行的级别区段。

为此,处理器130可以识别不受在下一级别区段发送和接收的神经网络计算数据的数据流影响的神经网络计算数据。例如,当在下一级别区段中发送和接收的神经网络计算数据的数据流是输入固定(input-fixed)数据流时,处理器130可以将不受数据流影响的数据识别为权重数据和输出数据。此外,处理器130可以针对满足约束条件的多个映射候选中的每一个映射候选识别不受数据流影响的神经网络计算数据的数据块大小。

在实施例中,处理器130可以在多个映射候选中选择其中不受数据流影响的神经网络计算数据的数据块大小小于第二高级别存储器层级的存储容量的数据块大小的映射候选,并对所选择的映射候选项执行硬件映射。

第二高存储器层级可以指下一级别区段的相邻存储器层级中的高级别存储器层级。第二高级别存储器层次的存储容量可以指其中神经网络计算数据被发送和接收的一个高级别存储器层次和多个第二高级别存储器层次的存储容量的总和。

例如,参考图4,当处理器130在第一序列中基于第四策略来执行调度时,第二高级别存储器层级可以是局部缓冲器,其作为下一级别区段的高级层级,并且第二高级存储器层级的存储容量可以指发送和接收神经网络计算数据的一个全局缓冲器和多个局部缓冲器的存储容量的总和。

在实施例中,可能存在多个映射候选,其中不受数据流影响的神经网络计算数据的数据块大小小于第二高级别存储器层级的存储容量。因此,处理器130可以在多个映射候选中选择具有最低移动成本的映射候选。然而,本公开不限于此,处理器130可以在多个映射候选中选择其移动成本在预定排名内的映射候选,并对所选择的映射候选执行硬件映射。

在实施例中,可以针对每种类型的神经网络计算数据单独分配第二高级别存储器层级的存储容量。在这种情况下,处理器130可以选择其中不受数据流影响的每种类型的神经网络计算数据的数据块大小小于被分配到第二高级别存储器层级的每种类型的神经网络计算数据的存储容量的映射候选,并对所选择的映射候选执行硬件映射。

在实施例中,处理器130可以通过基于第四策略执行硬件映射来选择能够减少下一级别区段中神经网络计算数据的移动次数的映射候选。因此,处理器130可以识别其中神经网络计算数据不被重复发送和接收的多个候选调度。

在实施例中,当调度神经网络计算设备100的最上面的级别区段时,处理器130可以选择满足约束条件的多个映射候选中的每一个。也就是说,可以不必基于第一到第四策略中的一个或多个来选择映射候选,因为针对最高级别区段的调度在调度顺序中的最后。因此,处理器130可以选择满足约束条件的多个映射候选中的每一个,而无需基于第一至第四策略来选择映射候选。

同样,根据本公开实施例的神经网络计算设备100可以基于各种策略之一执行针对神经网络计算设备100的多个级别区段中的每一个的调度,以便识别最优的神经网络计算调度。此外,可以基于通过针对多个级别区段中的每一个的调度而选择的映射候选的组合来识别多个调度候选。

特别地,当神经网络计算设备100通过基于所有第一至第四策略执行调度来识别多个调度候选时,识别具有接近最低计算成本的计算成本的神经网络计算调度的概率可以增加,因为第一策略、第二策略、第三策略和第四策略可以相互覆盖根据每个策略来识别的多个映射候选的盲点。

在实施例中,处理器130可以执行针对多个数据流组合中的每一个的自底向上的调度。

在实施例中,神经网络计算数据可以根据各种数据流在相邻存储器层次之间发送和接收。在实施例中,多个数据流组合可以基于在相邻存储器层次之间发送和接收的神经网络计算数据的各种数据流来生成。

数据流可以是其中与输入数据参数相关的数据被重复使用的输入静态(IS)数据流、其中与权重数据参数相关的数据被重复使用的权重静态(WS)数据流、以及其中与输出数据参数相关的数据被重复使用的输出静态(OS)数据流中的一种。例如,在图4中,假设神经网络计算数据在第一序列中可以根据三个数据流IS、OS和WS来发送和接收,在第二序列中可以根据两个数据流WS和OS来发送和接收,并且第三序列中可以根据两个数据流IS和WS来发送和接收,总共可以生成12个数据流组合。

处理器130可以基于上述第一策略、第二策略和第三策略中的至少一个来执行针对12个数据流组合中的每一个的调度。

在实施例中,处理器130可以基于第一策略或第四策略来执行针对多个数据流组合中的每一个的调度。

具体地,在每个序列中,满足约束条件的多个映射候选中的每一个的移动成本可以根据神经网络计算数据的数据流而变化。也就是说,在每个序列中可以根据其中硬件映射被执行的神经网络数据流来选择不同的映射候选。因此,可以为多个数据流组合中的每一个选择不同映射候选的组合。

在实施例中,处理器130可以基于第二策略或第三策略执行针对多个数据流组合中的每一个的调度。

具体地,第二种策略和第三种策略不考虑每个序列中的神经网络数据的移动成本。也就是说,无论在每个序列中其中硬件映射被执行的神经网络数据流如何,都可以选择相同的映射候选。因此,可以为多个数据流组合中的每一个选择映射候选。

然而,卷积操作所需的计算成本可以根据数据流组合而变化,即使对于相同映射候选的组合也是如此。也就是说,在与相同映射候选的多个数据流组合相对应的多个调度候选中,具有最低计算成本的调度候选可以被识别为神经网络计算调度。

同样,当神经网络计算数据可以根据各种数据流在相邻存储器层次之间发送和接收时,根据本公开实施例的神经网络计算设备100可以考虑数据流和硬件映射来执行调度。因此,神经网络计算设备100可以识别具有更低计算成本的神经网络计算调度。

图5A和图5C是根据本公开实施例的神经网络参数的图。

参考图5A,示出了一般卷积层。在一般卷积层中,可以通过对输入数据301和权重数据302执行卷积操作来生成输出数据303。此时,可能存在与每个数据集的类型和大小相关的参数值。参数值可以是在本公开的硬件映射中使用的神经网络参数500。

具体地,神经网络参数500可以包括与输入数据301的因子相关的多个输入数据参数、与权重数据302的因子相关的多个权重数据参数、以及与输出数据303的因子相关的多个输出数据参数。

输入数据参数可以包括与输入数据301的批大小B、输入通道C、组大小G、输入高度V和输入宽度U中的至少一个相关的参数。

权重数据参数可以包括与权重数据302的权重通道C、组大小G、权重计数K、权重高度S和权重宽度R中的至少一个相关的参数。

输出数据参数可以包括与输出数据303的批大小B、组大小G、输出计数K、输出高度Q和输出宽度P中的至少一个相关的参数。

此外,输入数据301的高度V和宽度U可以从其他神经网络参数500导出。例如,在卷积神经网络层的情况下,可以使用公式U=(p-1)×步幅+R和V=(Q-1)×步幅+S来计算输入数据301的高度V和宽度U。也就是说,输入数据301的输入V和宽度U是可以根据神经网络层的类型而不同地导出的神经网络参数500。

神经网络参数500的值可以被分解,从而被分配到神经网络计算设备100的空间级别和时间级别作为映射值。

参考图5B,可以看到卷积操作过程由伪代码表示。此时,与组G相关的参数可以是卷积类型之一,例如存在于MobileNet中的逐深度卷积层等。当G=1时,所示代码可以指一般卷积。

每个神经网络参数500上的循环以重复的形式在伪代码上示出。具体地,输出数据303的参数B、K、P和Q在外部循环中重复,与输出数据303的参数无关的参数C、R和S在内部循环中重复。这示出了OS数据流发生的情况,因为其在外部循环中重复的与输出数据303的参数B、K、P和Q相关的数据被固定。

同样,可以通过改变伪代码上的循环顺序来执行调度。然而,在这种情况下,当考虑神经网络计算设备100的多层次结构、存储容量和多个存储器层次的组件数量等时,调度过程可能变得更加复杂。

参考图5C,可以看到神经网络参数500之间的相关性。一个参数可能与两个或三个数据集相关。

例如,类别α可以是与权重数据302和输出数据303相关的参数的类别,并且可以包括计数K。类别β可以是与输入数据301和输出数据303相关的参数类别,并且可以包括批大小B、输出数据303的高度Q、以及输出数据303的宽度P。类别γ可以是与输入数据301和权重数据302相关的参数类别,并且可以包括通道C、权重数据302的高度S和权重数据302的宽度R。类别δ可以是与输入数据301、权重数据302和输出数据303相关的参数类别,并且可以包括组G。

图6是根据本公开实施例的调度表的图。

处理器130可以使用调度表600执行神经网络计算数据的硬件映射。

可以看到,神经网络计算设备100的所有时间级别和空间级别,从作为最上面的操作器(例如,图1的120)的MAC到作为最下面的存储器层次的DRAM交替地列出在调度表的一列中。此外,在映射表的一列中可以看到,根据相关性列出了神经网络参数500。

调度表的每个空间可以包括映射值(映射度)。这里,可以将某一神经网络参数500的值的因子分配到对应于神经网络参数500的列,作为映射值。因此,某一列的所有映射值的乘积可以与对应于该列的神经网络参数500的值相同。例如,如果神经网络参数500的计数(K)值是128,则K

此外,可以看到,在调度表的一列中,数据流被分配到多个存储器层次。这里,数据流可以指神经网络计算数据的数据流,该数据流在该数据流已经被分配到的列的存储器层次和与该列的存储器层次相邻的低级别存储器层次之间发送和接收。例如,当与全局缓冲器相对应的列的数据流是OS数据流时,在全局缓冲器和DRAM之间发送和接收的神经网络计算数据可以沿着OS数据流移动。分配到调度表的每个空间的映射值可以包括关于硬件映射的信息,该硬件信息是关于与包括该空间的行相对应的级别的。也就是说,处理器130可以将映射值分配到调度表的某一行的空间,并且可以执行关于与该行相对应的级别的硬件映射。

图7是示出根据本公开实施例的计算可以分配到调度表的映射值的组合的数量的方法的图。

参考图7A,可以将调度表中的神经网络参数A和神经网络参数B的因子分配到神经网络计算设备100的多个级别Lx、Ly和Lz。在这种情况下,对应于神经网络参数A的列的映射值Alx、Aly和Alz的乘积可以是3,其是神经网络参数A的值,对应于神经网络参数B的列的映射值Blx、Bly和Blz的乘积可以是12,其是神经网络参数B的值。

参考图7B,可以在调度表中示出可以分配到神经网络计算设备100的Lx、Ly和Lz级别的神经网络参数A的因子的组合和神经网络参数B的因子的组合。因此,可以分配到调度表的映射值的组合的数量可以是54,它是3(即神经网络参数A的因子的组合的数量)和18(即神经网络参数B的因子的组合的数量)的乘积。

参考图7C,可以分配到调度表的映射值的组合的数量可以基于调度表的神经网络计算设备100的级别的数量n和通过将神经网络参数的值分解为质因数而获得的质因数的索引r的具有重复的组合来计算。

因此,可以看到,随着神经网络参数的类型的数量和神经网络计算设备的级别的数量的增加,可以分配到调度表的映射值的组合的数量迅速增加。

此外,在包括计算可以分配到调度表的映射值的所有组合的计算成本并确定具有最低计算成本的映射值的组合的调度方法中,需要计算过多地大量的映射值的组合,因此,可能存在调度花费过多的时间的问题。

相反,根据本公开实施例的神经网络计算设备100不计算可以分配到调度表的映射值的所有组合的计算成本。而是,根据本公开实施例的神经网络计算设备100可以首先选择可以分配在某级别区段中的映射值组合中的至少一个,然后仅针对所选择的映射值组合选择可以分配在下一级别区段中的映射值组合中的一个。因此,可以显著减少其中需要计算其计算成本的映射值的组合的数量,从而减少执行调度所需的时间。

图8A和图8C是示出根据本公开实施例的使用调度表执行自底向上的调度的过程的图。

处理器130可以通过顺序地分配从调度表的最低级别区段到最高级别区段的映射值来执行自底向上的调度。

具体地,处理器130可以首先将映射值分配到某级别区段,然后将映射值分配到下一级别区段。这里,可以存在与分配到某级别区段的映射值组合相对应的硬件映射。换句话说,将映射值分配到调度表的某级别区段可以对应于在图4所示的每个序列中执行的硬件映射。硬件映射将在以下描述。

参考图8A,处理器130可以执行从作为神经网络计算设备100的多个级别中的最低级别区段的DRAM到全局缓冲器的硬件映射。

具体地,处理器130可以识别从DRAM到调度表的全局缓冲器的多个映射值的组合。分配到某列的所有映射值的乘积对应于与该列相对应的神经网络参数500的值。这里,多个映射值的组合可以对应于参考图4描述的多个所识别的映射候选。

此外,处理器130可以在多个所识别的映射值的组合中识别满足约束条件的多个映射值的组合。这里,满足约束条件的映射值的组合可以对应于满足参考图4描述的约束条件的映射候选。

基于映射值的组合确定的神经网络计算数据的数据块大小可能需要等于或小于加载神经网络数据的存储器层次的存储容量。下面参考图9描述计算数据块大小的特定方法。

此外,基于映射值的组合所确定的所需的组件数量根据约束条件可能需要等于或小于可用的组件数量。这里,所需的组件数量可以等于分配到组件的行的映射值的乘积。

此外,处理器130可以选择满足约束条件的多个映射值的组合中的一个,并且可以对所选择的组合执行从DRAM到调度表的全局缓冲器的硬件映射。这里,分配到与调度表的全局缓冲器相对应的行的映射值是临时分配的映射值,并且可以根据在下一操作中执行的硬件映射而变化。

参考图8A,在从DRAM到全局缓冲器的硬件映射被执行之后,处理器130可以执行从全局缓冲器到局部缓冲器的硬件映射。

具体地,处理器130可以识别从调度表的全局缓冲器到局部缓冲器的多个映射值的组合。所有这些映射值的乘积被分配到与由先前的硬件映射临时分配的列中的全局缓冲器的映射值相对应的某列。

此外,处理器130可以在多个所识别的映射值的组合中识别满足约束条件的多个映射值的组合。

此外,处理器130可以选择满足约束条件的多个映射值的组合中的一个,并且可以对所选择的组合执行从调度表的全局缓冲器到局部缓冲器的硬件映射。这里,分配到与调度表的局部缓冲器相对应的行的映射值是临时分配的映射值,并且可以根据在下一操作中执行的硬件映射而变化。

参考图8C,在从全局缓冲器到局部缓冲器的硬件映射被执行之后,处理器130可以执行从局部缓冲器到寄存器的硬件映射。图8C中执行的硬件映射过程与参考图8B已经描述的相同,因此,将省略对其重复的描述。

同样,在从局部缓冲器到寄存器的硬件映射被执行之后,映射值可以分配到调度表的所有空间。另外,其中映射值被分配到所有空间的调度表可以对应于某一神经网络计算调度。

在实施例中,处理器130可以基于上述第一策略、第二策略、第三策略和第四策略选择满足约束条件的多个映射值的组合中的至少一个,并且可以对所选择的组合执行硬件映射。因此,可以生成其中映射值已经被分配到所有空间的多个调度表。所生成的调度表可以对应于参考图4描述的多个调度候选。

为了基于第一策略来识别满足约束条件的多个映射值的组合中的至少一个,处理器130可以基于映射值计算神经网络计算数据的数据块大小和访问神经网络计算数据的次数。这里,访问神经网络计算数据的次数可以指神经网络计算数据从低级别存储器层次被加载到高级别存储器层次以执行卷积操作。此外,处理器130可以基于数据块大小和访问次数来计算神经网络计算数据的移动所需的能量或时间。因此,处理器130可以在满足约束条件的多个映射值的组合中选择具有最低移动成本的映射值的组合,并且可以对所选择的组合执行硬件映射。

为了基于第二策略来识别满足约束条件的多个映射值的组合中的至少一个,处理器130可以基于映射值来识别神经网络计算数据的数据块大小。此外,处理器130可以在多个映射值的组合中选择具有最大数据块大小的映射值的组合,并且可以对所选择的组合执行硬件映射。

为了基于第三策略来识别满足约束条件的多个映射值的组合中的至少一个,处理器130可以基于映射值在满足约束条件的多个映射值的多个组合中选择其中被分配到高级别存储器层次的行的每个映射值的因子的数量的乘积最大的映射值的组合,并且可以对所选择的组合执行硬件映射。

为了基于第四策略来识别满足约束条件的多个映射值的组合中的至少一个,处理器130可以识别不受在下一级别区段中发送和接收的神经网络计算数据的数据流影响的神经网络计算数据。此外,处理器130可以基于映射值识别不受数据流影响的神经网络计算数据的数据块大小。此外,处理器130可以在映射值的多个组合中选择其中不受数据流影响的神经网络计算数据的数据块大小小于第二高级别存储器层级的存储容量的映射候选,并对所选择的映射候选执行硬件映射。

在实施例中,当调度神经网络计算设备100的最上面的级别区段时,处理器130可以选择满足约束条件的多个映射值的每个组合。例如,当处理器130执行从局部缓冲器到寄存器的硬件映射时,处理器130不基于第一至第三策略中来识别映射值的组合,而是通过选择满足约束条件的多个映射值的每个组合来执行硬件映射。

图9是示出根据本公开实施例的基于被分配到调度表的映射值来计算神经网络计算数据的数据块大小和移动成本的方法的图。

参考图9,数据块大小可以基于被分配到高级别存储器层次的行的映射值来计算,其中数据块被加载到调度表中的该高级别存储器层次的该行。具体地,可以基于输入数据参数B、C、U和V的映射值来计算输入数据块大小。此外,可以基于权重数据参数K、G、C、R和S的映射值来计算权重数据块大小。此外,可以基于输出数据参数B、K、P和Q的映射值来计算输出数据块大小。

这里,输入数据参数U和V的映射值可以不是被分配在调度表上的值,并且可以是基于其他参数的映射值来导出的值,如参考图5A所描述。例如,在卷积神经网络层的情况下,可以使用公式U=(p-1)×步幅+R和V=(Q-1)×步幅+S来计算输入数据参数U和V的映射值。

总数据块大小可以是输入数据块大小、权重数据块大小和输出数据块大小的总和。此外,数据块大小可能需要等于或小于加载数据块的存储器层次的存储容量。

参考图9,可以基于被分配到低级别存储器层次的行的映射值来计算神经网络计算数据的访问次数,其中该数据块被加载到调度表中的该低级别存储器层次的该行。具体地,可以基于多个神经网络参数B、K、G、P、Q、C、R和S的映射值来计算基线值。此外,可以基于基线和神经网络计算数据的数据流来计算输入数据、权重数据和输出数据中的每一个的访问次数。

可以通过将输入数据块大小、权重数据块大小和输出数据块大小中的每一个乘以数据的访问次数来计算输入数据、权重数据和输出数据的每个数据点的访问次数。

可以基于每个数据点的访问次数来计算低级别存储器层次和高级别存储器层次中的每一个所需的神经网络计算数据的移动成本。

在相邻存储器层次之间发送和接收的神经网络计算数据的移动成本可以通过高级别存储器层次的神经网络计算数据的移动成本与低级别存储器层次的神经网络计算数据的移动成本的总和来计算。

图10A和图10B是示出根据本公开实施例的满足约束条件的映射值的组合的图。

参考图10A,存储在DRAM中的神经网络计算数据300可以基于某一神经网络计算调度在DRAM和局部缓冲器之间发送和接收。

这里,神经网络计算数据300的神经网络参数R和S具有值3,并且P和Q可以具有值2。其余神经网络参数可以具有值1。神经网络参数U和V可以基于分配到调度表中的高级别存储器层次的行的映射值来确定。

参考图10B,分配到调度表的映射值的组合可以与在DRAM和局部缓冲器之间发送和接收的神经网络计算数据的神经网络计算调度相对应。

具体地,图10A的神经网络参数可以被分配为调度表的DRAM和局部缓冲器之间的映射值。因此,可以看到,调度表的每个列的所有映射值的乘积与对应于图10A的对应列的神经网络参数的值相同。

在这种情况下,所分配的映射值的组合可能满足关于数据块大小的约束条件。具体地,可以基于分配到调度表的局部缓冲器的行的神经网络参数的映射值来计算输入数据的数据块大小为3,权重数据的数据块大小为3,输出数据的数据块大小为1。可以看出,映射值的组合满足关于数据块的约束条件,因为所计算的数据块大小等于或小于图10A的局部缓冲器的存储容量。

此外,通过乘以行的映射值,排列在X轴中的处理元件的组件的所需数量可以计算为2。可以看出,映射值的组合满足关于组件的所需数量的约束条件,因为所计算的所需数量等于或小于图10A的X轴的处理元件的数量。

同样,根据本公开实施例的神经网络计算设备100可以使用调度表执行自底向上的调度。然而,执行自底向上的调度的方法不限于此,并且可以基于其他装置执行自底向上的调度。

响应于上述组件的性能,可以添加或删除至少一个组件。此外,本领域普通技术人员将容易理解,组件的相互位置可以根据系统的性能或结构改变。

图11是示出根据本公开实施例的控制神经网络计算设备的方法的流程图。图11的流程图仅示出了用于实现本公开的目的的一个实施例,并且可以按需要添加或删除一些操作。

首先,控制神经网络计算设备的方法包括执行关于神经网络计算数据的第一移动的第一调度,神经网络计算数据在第一存储器层次和第二存储器层次之间发送和接收(S1110),第二存储器层次具有比第一存储器层次的级别更高的级别。

此外,在控制神经网络计算设备的方法中,当执行了第一调度时,执行针对神经网络计算数据的第二移动的第二调度(S1120),神经网络计算数据在第二存储器层次和第三存储器层次之间发送和接收,第三存储器层次具有比第二存储器层次的级别更高的级别。

此外,在控制神经网络计算设备的方法中,基于第一调度的结果和第二调度的结果来识别用于执行卷积操作的神经网络计算调度(S1130)。

在实施例中,在操作S1110中,可以基于多个策略中的至少一个来执行第一调度。在操作S1120中,在第一调度被执行之后,可以基于多个策略中的至少一个来执行第二调度。在操作S1130中,可以基于第一调度的结果和第二调度的结果来识别多个调度候选。

在这种情况下,多个策略可以包括:用于提高多个存储器层次中的低级别存储器层次的利用率的第一策略、用于提高多个存储器层次中的高级别存储器层次的利用率的第二策略、用于保持高级别存储器层次的利用率和低级别存储器层次的利用率之间的平衡的第三策略、以及用于防止神经网络计算数据的重复发送和接收的第四策略。

在实施例中,在操作S1110中,可以针对基于第一移动的数据流和第二移动的数据流生成的多个数据流组合中的每一个执行第一调度。在操作S1120中,在第一调度执行之后,可以对多个数据流组合中的每一个执行第二调度。

在这种情况下,可以基于神经网络计算数据的多个神经网络参数中的关于哪些数据被重复使用的参数来确定数据流。

在实施例中,在操作S1110中,当基于第一策略来执行第一调度时,可以执行第一调度以最小化用于第一移动的神经网络计算数据的移动成本。在操作S1110中,当基于第一策略来执行第二调度时,可以执行第二调度以最小化用于第二移动的神经网络计算数据的移动成本。

在这种情况下,移动成本可以包括神经网络计算数据的发送和接收所需的能量和时间中的至少一个。

在实施例中,在操作S1110中,当基于第二策略来执行第一调度时,可以执行第一调度以最大化用于第一移动的神经网络计算数据的数据块大小。在操作S1120中,当基于第二策略来执行第二调度时,可以执行第二调度以最大化用于第二移动的神经网络计算数据的数据块大小。

在实施例中,在操作S1110中,当基于第三策略执行第一调度时,可以执行第一调度以最大化用于第二移动的映射候选的数量。在操作S1120中,当基于第三策略执行第二调度时,可以执行第二调度以最大化用于神经网络计算数据的第三移动的映射候选的数量,其中神经网络计算数据在第三存储器层次和第四存储器层次之间发送和接收,第四存储器层次具有比第三存储器层次的级别更高的级别。

在实施例中,在操作S1110中,当基于第四策略来执行第一调度时,可执行第一调度使得在第二移动中神经网络计算数据不被重复发送和接收。此外,在操作S1120中,当基于第四策略来执行第二调度时,可以执行第二调度使得在神经网络计算数据的第三移动中神经网络计算数据不被重复发送和接收,其中神经网络计算数据在第三存储器层级和第四存储器层级之间发送和接收,第四存储器层级具有比第三存储器层级的级别更高的级别。

在实施例中,多个调度候选可以满足约束条件,该约束条件是基于多个存储器层次的存储容量和包括该多个存储器层次的组件的数量中的至少一个来确定的。

在实施例中,操作S1130可以包括针对多个调度候选中的每一个,识别执行卷积操作所需的计算成本,以及在多个调度候选中将具有最小计算成本的调度候选识别为神经网络计算调度。

在实施例中,控制神经网络计算设备的方法还可以包括基于所识别的神经网络计算调度执行卷积操作。

此外,执行第一调度的方法、执行第二调度的方法和识别神经网络计算调度的方法的细节如上所描述。因此,本公开的控制神经网络计算设备的方法通过仅计算所选择的调度候选的计算成本而不计算可能适用于神经网络计算设备的所有调度候选的计算成本,可以显著减少执行调度所需的时间。此外,通过调度所识别的神经网络计算调度可以具有与所有调度候选中具有最低计算成本的调度候选的计算成本相似的计算成本。

图12A和图12B示出了将根据本公开实施例的调度方法与根据传统技术的调度方法进行比较的表和图。

为了验证根据本公开实施例的神经网络计算设备100的性能,进行了基于YOLO的神经网络计算实验。

参考图12A,可以看到公开了包括根据本公开实施例的调度方法(NeuroSpector)的各种调度方法。

参考图12B,可以看出,根据本公开实施例的调度方法(NeuroSpector)的完成调度的速度高于传统调度方法的速度。

具体地,从实验可以看出,根据本公开实施例的调度方法(NeuroSpector)平均比Timeloop(随机搜索(Random-search))方法快201.8倍,并且平均比dMazeRunner方法快465.8倍。

此外,从实验结果可以确认,根据本公开实施例的调度方法(NeuroSpector)平均比Zigzag方法快2.5倍,并且在查找调度的准确度方面优于Zigzag方法。

图13是用于解释由根据本公开实施例的调度方法所识别的神经网络计算调度的准确度的图。

参考图13,TimeLoop(随机搜索)方法迭代地选择满足约束条件的随机调度候选,并确定最优调度候选。也就是说,由于TimeLoop(随机搜索)方法随机选择满足约束条件的调度候选,因此有高可能性无法找到最优的调度候选。dMazeRunner方法确定具有最低计算成本的最优调度,同时检查满足约束条件的所有候选调度。

然而,dMazeRunner方法可能需要花费较长的时间来确定最优调度候选。相比之下,在Zigzag方法和本公开的神经网络计算方法(NeuroSpector)方法中,由于不是满足约束条件的所有调度候选被检查,因此可以相对快速地确定最优调度候选。

当能量值(由图的纵轴表示)接近1时,表明所确定的神经网络计算调度的能量成本接近每个调度方法中的最低能量成本。因此,可以看出,本公开的神经网络计算方法(NeuroSpector)的准确度高于Zigzag方法的精度。

实验证实,除了Yolo之外,还有诸如MobilNet和AlexNet的各种加速器和其他网络也显示出类似的趋势。

应当理解,本文描述的实施例应当仅在描述性意义上考虑,而不是为了限制的目的。每个实施例中的特征或方面的描述通常应被认为可用于其他实施例中的其他类似特征或方面。虽然本公开已经参考附图描述了一个或多个实施例,但本领域普通技术人员将理解,在不脱离如由所附权利要求所定义的本公开的精神和范围情况下,可以在其中做出形式和细节的各种改变。

相关技术
  • 基于神经网络算法的移动控制方法、系统和计算机设备
  • 神经网络计算方法、设备、处理器及计算机可读存储介质
  • 控制方法及控制装置、计算机设备、存储介质及烹饪设备
  • 控制方法及控制装置、计算机设备、存储介质及烹饪设备
  • 神经网络的训练方法、横向控制方法、装置、设备及介质
  • 有源电力滤波器神经网络终端滑模控制方法及计算设备
  • 基于级联神经网络的体感游戏控制方法及装置、计算设备
技术分类

06120115625268