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

用于AI芯片的数据处理方法、装置、芯片及计算机设备

文献发布时间:2023-06-19 19:28:50


用于AI芯片的数据处理方法、装置、芯片及计算机设备

技术领域

本申请实施例涉及芯片技术领域,特别涉及一种用于AI芯片的数据处理方法、装置、芯片及计算机设备。

背景技术

人工智能(Artificial Intelligence,AI)芯片也称为AI加速器,是一类专门用于加速人工智能算法的硬件加速器。

相关技术中,基于AI芯片运行神经网络进行推理工作,通常受限于AI芯片的片上缓存(Static Random-Access Memory,SRAM)的容量。因此,AI芯片通常将神经网络中的网络层的输入特征图分块后读入片上缓存,并在AI芯片上处理该数据,在该数据处理完成后从神经网络的输出层输出至片外存储(Double Data Rate SDRAM,DDR)。如此反复执行直至每一块输入特征图均被处理完成。由此,片外存储中得到的输出数据将拼接成为最终的结果数据。

然而,上述处理方式受片外存储的带宽限制较大,且需要频繁的片外访问操作,影响AI芯片对神经网络的处理效率。

发明内容

本申请实施例提供了一种用于AI芯片的数据处理方法、装置、芯片及计算机设备。所述技术方案如下:

根据本申请的一方面内容,提供了一种用于人工智能AI芯片的数据处理方法,所述方法包括:

获取神经网络的结构特征;

基于所述结构特征,确定出至少两个候选层间融合(layer fusion)策略,所述候选层间融合策略用于融合所述神经网络中的所述网络层;

从至少两个所述候选层间融合策略中,确定出目标层间融合策略,采用所述目标层间融合策略融合后的所述神经网络在推理过程中的目标交换量和推理内存耗费峰值满足预设条件,所述目标交换量用于指示单次推理过程中所述AI芯片的片上缓存与片外存储之间在目标维度上的数据交换量,所述推理内存耗费峰值用于指示所述神经网络在推理过程中消耗所述片上缓存的最大值;

基于所述目标层间融合策略,融合所述神经网络中相邻的网络层,得到融合后的神经网络;

基于所述融合后的神经网络,处理待推理数据。

根据本申请的另一方面内容,提供了一种用于AI芯片的数据处理装置,所述装置包括:

特征获取模块,用于获取神经网络的结构特征;

第一确定模块,用于基于所述结构特征,确定出至少两个候选层间融合策略,所述候选层间融合策略用于融合所述神经网络中的所述网络层;

第二确定模块,用于从至少两个所述候选层间融合策略中,确定出目标层间融合策略,采用所述目标层间融合策略融合后的所述神经网络在推理过程中的目标交换量和推理内存耗费峰值满足预设条件,所述目标交换量用于指示单次推理过程中所述AI芯片的片上缓存与片外存储之间在目标维度上的数据交换量,所述推理内存耗费峰值用于指示所述神经网络在推理过程中消耗所述片上缓存的最大值;

网络融合模块,用于基于所述目标层间融合策略,融合所述神经网络中相邻的网络层,得到融合后的神经网络;

数据处理模块,用于基于所述融合后的神经网络,处理待推理数据。

根据本申请的另一方面内容,提供了一种AI芯片,该AI芯片中设置有如本申请提供的数据处理装置。

根据本申请的另一方面内容,提供了一种计算机设备,所述计算机设备中包括中央处理器CPU芯片、AI芯片和存储器,所述CPU芯片、AI芯片和存储器之间通过总线相连,所述AI芯片包括如本申请提供的数据处理装置。

根据本申请的另一方面内容,提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令,所述指令由处理器加载并执行以实现如本申请各个方面提供的用于AI芯片的数据处理方法。

根据本申请的一个方面,提供了一种计算机程序产品,该计算机程序产品包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各种可选实现方式中提供的用于AI芯片的数据处理方法。

本申请实施例提供的技术方案带来的有益效果可以包括:

在获取神经网络的结构特征后,本申请可基于该特征确定出至少两个候选层间融合策略,再从中选出目标层间融合策略,最后基于该目标层间融合策略融合神经网络中相邻的网络层,得到融合后的神经网络,从而基于该融合后的神经网络处理待推理数据。由于采用目标层间融合策略融合后的神经网络在推理过程中的目标交换量和推理内存耗费峰值满足预设条件,且目标交换量用于指示单次推理过程中AI芯片的片上缓存在目标维度上的数据交换量。因此,本申请能够在减少片内外数据交换量时,确定出可用的目标层间融合策略来融合神经网络,从而在AI芯片硬件和神经网络不变时,提高神经网络的推理效率。

附图说明

为了更清楚地介绍本申请实施例中的技术方案,下面将对本申请实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。

图1是本申请涉及的一种计算机设备的结构示意图;

图2是相关技术中示出的一种层间融合方法应用时的示意图;

图3是相关技术中示出的一种数据流方法应用时的示意图;

图4是相关技术中一种保留边界的操作的示意图;

图5是本申请一个示例性实施例提供的一种用于AI芯片的数据处理方法的流程图;

图6是本申请另一个示例性实施例提供的一种用于AI芯片的数据处理方法流程图;

图7是本申请提供的一种融合后的神经网络的硬件执行逻辑的示意图;

图8是本申请实施例提供的一种树状处理逻辑的示意图;

图9是本申请实施例提供的一种树状数据处理的流程示意图;

图10是本申请一个示例性实施例提供的一种用于AI芯片的数据处理装置的结构框图。

具体实施方式

为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。

下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。

在本申请的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。在本申请的描述中,需要说明的是,除非另有明确的规定和限定,术语“相连”、“连接”应做广义理解。例如,“相连”和“连接”的含义可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本申请中的具体含义。此外,在本申请的描述中,除非另有说明,“多个”是指两个或两个以上。“和/或”,用于描述关联对象的关联关系,表示可以存在三种关联关系。例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。

如本文中所使用,根据上下文,术语“如果”任选地被解释为“当......时”、“在……时”、“在……情况下”、“响应于确定”或“响应于检测”。类似地,根据上下文,短语“如果确定……”或“如果检测到(所陈述的条件或事件)时”或“响应于检测到(所陈述的条件或事件)”。

需要说明的是,使用个人可识别信息应遵循公认的为满足或超过维护用户隐私的行业或政府要求的隐私政策和做法。具体地,个人可识别信息在管理和处理的过程中应当向用户明确说明授权使用的性质,以使无意或未经授权的访问或使用的风险最小化。

随着AI技术的不断发展和广泛应用,AI网络的功能越来越强大。相应的,AI网络的结构也越来越复杂,使用AI网络进行推理时的计算量也越来越大。因此,计算机设备对AI网络的处理速度的要求也越来越高。AI芯片就是为了这一需求而开发的硬件组件。

示意性的,请参见图1,图1是本申请涉及的一种计算机设备的结构示意图。在计算机设备100中,包括CPU芯片110、AI芯片120和片外存储130。可选地,计算机设备100还可以包括DMA(Direct Memory Access,直接存储器访问)控制器140。DMA控制器140用于控制不同速度的硬件器件进行数据交换。上述设备之间还可以通过总线150进行数据交换。

在计算机设备100中,CPU芯片110控制AI芯片120获取神经网络。在AI芯片120获取神经网络的结构特征后,AI芯片120可以基于该结构特征确定出至少两个候选层间融合策略,再从至少两个候选层间融合策略中确定出目标层间融合策略,从而能够基于该目标层间融合策略融合神经网络中相邻的网络层,得到融合后的神经网络。AI芯片120通过融合后的神经网络处理待推理数据,从而实现基于神经网络处理待推理数据的操作。

在一种可能的方式中,AI芯片120可以仅在初始化神经网络的过程中执行上述过程。在神经网络完成初始化后,AI芯片将神经网络的标识和对应的目标层间融合策略存储在片外存储130中。在CPU芯片110需要重新调度神经网络推理待推理数据时,CPU芯片110根据神经网络的标识获取到对应的目标层间融合策略。随后,AI芯片120按照目标层间融合策略融合神经网络中相邻的网络层,得到融合后的神经网络。AI芯片120再使用融合后的神经网络处理待推理数据。

在另一种可能的方式中,若未设置AI芯片120在片外存储130中存储神经网络的标识和对应的目标层间融合策略的机制,则CPU芯片110需要在每一次调度神经网络前执行上述先确定候选层间融合策略,再从候选层间融合策略中确定目标层间融合策略的过程。

需要说明的是,当CPU芯片110需要调用神经网络处理片外存储130中的待推理数据时,CPU芯片110指示AI芯片120从片外存储130中读入待推理数据。当融合后的神经网络的一个层块完成计算时,AI芯片120将该层块输出的中间数据传输至片外存储130,再从片外存储130重新读入该中间数据至神经网络中的下一层块进行计算,直至神经网络的输出层得到该数据。

举例而言,若神经网络包括输入层(layer input)、第一卷积层(conv1)、第二卷积层(conv2)、第三卷积层(conv3)和输出层(layer output),则根据不同的层间融合策略,可以将神经网络融合成为不同的块层的组合。

在融合后得到的神经网络的层块数是1时,conv1、conv2和conv3融合成为一个层块,也即该层块是由3个数据层融合得到的。在融合后的神经网络中,由于三个数据层融合成为了一个层块,则该层块的输入是输入层数据,输出是输出层数据。也即该融合后的神经网络中并不存在中间数据。AI芯片120从片外存储130读入推理数据后,向片外存储130输出的数据是神经网络推理后得到的结果数据。

在融合后的神经网络的层块数是2时,conv1、conv2和conv3融合成为两个层块。一种可能的方式中,conv1和conv2融合成为一个层块,conv3是另一个层块。在此情况下,AI芯片120从片外存储130读入推理数据后,将经过conv2卷积处理后得到的中间数据输出至片外存储130,再从片外存储130读入该中间数据至conv3,随后由conv3进行后续计算,直至神经网络的输出层输出结果数据。在另一种可能的方式中,conv1是一个块层,conv2和conv3融合成为另一个层块。在此情况下,AI芯片120从片外存储130读入推理数据后,将经过conv1卷积处理后的中间数据输出至片外存储130,再从片外存储130读入该中间数据输入conv2和conv3融合成为的块层,随后在该块层中进行后续计算,直至神经网络的输出层输出结果数据。

需要说明的是,若目标维度是行,且结果数据是12行数据,神经网络一次计算能够得到6行数据,则神经网络需要分两次计算推理数据,从而得到12行结果数据。在另一种可能的方式中,目标维度还可以是列。

在本申请中,深度神经网络(Deep Neural Networks,DNN)通常含有大量网络层(Layer)。通常位于AI芯片中的片上缓存的访问性能高于片外存储的访问性能,并且存在数据传输的带宽限制。为了提高AI芯片处理数据的效率,本申请技术人员将数据缓存(cache)在片上缓存中,减少片上缓存和片外存储之间的数据交换。该设计理念是本申请方案的设计原则之一。

下面介绍本领域中通常采用的两种减少片上缓存和片外存储之间的数据交换的方法。

第一种方法是层间融合(Layer fusion)方法。该方法将神经网络中的多个网络层融合在一起,在尽量避免片上缓存和片外存储之间的数据交换的前提下,尽量令AI芯片在同一时刻进行较大的计算量。该方法是以广度优先。由于片上缓存的空间有限,一般无法将推理数据一次性加载至片上缓存中。因此,AI芯片将切分推理数据。切分的维度既可以是行维度,也可以是列维度。

可选的,推理数据可以是特征图(feature map)。

需要说明的是,本申请中的推理数据一般可以包括NHWC四个维度(特征图的布局,N指个数维度,H指高度维度,W指宽度维度,C指通道维度)。AI芯片可以从高度维度(也即行维度)将推理数据切分为若干个同样尺寸的小块,也可以从宽度维度(也即列维度)将推理数据切分为若干个同样尺寸的小块。

示意性的,AI芯片不仅可以从一个目标维度将推理数据切分为若干个同样尺寸的小块,还可以同时从两个目标维度将推理数据切分为若干个同样尺寸的小块。比如,AI芯片可以同时从高度维度(也即行维度)和宽度维度(也即列维度)将推理数据切分为若干个同样尺寸的小块。

由于推理数据切分后,在神经网络推理过程中会造成重复计算,因此会降低神经网络的推理效率。在此基础上,层间融合方法中出现的重复计算量将随着融合层数(fuselayer)的增加而增加。或者,重复计算量将随着切分份数的增加而增加。因此,层间融合方法的层数和切分的分数在实际应用中均受到限制。

请参见图2,图2是相关技术中示出的一种层间融合方法应用时的示意图。在图2中,神经网络包括输入层(input)210、第一卷积层220、第二卷积层230、第三卷积层240和输出层(output)250。

在图2中,第一卷积层220、第二卷积层230和第三卷积层240融合成为一个层块。每一个卷积层对应的卷积核(kernel)的维数都是3,也即卷积核为3*3的规模。在该场景中,可以将目标维数定为行数,也即根据3行输入数据得到1行输出数据。

假设将输入数据按行切分为2份,第一份数据由输入层210输入12行(也即图2中线段AB表示的6行数据加上线段BC表示的6行数据),第一卷积层220输出10行(也即图2中线段EF表示的6行数据加上线段FG表示的4行数据),第二卷积层230输出8行(图2中线段JK表示的6行数据加上线段KL表示的2行数据),第三卷积层240输出6行,正好输出所需结果数据的一半的数据。第二份数据由输入层210输入12行(图2中线段BC表示的6行数据加上线段CD表示的6行数据),其中6行(线段BC表示的6行数据)与第一份数据重叠,第一卷积层220输出10行(图2中线段FG表示的4行数据加上线段GH表示的6行数据),其中4行(线段FG表示的4行数据)与第一份数据重叠,第二卷积层230输出8行(图2中线段KL表示的2行数据加上线段LM表示的6行数据),其中2行与第一份数据重叠,第三卷积层240输出6行,也正好输出所需结果数据的一半的数据。最后,输出层250将根据第一份数据得到的6行数据和根据第二份数据得到的6行数据合并,作为最终的输出。

在计算第一卷积层220中的数据时,其输入的重叠部分会造成6行的重复计算。在计算第二卷积层230中的数据时,其输入的重叠部分会造成4行的重复计算。在计算第三卷积层240中的数据时,其输入的重叠部分会造成2行的重复计算,可见重复计算量会随着融合后的块层的层数的增加而增加,随着切分份数的增加而增加。

针对图2所示的方法,层间融合方法减少了片上缓存与片外存储之间的数据交换,假设片上缓存的空间只够存储12行输入数据和10行输出数据。如果计算完第一卷积层220中的第一份数据后,不启动第二卷积层230继续计算第一份数据,而是计算第一卷积层220中的第二份数据,(在该计算过程中,AI芯片不需要计算重叠部分,仅计算第二份数据中的最后6行),就必须将第一份数据的10行输出暂存到片外存储上。在需要进行第二卷积层230的计算时,再重新将第一份数据的10行输出加载到片上缓存中,从而形成片上缓存与片外存储之间数据交换。随着神经网络的层数加深,层间融合方法也无法做到完全避免片上缓存与片外存储之间的数据交换,而且重复计算的比重也会急剧增加,层间融合方法通常在两者之间做一个权衡。

针对2维的待推理数据,层间融合方法也可同时对行维度和列维度进行切分,实现2维的待推理数据的处理。

第二种方法是数据流(Data streaming)方法。AI芯片采用数据流方法时,一般会每次从片外存储读取1行待推理数据作为数据,在同一时刻尽可能地多计算几个网络层。也即数据流方法遵从深度优先的原则。数据流方法可以基本避免片上缓存与片外存储之间的数据交换。但是每计算一个网络层,数据流方法就需要进行一次逻辑判断,该逻辑判断用于确定是否具备计算下一个网络层的条件。可见,数据流方法需要反复进行逻辑判断,对硬件的性能要求较高。

请参见图3,图3是相关技术中示出的一种数据流方法应用时的示意图。在图3中,神经网络包括输入层(input)、第一卷积层310、第二卷积层320、第三卷积层330和输出层(output)。

在图3中,当输入层读入第1行推理数据时,AI芯片进行逻辑判断,判断无法基于1行推理数据调用第一卷积层310进行计算。

在此情况下,AI芯片继续读入第2行推理数据,AI芯片再进行逻辑判断,判断仍无法基于上述两行推理数据调用第一卷积层310进行计算。

在此情况下,AI芯片继续输入第3行推理数据,AI芯片再进行逻辑判断,判断可以基于上述三行推理数据第一卷积层310进行计算时,调用第一卷积层310计算上述三行推理数据,输出第一卷积层310的第1行输出数据。判断无法调用第二卷积层320计算。

在此情况下,AI芯片继续输入第4行推理数据,判断可以基于上述第2行至第4行推理数据进行计算时,调用第一卷积层310计算上述三行推理数据,输出第一卷积层310的第2行输出数据。判断无法调用第二卷积层320计算。

在此情况下,AI芯片继续输入第5行推理数据,判断可以调用第一卷积层310进行计算,输出第一卷积层310的第3行输出数据。判断可以调用第二卷积层320计算,输出第二卷积层320的第1行输出数据,判断无法调用第三卷积层330计算。

在此情况下,AI芯片继续输入第6行推理数据,判断可以计算第一卷积层310,输出第一卷积层310的第4行输出数据。判断可以调用第二卷积层320计算,输出第二卷积层320的第2行输出数据,判断无法调用第三卷积层330进行计算,继续输入……。

在实际情况中,由于存在池化(pooling)操作、/卷积(conv)操作(步长为2)(stride=2),resize-bilinear(图像缩放-双线性插值),合并(concat)操作,快捷方式(shortcut)等情况,应用数据流方法进行逻辑判断和操作跳转情况更加复杂。由此可见,数据流方法虽然可以基本避免片上缓存与片外存储之间的数据交换,但是每计算一个网络层,就需要逻辑判断和操作跳转一次,对硬件的性能要求较高。

需要说明的是,数据流方法也能够处理2维的推理数据,不出不再展开论述。

需要说明的是,数据流方法在具体实施过程时,一般采用环形缓存(ring buffer)机制。该机制能够保留中间网络层的边界计算结果,从而完全避免重复计算。实际上,层间融合方法在具体实施过程时,也存在验算(recompute)操作和复用(reuse)操作两种方法。其中,验算操作进行重复计算,复用操作通过保留中间网络层的边界计算结果,来完全避免重复计算。

请参见图4,图4是相关技术中一种保留边界的操作的示意图。在图4中,以层间融合的复用操作方法为例,介绍保留中间网络层的边界计算结果的方法。

同样假设AI芯片将推理数据按行切分为2份,第一份数据经由输入层410输入12行,并将输入层410中的2行边界数据(也即图4中线段NC表示的数据)保留在片上缓存中,第一卷积层420输出10行(也即图4中线段EG对应的数据),并将第一卷积层420中的2行边界数据(也即图4中线段PG表示的数据)保留在片上缓存中,第二卷积层430输出8行(也即图4中线段JL对应的数据),并将第二卷积层430中的2行边界数据(也即图4中线段KL表示的数据)保留在片上缓存中,第三卷积层440输出6行,正好输出所需结果数据的一半的数据。

第二份待推理数据经由输入层410输入6行(也即图4中线段CD表示的数据),复用保留的输入层410的2行边界数据(也即图4中线段NC表示的数据),第一卷积层420输出6行(也即图4中线段GH表示的数据),复用保留的第一卷积层420的2行边界数据(也即图4中线段PG表示的数据),第二卷积层430输出6行(也即图4中线段LM表示的数据),复用保留的第二卷积层430的2行边界数据(也即图4中线段KL表示的数据),第三卷积层440输出6行,也正好输出所需结果数据的一半的数据。可以看到,overlap!=保留行数,例如第一份第二份数据的输入的边界数据量共有6行,但保留只需要保留阴影部分的2行,可以在增加少量的片上缓存的前提下,完全避免重复计算。

需要说明的是,广度优先算法一般在具体实施时,会采用穷举或动态规划等算法,搜索最优的h维度上和w维度上的切分方法。上述方法的算法复杂度一般是K·n

示意性的,介绍本申请提供的分批次输入推理数据后,融合后的神经网络的硬件执行逻辑。在该执行逻辑中,包括阶段一和阶段二两个处理逻辑阶段。

阶段一。第一份数据输入到神经网络中的推理数据,没有预先保留的边界数据。因此AI芯片的计算逻辑与阶段二不同。具体过程如下:第一份数据的输入量是12行。AI芯片能够将第一份数据的最后2行作为边界数据保留在片上缓存中,第一卷积层输出10行,并将第一卷积层的最后2行作为边界数据保留在片上缓存中,第二卷积层输出8行,并将第二卷积层的最后2行作为边界数据保留在片上缓存中。其中,第三卷积层作为最后一个用于计算的网络层,输出6行数据,作为结果数据的一部分。

阶段二。第二份数据/第三份数据/以及后面的数据,需要利用预先保留的边界数据。具体过程如下:第二份推理数据的输入量是6行,AI芯片复用保留的输入层对应的2行边界数据,并将此次输入推理数据最后的2行作为边界数据保留在片上缓存中。第一卷积层输出6行,复用保留的第一卷积层对应的边界数据的2行,并将此次计算得到的第一卷积层的输出数据最后的2行作为边界数据保留在片上缓存中。第二卷积层输出6行,复用保留的第二卷积层对应的边界数据的2行,并将此次计算的第二卷积层的输出数据最后的2行作为边界数据保留在片上缓存中。第三卷积层输出6行。第三份数据/以及后面的数据可以按照上述逻辑进行计算,从而完成对待推理数据的计算。

由此可见,该实施例的执行逻辑相比于深度优先较为简洁。在上述实施例中,只需要两个阶段,可以避免逻辑上的反复判断和跳转。

与广度优先重计算操作相比,本申请实施例能完全避免重复计算。

与广度优先复用操作相比,目标层间融合策略搜集机制要更加简单,利用网络层的输出的组合的排序,只需要计算每个融合方法中各个融合模块输出1行时的片上缓存的数据占用量。

可选地,一些融合模块的信息可以记录下来,可以在其他融合方法中复用,进一步减少计算量。以此判断可行性,从而避免穷举或动态规划等,穷举或动态方法的算法复杂度一般不少于K·n

基于上述两种相关技术提供的广度优先和深度优先的方案。本申请提供了一种能够均衡广度和深度的方案。与广度优先的重计算操作相比,能够避免对推理数据的重复计算;与深度优先相比,避免了逻辑上的反复判断和重复计算;与广度优先的复用操作相比,搜索机制更加简单,算法的复杂度为K.n。

请参考图5,图5是本申请一个示例性实施例提供的一种用于AI芯片的数据处理方法的流程图。该用于AI芯片的数据处理方法可以应用在上述所示的计算机设备中。在图5中,用于AI芯片的数据处理方法包括:

步骤510,获取神经网络的结构特征。

其中,结构特征用于指示神经网络的至少两个网络层之间的连接关系,和,网络层在目标维度上的输入输出数量。

在本申请实施例中,计算机设备能够训练并调用完成训练的神经网络。计算机设备能够将神经网络加载到AI芯片中。AI芯片在加载完成神经网络之后,能够获取该神经网络的结构特征。

其中,结构特征用于指示神经网络的至少两个网络层之间的连接关系。也即,结构特征用于指示神经网络的拓扑结构。此外,结构特征还用于指示网络层在目标维度上的输入数量和输出数量。在本申请中,输入输出数量用于指示网络层在目标维度上的输入数量和输出数量。

可选地,目标维度既可以是行维度,也可以是列维度。

若神经网络包括k个网络层,则结构特征能够指示每一个网络层在目标维度上的输入数量和输出数量。比如,目标维度是行维度,则结构特征能够指示神经网络中输入层输入12行数据,第一卷积层的输入数量是12行,输出数量是10行,第二卷积层的输入数量是10行,输出数量是8行…以此类推。

也即,本申请中的结构特征不仅指示神经网络的拓扑结构,也用于指示神经网络中的每一个网络层输入数量和输出数量。

步骤520,基于结构特征,确定出至少两个候选层间融合策略,候选层间融合策略用于融合神经网络中的网络层。

在本申请实施例中,AI芯片能够基于上述结构特征,确定出至少两个候选层间融合策略。其中,候选层间融合策略是能够符合一定预定条件的层间融合策略。层间融合策略能够按照指定的层块个数,以及划分方式,将神经网络中指定的相邻的网络层进行融合。

例如,层块的个数为1,则AI芯片将全部的网络层融合为一个整体的层块。例如层块的个数为2,则AI芯片将全部的网络层融合为两个层块。若神经网络包括m个网络层,则其中一个层块由k个连续的网络层融合而成,另一个层块由(m-k-2)个连续的网络层融合而成。需要说明的是,本申请中介绍的网络层不包括输入层(input)和输出层(output)。

在一种可能的方式中,AI芯片可以将按照目标交换量升序的顺序确定出至少两个候选层间融合策略。

需要说明的是的,确定至少两个候选层间融合策略的工作也可以由CPU芯片实现,本申请实施例对此不作限定。

步骤530,从至少两个候选层间融合策略中,确定出目标层间融合策略,采用目标层间融合策略融合后的神经网络在推理过程中的目标交换量和推理内存耗费峰值满足预设条件,目标交换量用于指示单次推理过程中AI芯片的片上缓存与片外存储之间在目标维度上的数据交换量。

在一种可能的方式中,预设条件包括所述推理内存耗费峰值不小于所述AI芯片的片上缓存总容量,且,所述目标交换量是能够在所述AI芯片上推理的所述候选层间融合策略中的最小值。其中,推理内存耗费峰值用于指示神经网络在推理过程中消耗片上缓存的最大值。

在本申请实施例中,AI芯片能够按照一定的判断逻辑从至少两个候选层间融合策略中,确定出目标层间融合策略。其中,第一个条件可以是目标交换量最小。需要说明的是,目标交换量当前未被筛选过的候选层间融合策略。例如,AI芯片确定的第一批候选层间融合策略是10个。由于其中三个候选层间融合策略不符合,因此已被排除。本次AI芯片是从剩余的7个候选层间融合策略中选择目标交换量最小的候选层间融合策略。

在确定出目标交换量最小的候选层间融合策略之后,AI芯片将继续判断自身的硬件性能是否能够满足该候选层间融合策略所需求的推理内存耗费峰值。倘若AI芯片自身的硬件性能能够满足该候选层间融合策略所需求的推理内存耗费峰值,则说明该候选层间融合策略在AI芯片中融合神经网络之后,能够正常处理推理数据,实现神经网络正常高效地执行推理工作的效果。

需要说明的是,目标交换量用于指示神经网络在单次推理过程中,AI芯片的片上缓存与片外存储之间在目标维度上的数据交换量。其中,目标维度既可以是一个维度,也可以是两个维度。在目标维度是一个维度的情况下,该目标维度既可以是行维度,也可以是列维度。在目标维度是两个维度的情况下,该目标维度同时包括行维度和列维度。单次推理过程用于指示数据从输入层输入开始,直至该数据从输出层输出为止的过程。

举例而言,以图3所示为例,说明目标交换量的概念。图4所示的神经网络包括一个输入层、三个连续的卷积层和一个输出层。基于该神经网络,候选层间融合策略共有四种,请参见表一。

表一

在本申请中,若采用第一候选层间融合策略,则融合后的神经网络仅需要从输入层获取到推理数据,随后便采用整个层块逐层处理推理数据。在该过程中,AI芯片的片上缓存与片外存储之间不再交换数据。检验该第一候选层间融合策略需要的内存空间的过程是,假设整个神经网络最后一个网络层输出的数据是1行,也即保证输出层有数据输出。在此情况下,确定第一候选层间融合策略最小需要的内存空间是先确定各个层块所需内存空间的峰值,然后将其中最大值确定为该策略所需的内存空间。由于第三卷积层需要至少输出1行,反推第二卷积层需要至少输出3行,第一卷积层需要至少输出5行,输入层至少输入7行。在整个神经网络计算过程中,最耗费内存空间的时候是第一卷积层的计算过程。在该过程中,耗费的内存空间包括7行输入数据和5行输出数据。以及每一个卷积层计算时所需要的2行边界数据。由于共有三个卷积层,因此,第一候选层间融合策略至少占用6行边界数据。基于上述分析,可以知道第一候选层间融合策略最耗费内存空间的大小是18行。

在本申请中,若采用第二候选层间融合策略,则融合后的神经网络从输入层输入推理数据后,推理数据经过第一卷积层卷积后,不输出,接着输入融合在一起的第二卷积层中。当第二卷积层得到输出的中间数据时,AI芯片将该中间数据从片上缓存转移至片外存储中。当需要该中间数据输入至第三卷积层得到相应的结果数据时,AI芯片再从片外存储读入中间数据至片上缓存,随后再经过第三卷积层的卷积计算后,输出结果数据。由此可见,无论采用哪一种候选层间融合策略,目标交换量中总要包括从输入层输入的推理数据,以及,从输出层得到的结果数据。

检验该第二候选层间融合策略最小需要的内存空间的过程是,按照该第二候选层间融合策略将神经网络进行融合,融合得到两个层块。其中,第一层块是第一卷积层和第二卷积层融合成为的块层,第二块层为第三卷积层。然后分别统计两个块层占据内存最大的时刻。其中,第一块层消耗内存最多的时候第二卷积层输出1行,此时第一卷积层输出3行,输入层至少输入5行。因此,最耗费内存时,是第一块层中的第一卷积层计算的过程。该计算的过程消耗的内存空间为5行+3行+2行*2,即12行。其中,5行是第一卷积层的输入量,3行是第一卷积层的输出量,2行是第一块层中保留的2个卷积层对应的边界数据。每一个卷积层保留2行。由上述介绍可知,第一块层消耗内存最大的时候是12行。同理,计算第二层块消耗内存最大的时候,是第三卷积层的计算过程,内存空间是3行+1行+2行,即6行。综上可知,第二候选层间融合策略最占据内存空间的时刻发生在第二块层的计算过程,最大值为12行。

在本申请中,若采用第三候选层间融合策略,类似于采用第二候选层间融合策略的计算方式,可以得到目标交换量为:输入量(18行)+输出量(12行)+交换量(16行*2),共62行。

在本申请中,若采用第四候选层间融合策略,类似于采用第二候选层间融合策略的计算方式,可以得到目标交换量为:输入量(18行)+输出量(12行)+交换量(14行*2+16行*2),共90行。

在本申请中,可以优先考虑采用目标交换量较小的候选层间融合策略。也即,AI芯片将优先检测第一候选层间融合策略的可行性。也即,AI芯片将优先检测第一候选层间融合策略能否融合神经网络后,在AI芯片中无内存溢出地完成推理数据的计算。在本例中,由于四个候选层间融合策略,目标交换量最小的是第一候选层间融合策略,其次是第二候选层间融合策略,再次是第三候选层间融合策略,最多的是第四候选层间融合策略。因此,AI芯片将按照第一候选层间融合策略、第二候选层间融合策略、第三候选层间融合策略和第四候选层间融合策略的顺序依次检测每个候选层间融合策略能够充当目标层间融合策略。

在AI芯片检测第一候选层间融合策略的推理内存耗费峰值时,计算机设备即可以将该模拟推演过程放在AI芯片中,也可以将该模拟推演过程放在CPU芯片中验证。

其中,若AI芯片自身进行检测第一候选层间融合策略的推理内存耗费峰值时,若AI芯片直接内存溢出奔溃,则说明该第一候选层间融合策略不是目标候选层间融合策略。可选地,由于AI芯片奔溃可能造成系统其它不可控危害。因此,该步骤还可以在被传送至CPU执行,CPU中存储有片上推理内存耗费峰值阈值。针对第一候选层间融合策略而言,利用该第一候选层间融合策略融合神经网络后,每计算一个网络层均能够得到一个推理内存耗费峰值。仍以图4所示的神经网络模型为例,介绍融合后的神经网络的6个计算时刻。需要说明的是,由于输入数据分两次输入神经网络,每一个用于计算的网络层均提供一个计算时刻其中,以输出层只输出1行为例进行统计,详细请参见表二的介绍。

表二

需要说明的是,AI芯片或者CPU芯片能够从上述各个状态中确定出推理内存耗费峰值。显而易见的是,在上述六个时刻对应的状态中,第一时刻对应的数据是所有时刻中占用片上缓存最多的时刻。也即,第一时刻对应的片上缓存占据量是第一候选层间融合策略的推理内存耗费峰值,也即为18行。

需要说明的是,其中,7行表示第一卷积层在卷积计算第一次输入数据时,输入数据所占据的片上缓存;5行表示第一卷积层在计算第一次输入数据时,输出数据所占据的片上缓存;6行表示输入层、第一卷积层和第二卷积层每一层对应的边缘数据,每一层对应的边缘数据均为2层。因此,该神经网络占据的边缘数据为2*3=6行。需要说明的是,表二中的每一个时刻的第三项数字6,均表示神经网络中的边缘数据所占据的片上缓存。

表二所示的第2行数据中,第一项均表示用于计算的网络层计算时输入数据所占据的片上缓存空间,第二项均表示用于计算的网络层计算时输出数据所占据的片上缓存空间,第三项均表示神经网络中的边缘数据所占据的片上缓存所占据的片上缓存空间。

基于上述过程,计算机设备能够从至少两个候选层间融合策略中,确定出目标层间融合策略,从而使得计算机设备获得了目标交换量最小的且可用的层间融合策略。

针对推理内存耗费峰值而言,在一种场景中,在神经网络不包括填充操作pad的情况下,推理内存耗费峰值等于边界占用量、峰值层的输入数量和峰值层的输出数量之和,边界占用量是中间层间融合策略的每一层边界占用量之和,峰值层是中间层间融合策略中在目标维度上的输入数量和输入数量之和最大的网络层。

在本例中,边界占用量可以是表二中示出的第三项数值6,也即各个网络层对应的边界占用量之和。以表二为例,峰值层是第一卷积层。

在另一种场景中,在神经网络包括填充操作pad的情况下,推理内存耗费峰值等于填充占用量、边界占用量、峰值层的输入数量和峰值层的输出数量之和。

需要说明的是,在网络层是卷积层且对应的卷积核是p维,对应的步长是q的情况下,网络层的边界占用量是(p-q)。其中,p和q是正整数。

在一种实际的应用场景中,在网络层是最大池化层的情况下,最大池化层对应的卷积核是2维,最大池化层对应的步长是2,最大池化层的边界占用量是0。

在本例中,填充占用量是神经网络中每一层对应的填充数据占用量之和。

步骤540,基于目标层间融合策略,融合神经网络中相邻的网络层,得到融合后的神经网络。

在一种可能的实现方式中,计算机设备能够指示AI芯片或者CPU芯片基于目标层间融合策略,融合神经网络中相邻的网络层。

可选地,计算机设备中的神经网络留存一个未被融合的备份。可选地,计算机设备中不留存神经网络的未被融合网络层的备份,计算机设备直接将原本的神经网络进行相邻的网络层融合,得到融合后的神经网络。在前者所示的场景中,计算机设备可以在本次推理结束之后删除融合后的神经网络。在后者所示的场景中,计算机设备在本次推理结束之后保存融合之后的神经网络。

步骤550,基于融合后的神经网络,处理待推理数据。

在本申请中,计算机设备中的AI芯片中已经加载完成融合后的神经网络。因此,计算机设备能够指示AI芯片或者令CPU芯片和AI芯片配合,将推理数据输入至融合后的神经网络中,从而得到经过推理的结果数据。

综上所述,本实施例提供的用于AI芯片的数据处理方法,能够在获取神经网络的结构特征后,可以基于该特征确定出至少两个候选层间融合策略,再从中选出满足目标交换量最少且推理内存耗费峰值满足AI芯片的片上缓存总容量的目标层间融合策略,最后基于该目标层间融合策略融合神经网络中相邻的网络层,得到融合后的神经网络,从而基于该融合后的神经网络处理待推理数据。由于目标交换量是单次推理中的片上缓存与片外存储之间在目标维度上的数据交换量,因此,本申请实施例能够在保证片内外数据交换量最小的情况下,确定出可用的目标层间融合策略来融合神经网络,从而实现在AI芯片硬件不变的前提下,提高神经网络的推理效率的效果。

基于上一个实施例所公开的方案,终端还能够采用保留边界数据的算法,避免推理过程中产生的重复计算,并且通过一种排序的方式初选候选层间融合策略,从而能够快速得到目标交换量最小的可用层间融合策略。请参考如下实施例。

请参见图6,图6是本申请另一个示例性实施例提供的一种用于AI芯片的数据处理方法流程图。该用于AI芯片的数据处理方法可以应用在上述所示的终端中。在图6中,该用于AI芯片的数据处理方法包括:

步骤601,获取神经网络的结构特征。

在本例中,步骤601的执行过程和步骤510的执行过程相同,此处不再赘述。

步骤602,基于结构特征,按照融合后的网络层组成的层块数升序的顺序,得到m个候选层间融合策略。

其中,网络层组成的层块数为正整数,m为大于等于2的整数。

需要说明的是,在本申请中,神经网络的层块数用于指示进行层间融合后,用于计算的网络层融合后组成的层块的数量。例如,A神经网络的全部用于计算的网络层融合成为一个层块,则该神经网络的层块数等于一。B神经网络的全部用于计算的网络层融合成为两个层块,则该神经网络的层块数等于二。

在本申请实施例中,对于给定的神经网络,随着用于计算的网络层数的增加,可用的候选层间融合策略的数量也随之增加。若神经网络中包括一个输入层、L个用于计算的网络层和一个输出层。则能够用于对该神经网络进行层间融合的候选层间融合策略共有2

一种可能的方式中,AI芯片能够将全部的2

在另一种可能的方式中,AI芯片能够从2

在一种可能的方式中,步骤602可以被步骤(a1)和步骤(a2)所替代执行。

步骤(a1),响应于网络层组成的层块数为i,得到n

步骤(a2),基于目标交换量递增的次序,排列n

在本例中,AI芯片执行完成上述步骤(a1)和步骤(a2)后,AI芯片能够排列层块数相同的候选融合策略,该候选融合策略是按照目标交换量递增的次序进行排列的。

在一种可能实现方式中,假设神经网络一共有L个网络层,那么所有可能的层间融合方法共有2

在另一种可能的方式中,AI芯片还可以继续执行步骤(a3)、步骤(a4)和步骤(a5)以替代步骤602。

步骤(a3),响应于网络层组成的层块数为(i+1),得到n

在本例中,当网络层组成的层块数从i增加到i+1时,AI芯片能够新得到层块数为i+1对应的候选层间融合策略。

步骤(a4),基于目标交换量递增的次序,将n

在本例中,由于此时获取的候选层间融合策略排列的数目有限,则AI芯片能够直接按照目标交换量递增的次数对候选层间融合策略进行排列,得到第i+1队列。

步骤(a5),响应于

在本例中,候选层间融合策略的数量是此前每一种层块数量对应的候选层间融合策略之和。在此场景中,AI芯片将第i+1队列中的候选层间融合策略作为m

在一种可能的实现方式中,在排列n

可选地,一种可能的方式中,第一阈值是常数。在另一种可能的方式中,第一阈值是第1队列中的候选层间融合策略的目标交换量的极大值。

作为一种替代的实现方式,步骤602可由下列步骤(b1)和步骤(b2)来替换,以实现确定出目标层间融合策略。

步骤(b1),将m个候选层间融合策略中目标交换量最少的候选层间融合策略确定为中间层间融合策略。

在本例中,AI芯片需要先从候选层间融合策略中确定出目标交换量最少的候选层间融合策略。由于减少目标交换量能够大幅提高神经网络推理的效率。因此,提升神经网络的推理能力是本申请的优先要求。

步骤(b2),响应于中间层间融合策略的推理内存耗费峰值小于或等于AI芯片的片上缓存总容量,将中间层间融合策略确定为目标层间融合策略。

在本例中,基于确定了目标交换量最少的中间层间融合策略,AI芯片能够继续对中间层间融合策略的推理内存耗费峰值进行检测。其中,推理内存耗费峰值的检测过程可以参见步骤530中表二所示的内容,本处不再赘述。

作为一种替代的实现方式,步骤602可由下列步骤(c1)和步骤(c2)来替换,以实现确定出目标层间融合策略。

步骤(c1),将m个候选层间融合策略中目标交换量最少的候选层间融合策略确定为中间层间融合策略。

步骤(c2),响应于中间层间融合策略的推理内存耗费峰值大于AI芯片的片上缓存总容量,从至少两个候选层间融合策略中删除中间层间融合策略。

在本例中,步骤(c1)和步骤(c2)用于将已经被判断过且不能够作为目标层间融合策略从队列中删除,以节省存储空间并便于快速确定目标层间融合策略。

在本申请实施例中,AI芯片在执行完成步骤602之后,既能够执行步骤603,也能够执行步骤604和步骤605。

步骤603,从至少两个候选层间融合策略中,确定出目标层间融合策略。

在本例中,步骤603的执行过程可以参见步骤530,此处不再赘述。

步骤604,若根据层块数为1对应的候选层间融合策略融合后的神经网络的推理内存耗费峰值小于AI芯片的片上缓存总容量,则从神经网络的网络层中确定出数据组合层。

其中,数据组合层在对应的输入数据等于输入上限时处理输入数据得到输出数据;其中,数据组合层的序号大于或等于下采样操作对应的网络层的序号。

步骤605,响应于采用数据组合层的层间融合策略满足AI芯片的片上缓存总容量,将采用数据组合层的层间融合策略确定为目标层间融合策略。

在本实施例中,AI芯片能够通过更改神经网络融合时的数据处理方法,通过增加数据组合层,使得融合后的神经网络形成树状结构,从而实现在推理内存耗费峰值等于或者大于AI芯片的片上缓存总容量时,使得候选层间融合策略满足片上推理内存耗费峰值阈值,从而提高了融合后的神经网络的推理效率。

步骤606,基于目标层间融合策略,融合神经网络中相邻的网络层,得到融合后的神经网络。

在本例中,步骤606的执行方式可以参见步骤540的执行方式,详情可以参见步骤540的执行方式,本处不再赘述。

步骤607,基于融合后的神经网络,处理待推理数据。

在本例中,步骤607的执行方式可以参见步骤550的执行方式,详情可以参见步骤550的执行方式,本处不再赘述。

综上所述,本实施例能够在目标交换量最小的前提下,选出推理内存耗费峰值满足AI芯片的片上缓存总容量的目标层间融合策略,通过目标层间融合策略,融合神经网络,使得融合后的神经网络能够在硬件不变的情况下,具备较高的推理效率。

本实施例提供的用于AI芯片的数据处理方法,还能够通过设置阈值门限的方式,从多个能够作为候选层间融合策略中,快速筛选出目标交换量较小的一部分候选层间融合策略,进一步提高了确定目标层间融合策略的速度,从而提高了AI芯片初始化神经网络的速度。

本实施例提供的用于AI芯片的数据处理方法,还能够在层块为1且对应的候选层间融合策略的推理内存耗费峰值不满足AI芯片的片上缓存总容量的情况下,将分批得到的输入数据在数据组合层组合后输入,从而使得该候选层间融合策略的推理内存耗费峰值满足AI芯片的片上缓存总容量,改善了包括下采样操作的神经网络在层间融合上的效率,以及,提高了完成层间融合后的推理速度。

在本申请实施例提供的一种可能的实现方式中,AI芯片能够围绕两个步骤执行本申请的核心思想。第一,AI芯片根据网络层的输入大小,将所有可能的融合方法按照片上缓存与片外存储的数据交换量进行排序。第二,AI芯片按照排序的次序,依次检测每种融合方法的可行性,知道找到一种可行的融合方式,该融合方式能够最小化AI芯片的片上缓存和片外存储的数据交换量。

请参见图7,图7是本申请提供的一种存在填充操作的融合后的神经网络的硬件执行逻辑的示意图。在另一种可能的实现方式中,本申请介绍一种神经网络中存在填充(pad)操作时的执行逻辑。该执行逻辑包括阶段一、阶段二和阶段三。假设层块的数量是1。其中,图7中每一个块层的最左侧和最右侧的1行均为填充层,不是各个网络层的输入。

阶段一,第一份数据,片上缓存中没有预先保留的边界数据。但在神经网络中存在填充(pad)操作,具体过程如下:

第一份数据的输入量是9行(第一卷积层的下边缘从左往右数3行+4行+2行的部分),AI芯片利用对应的1行填充数据(第一卷积层最左侧的1行),将输入层对应的2行边界数据(第一卷积层的下边缘左侧加粗三角形对应的部分)保留在片上缓存中。第一卷积层输出8行(第一卷积层的上边缘从左往右数4行+2行+2行的部分),第一卷积层利用1行填充数据,将第一卷积层的2行边界数据(第一卷积层的上边缘左侧加粗边缘的三角形)保留在片上缓存中。第二卷积层输出7行(第二卷积层的上边缘从左往右数5行+2行的部分),利用1行填充数据,第二卷积层的2行边界数据(第二卷积层的上边缘左侧加粗三角形对应的部分)保留在片上缓存中。第三卷积层输出6行。

阶段二,第二份数据/第三份数据/以及其他的中间数据,需要利用预先保留的边界数据,具体过程如下:

第二份数据的输入量是6行,复用保留的输入层对应的2行边界数据,并将此次输入的第二份数据的最后的2行保留在片上缓存中。第一卷积层输出6行,复用保留的第一卷积层对应的2行边界数据,并将此次计算的第一卷积层最后的2行作为边界数据保留在片上缓存中。第二卷积层输出6行,复用保留的第二卷积层对应的2行边界数据,并将此次计算的第二卷积层最后的2行作为边界数据保留在片上缓存中,第三卷积层输出6行。第三份数据/以及其他的中间数据可以按照该逻辑进行计算。

阶段三,最后一份数据,需要利用预先保留的边界数据以及填充数据,具体过程如下:

第二份数据输入量是3行,利用1行填充数据,AI芯片复用保留的输入层对应的2行边界数据,第一卷积层输出4行。AI芯片利用1行填充数据,复用保留的第一卷积层对应的2行边界数据,第二卷积层输出5行。AI芯片利用的1行填充数据,复用保留的第二卷积层对应的2行边界数据,第三卷积层输出6行。

一般而言,该方法的执行逻辑不会超过三个阶段,即第一份数据/中间数据/最后一份数据这三种情况。特殊情况下,例如存在resize bilinear等不规则shape的op,在input shape和Out shape的公因子较大的情况下,中间数据可能存在不超过公因子份数的情况,但每个融合模块内部,不存在判断和跳转逻辑。

在本申请提供的另一种可能的执行方式中,AI芯片可以通过如下实际的方式快速获取候选层间融合策略。

假设神经网络一共有n个用于计算的网络层,那么所有可能的候选层间融合策略共有2

假设网络总共有input/layer1_output/layer2_output/…/layer10_output 11个张量(tensor),除去必须读取(load)的输入层和必须存储(store)的layer10_output,假设layer9_output

步骤一,选择第一轮候选层间融合策略,例如只换进换出一个网络层(layer)的候选层间融合策略,添加到列表中,并进行排序,layer9_output

步骤二,判断换进换出2个网络层(layer)的候选层间融合策略中,是否有小于layer1_output的方法,添加到列表中。并重新进行排序,假设添加后的候选层间融合策略的总排序为layer9_output

步骤2.1,AI芯片实际执行时,先判断layer9_output与其他网络层的组合,直到找不到较小的layer9_output与其他网络层的组合。例如AI芯片找到layer9_output+layer6_output>layer1_output,就停止添加layer9_output与其他网络层的组合到列表中。

步骤2.2,同理找到layer8_output与其他网络层的组合,layer7_output与其他网络层的组合,…,直到不能找到两个网络层的组合为止,例如layer7_output与其他layer的组合>layer1_output,就停止添加两个layer的组合到列表中。

步骤三,同理,判断换进换出3个网络层的候选层间融合策略中,是否有小于layer1_output的方法,例如假设只存在layer7_output+layer8_output+layer9_output

步骤四,假设4个网络层的组合中,无法找到小于layer1_output的方法,就停止添加多个layer的组合到列表中。

步骤五,依次判断列表中的候选层间融合策略的可行性,如果存在可行的方法,则中止本实施例提供的流程。

步骤六,依次判断列表中的候选层间融合策略的可行性,如果不存在可行的方法,选择后续没有经过判断的候选层间融合策略。例如选择“所有剩余的换进换出2个网络层的候选层间融合策略”,并判断3个layer/4个layer/…的fusion方法中是否存在小于layer1_output+layer2_output的方法,以此类推。

请参照图8,图8是本申请实施例提供的一种树状处理逻辑的示意图。在图8中,第一网络层810、第n网络层820和第m网络层830组成树状处理结构,该树状处理结构用于支持包括下采样操作的神经网络。

待推理数据的大小为n*h*w*c。假设总空间大小也为n*h*w*c,n代表输入的个数,h代表输入的行数,w代表输入的列数,c代表输入的通道数。当待推理数据经过k次下采样后,数据大小会变为2

若经过k次下采样后的待推理数据仍存储在片上缓存中,则片上缓存剩余的空间为(1-2

在图8所示的树状结构中,第一网络层810到第n网络层820在经过多次下采样(downsample)后,相比于第一网络层810所处理的数据,第n网络层820所处理的数据大小会变小。AI芯片将第n网络层820的第一份数据保留在片上缓存中,利用片上缓存的剩余空间继续计算第一网络层810到第n网络层820的第二份数据,将其保留在片上缓存中,以此类推。

假设神经网络已经积累了第n网络层820的k份数据,此时AI芯片根据k份第n网络层820的数据,逐层计算至第m网络层830,从而形成图8所示的树状的数据处理逻辑结构。

请参照图9,图9是本申请实施例提供的一种树状数据处理的流程示意图。在本申请实施例中,AI芯片能够采用如下方法确认可行的树状数据处理结构。

步骤一,将所有的downsample_output的组合,也就是所有可能的“树状数据处理融合策略”,按照组合的复杂程度(单个downsample_output代表一级树,多个downsample_output的组合代表多级树),添加到列表中。

步骤二,依次判断每种树状数据处理融合方法的可行性,直到找到一种能够正常推理神经网络中的待推理数据的方法,该方法就能避免片上缓存与片外存储之间的数据交换量。

AI芯片判断树状处理融合方法的可行性时,同样要求每个融合模块至少输出1行数据。例如在图9所示的例子中,输入层(input)计算至第二最大池化层(max6)至少要输出1行数据,第二最大池化层(max6)到第四最大池化层(max12)至少要输出1行数据。

在图9中,一共有8个卷积层(第一卷积层conv1至第八卷积层conv8),4个最大池化层(第一最大池化层max1至第四最大池化层max4)。假设片上缓存总容量为输入层input 28行+第一卷积层conv1 26行+max2 16行+保留边界(输入层input 2行+第一卷积层conv1 2行+第一最大池化层max1 2行+第三卷积层conv3 2行)。如果所有网络层融合到一起,第四最大池化层max4至少需要输出1行,反推输入层input需要输入76行,第一卷积层conv1需要输出74行,显然片上缓存总容量不足,因此所有网络层无法融合到一起,势必会造成片上缓存与片外存储的数据交换。

采用该方法时,假设将数据切按行分为4份,第一份数据从输入层input输入28行,并将输入层input的2行边界数据保留在片上缓存中,第一卷积层conv1输出26行,并将第一卷积层conv1的2行边界数据保留在片上缓存中,第二卷积层conv2输出24行,第二卷积层conv2不需要保留数据,第一最大池化层max1输出12行,并将第一最大池化层max1的2行边界数据保留在片上缓存中,第三卷积层conv3输出10行,并将第三卷积层conv3的2行边界数据保留在片上缓存中,第四卷积层conv4输出8行,第四卷积层conv4不需要保留数据,第二最大池化层max2输出4行,全部保留在片上缓存中,利用剩余空间处理其他份数据。

第二/三/四份数据通过输入层input输入16行,复用保留2行边界数据,并将此次输入到输入层input最后2行数据保留在片上缓存中,第一卷积层conv1输出16行,复用保留的conv1的2行边界数据,并将此次第一卷积层conv1输出的最后的2行边界数据保留在片上缓存中,第二卷积层conv2输出16行,不需要保留数据,第一最大池化层max1输出8行,复用保留的第一最大池化层max1的2行边界数据,并将此次第一最大池化层max1输出的最后的2行边界数据保留在片上缓存中,第三最大池化层conv3输出8行,复用保留的第三最大池化层conv3的2行边界数据,并将第三最大池化层conv3的2行边界数据保留在片上缓存中,第四卷积层conv4输出8行,第四卷积层conv4不需要保留数据,第二最大池化层max2输出4行,全部保留在片上缓存中,利用剩余空间处理其他份数据。

因为片上缓存总空间为输入层input 28行+第一卷积层conv1 26行+第二最大池化层max2 16行+保留边界(输入层input 2行+第一卷积层conv1 2行+第一最大池化层max12行+第三最大池化层conv3 2行),剩余空间可以计算第二/三/四份数据。此时第二最大池化层max2总共收集了16行数据,可以进行后续的计算。第五卷积层conv5输出14行,第六卷积层conv6输出12行,第三最大池化层max3输出6行,第七卷积层conv7输出4行,第八卷积层conv8输出2行,第四最大池化层max4输出1行。

本申请也可以使用多级树。例如输入层(input)到第二最大池化层(max6)作为一个融合模块,第二最大池化层(max6)到第三最大池化层(max9)作为另一个融合模块,第三最大池化层(max9)到第四最大池化层(max12)作为另一个融合模块。

接着上述的例子,AI芯片在处理完第一份数据和第二份数据后,不计算第三份数据,而是将前两份数据输入第五卷积层(conv7)。此时,第二最大池化层(max6)总共收集了8行数据,第二最大池化层(max6)保留最后2行数据,第五卷积层(conv7)输出6行数据,保留第五卷积层(conv7)的最后2行数据,第六卷积层(conv8)输出4行数据,第六卷积层(conv8)不保留数据,第三最大池化层(max9)输出2行数据,全部保留在片上缓存中。

然后AI芯片再利用计算第三/四份数据,将第三/四份数据输入第五卷积层(conv7)。此时第六卷积层(conv8)又收集了8行数据,复用第二最大池化层(max6)最后保留的2行数据,第五卷积层(conv7)输出8行数据,复用第五卷积层(conv7)保留的2行数据,第六卷积层(conv8)输出8行数据,第六卷积层(conv8)不保留数据,第三最大池化层(max9)输出4行数据,全部保留在片上缓存中。

第三最大池化层(max9)总共输出了6行数据,AI芯片继续计算第三最大池化层(max9)到第四最大池化层(max12),第七卷积层(conv10)输出4行数据,第八卷积层(conv11)输出2行数据,第四最大池化层(max12)输出1行数据。

在本申请实施例中,多级树可以在更小的片上缓存的空间中变得可以正常运行。例如片上缓存的总空间为输入层的28行数据+第一卷积层的26行数据+第二最大池化层(max6)的8行数据+第三最大池化层(max9)的6行数据+总的保留边界的数据(输入层对应的2行边界数据+第一卷积层对应的2行边界数据+第一最大池化层对应的2行边界数据+第三卷积层对应的2行边界数据+第二最大池化层对应的2行边界数据+第五卷积层对应的2行边界数据),二级树就是可行的(第三最大池化层1行的占用空间小于第二最大池化层1行的占用空间一半)。

在实际应用中,一方面,以分类(classification)为目的的神经网络通常都反复采用了卷积(conv)+下采样(down sample)的模式。另一方面,以去噪(denoise)为目的的神经网络,在神经网络的前半部分(例如unet全卷积网络的前半部分的降采样)也都反复采用了卷积(conv)+下采样(down sample)的模式。

另外,对于复杂的场景,AI芯片可以组合使用树状数据处理结构和候选层间融合策略的推理内存耗费峰值是否超出AI芯片的片上缓存总容量。例如在判断一种候选层间融合策略是否可行时,在该候选层间融合策略的推理内存耗费峰值不满足AI芯片的片上缓存总容量,但神经网络中又有一个或多个下采样(down sample)操作时,此时可以使用上述树状数据处理结构中的方法,把原神经网络中的融合模块,拆分为树状数据处理结构的多个融合模块,进一步判断更改数据处理结构后的神经网络的推理内存耗费峰值是否满足AI芯片的片上缓存总容量,如果可行,也即使用树状数据处理结构后的候选层间融合策略可以确定为目标层间融合策略。

下述为本申请装置实施例,可以用于执行本申请方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。

请参考图10,图10是本申请一个示例性实施例提供的一种用于AI芯片的数据处理装置的结构框图。该用于AI芯片的数据处理装置可以通过软件、硬件或者两者的结合实现成为终端的全部或一部分。该装置包括:

特征获取模块1010,用于获取神经网络的结构特征。

第一确定模块1020,用于基于所述结构特征,确定出至少两个候选层间融合策略,所述候选层间融合策略用于融合所述神经网络中的所述网络层。

第二确定模块1030,用于从至少两个所述候选层间融合策略中,确定出目标层间融合策略,采用所述目标层间融合策略融合后的所述神经网络在推理过程中的目标交换量和推理内存耗费峰值满足预设条件,所述目标交换量用于指示单次推理过程中所述AI芯片的片上缓存与片外存储之间在目标维度上的数据交换量,所述推理内存耗费峰值用于指示所述神经网络在推理过程中消耗所述片上缓存的最大值。

网络融合模块1040,用于基于所述目标层间融合策略,融合所述神经网络中相邻的网络层,得到融合后的神经网络。

数据处理模块1050,用于基于所述融合后的神经网络,处理待推理数据。

在一个可选的实施例中,所述装置中涉及的所述预设条件包括所述推理内存耗费峰值不小于所述AI芯片的片上缓存总容量,且,所述目标交换量是能够在所述AI芯片上推理的所述候选层间融合策略中的最小值。

在一个可选的实施例中,所述第一确定模块1020,用于基于所述结构特征,按照融合后的所述网络层组成的层块数升序的顺序,得到m个所述候选层间融合策略,所述网络层组成的层块数为正整数,m为大于等于2的整数。

在一个可选的实施例中,所述第一确定模块1020,用于在m

在一个可选的实施例中,所述装置还包括第三确定模块,用于在m大于n

在一个可选的实施例中,所述装置中涉及的所述n

在一个可选的实施例中,所述第二确定模块1030,用于将m个所述候选层间融合策略中所述目标交换量最少的所述候选层间融合策略确定为中间层间融合策略;响应于所述中间层间融合策略的推理内存耗费峰值小于或等于所述AI芯片的片上缓存总容量,将所述中间层间融合策略确定为所述目标层间融合策略。

在一个可选的实施例中,所述第二确定模块1030,用于将m个所述候选层间融合策略中所述目标交换量最少的所述候选层间融合策略确定为中间层间融合策略;响应于所述中间层间融合策略的推理内存耗费峰值大于所述AI芯片的片上缓存总容量,从至少两个所述候选层间融合策略中删除所述中间层间融合策略。

在一个可选的实施例中,所述装置在所述神经网络不包括填充操作pad的情况下,所述推理内存耗费峰值等于边界占用量、峰值层的输入数量和所述峰值层的输出数量之和,所述边界占用量是所述中间层间融合策略的每一层边界占用量之和,所述峰值层是所述中间层间融合策略中在所述目标维度上的输入数量和输入数量之和最大的所述网络层。

在一个可选的实施例中,所述装置在所述神经网络包括填充操作pad的情况下,所述推理内存耗费峰值等于填充占用量、所述边界占用量、所述峰值层的输入数量和所述峰值层的输出数量之和。

在一个可选的实施例中,所述装置在所述网络层是卷积层且对应的卷积核是p维,对应的步长是q的情况下,所述网络层的所述边界占用量是(p-q)。

在一个可选的实施例中,所述装置还包括执行模块,所述执行模块用于在推理内存耗费峰值等于或者大于所述AI芯片的片上缓存总容量,且所述神经网络包括下采样操作的情况下,若根据所述层块数为1对应的所述候选层间融合策略融合后的所述神经网络的所述推理内存耗费峰值小于所述AI芯片的片上缓存总容量,则从所述神经网络的网络层中确定出数据组合层,所述数据组合层在获得的输入数据等于输入上限时处理所述输入数据得到输出数据;其中,所述数据组合层的序号大于或等于所述下采样操作对应的所述网络层的序号;响应于采用所述数据组合层的所述层间融合策略满足所述AI芯片的片上缓存总容量,将采用所述数据组合层的所述层间融合策略确定为所述目标层间融合策略。

在一个可选的实施例中,所述装置涉及的所述结构特征用于指示所述神经网络的至少两个网络层之间的连接关系,和,所述网络层在目标维度上的输入输出数量。

综上所述,本实施例能够在目标交换量最小的前提下,选出推理内存耗费峰值满足AI芯片的片上缓存总容量的目标层间融合策略,通过目标层间融合策略,融合神经网络,使得融合后的神经网络能够在硬件不变的情况下,具备较高的推理效率。

本实施例提供的用于AI芯片的数据处理装置,还能够通过设置阈值门限的方式,从多个能够作为候选层间融合策略中,快速筛选出目标交换量较小的一部分候选层间融合策略,进一步提高了确定目标层间融合策略的速度,从而提高了AI芯片初始化神经网络的速度。

本实施例提供的用于AI芯片的数据处理装置,还能够在层块为1且对应的候选层间融合策略的推理内存耗费峰值不满足AI芯片的片上缓存总容量的情况下,将分批得到的输入数据在数据组合层组合后输入,从而使得该候选层间融合策略的推理内存耗费峰值满足AI芯片的片上缓存总容量,改善了包括下采样操作的神经网络在层间融合上的效率,以及,提高了完成层间融合后的推理速度。

本申请实施例还提供了一种计算机可读介质,该计算机可读介质存储有至少一条指令,所述至少一条指令由所述处理器加载并执行以实现如上各个实施例所述的用于AI芯片的数据处理方法。

需要说明的是:上述实施例提供的用于AI芯片的数据处理装置在执行用于AI芯片的数据处理方法时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的用于AI芯片的数据处理装置与用于AI芯片的数据处理方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。

上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

以上所述仅为本申请的能够实现的示例性的实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

相关技术
  • 用于AI芯片的智能图像处理方法
  • 一种用于使数字信号和相关码相关的方法、装置、计算机程序、芯片组或数据结构
  • 一种用于AI芯片人脸识别的CNN硬件加速装置
  • 处理器及其处理方法、芯片、芯片封装结构及电子装置
  • 一种芯片及基于其的数据处理方法和装置
  • 用于AI芯片的数据处理方法、装置、芯片及计算机设备
  • AI芯片的数据处理方法、装置和计算机设备
技术分类

06120115925208