CN114091685A - 深度学习框架的张量切分方法、装置、设备和存储介质 - Google Patents
深度学习框架的张量切分方法、装置、设备和存储介质 Download PDFInfo
- Publication number
- CN114091685A CN114091685A CN202111312626.2A CN202111312626A CN114091685A CN 114091685 A CN114091685 A CN 114091685A CN 202111312626 A CN202111312626 A CN 202111312626A CN 114091685 A CN114091685 A CN 114091685A
- Authority
- CN
- China
- Prior art keywords
- original
- slices
- tensor
- slice
- target
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Evolutionary Computation (AREA)
- Medical Informatics (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Mathematical Physics (AREA)
- Artificial Intelligence (AREA)
- Machine Translation (AREA)
- Image Analysis (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Television Systems (AREA)
Abstract
本公开提供了一种深度学习框架的张量切分方法、装置、设备和存储介质,涉及计算机技术领域,具体涉及深度学习等人工智能领域。深度学习框架的张量切分方法包括:获取原始切片,所述原始切片基于原始分布式属性对张量进行切分后获得;将所述原始切片拼接成待处理切片;基于所述张量的目标分布式属性,将所述待处理切片切分为目标切片。本公开可以提高张量切分的通用性。
Description
技术领域
本公开涉及计算机技术领域,具体涉及深度学习等人工智能领域,尤其涉及一种深度学习框架的张量切分方法、装置、设备和存储介质。
背景技术
深度学习框架作为人工智能领域的基础性框架,受到越来越多的关注。深度学习框架所处理的数据量规模是巨大的,为了提高运算效率,可以采用并行运算。为了降低并行运算的难度,可以采用自动并行。
自动并行过程中,需要解决张量切分问题。
发明内容
本公开提供了一种深度学习框架的张量切分方法、装置、设备和存储介质。
根据本公开的一方面,提供了一种深度学习框架的张量切分方法,包括:获取原始切片,所述原始切片基于原始分布式属性对张量进行切分后获得;将所述原始切片拼接成待处理切片;基于所述张量的目标分布式属性,将所述待处理切片切分为目标切片。
根据本公开的另一方面,提供了一种深度学习框架的张量切分装置,包括:获取模块,用于获取原始切片,所述原始切片基于原始分布式属性对张量进行切分后获得;拼接模块,用于将所述原始切片拼接成待处理切片;切分模块,用于基于所述张量的目标分布式属性,将所述待处理切片切分为目标切片。
根据本公开的另一方面,提供了一种电子设备,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如上述任一方面的任一项所述的方法。
根据本公开的另一方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行根据上述任一方面的任一项所述的方法。
根据本公开的另一方面,提供了一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现根据上述任一方面的任一项所述的方法。
根据本公开的技术方案,可以提高张量切分的通用性。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
附图用于更好地理解本方案,不构成对本公开的限定。其中:
图1是根据本公开第一实施例的示意图;
图2a-图2h是根据本公开第二实施例的张量分布示意图;
图3a-图3c是根据本公开第三实施例的张量重切分示意图;
图4a-图4c是根据本公开第四实施例的张量重切分示意图;
图5是根据本公开第五实施例的示意图;
图6是根据本公开第六实施例的示意图;
图7是用来实现本公开实施例的深度学习框架的张量切分方法的电子设备的示意图。
具体实施方式
以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
图1是根据本公开第一实施例的示意图。该实施例提供一种深度学习框架的张量切分方法,包括:
101、获取原始切片,所述原始切片基于原始分布式属性对张量进行切分后获得。
102、将所述原始切片拼接成待处理切片。
103、基于所述张量的目标分布式属性,将所述待处理切片切分为目标切片。
本实施例提供的处理方法的执行主体可以称为深度学习框架的张量切分装置,该装置可以为软件、硬件、或者软硬结果。该装置可以位于深度学习框架内。可以应用在深度学习系统、分布式深度学习系统、机器学习平台、分布式训练平台等场景。
进一步地,假设原始切片所在进程为原始进程,目标切片所在进程为目标进程,则上述方法可以应用于目标进程。
本公开实施例中,通过将原始切片拼接成待处理切片,以及将待处理切片切分为目标切片,可以实现张量的重切分,提高张量切分的通用性。
在深度学习初始阶段,每个深度学习研究者都需要写大量的重复代码。为了提高工作效率,这些研究者就将这些代码写成了一个框架放到网上让所有研究者一起使用。接着,网上就出现了不同的框架。随着时间的推移,全世界最为流行的深度学习框架有PaddlePaddle、Tensorflow、Caffe、Theano、MXNet、Torch和PyTorch。
深度学习框架中,使用张量(tensor)来表示数据,数据可以是深度学习模型的输入数据,还可以是深度学习模型的模型参数。tensor可以理解为多维数组。
对张量进行并行运算(还可以称为分布式运算)时,可以将张量进行切分,经过切分后可以获得张量的至少一个切片(slice),至少一个切片可以分布给不同计算资源进行处理。计算资源比如为进程(process)。
进程可以具体为算子的进程,算子(operator)是深度学习框架中的基本计算单元,完成特定的功能,比如卷积算子、池化算子、激活算子等。
分布式运算可以基于分布式属性进行,分布式属性用以表明张量和进程在集群中的分布情况。
分布式属性主要包括:拓扑结构进程组(proc_mesh)、进程和张量维度映射关系(dims_mapping)这两个属性。
以张量为例,dims_mapping中的元素为-1,表示该维度不进行切分。当元素不为-1时,表示该维度使用拓扑结构进程组中的元素值进行切分。
比如,dims_mapping=[-1,-1]表示张量在每个维度上都不进行切分,即,各个进程上的张量为该张量本身。
又比如,dims_mapping=[0,-1]表示张量在第0个维度(行)上进行切分,在第1个维度(列)上不进行切分。
又比如,dims_mapping=[-1,0]表示张量在第0个维度(行)上不进行切分,在第1个维度(列)上进行切分。
进一步地,切片在待切片的维度上的大小=张量在待切片的维度上的大小/proc_mesh[非-1的值],其中,proc_mesh[非-1的值]是proc_mesh的第x(x=非-1的值)个元素的元素值。
比如,dims_mapping=[0,-1],此时,x=0,proc_mesh[0]=2,则第0个维度(行)上的切片大小=6/2=3,由于列上不切分,则各个切片大小=[3,6]。
又比如,dims_mapping=[-1,0],此时,x=0,proc_mesh[0]=2,在第1个维度(列)上进行切分,切片大小=6/2=3,由于行上不切分,则各个切片大小=[6,3]。
又比如,dims_mapping=[0,1],此时,两个维度上都要进行切分,行上切片大小=6/proc_mesh[0]=6/2=3,列上切片大小=6/proc_mesh[1]=6/3=2,则各个切片大小=[3,2]。
均匀切分情况下,各个进程可以采用如下方式确定各自处理的切片:
1)先根据process_mesh和dims_mapping推算出每一块切分的大小;比如,上述的切片大小=[3,6],切片大小=[6,3],切片大小=[3,2]等。
2)根据process_mesh可以计算出进程号在当前进程组的坐标;
比如,图2a-图2h中,process0的坐标为[0,0],process1的坐标为[0,1],process3的坐标为[1,0],依此类推。
3)根据dims_mapping,切片大小,进程号的坐标计算进程对应的切片索引,计算公式如下:
如果dims_mapping[i]不等于-1,则
partition_index[i]=
[process_index[dims_mapping[i]]*partition_shape[i],
(process_index[dims_mapping[i]]+1)*partition_shape[i]];
如果dims_mapping[i]=-1,则partition_index[i]=[0,partition_shape[i]];
其中process_index为进程号坐标,partiton_shape为切片的大小。
其中,i=0,1,...,N(N为张量维度),比如,张量的大小是[6,6],则该张量是2个维度,i=0对应行,i=1对应列。
假设,dims_mapping=[0,-1],
针对process0这个进程,即,进程号坐标为process_index[0,0]:
i=0,即对应行这个维度,由于dims_mapping[0]=0,不等于-1,则按照上式计算得到:partition_index[0]=[0,3];
i=1,即对应列这个维度,由于dims_mapping[1]=-1,则
partition_index[1]=[0,partition_shape[1]]=[0,6];
因此,process0上的切片的索引为:partition_index[[0,3],[0,6]]。
partition_index[[0,3],[0,6]]对应的切片大小为3*6,具体为如下切片:
可以理解的是,上述计算公式只是一种示例,还可以采用其他方式确定进程与切片的对应关系。另外,上述计算公式中,是以python语言为例,切片索引的最大值需要减1,以便映射到实际切片上,比如,行向最大值为3,则对应的行分别为0对应的第一行、1对应的第二行、2对应的第三行。
而在非均匀切分情况下,由用户指定进程号对应的切片索引。
图2a-图2h示出了张量各个进程上的分布情况,其中,图2a是串行处理,图2b-图2h是张量在均匀切分时,不同的分布式属性对应的分布情况。
原始切片是指待重切分的切片,比如,图2b-图2h中各个进程上的切片,图2b-图2h中各个进程上的切片对应的分布式属性可以称为原始分布式属性。
图2b-图2h中各个进程组成的进程组可以称为原始进程组,即,原始进程组的proc_mesh=[2,3]。
算子期望的切片可以称为目标切片,目标切片所在进程组可以称为目标进程组,目标切片对应的分布式属性可以称为目标分布式属性。
一些实施例中,所述原始切片为所述原始进程组中各个原始进程上的原始切片,所述将所述原始切片拼接成待处理切片,包括:对所述各个原始进程上的原始切片进行拼接,以获得所述张量的全量张量,将所述全量张量作为所述待处理切片。
即,可以将全量张量作为待处理切片。
通过将全量张量作为待处理切分,可以适用于原始进程组与目标进程组一致场景下的张量重切分。
进一步地,所述原始切片分布在原始进程组内,所述目标切片分布在目标进程组内,所述获取原始切片,包括:
若所述目标进程组与所述原始进程组一致,且所述张量为均匀切分,基于集合通信,获取所述各个原始进程上的原始切片。
其中,张量重切分时,原始切片对应的原始分布式属性、原始进程组,以及目标切片对应的目标分布式属性、目标进程组是已知量,从而,可以获知原始进程组和目标进程组是否一致。另外,用户可以指定张量是否均匀切分,因此,张量是否均匀切分也为已知量。
具体地,不同的进程组可以用不同的进程组标识进行标识,比如,原始进程组的进程组标识为proc_mesh_id=0,目标进程组的进程组标识也为proc_mesh_id=0,此时,原始进程组与目标进程组一致。
又比如,原始进程组的进程组标识为proc_mesh_id=0,目标进程组的进程组标识也为proc_mesh_id=1,此时,原始进程组与目标进程组不一致。
其中,若张量为均匀切分(如图2b-图2h为均匀切分),且原始进程组与目标进程组一致,则可以采用集合通信的方式。
具体地,原始进程组和目标进程组一致时,则表明原始进程组和目标进行组包括相同的进程,比如,均为process0~process5。
此时,可以在各个进程中插入集合通信算子,如AllGather、All-to-All等,从而各个进程可以获取其他进程内的原始切片。
获得原始切片后,可以对原始切片进行拼接,具体可以通过拼接(Concat)算子执行拼接操作。
获取待处理切片后,可以采用切分(slice)算子对待处理切片进行切分,以获得目标切片。
即,若原始进程组与目标进程组一致,且张量为均匀切分,则可以在各个进程中插入集合通信算子+拼接算子+切分算子,通过结合通信算子可以将自身的原始切片发送给进程组中的其他进程,通过拼接算子可以对各个进程的原始切片进行拼接,以获得全量张量,通过切分算子可以将全量张量切分为目标切片,从而各个进程可以获取全量张量,并对全量张量进行切分,获得自身需要的目标切片。
如图3a-图3c所示,经过集合通信算子和拼接算子后,各个进程上可以获得全量张量,各个进程再采用切分算子可以将全量张量切分为目标切片。
通过集合通信、拼接和切分,可以实现目标进程组与原始进程组一致,且张量为均匀切分场景下的张量重切分。
一些实施例中,所述原始切片分布在原始进程组内,所述目标切片分布在目标进程组内,所述获取原始切片,包括:
若所述目标进程组与所述原始进程组一致,且所述张量为非均匀切分,采用所述目标进程组内的预设进程,基于收发通信,获取所述各个原始进程中除了所述预设进程之外的其他进程上的原始切片。
相应地,所述拼接采用所述预设进程执行,所述方法还包括:采用所述预设进程,将所述全量张量广播给所述目标进程组中除了所述预设进程之外的其他进程。
图3a-图3c以原始进程组与目标进程组一致,且张量为均匀切分为例进行了说明。
若原始进程组与目标进程组一致,且张量为非均匀切分,此时,可以采用目标进程组中的预设进程执行拼接操作,而不需要目标进程组中的各个进程均执行拼接操作。
比如,预设进程为process0,则可以在process0中插入接收(Recv)算子,在其他进程(process1~process5)中插入发送(send)算子,其中,接收算子与发送算子是成对的,比如,process1~process5中的各个进程中插入一个发送算子,process0中插入5个接收算子,以分别对应process1~process5中的发送算子。通过收发算子(发送算子和接收算子),process0可以获取其他进程上的原始切片,之后,process0可以对自身的原始切片以及其他进程上的原始切片进行拼接操作,以获得全量张量。process0获得全量张量后,可以通过广播(Broadcast)算子,将全量张量广播给其他进程(process1~process5),从而进程组中的各个进程上都可以获得全量张量。各个进程获得全量张量后,可以基于目标分布属性,将全量张量切分为各个进程自身所需的目标切片。
通过收发通信、拼接和切分,可以实现目标进程组与原始进程组一致,且张量为非均匀切分场景下的张量重切分。
通过广播方式,可以在预设进程上进行拼接,而不需要在各个进程上进行拼接,可以提高效率,节省资源。
上述描述了原始进程组与目标进程组一致时的处理过程,针对原始进程组与目标进程组不一致的场景,可以执行如下流程:
一些实施例中,所述原始切片为所述原始进程组中部分原始进程上的原始切片,所述将所述原始切片拼接成待处理切片,包括:对所述部分原始进程上的原始切片进行拼接,以获得所述张量的部分张量,将所述部分张量作为所述待处理切片,所述部分张量为覆盖所述目标切片且对应最少原始切片的张量。
进一步地,所述部分原始进程上的原始切片为与所述目标切片存在交集的原始切片,所述原始切片分布在原始进程组内,所述目标切片分布在目标进程组内,所述获取原始切片,包括:若所述目标进程组与所述原始进程组不一致,基于收发通信,获取所述与所述目标切片存在交集的原始切片。
即,在原始进程组和目标进程组不一致时,可以基于收发通信获取原始切片,且原始切片为部分原始进程上的原始切片。此时的待处理切片为部分张量,该部分张量可以称为最小覆盖张量。
比如,参见图4a-图4c,原始进程组的标识为proc_mesh_id=0,目标进程组的标识为proc_mesh_id=1,因此,原始进程组与目标进程组不一致。
原始进程组包括process0~process5共6个原始进程,proc_mesh=[2,3];目标进程组包括process6~process9共4个进程,proc_mesh=[2,2]。
对应目标进程组中的各个目标进程,与图3a-图3c所示的全量张量不同,本实施例获得的张量为部分张量,可以称为最小覆盖张量。
比如,对应process6,其最小覆盖张量为process0上的原始切片和process1上的原始切片拼接后的张量,则process0和process1上可以分别插入一个发送(send)算子,process6上插入两个接收(recv)算子,两个接收算子中的各个接收算子分别对应一个发送算子,通过收发算子(发送算子和接收算子)的收发通信,可以将process0上的原始切片和process1上的原始切片发送给process6,process6再采用拼接算子可以将其拼接为最小覆盖张量,之后,process6可以采用切分(slice)算子将最小覆盖张量切分为process6所需的目标切片。
通过最小覆盖拼接,可以不需要拼接所有的原始切片,可以节省资源,提高效率。
通过收发通信、最小覆盖拼接和切分,可以实现目标进程组与原始进程组不一致场景下的张量重切分。
可以理解的是,在原始进程组和目标进程组不一致时,也可以获取全量张量,再对全量张量进行切分,获得各个目标进程所需的目标切片。获取全量张量的方式,可以是预设进程对各个原始切片进行拼接再广播的方式。
或者,在原始进程组与目标进程组一致时,也可以采用最小覆盖张量的方式,即,各个目标进程可以获得最小覆盖张量,再对最小覆盖张量进行切分。
一些实施例中,所述将所述原始切片拼接成待处理切片,包括:
将所述原始切片的并集,作为所述待处理切片。
比如,参见图3a-图3c,存在6个原始切片,6个原始切片的并集为全量张量,将该全量张量作为待处理切片。
又比如,参见图4a-图4c,针对process6,其待拼接的原始切片为process0上的原始切片和process1上的原始切片,两者的并集即为process6上的待处理切片。
通过将原始切片的并集作为待处理切片,可以实现原始切片的拼接。
综上,本公开实施例的张量重切分算法可以应用于如下场景:
张量均匀切片,且原始进程组与目标进程组一致;
张量非均匀切片,且原始进程组与目标进程组一致;
张量均匀切片,且原始进程组与目标进程组不一致;
张量非均匀切片,且原始进程组与目标进程组不一致。
由于可以适用于上述各种场景,实现了张量重切分的广泛适用性。
图5是根据本公开第五实施例的示意图,本实施例提供一种深度学习框架的张量切分方法,该方法包括:
501、获取原始切片所在的原始进程组的原始进程组标识,以及,目标切片所在的目标进程组的目标进程组标识。
502、判断原始进程组标识与目标进程组标识是否一致,若是,执行503,否则,执行511。
503、判断张量是否均匀切分,若是,执行504,否则执行507。
504、基于集合通信,获取原始进程组中各个原始进程上的原始切片
505、对各个原始进程上的原始切片进行拼接,以获得全量张量。
506、对全量张量进行切分,以获得目标切片。
其中,各个目标进程可以基于目标分布式属性对全量张量进行切分。
507、预设进程,基于收发通信,获取其他进程上的原始切片。
508、预设进程对自身进程上的原始切片以及其他进程上的原始切片进行拼接,以获得全量张量。
509、预设进程将全量张量广播给其他进程。
510、对全量张量进行切分,以获得目标切片。
511、基于收发通信获取部分原始进程上的原始切片。
512、对部分原始进程上的原始切片进行拼接,以获得最小覆盖张量。
513、对最小覆盖张量进行切分,以获得目标切片。
本实施例的各步骤的具体内容可以参见上述实施例中的相关描述。
本实施例中,可以提供通用性的张量切分方法,能够适用不同的需要重切分的场景,保证自动并行的健壮性和鲁棒性,使得自动并行的并行策略更加多样化。
图6是根据本公开第六实施例的示意图,本实施例提供一种深度学习框架的张量切分装置。如图6所示,深度学习框架的张量切分装置600包括:获取模块601、拼接模块602和切分模块603。
获取模块601用于获取原始切片,所述原始切片基于原始分布式属性对张量进行切分后获得;拼接模块602用于将所述原始切片拼接成待处理切片;切分模块603用于基于所述张量的目标分布式属性,将所述待处理切片切分为目标切片。
一些实施例中,所述原始切片为所述原始进程组中各个原始进程上的原始切片,所述拼接模块602进一步用于:对所述各个原始进程上的原始切片进行拼接,以获得所述张量的全量张量,将所述全量张量作为所述待处理切片。
一些实施例中,所述原始切片分布在原始进程组内,所述目标切片分布在目标进程组内,所述获取模块601进一步用于:若所述目标进程组与所述原始进程组一致,且所述张量为均匀切分,基于集合通信,获取所述各个原始进程上的原始切片。
一些实施例中,所述原始切片分布在原始进程组内,所述目标切片分布在目标进程组内,所述获取模块601进一步用于:若所述目标进程组与所述原始进程组一致,且所述张量为非均匀切分,采用所述目标进程组内的预设进程,基于收发通信,获取所述各个原始进程中除了所述预设进程之外的其他进程上的原始切片。
一些实施例中,所述拼接采用所述预设进程执行,所述装置还包括:广播模块,用于采用所述预设进程,将所述全量张量广播给所述目标进程组中除了所述预设进程之外的其他进程。
一些实施例中,所述原始切片为所述原始进程组中部分原始进程上的原始切片,所述拼接模块602进一步用于:对所述部分原始进程上的原始切片进行拼接,以获得所述张量的部分张量,将所述部分张量作为所述待处理切片,所述部分张量为覆盖所述目标切片且对应最少原始切片的张量。
一些实施例中,所述部分原始进程上的原始切片为与所述目标切片存在交集的原始切片,所述原始切片分布在原始进程组内,所述目标切片分布在目标进程组内,所述获取模块601进一步用于:若所述目标进程组与所述原始进程组不一致,基于收发通信,获取所述与所述目标切片存在交集的原始切片。
一些实施例中,所述拼接模块602进一步用于:将所述原始切片的并集,作为所述待处理切片。
本公开实施例中,通过将原始切片拼接成待处理切片,以及将待处理切片切分为目标切片,可以实现张量的重切分,提高张量切分的通用性。
可以理解的是,本公开实施例中,不同实施例中的相同或相似内容可以相互参考。
可以理解的是,本公开实施例中的“第一”、“第二”等只是用于区分,不表示重要程度高低、时序先后等。
本公开的技术方案中,所涉及的用户个人信息的收集、存储、使用、加工、传输、提供和公开等处理,均符合相关法律法规的规定,且不违背公序良俗。
根据本公开的实施例,本公开还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。
图7示出了可以用来实施本公开的实施例的示例电子设备700的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字助理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
如图7所示,电子设备700包括计算单元701,其可以根据存储在只读存储器(ROM)702中的计算机程序或者从存储单元707加载到随机访问存储器(RAM)703中的计算机程序,来执行各种适当的动作和处理。在RAM703中,还可存储电子设备700操作所需的各种程序和数据。计算单元701、ROM702以及RAM703通过总线704彼此相连。输入/输出(I/O)接口705也连接至总线704。
电子设备700中的多个部件连接至I/O接口705,包括:输入单元706,例如键盘、鼠标等;输出单元707,例如各种类型的显示器、扬声器等;存储单元708,例如磁盘、光盘等;以及通信单元709,例如网卡、调制解调器、无线通信收发机等。通信单元709允许电子设备700通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
计算单元701可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元701的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元701执行上文所描述的各个方法和处理,例如深度学习框架的张量切分方法。例如,在一些实施例中,深度学习框架的张量切分方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元708。在一些实施例中,计算机程序的部分或者全部可以经由ROM702和/或通信单元709而被载入和/或安装到电子设备700上。当计算机程序加载到RAM703并由计算单元701执行时,可以执行上文描述的深度学习框架的张量切分方法的一个或多个步骤。备选地,在其他实施例中,计算单元701可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行深度学习框架的张量切分方法。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、复杂可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与VPS服务("VirtualPrivateServer",或简称"VPS")中,存在的管理难度大,业务扩展性弱的缺陷。服务器也可以为分布式系统的服务器,或者是结合了区块链的服务器。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。
Claims (19)
1.一种深度学习框架的张量切分方法,包括:
获取原始切片,所述原始切片基于原始分布式属性对张量进行切分后获得;
将所述原始切片拼接成待处理切片;
基于所述张量的目标分布式属性,将所述待处理切片切分为目标切片。
2.根据权利要求1所述的方法,其中,所述原始切片为所述原始进程组中各个原始进程上的原始切片,所述将所述原始切片拼接成待处理切片,包括:
对所述各个原始进程上的原始切片进行拼接,以获得所述张量的全量张量,将所述全量张量作为所述待处理切片。
3.根据权利要求2所述的方法,其中,所述原始切片分布在原始进程组内,所述目标切片分布在目标进程组内,所述获取原始切片,包括:
若所述目标进程组与所述原始进程组一致,且所述张量为均匀切分,基于集合通信,获取所述各个原始进程上的原始切片。
4.根据权利要求2所述的方法,其中,所述原始切片分布在原始进程组内,所述目标切片分布在目标进程组内,所述获取原始切片,包括:
若所述目标进程组与所述原始进程组一致,且所述张量为非均匀切分,采用所述目标进程组内的预设进程,基于收发通信,获取所述各个原始进程中除了所述预设进程之外的其他进程上的原始切片。
5.根据权利要求4所述的方法,其中,所述拼接采用所述预设进程执行,所述方法还包括:
采用所述预设进程,将所述全量张量广播给所述目标进程组中除了所述预设进程之外的其他进程。
6.根据权利要求1所述的方法,其中,所述原始切片为所述原始进程组中部分原始进程上的原始切片,所述将所述原始切片拼接成待处理切片,包括:
对所述部分原始进程上的原始切片进行拼接,以获得所述张量的部分张量,将所述部分张量作为所述待处理切片,所述部分张量为覆盖所述目标切片且对应最少原始切片的张量。
7.根据权利要求6所述的方法,其中,所述部分原始进程上的原始切片为与所述目标切片存在交集的原始切片,所述原始切片分布在原始进程组内,所述目标切片分布在目标进程组内,所述获取原始切片,包括:
若所述目标进程组与所述原始进程组不一致,基于收发通信,获取所述与所述目标切片存在交集的原始切片。
8.根据权利要求1-7任一项所述的方法,其中,所述将所述原始切片拼接成待处理切片,包括:
将所述原始切片的并集,作为所述待处理切片。
9.一种深度学习框架的张量切分装置,包括:
获取模块,用于获取原始切片,所述原始切片基于原始分布式属性对张量进行切分后获得;
拼接模块,用于将所述原始切片拼接成待处理切片;
切分模块,用于基于所述张量的目标分布式属性,将所述待处理切片切分为目标切片。
10.根据权利要求9所述的装置,其中,所述原始切片为所述原始进程组中各个原始进程上的原始切片,所述拼接模块进一步用于:
对所述各个原始进程上的原始切片进行拼接,以获得所述张量的全量张量,将所述全量张量作为所述待处理切片。
11.根据权利要求10所述的装置,其中,所述原始切片分布在原始进程组内,所述目标切片分布在目标进程组内,所述获取模块进一步用于:
若所述目标进程组与所述原始进程组一致,且所述张量为均匀切分,基于集合通信,获取所述各个原始进程上的原始切片。
12.根据权利要求10所述的装置,其中,所述原始切片分布在原始进程组内,所述目标切片分布在目标进程组内,所述获取模块进一步用于:
若所述目标进程组与所述原始进程组一致,且所述张量为非均匀切分,采用所述目标进程组内的预设进程,基于收发通信,获取所述各个原始进程中除了所述预设进程之外的其他进程上的原始切片。
13.根据权利要求12所述的装置,其中,所述拼接采用所述预设进程执行,所述装置还包括:
广播模块,用于采用所述预设进程,将所述全量张量广播给所述目标进程组中除了所述预设进程之外的其他进程。
14.根据权利要求9所述的装置,其中,所述原始切片为所述原始进程组中部分原始进程上的原始切片,所述拼接模块进一步用于:
对所述部分原始进程上的原始切片进行拼接,以获得所述张量的部分张量,将所述部分张量作为所述待处理切片,所述部分张量为覆盖所述目标切片且对应最少原始切片的张量。
15.根据权利要求14所述的装置,其中,所述部分原始进程上的原始切片为与所述目标切片存在交集的原始切片,所述原始切片分布在原始进程组内,所述目标切片分布在目标进程组内,所述获取模块进一步用于:
若所述目标进程组与所述原始进程组不一致,基于收发通信,获取所述与所述目标切片存在交集的原始切片。
16.根据权利要求9-15任一项所述的装置,其中,所述拼接模块进一步用于:
将所述原始切片的并集,作为所述待处理切片。
17.一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-8中任一项所述的方法。
18.一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行根据权利要求1-8中任一项所述的方法。
19.一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现根据权利要求1-8中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111312626.2A CN114091685B (zh) | 2021-11-08 | 2021-11-08 | 深度学习框架的张量切分方法、装置、设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111312626.2A CN114091685B (zh) | 2021-11-08 | 2021-11-08 | 深度学习框架的张量切分方法、装置、设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114091685A true CN114091685A (zh) | 2022-02-25 |
CN114091685B CN114091685B (zh) | 2022-08-23 |
Family
ID=80299199
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111312626.2A Active CN114091685B (zh) | 2021-11-08 | 2021-11-08 | 深度学习框架的张量切分方法、装置、设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114091685B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114820279A (zh) * | 2022-05-18 | 2022-07-29 | 北京百度网讯科技有限公司 | 基于多gpu的分布式深度学习方法、装置及电子设备 |
CN115495095A (zh) * | 2022-11-18 | 2022-12-20 | 上海燧原科技有限公司 | 张量程序的整程序编译方法、装置、设备、介质及集群 |
CN115617351A (zh) * | 2022-11-29 | 2023-01-17 | 上海燧原科技有限公司 | 算子的切分图样搜索方法、装置、计算机设备及存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109993299A (zh) * | 2017-12-29 | 2019-07-09 | 中兴通讯股份有限公司 | 数据训练方法及装置、存储介质、电子装置 |
CN110263923A (zh) * | 2019-08-12 | 2019-09-20 | 上海燧原智能科技有限公司 | 张量卷积计算方法及系统 |
CN112041859A (zh) * | 2018-05-08 | 2020-12-04 | 国际商业机器公司 | 使用分层存储在计算机上仿真量子电路 |
CN112132287A (zh) * | 2020-09-04 | 2020-12-25 | 苏州浪潮智能科技有限公司 | 一种分布式的量子计算仿真方法和装置 |
CN113282880A (zh) * | 2020-02-19 | 2021-08-20 | 辉达公司 | 用于加速矩阵运算的应用程序编程接口 |
CN113342345A (zh) * | 2021-05-17 | 2021-09-03 | 北京百度网讯科技有限公司 | 深度学习框架的算子融合方法、装置 |
CN113485836A (zh) * | 2021-07-21 | 2021-10-08 | 瀚博半导体(上海)有限公司 | 一种基于张量切分的张量处理方法和张量处理系统 |
CN113485837A (zh) * | 2021-07-21 | 2021-10-08 | 瀚博半导体(上海)有限公司 | 一种基于并行分支和张量切分的张量处理方法和处理系统 |
-
2021
- 2021-11-08 CN CN202111312626.2A patent/CN114091685B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109993299A (zh) * | 2017-12-29 | 2019-07-09 | 中兴通讯股份有限公司 | 数据训练方法及装置、存储介质、电子装置 |
CN112041859A (zh) * | 2018-05-08 | 2020-12-04 | 国际商业机器公司 | 使用分层存储在计算机上仿真量子电路 |
CN110263923A (zh) * | 2019-08-12 | 2019-09-20 | 上海燧原智能科技有限公司 | 张量卷积计算方法及系统 |
CN113282880A (zh) * | 2020-02-19 | 2021-08-20 | 辉达公司 | 用于加速矩阵运算的应用程序编程接口 |
CN112132287A (zh) * | 2020-09-04 | 2020-12-25 | 苏州浪潮智能科技有限公司 | 一种分布式的量子计算仿真方法和装置 |
CN113342345A (zh) * | 2021-05-17 | 2021-09-03 | 北京百度网讯科技有限公司 | 深度学习框架的算子融合方法、装置 |
CN113485836A (zh) * | 2021-07-21 | 2021-10-08 | 瀚博半导体(上海)有限公司 | 一种基于张量切分的张量处理方法和张量处理系统 |
CN113485837A (zh) * | 2021-07-21 | 2021-10-08 | 瀚博半导体(上海)有限公司 | 一种基于并行分支和张量切分的张量处理方法和处理系统 |
Non-Patent Citations (2)
Title |
---|
YUANZHONG XU ET AL.: ""Automatic Cross-Replica Sharding of Weight Update in Data-Parallel Training"", 《ARXIV》 * |
王艺豪: ""分布式张量列分解算法的设计与实现"", 《中国优秀博硕士学位论文全文数据库(硕士) 信息科技辑》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114820279A (zh) * | 2022-05-18 | 2022-07-29 | 北京百度网讯科技有限公司 | 基于多gpu的分布式深度学习方法、装置及电子设备 |
CN115495095A (zh) * | 2022-11-18 | 2022-12-20 | 上海燧原科技有限公司 | 张量程序的整程序编译方法、装置、设备、介质及集群 |
CN115617351A (zh) * | 2022-11-29 | 2023-01-17 | 上海燧原科技有限公司 | 算子的切分图样搜索方法、装置、计算机设备及存储介质 |
CN115617351B (zh) * | 2022-11-29 | 2023-03-21 | 上海燧原科技有限公司 | 算子的切分图样搜索方法、装置、计算机设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN114091685B (zh) | 2022-08-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114091685B (zh) | 深度学习框架的张量切分方法、装置、设备和存储介质 | |
CN112506581B (zh) | 渲染小程序的方法、装置、电子设备和可读存储介质 | |
CN114501501B (zh) | 移动通信网络靶场的配置管理方法、装置、设备及介质 | |
CN114792355B (zh) | 虚拟形象生成方法、装置、电子设备和存储介质 | |
CN107945099B (zh) | 一种面向OpenGL实现的属性配置优化方法 | |
CN114708374A (zh) | 虚拟形象生成方法、装置、电子设备和存储介质 | |
CN113506368B (zh) | 地图数据融合方法、装置、电子设备、介质和程序产品 | |
CN113360266B (zh) | 任务处理方法和装置 | |
CN104915053A (zh) | 一种界面控件的位置确定方法和装置 | |
CN111530077A (zh) | 游戏场景优化方法及装置、电子设备、存储介质 | |
CN113626113A (zh) | 一种页面渲染方法和装置 | |
CN115102948A (zh) | 地图瓦片的自动下载方法、装置、设备以及存储介质 | |
CN114386577A (zh) | 用于执行深度学习模型的方法、设备和存储介质 | |
CN113570067A (zh) | 分布式系统的同步方法、装置及程序产品 | |
CN113657408A (zh) | 确定图像特征的方法、装置、电子设备和存储介质 | |
CN112732319B (zh) | 文件升级方法、装置、设备和存储介质 | |
CN114596637B (zh) | 图像样本数据增强训练方法、装置及电子设备 | |
CN111538559B (zh) | 一种虚拟机迁移方法、装置、电子设备及其存储介质 | |
CN113986112B (zh) | 软键盘显示方法、相关装置及计算机程序产品 | |
JP7391127B2 (ja) | 点群データ処理方法、装置、電子デバイス、記憶媒体、及びプログラム | |
CN113407844B (zh) | 小程序框架的版本推荐方法、装置、设备以及存储介质 | |
CN116468824B (zh) | 动画重定向方法、装置、电子设备及存储介质 | |
CN113900734B (zh) | 一种应用程序文件配置方法、装置、设备及存储介质 | |
CN114820908B (zh) | 虚拟形象生成方法、装置、电子设备和存储介质 | |
CN116363260B (zh) | 图像生成方法、装置及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |