一种张量处理方法和系统转让专利

申请号 : CN202110458766.4

文献号 : CN113240077B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 李国亮李锐张磊杨勤富钱军

申请人 : 瀚博半导体(上海)有限公司

摘要 :

本申请提供一种张量处理方法和系统,该方法包括:基于硬件加速器的工作参数信息,确定待处理的张量的划分区域数量信息;基于所述划分区域数量信息,确定所述待处理的张量对应的至少两个输入区域;以及,通过所述硬件加速器对所述输入区域执行预定处理,以获得分别对应所述输入区域的输出区域。本申请对张量的处理能够突破硬件方面的限制,且计算量小,处理速度快;另一方面,对各部分进行处理时相关硬件加速器的处理负荷相对均衡,整体上处理原待处理张量的效率提高了。

权利要求 :

1.一种张量处理方法,其中,该方法包括:基于硬件加速器的工作参数信息,确定待处理的张量的划分区域数量信息;

基于所述划分区域数量信息,确定所述待处理张量对应的至少两个输入区域的起始边界坐标和终点边界坐标,其中所述起始边界坐标和终点边界坐标用于确定对应的输入区域;

通过所述硬件加速器将读入的各个输入区域的起始部分填充至对齐预定处理的步长的整数倍,并对各个输入区域执行预定处理,以获得分别对应所述输入区域的输出区域。

2.根据权利要求1所述的方法,其中,所述基于所述划分区域数量信息,确定所述待处理的张量对应的至少两个输入区域的起始边界坐标和终点边界坐标,包括:b1基于所述划分区域数量信息,确定所述待处理张量对应的至少两个输入区域的终点边界坐标;

b2确定每个输入区域的起始边界坐标;

其中所述起始边界坐标和终点边界坐标用于确定对应的输入区域。

3.根据权利要求2所述的方法,其中,所述方法还包括:r基于所述划分区域数量信息,确定所述待处理张量对应的至少两个输出区域的终点边界坐标;

s确定每个输入区域所对应输出区域的起始边界坐标,其中:若当前输入区域为起始输入区域,确定所述当前输入区域所对应的输出区域的起始边界坐标为所述待处理的张量所对应目标输出张量的起始边界坐标;否则,基于前序输出区域的终点边界坐标确定所述当前输入区域所对应的输出区域的起始边界坐标;

其中,所述步骤b1,包括:

基于每个输入区域所对应的输出区域的终点边界坐标,确定各个输入区域的终点边界坐标;

所述步骤b2,包括:

基于每个输入区域所对应的输出区域的起始边界坐标,确定各个输入区域的起始边界坐标。

4.根据权利要求2所述的方法,其中,所述步骤b2,包括:确定每个输入区域的起始边界坐标,并将满足第一扩充条件的输入区域向前序输入区域方向扩充以更新相应输入区域的起始边界坐标;其中,更新后的起始边界坐标相对于所述待处理的张量的起始边界坐标的距离为预设宽度的整数倍。

5.根据权利要求4所述的方法,其中,所述通过所述硬件加速器将读入的各个输入区域的起始部分填充至对齐预定处理的步长的整数倍,并对各个输入区域执行预定处理,以获得分别对应所述输入区域的输出区域,包括:通过所述硬件加速器将读入的各个输入区域的起始部分填充至对齐预定处理的步长的整数倍,并对所述输入区域执行预定处理,以获得分别对应所述输入区域的待剪裁区域;

对所述待剪裁区域中对应于相应输入区域中被扩充部分的区域进行剪裁,以获得对应的输出区域。

6.根据权利要求2所述的方法,其中,所述步骤b1,包括:基于所述划分区域数量信息,确定所述待处理张量对应的至少两个输入区域的终点边界坐标,并将满足第二扩充条件的输入区域向后继输入区域方向扩充以更新相应输入区域的终点边界坐标;其中,更新后的终点边界坐标相对于所述待处理的张量的起始边界坐标的距离为预设宽度的整数倍。

7.根据权利要求6所述的方法,其中,所述通过所述硬件加速器将读入的各个输入区域的起始部分填充至对齐预定处理的步长的整数倍,并对各个输入区域执行预定处理,以获得分别对应所述输入区域的输出区域,包括:通过所述硬件加速器将读入的各个输入区域的起始部分填充至对齐预定处理的步长的整数倍,并对各个输入区域执行预定处理,以获得分别对应所述输入区域的待剪裁区域;

对所述待剪裁区域中对应于相应输入区域中被扩充部分的区域进行剪裁,以获得对应的输出区域。

8.根据权利要求1所述的方法,其中,所述方法还包括:基于各输出区域拼合所述待处理的张量的目标输出张量。

9.一种张量处理系统,其中,所述系统至少包括:区域数量确定装置,其中所述区域数量确定装置被配置为:基于硬件加速器的工作参数信息,确定待处理的张量的划分区域数量信息;

输入区域确定装置,其中所述输入区域确定装置被配置为:基于所述划分区域数量信息,确定所述待处理的张量对应的至少两个输入区域的起始边界坐标和终点边界坐标,其中所述起始边界坐标和终点边界坐标用于确定对应的输入区域;

区域处理装置,其中所述区域处理装置被配置为:通过所述硬件加速器将读入的各个输入区域的起始部分填充至对齐预定处理的步长的整数倍,并对各个输入区域执行预定处理,以获得分别对应所述输入区域的输出区域。

10.一种计算机可读存储介质,其特征在于,该计算机可读存储介质上存储有计算机程序,所述计算机程序被执行时能够实现权利要求1至8中任一项所述的张量处理方法。

11.一种电子设备,其特征在于,所述电子设备至少包括:一个或多个处理器;

存储器,其用于存储可执行指令;

所述一个或多个处理器被配置为经由所述可执行指令来实现权利要求1至8中任一项所述的方法。

说明书 :

一种张量处理方法和系统

技术领域

[0001] 本申请涉及计算机信息处理领域,尤其涉及一种张量处理技术。

背景技术

[0002] 随着计算机系统处理能力取得巨大发展,机器学习(例如深度学习神经网络)技术也得到广泛使用。在某些情形下,人们需要通过计算机进行二维或更高维张量的卷积计算。
在实际计算时,张量的某些参数有时可能会超出硬件加速器的相关限制(例如张量的高度
或宽度可能超出加速器的相应限制,或者加速器对片上内存、可用的计算资源等可能会进
行限制),十分不便。

发明内容

[0003] 本申请的一个目的是提供一种张量处理方法及张量处理系统。
[0004] 根据本申请的一个实施例,本申请提供了一种张量处理方法,该方法包括:
[0005] 基于硬件加速器的工作参数信息,确定待处理的张量的划分区域数量信息;
[0006] 基于所述划分区域数量信息,确定所述待处理的张量对应的至少两个输入区域;以及,
[0007] 通过所述硬件加速器对所述输入区域执行预定处理,以获得分别对应所述输入区域的输出区域。
[0008] 根据本申请的另一个实施例,本申请还提供了一种张量处理系统,其中,该系统至少包括:
[0009] 区域数量确定装置,其中所述输入区域确定装置被配置为:
[0010] 基于硬件加速器的工作参数信息,确定待处理的张量的划分区域数量信息;
[0011] 输入区域确定装置,其中所述输入区域确定装置被配置为:
[0012] 基于所述划分区域数量信息,确定所述待处理的张量对应的至少两个输入区域;以及,
[0013] 区域处理装置,其中所述区域处理装置被配置为:
[0014] 通过所述硬件加速器对所述输入区域执行预定处理,以获得分别对应所述输入区域的输出区域。
[0015] 根据本申请的另一个实施例,本申请提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,所述计算机程序被执行时能够实现以上任一项所述方
法的操作。
[0016] 根据本申请的另一实施例,本申请提供了一种电子设备,该电子设备至少包括:
[0017] 一个或多个处理器;
[0018] 存储器,其用于存储可执行指令;
[0019] 所述一个或多个处理器被配置为经由所述可执行指令来实现以上任一项所述方法的操作。
[0020] 与现有技术相比,本申请将大尺寸张量划分为若干输入区域,并针对划分后的输入区域进行处理,具体而言,基于本申请,待处理的大尺寸张量被划分的区域数量被首先确
定,确定的依据是硬件加速器的工作参数;随后,待处理的张量被划分为相应的数量后进行
相应计算,所得的输出区域即可用于后续处理,例如拼合为对原大尺寸张量进行处理后所
对应的输出区域。虽然目前广泛应用的切分卷积核的处理方式也能解决上述问题,但是这
种处理方式需要相应切分输入张量,即对应卷积核的每一块,先得到对应整个卷积核的部
分和,最后还需要进一步将部分和进行累加,因此增加了较多的硬件资源消耗。与现有技术
相比,一方面,本申请对张量的处理能够突破硬件方面的限制,且计算量小,处理速度快;另
一方面,基于本申请,原待处理张量被划分的区域数量是根据硬件加速器的处理能力而确
定的,随后对各部分进行处理时相关硬件加速器的处理负荷相对均衡,避免了部分加速器
等待其他加速器处理完毕的情形,从而整体上处理原待处理张量的效率提高了。

附图说明

[0021] 通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
[0022] 图1是本申请一个实施例中张量处理方法的流程图;
[0023] 图2a至图2d分别是不同情形下一输入区域在原张量中的位置示意;
[0024] 图3a至图3d分别是不同情形下输入张量对应的输出张量,以及一输入区域对应的输出区域在该输出张量中的分布情况示意;
[0025] 图4a至图4d分别示出卷积处理的不同情形。
[0026] 附图中相同或相似的附图标记代表相同或相似的部件。

具体实施方式

[0027] 为了使本技术领域的人员更好地理解本申请的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例
仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通
技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护
的范围。
[0028] 需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用
的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或
描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆
盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于
清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品
或设备固有的其它步骤或单元。
[0029] 本申请提供的张量处理方法,适用于通过硬件加速器对张量、尤其是大尺寸张量进行处理,例如对张量计算卷积,该处理方法对最大池化和平均池化也同样适用。以计算张
量的卷积为例,硬件加速器通常有各种限制,例如片上内存的物理限制、其他计算资源的限
制,以及这些限制导致的对输入张量的高度及宽度的限制等。在计算资源有限的情况下,现
有技术常采用切分卷积核的处理方式来突破上述限制,但是切分卷积核的处理方式需要相
应切分输入张量,即对应卷积核的每一块,先得到对应整个卷积核的部分和,最后还需要进
一步将部分和进行累加,增加了较多的硬件资源消耗。而本方案并不基于切分卷积核技术,
而是根据硬件的相关参数确定大尺寸张量的分块,再对分块分别进行处理,与切分卷积核
的方式相比省去了上述求取部分和、累加部分和的硬件资源消耗,并且同样能够在硬件资
源的限制下处理大尺寸张量,且具有计算量小、处理速度快的优点。此外,原待处理张量被
划分的区域数量是根据硬件加速器的处理能力而确定的,随后对各部分进行处理时相关硬
件加速器的处理负荷相对均衡,避免了部分加速器等待其他加速器处理完毕的情形,从而
整体上处理原待处理张量的效率提高了。
[0030] 下面将以一种张量处理设备为例,详细描述本申请的各个具体实施方式。
[0031] 参图1所示,本申请提供了一种张量处理方法。该方法包括步骤S100、步骤S200和步骤S300。
[0032] 其中,在步骤S100中,张量处理设备基于硬件加速器的工作参数信息(例如其对一次输入的张量的高度/宽度的限制),确定待处理的张量的划分区域数量信息;随后在步骤
S200中,张量处理设备基于所述划分区域数量信息,确定所述待处理的张量对应的至少两
个输入区域,例如张量处理设备确定每个输入区域的起始位置(例如起始边界坐标,如位于
起始位置的元素的坐标)和终结位置(例如终点边界坐标,如位于终点位置的元素的坐标);
接着在步骤S300中,张量处理设备通过所述硬件加速器对所述输入区域执行预定处理(例
如对该区域计算卷积),以获得分别对应所述输入区域的输出区域。在一些实施例中,该输
出区域用于与其他输入区域所对应的输出区域拼合为原待处理张量对应的输出张量。
[0033] 为便于理解,在此以原待处理的张量为二维张量为例,对本申请的各个实施例进行说明。参考图2a示出的待处理的二维张量,其中,以图中标出的当前输入区域为基础进行
研究,其起始边界坐标和终点边界坐标均为行坐标(即原张量被划分为在高度方向上分布
的若干个区域,此时各个输入区域的起始边界和终点边界分别为各自的上下边界,每个输
入区域的高度受硬件加速器对输入张量高度的限制),或者该当前输入区域的起始边界坐
标和终点边界坐标均为列坐标(即原二维张量被划分为在宽度方向上分布的若干个区域,
此时各个输入区域的起始边界和终点边界分别为各自的左右边界,每个输入区域的宽度受
硬件加速器对输入张量宽度的限制)。当然,本领域的技术人员应能理解,下述说明仅为举
例,而非对本申请具体实施方式的限定。具体地,在原待处理的张量为三维张量的情形下,
上述当前输入区域的起始边界坐标和终点边界坐标均为长、宽或高坐标;待处理张量为更
高维度时以此类推,不再赘述。
[0034] 在此,待处理的张量在一些实施例中为大尺寸张量,例如该张量的尺寸或处理该张量所需的硬件资源超出了当前硬件加速器限制。各个输入区域则是从该待处理的张量中
划出的一部分(即各输入区域为原待处理的张量的一部分)。
[0035] 其中,对于原待处理张量为二维张量的情形,非限制性地,各输入区域与待处理二维张量所覆盖的区域均为矩形区域,并且各输入区域在不同的实施例中可以是以下各种情
形之一:
[0036] a1)宽度与原待处理的二维张量一致,而高度小于原待处理的二维张量;
[0037] a2)高度与原待处理的二维张量一致,而宽度小于原待处理的二维张量;
[0038] a3)高度与宽度均小于原待处理的二维张量。
[0039] 而对于原待处理张量为三维张量的情形,非限制性地,各输入区域与待处理三维张量所覆盖的区域均为矩体区域,并且各输入区域在不同的实施例中可以是以下各种情形
之一:
[0040] b1)宽度、长度与原待处理的三维张量一致,而高度小于原待处理的三维张量;
[0041] b2)高度、长度与原待处理的三维张量一致,而宽度小于原待处理的三维张量;
[0042] b3)高度、宽度与原待处理的三维张量一致,而长度小于原待处理的三维张量;
[0043] b4)高度、宽度与长度中至少两个小于原待处理的三维张量。
[0044] 输入张量具有更高维度的情形与上述类似,本领域技术人员无需经过创造性劳动即可类比上述举例,为简便起见,不再展开举例。
[0045] 当然,本领域的技术人员应当知晓,以上列举的各种情形仅为举例,旨在说明上述输入区域为待处理张量的一部分,而非对本申请具体实施方式的任何限定;其他现有的或
者今后可能出现的对原待处理的张量的划分方式,如能适用于本申请,也包含在本申请的
保护范围内,并以引用的方式包含于此。
[0046] 下面接着以待处理张量为二维张量的情形加以说明。仍以上述当前输入区域为基础,其起始边界坐标根据实际情况的不同,可能存在若干不同的确定方式。为简便起见,以
下针对上面提到的情形a1),即分块宽度与原二维张量一致、而高度小于原二维张量的情形
展开。须知,其他情形如a2)、a3),实施方式与之相同或大体相同,本领域的技术人员应能根
据实际情况进行相应的调整,并且调整后的实施方式也涵盖在本申请的保护范围内。作为
示例,待处理的原二维张量被划分为两个区域。图2a至图2d分别给出不同情形下当前输入
区域在原二维张量中的位置示意,其中为保证相邻的输入区域产生相邻的输出区域,相邻
的输入区域之间应有重叠部分。图3a、图3b、图3c和图3d则分别对应于图2a、图2b、图2c和图
2d,示出待处理的二维张量对应的输出张量,以及当前输入区域对应的第一输出区域在该
输出张量中的分布情况。
[0047] 具体来说,在一些实施例中,在上述步骤S200中,张量处理设备基于所述划分区域数量信息,确定所述待处理张量对应的至少两个输入区域的起始边界坐标和终点边界坐
标,其中所述起始边界坐标和终点边界坐标用于确定对应的输入区域。例如,在一些实施例
中,各个输入区域的起始边界坐标和终点边界坐标,均以在前序步骤中确定的待划分区域
数量为参数而确定。确定后的各个输入区域用于输入相应的硬件加速器,供硬件加速器进
行后续处理。一方面,原待处理张量被划分后的各个部分无需按序逐一计算,而可以在各自
的范围确定后分别被输入相应的硬件加速器而进行分布式处理,充分利用多硬件加速器的
处理能力。另一方面,由于每个输入区域的起始和终点边界都是基于划分区域数量确定的,
而划分区域数量又是基于各个硬件加速器的工作参数而确定的,因此对原待处理张量的整
个处理过程均不会超出各硬件加速器工作参数的限制。
[0048] 在一些实施例中,上述步骤S200又包括子步骤S210和子步骤S220(均未示出)。其中,在子步骤S210中,张量处理设备基于所述划分区域数量信息,确定所述待处理张量对应
的至少两个输入区域的终点边界坐标。而在子步骤S220中,张量处理设备确定每个输入区
域的起始边界坐标。其中,对于每个输入区域的起始边界的确定,可能存在两种情况。其一,
对于第一个输入区域而言,由于其不存在前序输入区域,因此第一个输入区域的起始边界
坐标与待处理张量的起始边界坐标一致;其二,对于除第一个输入区域以外的其他输入区
域而言,其起始边界坐标则基于前序输入区域(或前序输入区域对应的输出区域)的终点边
界坐标而确定,从而输出区域便于与前序输入区域所对应输出区域进行拼接(同时,各个输
入区域的处理可以分别进行,其无需逐个处理),进而在将各个输入区域所对应的输出区域
进行拼合后,能够最终获得原待处理张量所对应的完整的输出。具体而言,如上所述,每个
输出区域的边界位置和大小与相应的输入区域的边界位置和大小相对应,因此,在对待处
理的张量的任何部分进行实际的计算或变换之前,其输入区域的划分即可完成。换言之,整
个待处理的张量的各个输入区域的边界确定后,即可将各个输入区域分别读入不同的硬件
加速器并行处理,而无需依次完成当前的输入区域的处理后方可确定下一输入区域并进行
处理,故该处理方式能极大地提高张量、尤其是大尺寸张量的处理效率。
[0049] 进一步地,在一些实施例中,上述方法还包括步骤S400和步骤S500(均未示出)。其中在步骤S400中,张量处理设备基于所述划分区域数量信息,确定所述待处理张量对应的
至少两个输出区域的终点边界坐标;随后在步骤S500中,确定每个输入区域所对应输出区
域的起始边界坐标。例如,在确定部分或全部输入区域所对应输出区域的终点边界坐标后,
在各输入区域所对应输出区域中,对于起始边界坐标尚未确定的输出区域,根据其他输入
区域所对应输出区域的终点边界坐标(结束位置)来确定该输出区域的起始边界坐标(开始
位置)。具体而言,在输入区域的划分数量和顺序确定后,对于一个待确定起始和终结位置
的输入区域(下称当前输入区域),若当前输入区域为起始输入区域(例如将原待处理张量
进行划分后获得的第一个输入区域),确定所述当前输入区域所对应的输出区域的起始边
界坐标为所述待处理的张量所对应目标输出张量的起始边界坐标;否则,若当前输入区域
非上述起始输入区域,则基于前序输出区域(即上一个输入区域所对应的输出区域)的终点
边界坐标确定所述当前输入区域所对应的输出区域的起始边界坐标。相应地,在上述子步
骤S210中,张量处理设备基于每个输入区域所对应的输出区域的终点边界坐标,确定各个
输入区域的终点边界坐标;而在上述子步骤S220中,张量处理设备基于每个输入区域所对
应的输出区域的起始边界坐标,确定各个输入区域的起始边界坐标。
[0050] 在一些实施例中,张量需要按照特定的格式输入硬件加速器。因此,划分得到的输入区域在由硬件加速器进行处理(例如计算卷积)之前,需要经过一些预处理。例如,就一个
二维张量而言,其需要在高度方向和/或宽度方向上以一原子区域高度(例如8)为单位,从
存储单元中读入加速器(三维张量则需要在高度方向和/或宽度方向和/或长度方向上以8
为单位从存储单元中读入加速器),并以同样的格式写入存储单元。换言之,硬件加速器访
问张量时需以上述原子区域高度为单位,即输入或输出张量需要为上述原子区域高度的倍
数,以提高读写效率。其中,对于输出张量而言,仍以上述原子区域高度为例,各个输入区域
所对应输出区域的高度应是该原子区域高度(例如,8)的倍数,且不存在重叠,以使各输入
区域对应的输出区域能无缝且无重叠地拼接在一起,保证分别对原待处理张量的各个部分
处理后得到的输出是正确的。
[0051] 此时,每个输入区域所对应输出区域的尺寸(例如高度)基于以上所述即可确定,例如其高度不超过硬件加速器的处理能力且为上述原子区域高度的整数倍。在一个具体实
施方式中,首先确定需要将原待处理张量切分成的块数N。一种可选的确定方式是:基于原
待处理张量所对应输出张量的相关尺寸参数(例如,总高度;该相关尺寸参数可以基于待处
理张量的相应尺寸参数及预定处理的处理方式而唯一确定)和硬件加速器的相应工作参数
信息(例如,单个硬件加速器对其能够处理的张量的高度的限制)而确定,例如将二者作商
后向上取整,从而获得前述块数N;另一方面,确定输出张量所包含上述原子区域高度的数
量C,具体而言是基于原待处理张量所对应输出张量的相关尺寸参数(例如,总高度)和上述
原子区域高度确定,例如将二者作商后向上取整,从而获得前述数量C。将各个原子区域分
配至每个分块(输入区域对应的输出区域),若数量C能被块数N整除则每个分块对应(C/N)
个原子区域;否则,部分分块(输入区域对应的输出区域)被分配到的原子区域将比其他分
块多1。随后,对于每个输入区域对应的输出区域,其高度即可基于分配到的原子区域数量
计算得知,即以其分配到的原子区域数量与原子区域高度相乘。对于一个特定的、输入区域
对应的输出区域,其终点边界坐标,可通过累加包括其自身在内的输出区域的高度而得(此
处以第一个输出区域的起始坐标边界位置为原点位置)。
[0052] 对于一个特定的输入区域,其对应的输出区域的起始、终点边界坐标全部确定后,由于拟对该输入区域执行的预定处理(例如,计算卷积)使得输入和输出区域中各点的映射
关系唯一确定,因此该输入区域的起始和终点边界坐标也随之而确定。即,如上所述,确定
各输入区域的起始和终点边界坐标,无需实际进行处理(例如,计算卷积)并获得相应的输
出区域。具体而言,在上述子步骤S210中,基于每个输入区域所对应的输出区域的终点边界
坐标,确定各个输入区域的终点边界坐标;而在上述子步骤S220中,基于每个输入区域所对
应的输出区域的起始边界坐标,确定各个输入区域的起始边界坐标。
[0053] 其中,对于一个特定的输出区域,其起始边界坐标可基于其前序输出区域的终点边界坐标而确定,例如,特定的输出区域的起始边界坐标为前序输出区域的终点边界坐标
加上1。
[0054] 在一些实施例中,在上述子步骤S220中,张量处理设备确定每个输入区域的起始边界坐标,并将满足第一扩充条件的输入区域向前序输入区域方向扩充以更新相应输入区
域的起始边界坐标;其中,更新后的起始边界坐标相对于所述待处理的张量的起始边界坐
标的距离为预设宽度的整数倍。用于扩充当前输入区域的部分亦是从原待处理的张量中相
应部分读入。
[0055] 以图2d和图3d所示情形为例,图2d左侧的实心方块表示当前输入区域中与前序输入区域的重叠部分,左侧的空心方块表示经过预处理(扩充)后当前输入区域中被扩充的部
分;图3d左侧的小方块表示当前输出区域与前序输出区域的重叠部分。其中,如图2d所示,
当前输入区域在高度方向上被扩充了一部分,即当前输入区域在从前序输入区域的终点边
界向前序输入区域内部的方向进行了扩充,以完成当前输入区域的顶端对齐。在此,“顶端
对齐”指的是,硬件加速器从存储单元读入该当前输入区域后,通过向读入的当前输入区域
的顶端(例如,在高度方向上向前序输入区域)进行扩充,使该当前输入区域起始边界坐标
为硬件加速器的预设区域高度(例如上面提到的8)的整数倍(硬件加速器按前述预设区域
高度读入当前输入区域)。通过这种方式,使每次读入硬件加速器的区域的高度均为前述预
设区域高度(例如8)的整数倍,以提升读取效率,配合可选的裁剪操作(请参阅本申请其他
实施例中的详细描述)使得相应的多个输出能够无缝和无重叠地拼接,避免出错。其中,在
一些实施例中,输入区域被执行卷积操作而获得相应的输出区域,具体而言,卷积核
(kernel)在二维输入数据上逐步“扫描”,输入区域经卷积核“扫描”而完成卷积操作后获得
相应的输出区域,卷积核“滑动”的同时,计算权重矩阵和扫描所得的数据矩阵的乘积,然后
把结果汇总成一个输出值。
[0056] 特别地,上述第一扩充条件在一些实施例中为:当前输入区域起始边界坐标非硬件加速器的预设区域高度(例如上面提到的8)的整数倍,或者说,当前输入区域起始边界坐
标无法被前述预设区域高度整除。
[0057] 参考图4a,将对原待处理的二维张量进行卷积处理。通常情况下,卷积核按行(当然也可按列)沿着待处理张量“滑动”(图中以向右的实线箭头示意)以执行卷积运算;当前
行“滑动”计算完成后,卷积核进行一定量的偏移(图中以向下的宽箭头示意),并执行前述
“滑动”卷积计算,直至整个待处理张量全部计算完成。卷积核每次的偏移量在一些实施例
中又称为“步长(Stride)”,在卷积过程中,通过设置的步长来压缩一部分信息,或者使输出
的尺寸小于输入的尺寸。在附图示出的情形中,步长设置为3(与卷积核高度/宽度相同)以
提高处理速度,此时原待处理张量相当于被划分为A1部分、A2部分、A3部分、A4部分……进
行处理,每一部分的宽度都相当于卷积核的高度/宽度。
[0058] 其中对于上述情况而言,为了使后续按照一定步长对输入区域进行卷积处理而获得的输出值是有效的,在一些实施例中,还需进一步扩充当前输入区域,用于扩充的部分从
原待处理张量中当前输入区域前部读入。在上述步骤S300中,张量处理设备通过所述硬件
加速器将读入的各个输入区域的起始部分填充至对齐预定处理的步长的整数倍,并对各个
输入区域执行预定处理,以获得分别对应所述输入区域的输出区域。具体来说,在很多情形
下(包括一般情形及上面提到的需要执行“顶端对齐”的情形),当前输入区域的起始位置可
能与原待处理的张量中原定的起始位置不一致,例如该起始位置不是图4a中A2、A3、A4等各
部分的起始位置,而是处于这些部分中间的某处。这将导致将原待处理张量分成若干块再
分别处理时,相较于直接处理原待处理张量而言发生了“错位”(例如对张量执行步长不为1
的卷积处理),进而对张量处理的结果也不再一致,即便将各部分处理后再拼合相应的输
出,拼合后的输出也是无效的。
[0059] 举例而言,参考附图4b,仍以卷积运算为基础进行说明,其中卷积核尺寸为3*3且步长为3。若直接处理待处理张量而不先切分,则卷积核应先后“扫描”A1部分(图中坐标0至
坐标3)、A2部分(图中坐标4至坐标6)、A3部分(图中坐标7至坐标9)、A4部分(图中坐标10至
坐标12)……而进行切分后,如上所述,当前输入区域在向上扩充后,其起始边界坐标为硬
件加速器的预设原子区域高度(例如上面提到的8)的整数倍(假设坐标为8)。若直接由此开
始执行卷积操作,则卷积核实际扫描区域的坐标为8至10,与原定扫描的A3部分错开,从而
输出是无效的。为了继续采用上述切分原待处理张量的方式以降低系统需求、提升处理效
率且避免出错,一种实现方式是,如图4b所示,以0值(或其他固定/可变值)填充当前输入区
域(以带斜线的浅色部分方格示出),使已读入硬件加速器的当前输入区域的起始边界的位
置能让填充后的输出与原定输出一致(以保证最终输出的正确性),实际即如图4c所示处
理,卷积核对当前输入区域进行第一次“扫描”时,被“扫描”的部分既包括第一输入区域的
起始部分,又包括上述填充的部分。换言之,张量处理设备通过硬件加速器将读入硬件加速
器的当前输入区域的起始部分填充至对齐预定处理(例如,计算卷积)的步长的整数倍,并
对填充后的当前输入区域执行所述预定处理,以获得当前输入区域所对应的当前输出区
域。其中,将当前输入区域的起始部分填充至对齐预定处理(例如,计算卷积)的步长的整数
倍,指的是填充后的当前输入区域的起始位置,在待处理的张量的投影(参考图4d)位置为
该预定处理(例如,计算卷积)的步长的整数倍(例如图4d中的坐标位置6)。
[0060] 在一些实施例中,在将当前输入区域进行如上所述的扩充(可选地还有填充)后,当前输入区域经过相应处理(例如计算卷积)后所得的输出区域将与前一输出区域有部分
重叠,若直接拼合当前输出区域与前一输出区域将出错(例如,对于二维张量而言,拼合结
果多出若干无效行);此外,若对读入硬件加速器的当前输入区域进行了填充,填充部分对
应的输出为无效输出。因此当前输入区域所对应的输出区域尚需经过剪裁,去除不需要部
分后,才可获得对应于由原张量划分而获得的输入区域所对应的有效输出区域。在此为方
便起见,将对当前输入区域处理所得的对应的剪裁前的区域称为当前待剪裁区域。相应地,
在上述步骤S300中,张量处理设备通过硬件加速器对前述输入区域执行预定处理,以获得
分别对应各输入区域的待剪裁区域;并对各待剪裁区域中对应于相应输入区域中被扩充部
分的区域(对应于相应输入区域的起始部分,以图2c所示为例对应于“临时的”当前输出区
域的上部标示出的需要剪裁的部分,去除该部分后方得到最终的当前输出区域)进行剪裁,
以获得对应的输出区域。
[0061] 在一些实施例中,参照上述“顶端对齐”的相关说明,需要对输入区域进行“底端对齐”。具体而言,在上述子步骤S210中,张量处理设备基于所述划分区域数量信息,确定所述
待处理张量对应的至少两个输入区域的终点边界坐标,并将满足第二扩充条件的输入区域
向后继输入区域方向扩充以更新相应输入区域的终点边界坐标;其中,更新后的终点边界
坐标相对于所述待处理的张量的起始边界坐标的距离为预设宽度的整数倍。在此,“底端对
齐”指的是,硬件加速器从存储单元读入该当前输入区域后,通过向读入的当前输入区域的
底端(例如,在高度方向上向前序输入区域)进行扩充,使该当前输入区域起始边界坐标为
硬件加速器的预设区域高度(例如上面提到的8)的整数倍(硬件加速器按前述预设区域高
度读入当前输入区域)。通过这种方式,使每次读入硬件加速器的区域的高度均为前述预设
区域高度(例如8)的整数倍,以提升读取效率,使得相应的多个输出能够无缝和无重叠地拼
接,避免出错。用于扩充当前输入区域的部分亦是从原待处理的张量中相应部分读入。
[0062] 特别地,上述第二扩充条件在一些实施例中为:当前输入区域终点边界坐标非硬件加速器的预设区域高度(例如上面提到的8)的整数倍,或者说,当前输入区域终点边界坐
标无法被前述预设区域高度整除。
[0063] 进一步地,在一些实施例中,在上述步骤S300中,通过所述硬件加速器对所述输入区域执行预定处理,以获得分别对应所述输入区域的待剪裁区域;并对所述待剪裁区域中
对应于相应输入区域中被扩充部分的区域(对应于相应输入区域的终点部分,去除该部分
后方得到最终的当前输出区域)进行剪裁,以获得对应的输出区域。参照上述有关对待剪裁
区域进行处理的说明,在一些实施例中,在将当前输入区域进行如上所述的扩充(可选地还
有填充)后,当前输入区域经过相应处理(例如计算卷积)后所得的输出区域将与后一输出
区域有部分重叠,若直接拼合当前输出区域与后一输出区域将出错(例如,对于二维张量而
言,拼合结果多出若干无效行);此外,若对读入硬件加速器的当前输入区域进行了填充,填
充部分对应的输出为无效输出。因此当前输入区域所对应的输出区域尚需经过剪裁,去除
不需要部分后,才可获得对应于由原张量划分而获得的输入区域所对应的有效输出区域。
在此为方便起见,将对当前输入区域处理所得的对应的剪裁前的区域称为当前待剪裁区
域。
[0064] 可选地,在一些实施例中,上述方法还包括步骤S600(未示出)。在该步骤S600中,张量处理设备基于各输出区域拼合所述待处理的张量的目标输出张量。结合上述各实施例
中对原大尺寸张量的切分处理,本方案根据硬件的相关参数确定对大尺寸张量进行分块的
数量,再基于分块数量具体确定各个分块的起止点并分别处理各个分块,最后拼合处理结
果,具有计算量小、处理速度快的优点。并且,从原张量中划分出的各个部分区域的大小是
根据硬件加速器的处理能力而确定的,因此该处理方式能尽可能减少对大尺寸张量的切
分,从而该处理方式可以最大化计算资源和带宽的利用率。
[0065] 由以上说明可见,先行确定待处理张量的划分数量、再基于该划分数量确定各个输入区域,再对各个输入区域分别处理,可以实现对原待处理张量划分和处理的全局安排。
现有的大尺寸张量处理策略,通常为基于预设的分块尺寸划分大尺寸张量,无法充分利用
硬件的计算资源;或者某些方案会依次确定各个分块的尺寸,最大化每个分块的尺寸,以尽
可能减少分块数量,但是这又会造成各输入区域所对应的输出尺寸不一致,因此整体的处
理效率也有待提高。
[0066] 此外,可选地,由于本申请所提供的张量处理方法首先确定了张量的划分数量,因此可以通过关闭部分硬件加速器或者处理核心以实现节能。具体而言,在上述步骤S100之
后,张量处理设备基于获得的划分区域数量信息以及现有的硬件加速器数量,关闭部分硬
件加速器,并在上述步骤S300中通过处于工作状态的硬件加速器处理各个输入区域。
[0067] 为了进一步说明以便于理解,以下列出一个具体实施例中相关的步骤以说明具体操作过程。在示例中,其中待处理的张量是二维张量;其他情形类推即可。
[0068] 1)获取原待处理张量所对应输出张量的总高度,和硬件加速器对其能够处理的张量的限制高度,并将二者作商后向上取整,从而获得需要划分待处理张量的块数N;
[0069] 2)获取原待处理张量所对应输出张量的总高度,以及前面提到的原子区域的高度,并将二者作商后向上取整,从而确定输出张量所包含原子区域高度的数量C;
[0070] 3)将各个原子区域分配至每个分块(输入区域对应的输出区域),若数量C能被块数N整除则每个分块对应(C/N)个原子区域,否则,部分分块(输入区域对应的输出区域)被
分配到的原子区域将比其他分块多1;
[0071] 4)以每个输出区域被分配到的原子区域数量与原子区域高度相乘,获得每个输出区域的高度,再累加每个输出区域及在其之前的输出区域(如有,例如在第一个输出区域之
前不存在其他输出区域)的高度,得到相应输出区域的终点边界(底端)坐标,同时,对于除
第一个输出区域,基于其前序输出区域确定每个输出区域的起始边界(顶端)坐标;
[0072] 5)将每个输出区域的顶端对应的输入区域的顶端坐标向上对齐,向上对齐后,当前输出区域会多出若干无效行,这些无效行在后续步骤中需要裁剪掉;其中,根据需要,还
应在相应的输入区域的顶端填充若干行,填充后对应输出区域中会多出一个无效行,该无
效行在后续步骤中也需要裁剪掉;
[0073] 6)基于输出区域的底端坐标确定对应的输入区域的底端坐标,将各输入区域的底端坐标向下对齐;
[0074] 7)基于上面计算获得的输出区域底端坐标,对实际处理获得的输出区域的底端进行裁剪。
[0075] 以上详述了本申请的各个实施例。须知,本申请的各个实施例并不排斥对划分出的各个部分(例如划分待处理张量所得的各个输入区域)进一步划分,例如将附图示出的各
输入区域横向地进一步划分为若干块。
[0076] 根据本申请的另一方面,本申请还提供一种张量处理系统,其中,所述系统至少包括:
[0077] 区域数量确定装置,其中所述输入区域确定装置被配置为:
[0078] 基于硬件加速器的工作参数信息,确定待处理的张量的划分区域数量信息;
[0079] 输入区域确定装置,其中所述输入区域确定装置被配置为:
[0080] 基于所述划分区域数量信息,确定所述待处理的张量对应的至少两个输入区域;
[0081] 区域处理装置,其中所述区域处理装置被配置为:
[0082] 通过所述硬件加速器对所述输入区域执行预定处理,以获得分别对应所述输入区域的输出区域。
[0083] 本申请还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机代码,当所述计算机代码被执行时,如前任一项所述的方法被执行。
[0084] 本申请还提供了一种计算机程序产品,当所述计算机程序产品被计算机设备执行时,如前任一项所述的方法被执行。
[0085] 本申请还提供了一种计算机设备,所述计算机设备包括:
[0086] 一个或多个处理器;
[0087] 存储器,用于存储一个或多个计算机程序;
[0088] 当所述一个或多个计算机程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如前任一项所述的方法。
[0089] 需要注意的是,本申请可在软件和/或软件与硬件的组合体中被实施,例如,可采用专用集成电路(ASIC)、通用目的计算机或任何其他类似硬件设备来实现。在一个实施例
中,本申请的软件程序可以通过处理器执行以实现上文所述步骤或功能。同样地,本申请的
软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,例如,RAM存储器,
磁或光驱动器或软磁盘及类似设备。另外,本申请的一些步骤或功能可采用硬件来实现,例
如,作为与处理器配合从而执行各个步骤或功能的电路。
[0090] 另外,本申请的一部分可被应用为计算机程序产品,例如计算机程序指令,当其被计算机执行时,通过该计算机的操作,可以调用或提供根据本申请的方法和/或技术方案。
本领域技术人员应能理解,计算机程序指令在计算机可读介质中的存在形式包括但不限于
源文件、可执行文件、安装包文件等,相应地,计算机程序指令被计算机执行的方式包括但
不限于:该计算机直接执行该指令,或者该计算机编译该指令后再执行对应的编译后程序,
或者该计算机读取并执行该指令,或者该计算机读取并安装该指令后再执行对应的安装后
程序。在此,计算机可读介质可以是可供计算机访问的任意可用的计算机可读存储介质或
通信介质。
[0091] 通信介质包括藉此包含例如计算机可读指令、数据结构、程序模块或其他数据的通信信号被从一个系统传送到另一系统的介质。通信介质可包括有导的传输介质(诸如电
缆和线(例如,光纤、同轴等))和能传播能量波的无线(未有导的传输)介质,诸如声音、电
磁、RF、微波和红外。计算机可读指令、数据结构、程序模块或其他数据可被体现为例如无线
介质(诸如载波或诸如被体现为扩展频谱技术的一部分的类似机制)中的已调制数据信号。
术语“已调制数据信号”指的是其一个或多个特征以在信号中编码信息的方式被更改或设
定的信号。调制可以是模拟的、数字的或混合调制技术。
[0092] 作为示例而非限制,计算机可读存储介质可包括以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据的信息的任何方法或技术实现的易失性和非易失性、可
移动和不可移动的介质。例如,计算机可读存储介质包括,但不限于,易失性存储器,诸如随
机存储器(RAM,DRAM,SRAM);以及非易失性存储器,诸如闪存、各种只读存储器(ROM,PROM,
EPROM,EEPROM)、磁性和铁磁/铁电存储器(MRAM,FeRAM);以及磁性和光学存储设备(硬盘、
磁带、CD、DVD);或其它现在已知的介质或今后开发的能够存储供计算机系统使用的计算机
可读信息/数据。
[0093] 在此,根据本申请的一个实施例包括一个装置,该装置包括用于存储计算机程序指令的存储器和用于执行程序指令的处理器,其中,当该计算机程序指令被该处理器执行
时,触发该装置运行基于前述根据本申请的多个实施例的方法和/或技术方案。
[0094] 对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细节,而且在不背离本申请的精神或基本特征的情况下,能够以其他的具体形式实现本申请。因此,无论
从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权
利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有
变化涵括在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此
外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个
单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表
示名称,而并不表示任何特定的顺序。