CN111782398A - 数据处理的方法、装置、系统及相关设备 - Google Patents
数据处理的方法、装置、系统及相关设备 Download PDFInfo
- Publication number
- CN111782398A CN111782398A CN202010623506.3A CN202010623506A CN111782398A CN 111782398 A CN111782398 A CN 111782398A CN 202010623506 A CN202010623506 A CN 202010623506A CN 111782398 A CN111782398 A CN 111782398A
- Authority
- CN
- China
- Prior art keywords
- updated
- processors
- processor
- group
- target parameter
- 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.)
- Pending
Links
Images
Classifications
-
- 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/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Biophysics (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Biomedical Technology (AREA)
- Artificial Intelligence (AREA)
- Mathematical Physics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Multi Processors (AREA)
Abstract
本申请提供了数据处理的方法、装置、系统及相关设备,该方法应用于神经网络结构搜索NAS系统中,系统包括多个处理器,每个处理器用于训练搜索超网络中的一个子网络,方法包括:多个处理器中的每一个处理器对对应的子网络进行当前迭代训练,获得每一个处理器的目标参数的待更新部分;多个处理器中的每一个处理器与至少一个其他处理器之间传输得到的目标参数的待更新部分的信息,使得多个处理器中的每一个处理器获得多个处理器各自对应的目标参数的待更新部分,进而使得NAS系统中的多个处理器之间进行通信时只传递每个处理器的目标参数的待更新部分,相比于直接将处理器上的全部数据进行传输,能够减少通信量,提高NAS系统的训练效率。
Description
技术领域
本申请涉及计算机领域,尤其涉及数据处理的方法、装置、系统及相关设备。
背景技术
近年来,为了解决神经网络结构完全依赖人工设计的问题,研究人员开始尝试将神经网络结构的设计逐渐转型为机器自动设计,于是神经网络结构搜索(NAS)应运而生。NAS指的是在一个给定的搜索空间上找到一个较优的网络结构并试图优化该网络结构的权重参数,以获得训练好的网络模型。
NAS通常使用循环神经网络(Recurrent Neural Network,RNN)作为控制器产生多个子网络,再对每个子网络进行训练和评估,如果子网络的网络性能(比如准确率)不好的话,该结构将会被舍弃,从而找到一个最优的网络结构。由于NAS的每个子网络的权值都是独立训练得到的,也就是说,每一个子网络都需要一个完整训练过程,需要消耗巨大计算资源和时间,因此NAS常将工作负载分配给多个计算节点以加速训练,但是这样也引入了在每次迭代中交换模型参数或梯度的巨额通信开销,使得训练速度受到限制。
发明内容
本申请提供了一种数据处理的技术方案。
第一方面,提供了一种数据处理方法,应用于神经网络结构搜索NAS系统中,系统包括多个处理器,每个处理器用于训练搜索超网络中的一个子网络,该方法包括以下步骤:多个处理器中的每一个处理器对对应的子网络进行当前迭代训练,获得每一个处理器的目标参数的待更新部分,多个处理器中的每一个处理器与至少一个其他处理器之间传输得到的目标参数的待更新部分的信息,使得多个处理器中的每一个处理器获得多个处理器各自对应的目标参数的待更新部分。
可选地,处理器为GPU。
实施第一方面描述的方法,使得NAS系统在训练过程中,多个处理器之间进行通信时只传递每个处理器的目标参数的待更新部分,相比于其他方法中将处理器上的全部数据进行传输,能够大大减少通信量,提高NAS系统的训练效率。
在一种可能的实现方式中,每个处理器对目标参数的待更新部分进行编码处理,得到待更新部分的掩码;待更新部分的信息包括:待更新部分和待更新部分的掩码。多个处理器中的每一个处理器与至少一个其他处理器之间传输得到的目标参数的待更新部分的信息,使得多个处理器中的每一个处理器获得多个处理器各自对应的目标参数的待更新部分,包括:多个处理器中的每一个处理器与至少一个其他处理器之间传输待更新部分的掩码,使得多个处理器中的每一个处理器获得多个处理器各自对应的待更新部分的掩码;多个处理器中的每一个处理器获得多个处理器各自对应的待更新部分的掩码的并集;多个处理器中的每一个处理器根据掩码的并集,确定多个处理器各自对应的总体待更新部分;多个处理器中的每一个处理器与至少一个其他处理器之间传输确定的各自对应的总体待更新部分,使得多个处理器中的每一个处理器获得多个处理器各自对应的目标参数的待更新部分。
具体实现中,多个处理器中的每一个处理器与至少一个其他处理器之间传输待更新部分的掩码,使得多个处理器中的每一个处理器获得多个处理器各自对应的待更新部分的掩码包括:多个处理器中的每一个处理器将各自对应的待更新部分的掩码放入每一个处理器的缓存中;多个处理器中的每一个处理器与至少一个其他处理器之间传输缓存中的掩码,并将接收到的掩码放入处理器的缓存中,使得多个处理器中的每一个处理器获得多个处理器各自对应的待更新部分的掩码。其中,上述步骤可以通过全局聚合(Allgather)算法实现。
具体实现中,多个处理器中的每一个处理器与至少一个其他处理器之间传输确定的各自对应的总体待更新部分,使得多个处理器中的每一个处理器获得多个处理器各自对应的目标参数的待更新部分包括:多个处理器中的每一个处理器将传输确定的各自对应的总体待更新部分放入每个处理器的缓存中;多个处理器中的每一个处理器与至少一个其他处理器之间传输缓存中的总体待更新部分,并基于接收到的待更新部分更新缓存中的待更新部分。其中,上述步骤可以通过全局规约(Allreduce)算法实现。
实施上述实现方式,首先将每个处理器的掩码进行传输,然后每个处理器计算全部掩码的并集后,将掩码的并集应用在自己处理器上的张量,从而得到总体待更新部分,然后每个处理器将获得的总体待更新部分进行数据传输,因此多个处理器之间进行数据传输之后,可以获得每个处理器的总体待更新部分,而每个处理器的总体待更新部分包括其原本的目标参数的待更新部分,从而使得每个处理器获得全部处理器的目标参数的待更新部分。整个传输过程中,只传输了掩码以及总体待更新部分,相比于将完整张量进行数据传输,通信量大大减少。并且,由于每个处理器上的总体待更新部分是将相同的掩码(即全部掩码的并集)应用于处理器中的张量后获得的,而掩码用于指示待更新部分在张量中的位置,所以每个处理器使用掩码的并集应用于张量获得的总体待更新部分在处理器缓存中的位置是对齐的,这样进行数据传输之后,无需再使用Mask进行解码,从而提高通信效率,提高NAS系统的训练速度。
在一种可能的实现方式中,多个处理器分为多个小组,多个小组中的每一个小组包括对应的子网络结构相同的至少两个处理器;多个处理器中的每一个处理器与至少一个其他处理器之间传输得到目标参数的待更新部分的信息,使得多个处理器中的每一个处理器获得多个处理器各自对应的目标参数的待更新部分包括:同一个小组内的至少两个处理器之间分别进行目标参数的待更新部分的传输,使得同一个小组内的第一处理器获得组内待更新集合,其中,组内待更新集合包括组内所有处理器对应的目标参数的待更新部分;多个小组分别包括的第一处理器之间进行组内待更新集合的传输,以使得多个第一处理器的每个第一处理器获得多个处理器各自对应的目标参数的待更新部分;多个第一处理器的每个第一处理器将多个处理器各自对应的目标参数的待更新部分进行组播,使得同一个小组内的每个处理器获得多个处理器各自对应的目标参数的待更新部分。
实施上述实现方式,由于NAS系统分为多个小组进行梯度更新,每个小组内的处理器上的子网络结构相同,因此,可以先进行组内通信,使得同一个小组内的每一个处理器获得组内其他处理器的目标参数的待更新部分,即组内待更新集合,然后每个小组中的第一处理器再进行组间通信,使得每个小组的第一处理器获得其他每个小组的第一处理器的组内待更新集合,从而使得每个小组的每个第一处理器获得全部处理器各自对应的目标参数的待更新部分,最后,每个小组的第一处理器可以将得到的全部处理器各自对应的目标参数的待更新部分进行组内传播(Broadcast),使得自己组内的每个处理器都获得全部处理器各自对应的目标参数的待更新部分。可以理解的,这样充分利用到NAS系统组内子网络共享,组间子网络不共享的特点,先进行组内通信再进行组间通信,使得组间通信时,参与通信的处理器数量大大减少(此时只有每个小组的第一处理器参与通信),进而使得通信量得到减少。
在一种可能的实现方式中,同一个小组内的至少两个处理器之间分别进行目标参数的待更新部分的传输,使得同一个小组内的第一处理器获得组内待更新集合包括:同一个小组内的至少两个处理器中的每一个处理器将目标参数的待更新部分放入处理器的缓存中;同一个小组内的至少两个处理器中的每一个处理器与其他处理器之间传输缓存中的待更新部分,并基于接收到的待更新部分更新处理器的缓存中的待更新部分,使得同一个小组内的第一处理器获得组内待更新集合。多个小组的第一处理器之间进行组内待更新集合的传输,以使得多个小组的每个第一处理器获得多个处理器各自对应的目标参数的待更新部分包括:每个第一处理器对组内待更新集合进行编码处理,得到组内待更新集合的掩码;多个小组包括的多个第一处理器之间传输组内待更新集合的掩码,使得多个第一处理器中的每一个第一处理器获得多个第一处理器各自对应的组内待更新集合的掩码;每个第一处理器基于多个第一处理器各自对应的组内待更新集合的掩码,获得多个处理器各自对应的目标参数的待更新部分。
可选地,每个第一处理器基于多个第一处理器各自对应的组内待更新集合的掩码,获得多个处理器各自对应的目标参数的待更新部分,包括:第一处理器基于多个第一处理器各自对应的组内待更新集合的掩码,获得多个第一处理器各自对应的组内待更新集合的掩码的并集;第一处理器根据组内待更新集合的掩码的并集,确定多个第一处理器各自对应的总体组内待更新集合;多个第一处理器之间传输确定的总体组内待更新集合,使得每个第一处理器获得多个处理器各自对应的目标参数的待更新部分。
实施上述实现方式,整个传输过程中,处理器之间只传输了掩码以及总体组内待更新集合(包括了目标参数的待更新部分),相比于将完整张量进行数据传输,通信量大大减少。并且,数据传输之后,无需再使用掩码进行解码,从而提高通信效率,提高NAS系统的训练速度。
可选地,每个第一处理器基于多个第一处理器各自对应的组内待更新集合的掩码,获得多个处理器各自对应的目标参数的待更新部分,包括:多个第一处理器之间进行组内待更新集合的传输,以使得每一个第一处理器获得多个第一处理器的组内待更新集合;多个第一处理器根据多个第一处理器各自对应的组内待更新集合的掩码,对多个第一处理器的组内待更新集合进行解码,获得多个处理器各自对应的目标参数的待更新部分。
实施上述实现方式,整个传输过程中,只传输了MASK以及目标参数的待更新部分,相比于其他方法(将完整张量进行数据传输),通信量大大减少,从而提高通信效率,提高NAS系统的训练速度。
第二方面,提供了一种数据处理装置,应用于神经网络结构搜索NAS系统中,系统包括多个处理器,每个处理器用于训练搜索超网络中的一个子网络,该装置包括:训练单元,训练单元用于通过多个处理器中的每一个处理器对对应的子网络进行当前迭代训练,获得每一个处理器的目标参数的待更新部分;传输单元,传输单元用于通过多个处理器中的每一个处理器与至少一个其他处理器之间传输得到的目标参数的待更新部分的信息,使得多个处理器中的每一个处理器获得多个处理器各自对应的目标参数的待更新部分。
在一实施例中,该装置还包括编码单元,编码单元用于通过每个处理器对目标参数的待更新部分进行编码处理,得到待更新部分的掩码;待更新部分的信息包括:待更新部分和待更新部分的掩码。
在一实施例中,传输单元用于通过多个处理器中的每一个处理器与至少一个其他处理器之间传输待更新部分的掩码,使得多个处理器中的每一个处理器获得多个处理器各自对应的待更新部分的掩码;传输单元用于通过多个处理器中的每一个处理器获得多个处理器各自对应的待更新部分的掩码的并集;传输单元用于通过多个处理器中的每一个处理器根据掩码的并集,确定多个处理器各自对应的总体待更新部分;传输单元用于通过多个处理器中的每一个处理器与至少一个其他处理器之间传输确定的各自对应的总体待更新部分,使得多个处理器中的每一个处理器获得多个处理器各自对应的目标参数的待更新部分。
在一实施例中,传输单元用于通过多个处理器中的每一个处理器将各自对应的待更新部分的掩码放入每一个处理器的缓存中;传输单元用于通过多个处理器中的每一个处理器与至少一个其他处理器之间传输缓存中的掩码,并将接收到的掩码放入处理器的缓存中,使得多个处理器中的每一个处理器获得多个处理器各自对应的待更新部分的掩码。
在一实施例中,传输单元用于通过多个处理器中的每一个处理器将传输确定的各自对应的总体待更新部分放入每个处理器的缓存中;传输单元用于通过多个处理器中的每一个处理器与至少一个其他处理器之间传输缓存中的总体待更新部分,并基于接收到的待更新部分更新缓存中的待更新部分。
在一实施例中,多个处理器分为多个小组,多个小组中的每一个小组包括对应的子网络结构相同的至少两个处理器;传输单元用于通过同一个小组内的至少两个处理器之间分别进行目标参数的待更新部分的传输,使得同一个小组内的第一处理器获得组内待更新集合,其中,组内待更新集合包括组内所有处理器对应的目标参数的待更新部分;传输单元用于通过多个小组分别包括的第一处理器之间进行组内待更新集合的传输,以使得多个第一处理器的每个第一处理器获得多个处理器各自对应的目标参数的待更新部分;传输单元用于通过多个第一处理器的每个第一处理器将多个处理器各自对应的目标参数的待更新部分进行组播,使得同一个小组内的每个处理器获得多个处理器各自对应的目标参数的待更新部分。
在一实施例中,传输单元用于通过同一个小组内的至少两个处理器中的每一个处理器将目标参数的待更新部分放入处理器的缓存中;传输单元用于通过同一个小组内的至少两个处理器中的每一个处理器与其他处理器之间传输缓存中的待更新部分,并基于接收到的待更新部分更新处理器的缓存中的待更新部分,使得同一个小组内的第一处理器获得组内待更新集合。
在一实施例中,编码单元用于通过每个第一处理器对组内待更新集合进行编码处理,得到组内待更新集合的掩码;传输单元用于通过多个小组包括的多个第一处理器之间传输组内待更新集合的掩码,使得多个第一处理器中的每一个第一处理器获得多个第一处理器各自对应的组内待更新集合的掩码;传输单元用于通过每个第一处理器基于多个第一处理器各自对应的组内待更新集合的掩码,获得多个处理器各自对应的目标参数的待更新部分。
在一实施例中,传输单元用于通过第一处理器基于多个第一处理器各自对应的组内待更新集合的掩码,获得多个第一处理器各自对应的组内待更新集合的掩码的并集;传输单元用于通过第一处理器根据组内待更新集合的掩码的并集,确定多个第一处理器各自对应的总体组内待更新集合;传输单元用于通过多个第一处理器之间传输确定的总体组内待更新集合,使得每个第一处理器获得多个处理器各自对应的目标参数的待更新部分。
在一实施例中,传输单元用于通过多个第一处理器之间进行组内待更新集合的传输,以使得每一个第一处理器获得多个第一处理器的组内待更新集合;传输单元用于通过多个第一处理器根据多个第一处理器各自对应的组内待更新集合的掩码,对多个第一处理器的组内待更新集合进行解码,获得多个处理器各自对应的目标参数的待更新部分。
第三方面,提供了一种计算机程序产品,包括计算机程序,当计算机程序被计算设备读取并执行时,实现如第一方面所描述的方法。
第四方面,提供了一种计算机可读存储介质,包括指令,当指令在计算设备上运行时,使得计算设备实现如第一方面描述的方法。
第五方面,提供了一种电子设备,包括处理器和存储器,处理器执行存储器中的代码实现如第一方面描述的方法。
第六方面,提供了一种芯片,包括存储器和处理器;该存储器与处理器耦合,处理器包括调制解调处理器,存储器用于存储计算机程序代码,计算机程序代码包括计算机指令,处理器从存储器中读取计算机指令,以使得所述芯片执行如第一方面描述的方法。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。
图1是一种神经网络结构搜索系统的结构示意图;
图2是本申请提供的一种数据处理方法的流程示意图;
图3是本申请提供的一种数据处理方法的流程示意图;
图4是本申请提供的一种数据处理方法的流程示意图;
图5是一种环形架构的多个GPU的结构示意图;
图6是本申请提供的一种数据处理方法的一种流程示意图;
图7是本申请提供的一种数据处理方法的一种流程示意图;
图8是本申请提供的一种GPU的结构示意图;
图9是本申请提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
首先,对本申请适用的应用场景——神经网络结构搜索(NAS)进行解释说明。
随着大规模数据集的出现以及算力(比如英伟达显GPU的计算性能)的快速发展,深度学习作为人工智能领域的重要算法之一,开始在数据分类、物体分割、物体检测等任务上展现出它惊人的统治力。尤其是2016年AlphaGo的横空出世,让世界各地的人们看到了人工智能的巨大潜力,也让人们对于无人驾驶、远程手术、场景理解等先进技术产生了美好的憧憬。近年来,深度学习的发展逐渐颠覆了传统机器学习特征工程的时代,将人工智能的浪潮推到了历史最高点。深度学习中,神经网络结构的依赖于人工设计,需要研究人员耗费大量的时间精力针对任务目标进行模型结构的设计与改良,比如在图像分类任务上大放异彩的残差网络(Resnet)等网络结构均来自研究人员多年来的精心设计。
为了解决神经网络结构完全依赖人工设计的问题,研究人员开始尝试将神经网络结构的设计逐渐转型为机器自动设计,于是神经网络结构搜索(Neural ArchitectureSearch,NAS)应运而生。NAS指的是在一个给定的搜索空间上找到一个较优的网络结构并试图优化该网络结构的权重参数,以获得训练好的网络模型。NAS通常使用循环神经网络(Recurrent Neural Network,RNN)作为控制器,根据任务需要的目标神经网络的拓扑结构产生多个子网络(比如卷积神经网络可以分为卷积层和池化层等等,控制器可以生成多个卷积层的子网络,再生成多个池化层的子网络等等),然后对每个子网络进行训练和评估,如果子网络的网络性能(比如准确率)不好的话,该结构将会被舍弃,将剩余的子网络拼接成一个最优的网络结构。由于NAS的每个子网络的权值都是独立训练得到的,也就是说,每一个子网络都需要一个完整训练过程,需要消耗巨大计算资源和时间,因此NAS常将工作负载分配给多个包含一个或者多个处理器(通常为图像处理器(Graphics Processing Unit,GPU))的计算节点以加速训练,下面对多机多GPU的NAS训练系统进行举例说明。
图1是一种NAS系统的结构示意图。如图1所示,所述NAS系统可以包括X(图1以X=2为例,X为正整数)个小组110,其中,每个小组110可以包括多个处理器130,每个处理器130都可以使用处理器上的张量对子网络结构进行迭代训练,处理器130之间可以在每次迭代中通过总线140交换模型参数或者梯度,直至选择出最优的网络结构并优化该网络结构的权重参数,以获得训练好的网络模型。这里,处理器130可以是GPU,也可以是其他处理器,为了使本申请能够被更好的理解,下文举例中将统一以处理器130为GPU进行举例说明。
其中,每个小组110使用相同结构的子网络(Subnet)进行训练,不同的小组110使用的子网络结构不同,所有小组100的子网络结构的并集为超网络(Supernet)结构,因此有X个小组110即代表该系统包括X个子网络结构。举例来说,图1中的小组1和小组2使用了不同的子网络结构进行训练(小组1为结构1,小组2为结构2)。同一个小组110的多个GPU使用的子网络结构相同,但是张量(Tensor)可以相同也可以不同,张量可以是每一层网络的输入图片尺寸、输出图片尺寸、移动步长、池化层尺寸以及卷积核尺寸等等参数。
举例来说,图1中的小组1包括GPU1、GPU2、GPU5以及GPU6,其中,GPU1和GPU2使用张量1对结构1进行训练,GPU5和GPU6使用张量2对结构1进行训练;小组2包括GPU3、GPU4、GPU7以及GPU8,其中,GPU3和GPU4使用张量1对结构2进行训练,GPU7和GPU8使用张量2对结构2进行训练。应理解,图1仅用于举例说明,本申请不对小组110的数量、每个小组110中GPU的数量、子网络结构的数量以及张量的数量进行限定。
具体实现中,在根据任务目标(比如需要训练一个人脸识别模型)产生多个子网络结构,比如根据卷积神经网络拓扑结构设计出一些卷积层、池化层的子网络结构;接着每个GPU在训练集上训练这些子网络结构,每个GPU130都可以使用训练集对不同结构不同张量的子网络结构进行训练;然后全部GPU之间进行相互通信,交换训练好的梯度数据或者模型参数,使得每个GPU获得其他GPU计算好的梯度数据或者模型参数,以进行整个网络的权重更新,重复上述步骤直至获得训练好的网络模型。
综上可知,在NAS系统中,GPU之间需要在每次迭代过程中交换模型参数或者梯度,这需要消耗大量的通信开销,使得NAS训练速度受到极大限制。但是,每个GPU130在使用处理器上的张量对子网络结构训练后,该张量上需要更新的数据可能只有很小的一部分,比如图1中每个GPU130的阴影部分即为每个GPU上的张量的待更新部分150。因此在NAS系统中多个GPU之间交换模型参数或者梯度数据时,将会产生大量的通信冗余,比如图1中的白色部分,其实都是不需要更新的数据,导致NAS训练神经网络的速度受到限制。
因此,为了解决上述NAS系统中存在大量通信冗余的问题,本申请提供了一种数据处理方法,应用于上述NAS系统中,该方法中的GPU在与其他GPU进行通信的过程中只传递每个张量的待更新部分,相比于上述方法中直接将GPU上的全部数据(即整个训练后的张量)进行传输,能够大大减少通信量,提高NAS系统的训练速度。
下面结合附图2-图3,对本申请提供的数据处理方法进行详细说明。
本申请提供了一种数据通信的方法,该方法应用于NAS系统中,该NAS系统的结构可以如图1所示。如图2所示,该方法可以包括以下步骤:
S210:所述多个GPU中的每一个GPU对对应的子网络结构进行当前迭代训练,获得每一个GPU的目标参数的待更新部分。其中,目标参数即为前述内容的张量,目标参数的待更新部分即为每个GPU上对应张量的待更新的数据。
具体地,所述多个GPU中的每一个GPU对应一个目标参数和一个子网络结构,同一个小组内的GPU对应相同的子网络结构,所述子网络结构的并集是所述NAS系统待训练的神经网络。以图3为例,小组1中的GPU1和GPU2可以对包含目标参数1的子网络结构1进行训练,小组2中的GPU3和GPU4可以对包含目标参数1的子网络结构2进行训练。可以理解的,每个GPU对处理器上的目标参数和子网络进行训练后,每个GPU都可以获得一个目标参数的待更新部分,比如图1中GPU1白色矩形框即为GPU1的目标参数的待更新部分,GPU2中的深色矩形框即为GPU2的目标参数的待更新部分,这里不再一一举例。
S220:多个处理器中的每一个处理器与至少一个其他处理器之间传输得到的目标参数的待更新部分的信息,使得每个处理器获得多个处理器各自对应的目标参数的待更新部分。
仍以图3为例,如图3左侧所示,GPU1和GPU2虽然是相同的子网络结构,但是在经过训练之后,GPU1和GPU2的目标参数的待更新部分的位置相同,但是更新后的数据是不同的,同理,GPU3和GPU4的目标参数的待更新部分也是不同的,图3将每个GPU的目标参数的待更新部分的数据用不同颜色来表示,而在经过步骤S210-步骤S220之后,如图3右侧所示,GPU1、GPU2、GPU3和GPU4获得了多个处理器各自对应的目标参数的待更新部分1~4,图3将GPU1、GPU2、GPU3和GPU4在通信后的目标参数的待更新部分用相同颜色来表示。应理解,图3仅用于举例说明,并不能构成具体限定。
具体实现中,上述目标参数的待更新部分的信息可以包括待更新部分和所述待更新部分的掩码(Mask)。其中,待更新部分可以是目标参数的待更新部分的具体数值,Mask可以是每个处理器对目标参数的待更新部分进行编码处理之后得到的,Mask用于指示目标参数的待更新部分在目标参数中的位置,其中掩代表遮掩,码代表张量中的数值,掩码一般是一串二进制数字,只有1和0的元素,代表对应位置被遮掩或者不被遮掩,由0还是1来代表遮掩可以自行定义,掩码的作用是让目标参数中的部分数值被遮掩,从而达到指示目标参数的待更新部分在目标参数中的位置的目的。举例来说,每个GPU的目标参数的待更新部分的信息包括:待更新部分,也就是图3中深色部分标识的数据值;以及待更新部分的Mask,该用于指示需要更新的数据值在整个张量中的位置,也就是深色部分的矩形框在张量中的位置。应理解,上述举例用于说明,并不能构成具体限定。
具体实现中,可以根据实际情况选择相应的算法获取每一个处理器各自对应的目标参数的待更新部分以及对应的Mask,下面以卷积神经网络的NAS训练为例,对每一个处理器如何获取对应的目标参数的待更新部分以及对应的Mask的过程进行举例说明。
可以理解的,CNN中需要参数更新的网络结构层只有卷积层、全连接层、批归一化层(BN层),因此可以只获取这三层网络需要更新的目标参数的待更新部分,然后确定目标参数的待更新部分对应的MASK,从而得到每一个GPU上的目标参数的待更新部分以及对应的MASK。
首先,分别获取卷积层、全连接层以及批归一化层的目标参数的待更新部分。其中,卷积层的参数包括卷积核参数和额外参数,额外参数是不需要更新的参数,比如步长(stride)、组数(group)、填充值(pad)等;卷积核参数是需要更新的参数,比如(Cout,Cin,k,k),其中Cin、Cout分别为输入和输出通道的大小,k为卷积核的长宽尺寸。在进行结构搜索时我们常用到的用于确定卷积核的参数(输出空间)有S1=(groups,out_grouch,in_grouch,kernel_size)。设训练过程中的搜索空间为S0=(max_groups,max_out_grouch,max_in_grouch,max_kernel_size),从而获得需要更新的卷积核参数比如权重(weight)和偏置(bias)。
同理,由于全连接层需要更新的参数包括Cout和Cin,设结构搜索时用于确定全连接层的参数有S1=(out_features,in_features),搜索空间为S0=(max_out_features,max_in_features),从而获得需要更新的全连接层参数(weight和bias)。
同理,由于批归一化层需要更新的参数包括num_features,running_mean和running_var,设结构搜索时用于确定批归一化层的参数有S1=(num_features),搜索空间为S0=(max_num_features),从而获得需要更新的全连接层参数。
最后,在获得上述每个GPU对应的目标参数的待更新部分后,使用一串二进制代码对每个张量的待更新部分进行位与运算,屏蔽当前的输入位可得到每个待更新部分对应的Mask。应理解,上述获取目标参数的待更新部分及其对应Mask的具体方法仅用于举例说明,并不能构成具体限定。
本申请提供了根据上述Mask实现步骤S220的多种实现方式,下面一一对其进行解释说明。
(一)、基于Mask并集的方法
在一实施例中,如图4所示,上述步骤S220可以包括以下步骤:
S221A:多个处理器中的每一个处理器与至少一个其他处理器之间传输待更新部分的Mask,使得多个处理器中的每一个处理器获得多个处理器各自对应的待更新部分的Mask。
在一实施例中,在获得每个处理器的MASK之后,多个处理器之间传输MASK,使得每个处理器都获得其他处理器的MASK的具体步骤可以如下:如图4所示,每一个处理器将各自对应的待更新部分的掩码放入每一个处理器的缓存中,每一个处理器与其他处理器之间传输缓存中的掩码,并将接收到的掩码放入处理器的缓存中,使得每一个处理器获得所有处理器各自对应的待更新部分的掩码。
具体实现中,多个处理器可以是环形结构进行数据传输,组内的M个GPU被安排在一个逻辑环中,每个GPU拥有一个左邻和右邻,例如图5所示,图5中的3个GPU即GPU1、GPU2以及GPU3可以组成一个逻辑环,GPU1可以向右邻的GPU2发送GPU1缓存中的数据,即MASK1,GPU2可以向右邻的GPU3发送GPU2的缓存中的数据,即MASK2,GPU3可以向右邻的GPU1发送GPU3缓存中的数据,即MASK3。当然,多个处理器也可以集中式的结构进行数据传输,比如GPU1作为主处理器,所有GPU都将自己的MASK发送给GPU2,由GPU1再将所有处理器的MASK一一发送至每一个GPU。为了便于本申请能够被更好的理解,下文将统一以处理器按图5所示的环形结构进行数据传输为例进行描述。
进一步地,每一个GPU的缓存还可以均分为多个缓存块,GPU之间进行按逻辑环交换缓存中地数据时,可以按缓存块进行交换,简单来说,GPU之间每次交换缓存中的MASK时,只交换一个缓存块,多个缓存块累积组成MASK1、MASK2以及MASK3,这样环形结构不断交换缓存中的数据,最终使得每一个GPU的缓存中都包含MASK1、MASK2以及MASK3。
具体地,如果每个GPU中的缓存的数据量较大,还可以将每个GPU中的缓存分为多个缓存块,通过全局聚合(Allgather)算法实现上述过程,该算法中,GPU将进行多轮数据交换,每轮数据交换时,每个GPU向其右邻发送一个块,并从左邻接收一个块覆盖到缓存块中,每轮数据交换中,每个GPU选择发送和能够接收的块是不同的,最终使得每一个GPU中都包含了全部种类缓存块的最终值。
举例来说,假设图5所示的GPU1~GPU3上的数据分布如表1所示:其中,三个GPU上的缓存数据被均分为3块,GPU1上的MASK1用三个B类块表示,GPU2上的MASK2用三个C类块表示,GPU3上的MASK3用三个A类块表示:
表1GPU1、GPU2以及GPU3的缓存块分布表格
GPU1 | / | B1+B3+B2 | / |
GPU2 | / | / | C2+C1+C3 |
GPU3 | A3+A2+A1 | / | / |
假设第一轮数据交换的过程中,GPU1只向右传输B类块,GPU2只向右传输C类块,GPU3只向右发送A类块,那么第一轮数据交换结束后,GPU1、GPU2以及GPU3的缓存块分布可以如表2所示:
表2GPU1、GPU2以及GPU3的Allgather阶段第一轮数据交换后缓存块分布表格
GPU1 | A3+A2+A1 | B1+B3+B2 | / |
GPU2 | / | B1+B3+B2 | C2+C1+C3 |
GPU3 | A3+A2+A1 | / | C2+C1+C3 |
假设第二轮数据交换中,GPU1只发送A类块,GPU2只发送B类块,GPU3只发送C类块,那么第二轮数据交换束后,GPU1、GPU2以及GPU3的缓存块分布可以如表3所示:
表3GPU1、GPU2以及GPU3的第二轮数据交换后缓存块分布表格
GPU1 | A3+A2+A1 | B1+B3+B2 | C2+C1+C3 |
GPU2 | A3+A2+A1 | B1+B3+B2 | C2+C1+C3 |
GPU3 | A3+A2+A1 | B1+B3+B2 | C2+C1+C3 |
此时GPU1、GPU2以及GPU3都获得了其他卡上的数据,上述举例用于说明,并不能构成具体限定。
S222A:多个处理器中的每一个处理器获得多个处理器各自对应的待更新部分的掩码的并集。
可以理解的,如图5所示,每个处理器获得其他处理器的掩码之后,可以将其他处理器的掩码与自己处理器的掩码取并集,获得多个处理器各自对应的待更新部分的掩码的并集。
S223A:多个处理器中的每一个处理器根据掩码的并集,确定多个处理器各自对应的总体待更新部分。
可以理解的,每个GPU根据掩码的并集和目标参数,可以得到一个总体待更新部分,该总体待更新部分包括该GPU的目标参数的待更新部分。
举例来说,如果GPU1的目标参数(即张量)为X,目标参数的待更新部分为Y,掩码为M,那么XM=Y,在经过步骤S221A~步骤S222A之后,获得掩码的并集为M’,此时根据GPU1上的张量X可以获得总体待更新部分为Y’=XM’,可以理解的,掩码的并集M’大于掩码M,因此总体待更新部分包括目标参数的待更新部分Y,上述举例仅用于说明,本申请不作具体限定。
值得注意的是,参考前述内容可知,Mask用于指示待更新部分在目标参数中的位置,在步骤S223A处,每个GPU根据相同的掩码(即掩码的并集)获得了各自的总体待更新部分,因此每个GPU获得的总体待更新部分虽然数据不同,但是在缓存中的位置相同,例如图5所示。
S224A:多个处理器中的每一个处理器与至少一个其他处理器之间传输确定的各自对应的总体待更新部分,使得多个处理器中的每一个处理器获得多个处理器各自对应的目标参数的待更新部分。
在一实施例中,每一个处理器与其他处理器之间传输待更新部分的并集,使得多个处理器中的每一个处理器获得多个处理器各自对应的目标参数的待更新部分包括:多个处理器中的每一个处理器将待更新部分放入每个处理器的缓存中;多个处理器中的每一个处理器与至少一个其他处理器之间传输缓存中的待更新部分,并基于接收到的待更新部分更新缓存中的待更新部分。
具体实现中,可以通过全局规约(Allreduce)算法实现上述过程,该算法可以包括两个阶段,第一个阶段为scatter-Reduce阶段,该阶段GPU将进行多轮数据交换,每轮数据交换时,GPU向其右邻发送一个块,并从左邻接收一个块累积到缓存块中,每轮数据交换时,每个GPU选择发送和能够接收的块是不同的,最终使得每一个GPU中都包含了一类块的最终值。第二个阶段为前述内容中的Allgather阶段,该阶段GPU将进行同样进行多轮数据交换,但是每轮数据交换时,GPU向其右邻发送一个块,并从左邻接收一个块覆盖到缓存块中,每轮数据交换时,每个GPU选择发送和能够接收的块是不同的,最终使得每一个GPU中都包含了全部种类缓存块的最终值。
举例来说,表4所示,GPU1的缓存块包含A1、B1以及C1(GPU1的总体待更新部分),GPU2的缓存块包含A2、B2以及C2(GPU2的总体待更新部分),GPU3的换缓存块包括A3、B3以及C3(GPU3的总体待更新部分)。
表4GPU1、GPU2以及GPU3的初始缓存块分布表格
GPU1 | A1 | B1 | C1 |
GPU2 | A2 | B2 | C2 |
GPU3 | A3 | B3 | C3 |
假设第一轮数据交换中,GPU1只发送A类块,GPU2只发送B类块,GPU3只发送C类块那么在进行第一轮数据交换后,GPU1、GPU2以及GPU3的缓存块分布可以如表5所示:
表5GPU1、GPU2以及GPU3的scatter-Reduce阶段第一轮数据交换后缓存块分布表格
假设第二轮数据交换过程中,GPU1只发送C类块,GPU2只发送A类块,GPU3只发送B类块,那么在进行第二轮数据交换后,GPU1、GPU2以及GPU3的缓存分布可以如表6所示:
表6GPU1、GPU2以及GPU3的scatter-Reduce阶段结束后缓存块分布表格
GPU1 | A1 | B1+B3+B2 | C1+C3 |
GPU2 | A2+A1 | B2 | C2+C1+C3 |
GPU3 | A3+A2+A1 | B3+B2 | C3 |
这样即可完成scatter-Reduce阶段,在进行第一阶段后,GPU1的缓存块将包括一个完整的B类块,GPU2的缓存块将包括一个完整的C类块,GPU3的缓存块将包括一个完整的A类块。接下来即可进入第二个阶段,即Allgather阶段,每个GPU在通信过程中,每收到一个缓存块,都将其与自己的缓存块进行覆盖,假设第一轮数据交换过程中,GPU1只发送B类块,GPU2只发送C类块,GPU3只发送A类块,那么第一轮数据交换结束后,GPU1、GPU2以及GPU3的缓存块分布可以如表7所示:
表7GPU1、GPU2以及GPU3的Allgather阶段第一轮数据交换后阶段结束后缓存块分布表格
GPU1 | A3+A2+A1 | B1+B3+B2 | C1+C3 |
GPU2 | A2+A1 | B1+B3+B2 | C2+C1+C3 |
GPU3 | A3+A2+A1 | B3+B2 | C2+C1+C3 |
假设第二轮数据交换过程中,GPU1只发送A类块,GPU2只发送B类块,GPU3只发送C类块,那么第二轮数据交换结束后,GPU1、GPU2以及GPU3的缓存块分布可以如表8所示:
表8GPU1、GPU2以及GPU3的Allgather阶段结束后缓存块分布表格
GPU1 | A3+A2+A1 | B1+B3+B2 | C2+C1+C3 |
GPU2 | A3+A2+A1 | B1+B3+B2 | C2+C1+C3 |
GPU3 | A3+A2+A1 | B1+B3+B2 | C2+C1+C3 |
这样即可完成Allgather阶段,GPU1、GPU2和GPU3均获得了全部GPU上的数据。应理解,上述举例用于说明,并不能构成具体限定。
可以理解的,上述步骤S221A-步骤S224A,首先将每个GPU的MASK进行数据传输,然后每个GPU计算全部MASK的并集后,将MASK的并集应用在自己GPU上的张量,从而得到总体待更新部分,然后每个GPU将获得的总体待更新部分进行数据传输,因此多个GPU之间进行数据传输之后,可以获得每个GPU的总体待更新部分,而每个GPU的总体待更新部分包括其原本的目标参数的待更新部分,从而使得每个GPU获得全部GPU的目标参数的待更新部分。整个传输过程中,只传输了MASK以及总体待更新部分,相比于其他方法(将完整张量进行数据传输),通信量大大减少。并且,由于每个GPU上的总体待更新部分是将相同的掩码(即全部MASK的并集)应用于处理器中的张量后获得的,而Mask用于指示待更新部分在张量中的位置,所以每个GPU使用Mask的并集应用于张量获得的总体待更新部分在处理器缓存中的位置是对齐的,这样进行数据传输之后,无需再使用Mask进行解码,从而提高通信效率,提高NAS系统的训练速度。
(二)、基于分组传输的方法
可以理解的,由于NAS系统(如图1所示)分为多个小组进行梯度更新,每个小组内的GPU上的子网络结构相同,因此,可以先进行组内通信,使得同一个小组内的每一个GPU获得组内其他GPU的目标参数的待更新部分,即组内待更新集合,然后每个小组中的第一处理器再进行组间通信,使得每个小组的第一处理器获得其他每个小组的第一处理器的组内待更新集合,从而使得每个小组的每个第一处理器获得全部处理器各自对应的目标参数的待更新部分,最后,每个小组的第一处理器可以将得到的全部处理器各自对应的目标参数的待更新部分进行组内传播(Broadcast),使得自己组内的每个处理器都获得全部处理器各自对应的目标参数的待更新部分。可以理解的,这样充分利用到NAS系统组内子网络共享,组间子网络不共享的特点,先进行组内通信再进行组间通信,使得组间通信时,参与通信的处理器数量大大减少(此时只有每个小组的第一处理器参与通信),进而使得通信量得到减少。
因此,在一实施例中,如图6所示,上述步骤S220还可以包括以下步骤:
S221B:同一个小组内的至少两个处理器之间分别进行目标参数的待更新部分的传输,使得同一个小组内的第一处理器获得组内待更新集合,其中,组内待更新集合包括组内所有处理器对应的目标参数的待更新部分。
在一实施例中,由于NAS系统中同一小组内的GPU中的目标参数(张量)相同,结构也相同,每个小组内的GPU的目标参数的待更新部分的数据虽然不同,但是目标参数的待更新部分在目标参数中的位置是相同的,而MASK用于指示目标参数的待更新部分在目标参数中的位置,因此组内GPU的待更新部分对应的MASK是相同的,组内通信时可以不需要进行MASK传输,每个小组中的GPU可以将自己目标参数的待更新部分放入处理器的缓存中,然后进行组内通信。
具体地,同一个小组内的至少两个处理器中的每一个处理器将目标参数的待更新部分放入处理器的缓存中,然后,同一个小组内的至少两个处理器中的每一个处理器与其他处理器之间传输缓存中的待更新部分,并基于接收到的待更新部分更新处理器的缓存中的待更新部分,使得同一个小组内的第一处理器获得组内待更新集合。具体实现中,上述组内通信的步骤可以参考前述内容的表4-表8实施例,使用Allreduce算法实现组内通信,这里不重复赘述。
S222B:多个小组分别包括的第一处理器之间进行组内待更新集合的传输,以使得多个第一处理器的每个第一处理器获得多个处理器各自对应的目标参数的待更新部分。其中,第一处理器可以是每一个小组内的默认处理器,比如每个小组的第一个处理器,也可以是小组内缓存占用率最低的处理器,本申请不作具体限定。
S223B:每个小组的第一处理器将得到的全部处理器各自对应的目标参数的待更新部分进行组内传播(Broadcast),使得自己组内的每个处理器都获得全部处理器各自对应的目标参数的待更新部分。
例如图6所示,首先,小组1的GPU1和GPU2先进行组内通信,使得小组1中的GPU1和GPU2获得组内待更新集合1~2,小组2的GPU3和GPU4进行组内通信,使得小组2中的GPU3和GPU4的获得组内待更新集合3~4;其次,小组1和小组2进行组间通信,小组1中的GPU1作为第一处理器,小组2中的GPU2作为第一处理器,GPU1和GPU2进行组间通信,使得GPU1和GPU2获得全部处理器各自对应的目标参数的待更新部分1~4;最后,每个第一处理器对小组内的全部处理器进行组播,GPU1向组内的GPU2发送获得的全部处理器各自对应的目标参数的待更新部分,GPU3向组内的GPU4发送获得的全部处理器各自对应的目标参数的待更新部分,从而完成本次数据通信。
本申请提供了两种方法实现上述步骤S222B描述的组间通信。第一种将在下文的步骤S2221B~步骤S2223B进行描述,第二种方法将在下文的步骤S2224B~步骤S2227B进行描述。下面分别对两种组间通信的方法进行描述。
在一实施例中,可以通过前述内容中基于Mask并集的方法实现组间传输,具体地,步骤S222B可以包括以下步骤:
S2221B:每个第一处理器对组内待更新集合进行编码处理,得到组内待更新集合的掩码;多个小组包括的多个第一处理器之间传输组内待更新集合的掩码,使得多个第一处理器中的每一个第一处理器获得多个第一处理器各自对应的组内待更新集合的掩码;
S2222B:多个第一处理器中的每一个第一处理器获得多个第一处理器各自对应的组内待更新集合的掩码的并集;多个第一处理器中的每一个第一处理器根据组内待更新集合的掩码的并集,确定多个第一处理器各自对应的总体组内待更新集合;
S2223B:多个第一处理器之间传输确定的总体组内待更新集合,使得每个第一处理器获得多个处理器各自对应的目标参数的待更新部分。
简单来说,每个小组的第一处理器先生成组内待更新集合的掩码,然后多个第一处理器通过Allgather算法交换组内待更新集合的掩码,使得全部第一处理器获得全部第一处理器各组对应的待更新集合的掩码,然后计算每个全部第一处理器各自对应的待更新集合的掩码的并集,每个第一处理器将计算得到的掩码的并集应用在自身处理器的张量上,从而获得每个第一处理器的总体组内待更新集合,该总体组内待更新集合包括该第一处理器对应的待更新集合,然后每个第一处理器通过allreduce算法交换各自对应的总体组内待更新集合,使得每个第一处理器获得全部第一处理器的总体组内待更新集合,上述步骤流程未展开的步骤描述可以参考前述图4实施例的步骤S221A-S224A,这里不再重复赘述。
需要说明的,每个第一处理器获得全部第一处理器的总体组内待更新集合之后,每个小组的第一处理器可以将得到的全部第一处理器的总体组内待更新集合进行组内传播,使得自己组内的每个处理器都获得全部第一处理器的总体组内待更新集合,该全部第一处理器的总体组内待更新集合包括了全部处理器各自对应的目标参数的待更新部分,从而实现了多个处理器中的每一个处理器获得所述多个处理器各自对应的所述目标参数的待更新部分的目的。
使用上述方法进行组间传输,整个传输过程中,只传输了MASK以及总体组内待更新集合,相比于其他方法中将完整张量进行数据传输,通信量大大减少。并且,数据传输之后,无需再使用Mask进行解码,从而提高通信效率,提高NAS系统的训练速度。
在一实施例中,还可以通过另一种方法实现组间通信,如图7所示,步骤S222B可以包括以下步骤:
S2224B:每个第一处理器对组内待更新集合进行编码处理,得到组内待更新集合的掩码,如图7所示,假设组1的第一处理器为GPU1,组2的第一处理器为GPU3,组3的第一处理器为GPU9,那么GPU1对组1内待更新集合1~2进行编码处理可以得到组1内待更新集合的掩码,即组1MASK,同理,GPU3可以得到组2MASK,GPU9可以得到组3MASK。
S2225B:多个小组的多个第一处理器之间传输组内待更新集合的掩码,使得多个第一处理器中的每一个第一处理器获得多个第一处理器各自对应的组内待更新集合的掩码,如图7所示,GPU1、GPU3以及GPU9之间传输各自的组内待更新集合的掩码,使得GPU1、GPU3以及GPU9的缓存中都包括组1MASK、组2MASK以及组3MASK。
S2226B:多个小组的多个第一处理器之间传输组内待更新集合,以使得每一个第一处理器获得多个第一处理器的组内待更新集合,如图7所示,GPU1、GPU3以及GPU9之间传输各自的组内待更新集合的掩码,使得GPU1、GPU3以及GPU9的缓存中都包括组内待更新集合1、组内待更新集合2以及组内待更新集合3,图7以标注有1~10的深色矩形来表示组内待更新集合1、组内待更新集合2以及组内待更新集合3。
需要说明的,步骤S2225B和步骤S2226B可以是同时进行的,也可以是先后进行的,具体可以根据处理器的处理能力决定,本申请不作具体限定。
S2227B:多个第一处理器根据多个第一处理器各自对应的组内待更新集合的掩码,对多个第一处理器的组内待更新集合进行解码,获得多个处理器各自对应的目标参数的待更新部分。
简单来说,每个第一处理器先获得组内待更新集合的Mask,然后多个第一处理器进行组内待更新集合的Mask的传输,接着,多个第一处理器进行组内待更新集合的传输,这样,每个第一处理器可以根据获得的全部处理器的组内待更新集合,以及组内待更新集合的Mask,使用MASK进行解码后,获得多个处理器各自对应的目标参数的待更新部分。
应理解,由于多个第一处理器的组内待更新集合在处理器中目标参数(张量)中的位置是不同的,数值也是不同的,因此在数据传输之后,每个第一处理器需要根据接收到的全部处理器的组内待更新集合以及组内待更新集合的MASK进行解码,确定组内待更新集合在张量中的位置,从而获得目标参数的待更新部分。
具体实现中,上述多个第一处理器之间进行组内待更新集合的Mask的传输可以通过前述内容中的Allreduce算法实现,具体可以参考前述内容,这里不重复赘述。
具体实现中,上述多个第一处理器进行组内待更新集合的传输可以通过Allgather算法实现。具体地,多个小组的第一处理器之间进行组内待更新集合的传输,以使得多个小组的每一个第一处理器获得多个小组的第一处理器的组内待更新集合包括:多个第一处理器中的每一个第一处理器将组内待更新集合放入处理器的缓存中;多个第一处理器中的每一个第一处理器与其他第一处理器之间传输缓存中的组内待更新集合,并将接收到的组内待更新集合放入处理器的缓存中,使得每个第一处理器获得多个第一处理器的组内待更新集合。
在一实施例中,参考表1-表3实施例可知,参与Allgather的GPU中的数据长度需相同,否则在缓存块交换覆盖的过程中可能会出现部分GPU无法交换到全部数据的情况,而由于每个第一处理器中的组内待更新集合的数据量大小可能不同,因此在进行数据传输时,可以对部分第一处理器进行数据填充,使得每个第一处理器中用于数据通信的数据量大小相同,通过Allgather算法,每个第一处理器获得多个第一处理器的组内待更新集合后,可以先删去填充的数据,再根据组内待更新集合的Mask对组内待更新集合进行解码,获得每个GPU的目标参数的待更新部分。
使用上述方法进行组间传输,整个传输过程中,只传输了MASK以及组内待更新集合,相比于其他方法(将完整张量进行数据传输),通信量大大减少,从而提高通信效率,提高NAS系统的训练速度。
总结来说,本申请提供了3种方法实现NAS系统中多个处理器之间的通信:
第一种方法是通过Mask并集的方法,具体可参考前述图4实施例的步骤S221A~步骤S224A及其可选步骤;
第二种方法是通过先组内通信再通过组间通信的方法,其中组间通信通过Mask并集实现,具体可参考图6实施例的步骤S221B~步骤S222B、步骤S2221B~步骤S2223B及其可选步骤;
第三种方法是通过先组内再组间通信的方法,其中组间通信通过直接传输待更新部分实现,具体可以参考图6实施例的步骤S221B~步骤S222B、图7实施例的步骤S2224B~步骤S2227B及其可选步骤。
应理解,在不同的应用场景下,三种方法所需的通信量不同,有的应用场景下第一种方法的通信量最低,有的场景下第二种方法的通信量最低,有的场景下第三种方法的通信量最低,因此,在进行通信之前,可以先计算三种方法所需的通信量,然后选择通信量最低的方法进行多个处理器之间的通信,从而最大程度提高NAS系统的训练效率。
综上可知,本申请提供的数据处理方法,多个处理器之间进行通信的过程中只传递每个处理器的目标参数的待更新部分,相比于其他方法中将处理器上的全部数据进行传输,能够大大减少通信量,提高NAS系统的训练效率。
上面详细阐述了本申请实施例的方法,为了便于更好的实施本申请实施例上述方案,相应地,下面还提供用于配合实施上述方案的相关设备。
图8是本申请提供的一种数据处理装置800,应用于神经网络结构搜索NAS系统中,该系统可以是图1实施例描述的系统,该系统包括多个处理器,每个处理器用于训练搜索超网络中的一个子网络,该装置包括训练单元810、传输单元820以及编码单元830,其中,
训练单元810用于通过多个处理器中的每一个处理器对对应的子网络进行当前迭代训练,获得每一个处理器的目标参数的待更新部分;
传输单元820用于通过多个处理器中的每一个处理器与至少一个其他处理器之间传输得到的目标参数的待更新部分的信息,使得多个处理器中的每一个处理器获得多个处理器各自对应的目标参数的待更新部分。
在一实施例中,数据处理装置800还包括编码单元830,编码单元830用于通过每个处理器对目标参数的待更新部分进行编码处理,得到待更新部分的掩码;待更新部分的信息包括:待更新部分和待更新部分的掩码。
在一实施例中,传输单元820用于通过多个处理器中的每一个处理器与至少一个其他处理器之间传输待更新部分的掩码,使得多个处理器中的每一个处理器获得多个处理器各自对应的待更新部分的掩码;传输单元820用于通过多个处理器中的每一个处理器获得多个处理器各自对应的待更新部分的掩码的并集;传输单元820用于通过多个处理器中的每一个处理器根据掩码的并集,确定多个处理器各自对应的总体待更新部分;传输单元820用于通过多个处理器中的每一个处理器与至少一个其他处理器之间传输确定的各自对应的总体待更新部分,使得多个处理器中的每一个处理器获得多个处理器各自对应的目标参数的待更新部分。
在一实施例中,传输单元820用于通过多个处理器中的每一个处理器将各自对应的待更新部分的掩码放入每一个处理器的缓存中;传输单元820用于通过多个处理器中的每一个处理器与至少一个其他处理器之间传输缓存中的掩码,并将接收到的掩码放入处理器的缓存中,使得多个处理器中的每一个处理器获得多个处理器各自对应的待更新部分的掩码。
在一实施例中,传输单元820用于通过多个处理器中的每一个处理器将传输确定的各自对应的总体待更新部分放入每个处理器的缓存中;传输单元820用于通过多个处理器中的每一个处理器与至少一个其他处理器之间传输缓存中的总体待更新部分,并基于接收到的待更新部分更新缓存中的待更新部分。
在一实施例中,多个处理器分为多个小组,多个小组中的每一个小组包括对应的子网络结构相同的至少两个处理器;传输单元820用于通过同一个小组内的至少两个处理器之间分别进行目标参数的待更新部分的传输,使得同一个小组内的第一处理器获得组内待更新集合,其中,组内待更新集合包括组内所有处理器对应的目标参数的待更新部分;传输单元820用于通过多个小组分别包括的第一处理器之间进行组内待更新集合的传输,以使得多个第一处理器的每个第一处理器获得多个处理器各自对应的目标参数的待更新部分;传输单元820用于通过多个第一处理器的每个第一处理器将多个处理器各自对应的目标参数的待更新部分进行组播,使得同一个小组内的每个处理器获得多个处理器各自对应的目标参数的待更新部分。
在一实施例中,传输单元820用于通过同一个小组内的至少两个处理器中的每一个处理器将目标参数的待更新部分放入处理器的缓存中;传输单元820用于通过同一个小组内的至少两个处理器中的每一个处理器与其他处理器之间传输缓存中的待更新部分,并基于接收到的待更新部分更新处理器的缓存中的待更新部分,使得同一个小组内的第一处理器获得组内待更新集合。
在一实施例中,编码单元830用于通过每个第一处理器对组内待更新集合进行编码处理,得到组内待更新集合的掩码;传输单元820用于通过多个小组包括的多个第一处理器之间传输组内待更新集合的掩码,使得多个第一处理器中的每一个第一处理器获得多个第一处理器各自对应的组内待更新集合的掩码;传输单元820用于通过每个第一处理器基于多个第一处理器各自对应的组内待更新集合的掩码,获得多个处理器各自对应的目标参数的待更新部分。
在一实施例中,传输单元820用于通过第一处理器基于多个第一处理器各自对应的组内待更新集合的掩码,获得多个第一处理器各自对应的组内待更新集合的掩码的并集;传输单元820用于通过第一处理器根据组内待更新集合的掩码的并集,确定多个第一处理器各自对应的总体组内待更新集合;传输单元820用于通过多个第一处理器之间传输确定的总体组内待更新集合,使得每个第一处理器获得多个处理器各自对应的目标参数的待更新部分。
在一实施例中,传输单元820用于通过多个第一处理器之间进行组内待更新集合的传输,以使得每一个第一处理器获得多个第一处理器的组内待更新集合;传输单元820用于通过多个第一处理器根据多个第一处理器各自对应的组内待更新集合的掩码,对多个第一处理器的组内待更新集合进行解码,获得多个处理器各自对应的目标参数的待更新部分。
在一实施例中,处理器为GPU。
综上可知,本申请提供的数据处理装置,在NAS系统中调用多个处理器进行梯度更新时,只传递每个处理器的目标参数的待更新部分,相比于其他方法中将处理器上的全部参数进行传输,能够大大减少通信量,提高NAS系统的训练效率。
图9为本申请实施例提供的一种电子设备900的结构示意图。其中,所述电子设备900可以是前述内容中处理器。如图9所示,电子设备900包括:处理单元910、通信接口920、存储器930、以及总线940。其中,处理单元910、通信接口920以及存储器930可以通过内部总线940相互连接,也可通过无线传输等其他手段实现通信。本申请实施例以通过总线940连接为例,总线940可以是外设部件互连标准(Peripheral Component Interconnect,PCI)总线或扩展工业标准结构(Extended Industry Standard Architecture,EISA)总线等。所述总线940可以分为地址总线、数据总线、控制总线等。为便于表示,图9中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
所述处理单元910可以包括一个或者多个硬件芯片,上述硬件芯片可以是专用集成电路(Application-Specific Inegrated Circuit,ASIC)、可编程逻辑器件(Programmable Logic Device,PLD)或其组合。上述PLD可以是复杂可编程逻辑器件(Complex Programmable Logic Device,CPLD)、现场可编程逻辑门阵列(Field-Programmable Gate Array,FPGA)、通用阵列逻辑(Generic Array Logic,GAL)或其任意组合。处理单元910执行各种类型的数字存储指令,例如存储在存储器930中的软件或者固件程序,它能使电子设备900提供较宽的多种服务。
所述存储器930用于存储程序代码,并由处理单元910来控制执行,以执行上述图2-图7中任一实施例中处理器的处理步骤。所述程序代码中可以包括一个或多个软件模块。这一个或多个软件模块可以为图8所示实施例中提供的软件模块,如训练单元、传输单元和编码单元,其中,训练单元用于通过多个处理器中的每一个处理器对对应的子网络进行当前迭代训练,获得每一个处理器的目标参数的待更新部分;传输单元用于通过多个处理器中的每一个处理器与至少一个其他处理器之间传输得到的目标参数的待更新部分的信息,使得多个处理器中的每一个处理器获得多个处理器各自对应的目标参数的待更新部分;编码单元用于通过每个处理器对目标参数的待更新部分进行编码处理,得到待更新部分的掩码,具体可用于执行前述方法的步骤S210-步骤S220及其可选步骤、步骤S221A-步骤S224A及其可选步骤、步骤S221B-步骤S222B及其可选步骤、步骤S2221B-步骤S2223AB及其可选步骤、步骤S2224B-步骤S2227B及其可选步骤,还可以用于执行图2-图7实施例描述的其他由处理器执行的步骤,这里不再进行赘述。
所述存储器930可以包括易失性存储器(Volatile Memory),例如随机存取存储器(Random Access Memory,RAM);存储器930也可以包括非易失性存储器(Non-VolatileMemory),例如只读存储器(Read-Only Memory,ROM)、快闪存储器(Flash Memory)、硬盘(Hard Disk Drive,HDD)或固态硬盘(Solid-State Drive,SSD);存储器930还可以包括上述种类的组合。
通信接口920可以为有线接口(例如以太网接口),可以为内部接口(例如高速串行计算机扩展总线(Peripheral Component Interconnect express,PCIe)总线接口)、有线接口(例如以太网接口)或无线接口(例如蜂窝网络接口或使用无线局域网接口),用于与与其他设备或模块进行通信。
需要说明的,图9仅仅是本申请实施例的一种可能的实现方式,实际应用中,所述电子设备还可以包括更多或更少的部件,这里不作限制。关于本申请实施例中未示出或未描述的内容,可参见前述图2-图7所述实施例中的相关阐述,这里不再赘述。
本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在处理器上运行时,图2-图7所示的方法流程得以实现。
本申请实施例还提供一种计算机程序产品,当所述计算机程序产品在处理器上运行时,图2-图7所示的方法流程得以实现。
上述实施例,可以全部或部分地通过软件、硬件、固件或其他任意组合来实现。当使用软件实现时,上述实施例可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载或执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以为通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(Digital Subscriber Line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集合的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,高密度数字视频光盘(Digital Video Disc,DVD)、或者半导体介质。半导体介质可以是SSD。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (21)
1.一种数据处理方法,其特征在于,应用于神经网络结构搜索NAS系统中,所述系统包括多个处理器,每个处理器用于训练搜索超网络中的一个子网络,所述方法包括:
所述多个处理器中的每一个处理器对对应的子网络进行当前迭代训练,获得所述每一个处理器的目标参数的待更新部分;
所述多个处理器中的每一个处理器与至少一个其他处理器之间传输得到的所述目标参数的待更新部分的信息,使得所述多个处理器中的每一个处理器获得所述多个处理器各自对应的所述目标参数的待更新部分。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
每个所述处理器对所述目标参数的待更新部分进行编码处理,得到所述待更新部分的掩码;
所述待更新部分的信息包括:所述待更新部分和所述待更新部分的掩码。
3.根据权利要求1或2所述的方法,其特征在于,所述多个处理器中的每一个处理器与至少一个其他处理器之间传输得到的所述目标参数的待更新部分的信息,使得所述多个处理器中的每一个处理器获得所述多个处理器各自对应的所述目标参数的待更新部分,包括:
所述多个处理器中的每一个处理器与至少一个其他处理器之间传输所述待更新部分的掩码,使得所述多个处理器中的每一个处理器获得所述多个处理器各自对应的所述待更新部分的掩码;
所述多个处理器中的每一个处理器获得所述多个处理器各自对应的所述待更新部分的掩码的并集;
所述多个处理器中的每一个处理器根据所述掩码的并集,确定所述多个处理器各自对应的总体待更新部分;
所述多个处理器中的每一个处理器与至少一个其他处理器之间传输确定的各自对应的总体待更新部分,使得所述多个处理器中的每一个处理器获得所述多个处理器各自对应的所述目标参数的待更新部分。
4.根据权利要求3所述的方法,其特征在于,所述多个处理器中的每一个处理器与至少一个其他处理器之间传输所述待更新部分的掩码,使得所述多个处理器中的每一个处理器获得所述多个处理器各自对应的所述待更新部分的掩码包括:
所述多个处理器中的每一个处理器将各自对应的所述待更新部分的掩码放入所述每一个处理器的缓存中;
所述多个处理器中的每一个处理器与至少一个其他处理器之间传输所述缓存中的掩码,并将接收到的掩码放入所述处理器的缓存中,使得所述多个处理器中的每一个处理器获得所述多个处理器各自对应的所述待更新部分的掩码。
5.根据权利要求3或4所述的方法,其特征在于,所述多个处理器中的每一个处理器与至少一个其他处理器之间传输确定的各自对应的总体待更新部分,使得所述多个处理器中的每一个处理器获得所述多个处理器各自对应的所述目标参数的待更新部分包括:
所述多个处理器中的每一个处理器将所述传输确定的各自对应的总体待更新部分放入所述每个处理器的缓存中;
所述多个处理器中的每一个处理器与至少一个其他处理器之间传输所述缓存中的总体待更新部分,并基于接收到的待更新部分更新所述缓存中的待更新部分。
6.根据权利要求1或2所述的方法,其特征在于,所述多个处理器分为多个小组,所述多个小组中的每一个小组包括对应的子网络结构相同的至少两个处理器;
所述多个处理器中的每一个处理器与至少一个其他处理器之间传输得到所述目标参数的待更新部分的信息,使得所述多个处理器中的每一个处理器获得所述多个处理器各自对应的所述目标参数的待更新部分包括:
同一个小组内的至少两个处理器之间分别进行所述目标参数的待更新部分的传输,使得所述同一个小组内的第一处理器获得组内待更新集合,其中,所述组内待更新集合包括组内所有处理器对应的所述目标参数的待更新部分;
所述多个小组分别包括的第一处理器之间进行组内待更新集合的传输,以使得所述多个第一处理器的每个第一处理器获得所述多个处理器各自对应的所述目标参数的待更新部分;
所述多个第一处理器的每个第一处理器将所述多个处理器各自对应的所述目标参数的待更新部分进行组播,使得同一个小组内的每个处理器获得所述多个处理器各自对应的所述目标参数的待更新部分。
7.根据权利要求6所述的方法,其特征在于,所述同一个小组内的至少两个处理器之间分别进行所述目标参数的待更新部分的传输,使得所述同一个小组内的第一处理器获得组内待更新集合包括:
所述同一个小组内的至少两个处理器中的每一个处理器将所述目标参数的待更新部分放入处理器的缓存中;
所述同一个小组内的至少两个处理器中的每一个处理器与其他处理器之间传输所述缓存中的待更新部分,并基于接收到的待更新部分更新所述处理器的缓存中的待更新部分,使得所述同一个小组内的第一处理器获得所述组内待更新集合。
8.根据权利要求6或7所述的方法,其特征在于,所述多个小组的第一处理器之间进行组内待更新集合的传输,以使得所述多个小组的每个第一处理器获得所述多个处理器各自对应的所述目标参数的待更新部分包括:
每个所述第一处理器对所述组内待更新集合进行编码处理,得到所述组内待更新集合的掩码;
所述多个小组包括的多个第一处理器之间传输所述组内待更新集合的掩码,使得所述多个第一处理器中的每一个第一处理器获得所述多个第一处理器各自对应的所述组内待更新集合的掩码;
每个第一处理器基于所述多个第一处理器各自对应的所述组内待更新集合的掩码,获得所述多个处理器各自对应的所述目标参数的待更新部分。
9.根据权利要求8所述的方法,其特征在于,所述每个第一处理器基于所述多个第一处理器各自对应的所述组内待更新集合的掩码,获得所述多个处理器各自对应的所述目标参数的待更新部分,包括:
所述第一处理器基于所述多个第一处理器各自对应的所述组内待更新集合的掩码,获得所述多个第一处理器各自对应的所述组内待更新集合的掩码的并集;
所述第一处理器根据所述组内待更新集合的掩码的并集,确定所述多个第一处理器各自对应的总体组内待更新集合;
所述多个第一处理器之间传输确定的所述总体组内待更新集合,使得每个第一处理器获得所述多个处理器各自对应的所述目标参数的待更新部分。
10.根据权利要求8所述的方法,其特征在于,所述每个第一处理器基于所述多个第一处理器各自对应的所述组内待更新集合的掩码,获得所述多个处理器各自对应的所述目标参数的待更新部分,包括:
所述多个第一处理器之间进行组内待更新集合的传输,以使得每一个第一处理器获得所述多个第一处理器的组内待更新集合;
所述多个第一处理器根据所述多个第一处理器各自对应的所述组内待更新集合的掩码,对所述多个第一处理器的组内待更新集合进行解码,获得所述多个处理器各自对应的所述目标参数的待更新部分。
11.根据权利要求1至10任一权利要求所述的方法,其特征在于,所述处理器为GPU。
12.一种数据处理装置,其特征在于,应用于神经网络结构搜索NAS系统中,所述系统包括多个处理器,每个处理器用于训练搜索超网络中的一个子网络,所述装置包括:
训练单元,所述训练单元用于通过所述多个处理器中的每一个处理器对对应的子网络进行当前迭代训练,获得所述每一个处理器的目标参数的待更新部分;
传输单元,所述传输单元用于通过所述多个处理器中的每一个处理器与至少一个其他处理器之间传输得到的所述目标参数的待更新部分的信息,使得所述多个处理器中的每一个处理器获得所述多个处理器各自对应的所述目标参数的待更新部分。
13.根据权利要求12所述的装置,其特征在于,所述装置还包括编码单元,
所述编码单元用于通过每个所述处理器对所述目标参数的待更新部分进行编码处理,得到所述待更新部分的掩码;
所述待更新部分的信息包括:所述待更新部分和所述待更新部分的掩码。
14.根据权利要求12或13所述的装置,其特征在于,
所述传输单元用于通过所述多个处理器中的每一个处理器与至少一个其他处理器之间传输所述待更新部分的掩码,使得所述多个处理器中的每一个处理器获得所述多个处理器各自对应的所述待更新部分的掩码;
所述传输单元用于通过所述多个处理器中的每一个处理器获得所述多个处理器各自对应的所述待更新部分的掩码的并集;
所述传输单元用于通过所述多个处理器中的每一个处理器根据所述掩码的并集,确定所述多个处理器各自对应的总体待更新部分;
所述传输单元用于通过所述多个处理器中的每一个处理器与至少一个其他处理器之间传输确定的各自对应的总体待更新部分,使得所述多个处理器中的每一个处理器获得所述多个处理器各自对应的所述目标参数的待更新部分。
15.根据权利要求14所述的装置,其特征在于,所述传输单元用于通过所述多个处理器中的每一个处理器将所述传输确定的各自对应的总体待更新部分放入所述每个处理器的缓存中;
所述传输单元用于通过所述多个处理器中的每一个处理器与至少一个其他处理器之间传输所述缓存中的总体待更新部分,并基于接收到的待更新部分更新所述缓存中的待更新部分。
16.根据权利要求12或13所述的装置,其特征在于,所述多个处理器分为多个小组,所述多个小组中的每一个小组包括对应的子网络结构相同的至少两个处理器;
所述传输单元用于通过同一个小组内的至少两个处理器之间分别进行所述目标参数的待更新部分的传输,使得所述同一个小组内的第一处理器获得组内待更新集合,其中,所述组内待更新集合包括组内所有处理器对应的所述目标参数的待更新部分;
所述传输单元用于通过所述多个小组分别包括的第一处理器之间进行组内待更新集合的传输,以使得所述多个第一处理器的每个第一处理器获得所述多个处理器各自对应的所述目标参数的待更新部分;
所述传输单元用于通过所述多个第一处理器的每个第一处理器将所述多个处理器各自对应的所述目标参数的待更新部分进行组播,使得同一个小组内的每个处理器获得所述多个处理器各自对应的所述目标参数的待更新部分。
17.根据权利要求16所述的装置,其特征在于,所述传输单元用于通过所述同一个小组内的至少两个处理器中的每一个处理器将所述目标参数的待更新部分放入处理器的缓存中;
所述传输单元用于通过所述同一个小组内的至少两个处理器中的每一个处理器与其他处理器之间传输所述缓存中的待更新部分,并基于接收到的待更新部分更新所述处理器的缓存中的待更新部分,使得所述同一个小组内的第一处理器获得所述组内待更新集合。
18.根据权利要求16或17所述的装置,其特征在于,所述编码单元用于通过每个所述第一处理器对所述组内待更新集合进行编码处理,得到所述组内待更新集合的掩码;
所述传输单元用于通过所述多个小组包括的多个第一处理器之间传输所述组内待更新集合的掩码,使得所述多个第一处理器中的每一个第一处理器获得所述多个第一处理器各自对应的所述组内待更新集合的掩码;
所述传输单元用于通过每个第一处理器基于所述多个第一处理器各自对应的所述组内待更新集合的掩码,获得所述多个处理器各自对应的所述目标参数的待更新部分。
19.一种计算机可读存储介质,其特征在于,包括指令,当所述指令在计算设备上运行时,使得所述计算设备执行如权利要求1至11任一权利要求所述的方法。
20.一种电子设备,其特征在于,包括处理器和存储器,所述处理器执行所述存储器中的代码执行如权利要求1至11任一权利要求所述的方法。
21.一种神经网络搜索系统,其特征在于,所述系统包括多个处理器,所述多个处理器执行如权利要求1至11任一权利要求所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010623506.3A CN111782398A (zh) | 2020-06-29 | 2020-06-29 | 数据处理的方法、装置、系统及相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010623506.3A CN111782398A (zh) | 2020-06-29 | 2020-06-29 | 数据处理的方法、装置、系统及相关设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111782398A true CN111782398A (zh) | 2020-10-16 |
Family
ID=72761453
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010623506.3A Pending CN111782398A (zh) | 2020-06-29 | 2020-06-29 | 数据处理的方法、装置、系统及相关设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111782398A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114356540A (zh) * | 2021-10-30 | 2022-04-15 | 腾讯科技(深圳)有限公司 | 一种参数更新方法、装置、电子设备和存储介质 |
-
2020
- 2020-06-29 CN CN202010623506.3A patent/CN111782398A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114356540A (zh) * | 2021-10-30 | 2022-04-15 | 腾讯科技(深圳)有限公司 | 一种参数更新方法、装置、电子设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11989638B2 (en) | Convolutional neural network accelerating device and method with input data conversion | |
US8527739B2 (en) | Iterative process partner pairing scheme for global reduce operation | |
WO2021244354A1 (zh) | 神经网络模型的训练方法和相关产品 | |
CN112100450A (zh) | 一种图计算数据分割方法、终端设备及存储介质 | |
CN114519306B (zh) | 一种去中心化的终端节点网络模型训练方法及系统 | |
CN113595993A (zh) | 边缘计算下模型结构优化的车载感知设备联合学习方法 | |
Shen et al. | Scale-out acceleration for 3D CNN-based lung nodule segmentation on a multi-FPGA system | |
CN111782398A (zh) | 数据处理的方法、装置、系统及相关设备 | |
CN113452655A (zh) | 一种分布式训练方法、梯度通信方法、装置以及计算设备 | |
CN115796249B (zh) | 面向chiplet互连的神经网络芯片层切换映射方法 | |
Guo et al. | Dynamic computation offloading strategy with dnn partitioning in d2d multi-hop networks | |
CN115346099A (zh) | 基于加速器芯片的图像卷积方法、芯片、设备及介质 | |
CN112738225B (zh) | 基于人工智能的边缘计算方法 | |
CN111914285A (zh) | 一种基于差分隐私的地理分布式图计算方法及系统 | |
Wang et al. | An efficient design flow for accelerating complicated-connected cnns on a multi-fpga platform | |
CN114095289B (zh) | 数据多播电路、方法、电子设备及计算机可读存储介质 | |
CN111832585A (zh) | 图像处理的方法和装置 | |
CN115774800B (zh) | 基于numa架构的时变图处理方法、电子设备、介质 | |
CN115730681B (zh) | 模型训练方法、装置、设备以及存储介质 | |
CN114218521A (zh) | 一种异构众核架构上基于膨胀取数的卷积运算方法 | |
CN109325582B (zh) | 面向二值神经网络的计算装置及方法 | |
CN117527731B (zh) | 一种用于硬件卸载的包编辑方法、计算机设备及介质 | |
CN113726342B (zh) | 面向大规模图迭代计算的分段差值压缩与惰性解压方法 | |
CN114785782B (zh) | 面向异构云-边计算的通用的任务卸载方法 | |
US20220391666A1 (en) | Distributed Deep Learning System and Distributed Deep Learning Method |
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 |