CN111680791B - 适用于异构环境中的通信方法、装置、系统 - Google Patents
适用于异构环境中的通信方法、装置、系统 Download PDFInfo
- Publication number
- CN111680791B CN111680791B CN202010547423.0A CN202010547423A CN111680791B CN 111680791 B CN111680791 B CN 111680791B CN 202010547423 A CN202010547423 A CN 202010547423A CN 111680791 B CN111680791 B CN 111680791B
- Authority
- CN
- China
- Prior art keywords
- processing module
- server
- tensor
- summarizing
- communication
- 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.)
- Active
Links
Images
Classifications
-
- 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
-
- 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
- G06F9/505—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 considering the load
-
- 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/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本公开提供了一种适用于异构环境中的通信方法、装置、设备、系统、存储介质。适用于异构环境中的通信方法,包括:为第一汇总处理模块和第二汇总处理模块分配工作负载,每个所述工作负载分别与总工作负载存在预设关系;将张量划分为预设大小的若干部分张量;索引每个所述部分张量并进行哈希处理,以使得相同的所述部分张量发送至同一汇总处理模块;根据所述预设关系与所述汇总处理模块通信,以分别向所述汇总处理模块发送和\或从所述汇总处理模块接收所述部分张量。本公开可以实现以更高的通信效率实现高效利用分布式DNN训练的生产数据中心中的异构资源,提升了用户的使用体验。
Description
技术领域
本公开涉及人工智能技术领域,尤其涉及一种适用于异构环境中的通信方法、装置、系统、设备、存储介质。
背景技术
人工智能(Artificial Intelligence,AI)是计算机科学的一个分支,研究包括机器人、语音识别、图像识别、自然语言处理和专家系统等,其中会涉及到深度学习处理过程。深度神经网络(Deep Neural Networks,以下简称DNN)是深度学习处理过程中的一种深度学习网络,可以通过DNN对人工智能算法或模型进行训练。
由于DNN训练非常耗时,因此需要扩大训练规模,目前最受欢迎的方法是通过数据并行,该方法将数据集划分为多个分布式计算设备(通常为GPU),而每个GPU都拥有完整的DNN模型。运行分布式DNN训练工作的数据中心本质上是异构的,它们具有通过高速网络连接的GPU和CPU服务器,并且每个GPU服务器往往还具有数十个CPU内核。但是,现有的分布式DNN训练体系结构的设计和实现中通信效率低,使得使用异构资源的效率很低。
发明内容
本公开正是为了解决上述课题而完成,其目的在于提供一种以更高的通信效率实现高效利用异构资源的适用于异构环境中的通信方法、装置、系统、设备、存储介质。本公开提供该发明内容部分以便以简要的形式介绍构思,这些构思将在后面的具体实施方式部分被详细描述。该发明内容部分并不旨在标识要求保护的技术方案的关键特征或必要特征,也不旨在用于限制所要求的保护的技术方案的范围。
为了解决上述技术问题,本公开实施例提供一种适用于异构环境中的通信方法,采用了如下所述的技术方案:
为第一汇总处理模块和第二汇总处理模块分配工作负载,每个所述工作负载分别与总工作负载存在预设关系;
将张量划分为预设大小的若干部分张量;
索引每个所述部分张量并进行哈希处理,以使得相同的所述部分张量发送至同一汇总处理模块;
根据所述预设关系与所述汇总处理模块通信,以分别向所述汇总处理模块发送和\或从所述汇总处理模块接收所述部分张量;
所述预设关系中,所述第一汇总处理模块的数量至少为1个,所述第二汇总处理模块的数量至少为2个,并且所述第一汇总处理模块的数量不多于所述第二汇总处理模块的数量。
为了解决上述技术问题,本公开实施例还提供一种适用于异构环境中的通信装置,采用了如下所述的技术方案,包括:
负载分配模块,用于为第一汇总处理模块和第二汇总处理模块分配工作负载,每个所述工作负载分别与总工作负载存在预设关系;
张量划分模块,用于将张量划分为预设大小的若干部分张量;
张量索引模块,用于索引每个所述部分张量并进行哈希处理,以使得相同的所述部分张量发送至同一汇总处理模块;
通信模块,用于根据所述预设关系与所述汇总处理模块通信,以分别向所述汇总处理模块发送和\或从所述汇总处理模块接收所述部分张量;
所述预设关系中,所述第一汇总处理模块的数量至少为1个,所述第二汇总处理模块的数量至少为2个,并且所述第一汇总处理模块的数量不多于所述第二汇总处理模块的数量。
为了解决上述技术问题,本公开实施例还提供一种适用于异构环境中的通信系统,采用了如下所述的技术方案:
根据前述的适用于异构环境中的通信装置;
汇总处理模块,向所述通信装置发送和\或从所述通信装置接收张量;
服务器,运行所述通信装置和所述汇总处理模块。
为了解决上述技术问题,本公开实施例还提供一种计算机设备,采用了如下所述的技术方案:
包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器执行所述计算机程序时实现如前述所述的方法。
为了解决上述技术问题,本公开实施例还提供一种计算机可读存储介质,采用了如下所述的技术方案:
所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如前述所述的方法。
根据本公开所公开的技术方案,与现有技术相比,本公开可以实现以更高的通信效率实现高效利用分布式DNN训练的生产数据中心中的异构资源,提升了用户的使用体验。
附图说明
图1是本公开的适用于异构环境中的通信系统的一个实施例的架构图;
图2是根据本公开的适用于异构环境中的通信方法的一个实施例的流程图;
图3是本公开实施例中一种基于PCIe-only的GPU服务器拓扑结构以及数据流量传输流示意图;
图4是本公开实施例中一种基于NVLink-based的GPU服务器拓扑结构以及数据流量传输流示意图;
图5是根据本公开的适用于异构环境中的通信装置的一个实施例的示意图;
图6是根据本公开的计算机设备的一个实施例的结构示意图。
结合附图并参考以下具体实施方式,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。贯穿附图中,相同或相似的附图标记表示相同或相似的元素。应当理解附图是示意性的,原件和元素不一定按照比例绘制。
具体实施方式
除非另有定义,本文所使用的所有的技术和科学术语与属于本公开的技术领域的技术人员通常理解的含义相同;本文中在申请的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本公开;本公开的说明书和权利要求书及上述附图说明中的术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。本公开的说明书和权利要求书或上述附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本公开的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
为了使本技术领域的人员更好地理解本公开方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。
[系统结构]
首先,说明本公开的一个实施例的适用于异构环境中的通信系统的结构,可以适应各种数据中心环境,利用异构资源并达到更佳通信效率。为了加速DNN训练,本公开的实施例的适用于异构环境中的通信系统为具有多个服务器的分布式系统,每个服务器具有多个GPU服务器。如图1所示,系统结构中可以包括CPU服务器1、CPU服务器2,GPU服务器1、GPU服务器2。
其中,每个CPU服务器中可以运行有汇总处理模块(SP)(101、102),汇总处理模块(101、102)用于接收通信装置(LA)(103、104)发送的张量,并将这些张量求和并将其发送回通信装置(103、104),这里,张量是存储数据的多维数组,例如可以是DNN模型的梯度。
每个GPU服务器中可以运行有汇总处理模块(105、106)和通信装置(103、104),汇总处理模块(105、106)的作用同上述CPU处理器中汇总处理模块(101、102)的作用,通信装置(103、104)用于内部同步多个GPU服务器之间的张量,并与各个汇总处理模块(101、102、105、106)进行通信。这里,通信装置(103、104)与各个汇总处理模块(101、102、105、106)进行通信包括与同一GPU服务器中的汇总处理模块进行内部通信例如图1中GPU服务器1中的通信装置103与汇总处理模块105的通信(图中的虚线),也可以包括与CPU服务器中的汇总处理模块或其他GPU服务器中的汇总处理模块进行外部通信例如图1中GPU服务器1中的通信装置103与CPU服务器1或CPU服务器2中汇总处理模块101或102或GPU服务器2中的汇总处理模块106的通信(图中的实线)。每次进行训练迭代时,每个通信装置(103、104)例如向汇总处理模块(101、102、105、106)发送总计M字节(DNN模型大小),并从汇总处理模块(101、102、105、106)接收M字节。
在本实施例中,例如网络具有完全的二等分带宽。在每个CPU服务器上,其由SP的总工作负载确定网络流量。例如,如果SP负责汇总x%的DNN模型,则CPU服务器将在每次训练迭代期间向每个GPU服务器发送和接收x%×M字节的流量。
汇总处理模块的类型可以包括第一汇总处理模块(CPU服务器中的汇总处理模块SPcpu101、102)和第二汇总处理模块(GPU服务器中的汇总处理模块SPgpu105、106);
这里,例如为了最小化通信时间,每个通信装置(LA)(103、104)分别为第一汇总处理模块SPcpu101或SPcpu102和第二汇总处理模块SPgpu105或SPgpu106分配第一工作负载MSPcpu字节工作负载和第二工作负载MSPgpu;这里,例如第一工作负载MSPcpu和所述第二工作负载MSpgpu分别与总工作负载存在第一关系和第二关系;
这里,k为CPU服务器即第一汇总处理模块SPcpu的数量,可以为1个,也可以为多个;n为GPU服务器即第二汇总处理模块SPgpu的数量,可以为2个,也可以为多个,并且第一汇总处理模块SPcpu的数量k可以不多于第二汇总处理模块SPgpu的数量n;
这里,CPU服务器的通信时间与GPU服务器的通信时间例如相等,以实现最优的通信效率。
这里,本实施例的系统还基于GPU服务器的内部处理能力和拓扑结构进行张量聚合;
在一个或多个实施例中,拓扑结构至少包括基于PCIe的服务器拓扑或基于NVLink的服务器拓扑。
在一个或多个实施例中,当拓扑结构为基于PCIe的服务器拓扑时,本实施例的系统还将数据发送到第一汇总处理模块或第二汇总处理模块并从第一汇总处理模块或第二汇总处理模块接收全局聚合的数据。
在一个或多个实施例中,本实施例的系统还在与第一汇总处理模块或第二汇总处理模块通信之前或之后聚合或广播所述张量。
在一个或多个实施例中,本实施例的系统还将计算密集型参数更新移至GPU服务器,并且在CPU服务器中仅进行求和运算。
在一个或多个实施例中,本实施例的系统还进行性能优化,例如进行共享内存数据路径;或使用页面对齐的内存作为接收缓冲区;或对每个RDMA WRITE仅强制执行一个散布收集条目。
本实施例的系统进一步消除了通信管道中的CPU瓶颈和RDMA NIC瓶颈,最终达到理论最佳产量的91-99%。在生产数据中心使用六个DNN模型和三个训练框架评估LASP。结果表明,使用256个GPU服务器的情况下,本系统的性能始终优于现有的all-reduce和PS解决方案,分别高达84%和245%。
应该理解,图1中的CPU服务器和GPU服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的CPU服务器和GPU服务器。例如当CPU服务器的数量为0时,通信将回退到仅在GPU服务器上使用汇总处理模块。当CPU服务器的数量与GPU服务器的数量相同时,本公开的一个实施例的适用于异构环境中的通信系统的最佳性能与非托管参数服务器(PS)相同。
这里,CPU服务器可以是单独设置的,也可以是从具有备用CPU内核的GPU服务器上分配CPU服务器,并不做限定。
本公开的一个实施例的适用于异构环境中的通信系统的运行方法将在下面进行描述。
[适用于异构环境中的通信方法]
参考图2,示出了根据本公开的适用于异构环境中的通信方法的一个实施例的流程图。所述适用于异构环境中的通信方法,包括以下步骤:
S21,为每个汇总处理模块分配工作负载,其中每个工作负载分别与总工作负载存在预设关系;
在一个或多个实施例中,例如网络具有完全的二等分带宽。在每个CPU服务器上,其由SP的总工作负载确定网络流量。例如,如果SP负责汇总x%的DNN模型,则CPU服务器将在每次训练迭代期间向每个GPU服务器发送和接收x%×M字节的流量。
在一个或多个实施例中,汇总处理模块的类型可以包括第一汇总处理模块(例如图1中CPU服务器中的汇总处理模块SPcpu101、102)和第二汇总处理模块(例如图1中GPU服务器中的汇总处理模块SPgpu105、106);
在一个或多个实施例中,例如为了最小化通信时间,分别为第一汇总处理模块SPcpu101或SPcpu102和第二汇总处理模块SPgpu105或SPgpu106分配第一工作负载MSPcpu字节工作负载和第二工作负载MSPgpu;这里,例如第一工作负载MSPcpu和所述第二工作负载MSpgpu分别与总工作负载存在第一关系和第二关系;
这里,k为CPU服务器即第一汇总处理模块SPcpu的数量,可以为1个,也可以为多个;n为GPU服务器即第二汇总处理模块SPgpu的数量,可以为2个,也可以为多个,并且第一汇总处理模块SPcpu的数量k可以不多于第二汇总处理模块SPgpu的数量n;
在一个或多个实施例中,CPU服务器的通信时间与GPU服务器的通信时间例如相等,以实现最优的通信效率。
S22,将张量划分为预设大小的若干部分张量;
在一个或多个实施例中,例如模型大小M远大于部分张量的大小,部分张量例如不大于4M。
S23,索引每个部分张量并进行哈希处理,以使得相同的部分张量发送至同一汇总处理模块;
在一个或多个实施例中,一致地索引每个部分张量,并将索引哈希到[0,n2+kn-2k)的范围内。
S24,根据预设关系与汇总处理模块通信,以分别向汇总处理模块发送和\或从汇总处理模块接收部分张量。
在一个或多个实施例中,与各个汇总处理模块进行通信包括与同一GPU服务器中的汇总处理模块进行内部通信例如图1中GPU服务器1中的通信装置103与汇总处理模块105的通信(图中的虚线),也可以包括与CPU服务器中的汇总处理模块或其他GPU服务器中的汇总处理模块进行外部通信例如图1中GPU服务器1中的通信装置103与CPU服务器1或CPU服务器2中汇总处理模块101或102或GPU服务器2中的汇总处理模块106的通信(图中的实线)。每次进行训练迭代时,例如向汇总处理模块(101、102、105、106)发送总计M字节(DNN模型大小),并从汇总处理模块(101、102、105、106)接收M字节。
在一个或多个实施例中,还包括,基于GPU服务器的内部处理能力和拓扑结构进行张量聚合。
在一个或多个实施例中,还包括,在与汇总处理模块通信之前或之后聚合或广播所述张量。
在一个或多个实施例中,还包括,基于GPU服务器的内部处理能力和拓扑结构进行张量聚合;
在一个或多个实施例中,拓扑结构至少包括基于PCIe的服务器拓扑或基于NVLink的服务器拓扑。
在一个或多个实施例中,当拓扑结构为基于PCIe的服务器拓扑时,还将数据发送到第一汇总处理模块或第二汇总处理模块并从第一汇总处理模块或第二汇总处理模块接收全局聚合的数据。
在一个或多个实施例中,还在与第一汇总处理模块或第二汇总处理模块通信之前或之后聚合或广播所述张量。
在一个或多个实施例中,还将计算密集型参数更新分配给GPU服务器,并且在CPU服务器中仅进行求和运算。在现有的All-Reduce深度神经网络训练体系中,仅采用GPU进行所有运算,导致CPU无法发挥性能,而在现有的Parameter Sever深度神经网络训练体系中,同时使用GPU和CPU,但是,CPU需要同时负责更新和求和两项任务,我们发现,由于高度优化的AVX指令,现有的X86 CPU更擅长求和而不是进行更新操作,在CPU上运行更新会严重降低性能,CPU无法匹配网络带宽并成为通信过程中的瓶颈,并且算法越复杂即工作负载越重,瓶颈效应越明显,因此在本实施例中,将计算密集型参数的任务分配给GPU服务器,而只将求和运算放置在CPU服务器,这样不仅可以防止CPU成为瓶颈,而且可以大大减少CPU开销。需要注意的是,尽管将求和与更新分开带来了性能上的好处,但它破坏了现有ParameterSever的一个重要功能:对异步并行的支持。异步并行依赖于Parameter Sever过程,以保持最新的模型参数,这与SP的设计不直接兼容。为了弥合这一差距,可以进行异步训练,在本公开的一些实施例中,LA发送增量参数并接收最新参数。SP会不断将增量参数添加到最新参数中。经过实验已经证明,这种新的训练工作流程在算法收敛方面等效于异步并行。
在一个或多个实施例中,还进行性能优化,例如进行共享内存数据路径;或使用页面对齐的内存作为接收缓冲区;或对每个RDMA WRITE仅强制执行一个散布收集条目。
应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
为了更好的说明本公开所提出的方法的有益效果,以下基于PCIe拓扑结构的GPU服务器说明采用本公开提出的方法的GPU服务器内部的通信处理过程。
在本实施例中的通信系统的体系结构包括汇总处理模块(SP)和通信装置(LA),SP包括第一汇总处理模块和第二汇总处理模块,第一汇总处理模块运行在CPU服务器上,第二汇总处理模和LA运行在GPU服务器上,依据上述本公开实施例中提出的适用于异构环境中的通信方法为第一汇总处理模块和第二汇总处理模块分别工作负载,可以得到最佳的服务器间的通信策略,但是,在实践中发现GPU服务器内通信同样重要。GPU服务器中通常有多个GPU。LA必须在与SP通信之前/之后聚合/广播张量。这会在PCIe链路上造成冲突,并阻止NIC(网络接口控制器,network interface controller)充分利用其带宽。
请参看图3的(a),以GPU服务器具有8个GPU为例,图3中的数字0-7分别代码GPU服务器中的8个GPU,Po和P1各自代表一个PCIe交换机。GPU服务器具有两个通过QPI连接的NUMACPU。八个GPU分为两组,分别连接到两个PCIe交换机。假设NIC为100Gbps,并连接到其中一个CPU的PCIe。图3中所有PCIe链路均为3.0x16,可提供128Gbps的理论带宽。CPU内存和QPI的带宽>300Gbps,这不太可能成为通信瓶颈。我们将此称为PCIe-only拓扑。对于这种特定的服务器模型,我们测量出在同一PCIe交换机中,GPU到GPU内存副本的吞吐量约为105Gbps。当GPU在不同的PCIe交换机下时,内存复制吞吐量仅为80Gbps。
现有技术中的框架都忽略了内部拓扑的此类细节。例如,TensorFlow PS、MXNetPS在同一服务器上的所有GPU上都使用直接的减少或减少分散。这将导致跨PCIe交换机内存复制,这将会明显降低复制速度。
相比之下,对于PCIe-only拓扑,在本实施例中,在同一PCIe下的GPU首先对张量求和,然后复制到CPU并让CPU进行全局求和,最后广播回全局。具体来说,包括以下步骤。
(1)减少分散:假设每个PCIe交换机具有L个GPU。这L个GPU执行减少分散,仅在PCIe交换机内部产生(L-1)M/L流量。完成后,每个GPU应保存M/L个聚合数据,M为总工作负载。
(2)GPU-CPU复制:每个GPU将其M/L数据复制到CPU内存,这会沿路径产生M/L流量。每个PCIe交换机将生成M个聚合数据。
(3)CPU减少:CPU减少来自所有PCIe交换机的数据,通过所有GPU上传的数据生成聚合数据。这种减少不会产生任何PCIe流量。
(4)联网:LA将数据发送到SP并从SP接收全局求和的数据。
(5)CPU-GPU复制:每个GPU将其M/L部分从CPU内存复制回自身。这会导致从CPU到每个GPU都产生M/L流量。
(6)全聚集:每个GPU与同一PCIe开关下的GPU进行全聚集操作。这会在交换机内部产生(l-1)M/l的流量。
图3的(b)显示了步骤1到3的数据流量传输方向。步骤4到6使用相同的链接,但方向相反。步骤1-3以及步骤5-6为LA内部的处理过程,通过GPU服务器内的CPU辅助的聚合,PCIe切换到CPU链路在每个方向上仅携带M流量,这比直接在8个GPU上进行集体操作(7M/4流量)要低得多。同时,每个PCIe交换机到GPU链路上的流量为(2l-1)M/l。令l=4(每个PCIe具有四个GPU),即7M/4,与现有方法相同。从根本上讲,本公开的实施例的系统利用GPU服务器上的备用CPU来避免GPU到GPU跨PCIe交换机内存复制的缓慢。
本实施例通过分析得出:以上述实施例中的PCIe带宽值为例,我们发现采用本实施例中的CPU辅助聚合的性能比现有技术中的all-reduce方法高出23.7%;采用本实施例中的CPU辅助的聚合具有合理的CPU内存带宽开销,非常接近理论上的最佳解决方案。
为了更好的说明本公开所提出的方法的有益效果,以下基于NVLink-based拓扑结构的GPU服务器说明采用本公开提出的方法的GPU服务器内部的通信处理过程。
图4的(a)显示了具有NVLink-based的GPU服务器d的拓扑结构,图4中的0-7为8个GPU,P0、P1、P2和P3为4个PCIe交换机,CPU0和CPU1为GPU服务器内的两个CPU,NIC为网络接口控制器。在本拓扑结构中具有四个PCIe交换机,每个都连接两个GPU。GPU也通过NVLink连接。NVLink为每个GPU提供总计1.2Tbps的GPU-GPU带宽,远高于PCIe链路。NIC连接到其中一个PCIe交换机。
借助NVLink,GPU服务器内减少分散和全部聚集可以完全使用NVLink并避免消耗PCIe带宽。因此,我们不再需要上个实施例中PCIe-only拓扑中的CPU辅助聚合。但是,我们发现现有框架,包括最受欢迎的GPU全缩减实现NCCL(由官方TensorFlow,PyTorch,MXNet和Horovod全缩减模式使用),仍然不是最佳选择。
一个重要的问题是,拓扑结构对于分布式训练而言并不对称。如图4的(a)所示,NIC连接到一个PCIe交换机。GPU需要将数据复制到CPU内存或从CPU内存复制数据,而NIC需要执行DMA读/写。这意味着同一PCIe交换机下的NIC和两个GPU必须竞争P0-CPU0的PCIe带宽。需要注意的是,不仅LA使用此PCIe带宽,SP也在同一GPU服务器上运行,因此P0-CPU0再次成为整个通信的瓶颈。
根据分析,我们应该在LA的执行过程中为NIC留出尽可能多的P0-CPU0的PCIe带宽。对于这种拓扑结构,本实施例中可以将所有GPU的张量汇集到GPU2,并让GPU2将汇总的数据复制到CPU0内存。图4的(b)显示了这些步骤的数据流量方向。之后,当LA从SP获取张量聚合结果后,GPU2会将数据复制到GPU内存中并执行广播。这样,可以完全防止GPU使用P0-CPU0的带宽进行通信,因此NIC可以运行高达100Gbps的全部带宽。
这种方法似乎在GPU2上创建了流量热点。但是,NVLink的带宽比PCIe链路大得多,因此即使在热点上,GPU间通信也不会成为瓶颈。同时,用于GPU-CPU复制的P1-CPU0的PCIe链接与NIC具有大约相同的100Gbps带宽,因此也不是瓶颈。
本实施例中基于NVLIink拓扑的GPU服务器取得了最佳结果–服务器内带宽没有瓶颈。而在现有技术中由于GPU0和NIC之间的距离原因,现有技术(如NCCL)倾向于让GPU使用P0-CPU0瓶颈链接。因此,其通信性能低于本实施例中基于NVLink的GPU服务器中的通信方法。
[适用于异构环境中的通信装置]
如图5所示,为了实现本公开实施例中的技术方案,本公开提供了一种适用于异构环境中的通信装置,该装置具体可以应用于各种电子终端设备中。
本实施例所述的适用于异构环境中的通信装置包括:负载分配模块501、张量划分模块502、张量索引模块503、通信模块504、张量聚合模块505、优化性能模块506。
负载分配模块501,用于为每个汇总处理模块分配工作负载,每个工作负载分别与总工作负载存在预设关系;
在一个或多个实施例中,例如网络具有完全的二等分带宽。在每个CPU服务器上,其由SP的总工作负载确定网络流量。例如,如果SP负责汇总x%的DNN模型,则CPU服务器将在每次训练迭代期间向每个GPU服务器发送和接收x%×M字节的流量。
在一个或多个实施例中,汇总处理模块的类型可以包括第一汇总处理模块(例如图1中CPU服务器中的汇总处理模块SPcpu101、102)和第二汇总处理模块(例如图1中GPU服务器中的汇总处理模块SPgpu105、106);
在一个或多个实施例中,例如为了最小化通信时间,分别为第一汇总处理模块SPcpu101或SPcpu102和第二汇总处理模块SPgpu105或SPgpu106分配第一工作负载MSPcpu字节工作负载和第二工作负载MSPgpu;这里,例如第一工作负载MSPcpu和所述第二工作负载MSpgpu分别与总工作负载存在第一关系和第二关系;
这里,k为CPU服务器即第一汇总处理模块SPcpu的数量,可以为1个,也可以为多个;n为GPU服务器即第二汇总处理模块SPgpu的数量,可以为2个,也可以为多个,并且第一汇总处理模块SPcpu的数量k可以不多于第二汇总处理模块SPgpu的数量n;
在一个或多个实施例中,CPU服务器的通信时间与GPU服务器的通信时间例如相等,以实现最优的通信效率。
张量划分模块502,用于将张量划分为预设大小的若干部分张量;
在一个或多个实施例中,例如模型大小M远大于部分张量的大小,部分张量例如不大于4M。
张量索引模块503,用于索引每个部分张量并进行哈希处理,以使得相同的部分张量发送至同一汇总处理模块;
通信模块504,用于根据预设关系与汇总处理模块通信,以分别向汇总处理模块发送和\或从汇总处理模块接收部分张量。
在一个或多个实施例中,与各个汇总处理模块进行通信包括与同一GPU服务器中的汇总处理模块进行内部通信例如图1中GPU服务器1中的通信装置103与汇总处理模块105的通信(图中的虚线),也可以包括与CPU服务器中的汇总处理模块或其他GPU服务器中的汇总处理模块进行外部通信例如图1中GPU服务器1中的通信装置103与CPU服务器1或CPU服务器2中汇总处理模块101或102或GPU服务器2中的汇总处理模块106的通信(图中的实线)。每次进行训练迭代时,例如向汇总处理模块(101、102、105、106)发送总计M字节(DNN模型大小),并从汇总处理模块(101、102、105、106)接收M字节。
张量聚合模块505,用于基于GPU服务器的内部处理能力和拓扑结构进行张量聚合,并且在与汇总处理模块通信之前或之后聚合或广播所述张量;
在一个或多个实施例中,拓扑结构至少包括基于PCIe的服务器拓扑或基于NVLink的服务器拓扑。
在一个或多个实施例中,当所述拓扑结构为基于PCIe的服务器拓扑时,张量聚合模块505还用于:将数据发送到所述第一汇总处理模块或所述第二汇总处理模块并从所述第一汇总处理模块或所述第二汇总处理模块接收全局聚合的数据。
优化性能模块506,用于实现以下步骤的至少一者:将计算密集型参数更新分配给GPU服务器,并且在CPU服务器中仅进行求和运算;共享内存数据路径;使用页面对齐的内存作为接收缓冲区;对每个RDMA WRITE仅强制执行一个散布收集条目。
应该理解的是,虽然附图的框图中的每个方框可以代表一个模块,该模块的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令,但是这些模块并不是必然按照顺序依次执行。本公开中装置实施例中的各模块及功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上的模块或功能单元集成在一个模块中。上述集成的各个模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。上述提到的存储介质可以是只读存储器,磁盘或光盘等。
[适用于异构环境中的通信设备]
为解决上述技术问题,本公开实施例还提供一种电子设备。下面参考图6,其示出了适于用来实现本公开实施例的电子设备600的结构示意图。本公开实施例中的终端设备可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、PDA(个人数字助理)、PAD(平板电脑)、PMP(便携式多媒体播放器)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。图中示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图6所示,电子设备600可以包括处理装置(例如中央处理器、图形处理器等)601,其可以根据存储在只读存储器(ROM)602中的程序或者从存储装置606加载到随机访问存储器(RAM)603中的程序而执行各种适当的动作和处理。在RAM603中,还存储有电子设备600操作所需的各种程序和数据。处理装置601、ROM602以及RAM603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。
通常,以下装置可以连接至I/O接口605:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置606;包括例如液晶显示器(LCD)、扬声器、振动器等的输出装置607;包括例如磁带、硬盘等的存储装置606;以及通信装置609。通信装置609可以允许电子设备600与其他设备进行无线或有线通信以交换数据。虽然图中示出了具有各种装置的电子设备600,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在非暂态计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置609从网络上被下载和安装,或者从存储装置606被安装,或者从ROM602被安装。在该计算机程序被处理装置601执行时,执行本公开实施例的方法中限定的上述功能。
需要说明的是,本公开上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是—但不限于—电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。
在一些实施方式中,客户端、服务器可以利用诸如HTTP(超文本传输协议)之类的任何当前已知或未来研发的网络协议进行通信,并且可以与任意形式或介质的数字数据通信(例如,通信网络)互连。通信网络的示例包括局域网(“LAN”),广域网(“WAN”),网际网(例如,互联网)以及端对端网络(例如,adhoc端对端网络),以及任何当前已知或未来研发的网络。
上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。
上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备:获取至少两个网际协议地址;向节点评价设备发送包括所述至少两个网际协议地址的节点评价请求,其中,所述节点评价设备从所述至少两个网际协议地址中,选取网际协议地址并返回;接收所述节点评价设备返回的网际协议地址;其中,所获取的网际协议地址指示内容分发网络中的边缘节点。
或者,上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备:接收包括至少两个网际协议地址的节点评价请求;从所述至少两个网际协议地址中,选取网际协议地址;返回选取出的网际协议地址;其中,接收到的网际协议地址指示内容分发网络中的边缘节点。
可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序代码,上述程序设计语言包括但不限于面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,单元的名称在某种情况下并不构成对该单元本身的限定,例如,第一获取单元还可以被描述为“获取至少两个网际协议地址的单元”。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
根据本公开的一个或多个实施例,提供了一种适用于异构环境中的通信方法,其特征在于,所述方法包括:
为第一汇总处理模块和第二汇总处理模块分配工作负载,每个所述工作负载分别与总工作负载存在预设关系;
将张量划分为预设大小的若干部分张量;
索引每个所述部分张量并进行哈希处理,以使得相同的所述部分张量发送至同一汇总处理模块;
根据所述预设关系与所述汇总处理模块通信,以分别向所述汇总处理模块发送和\或从所述汇总处理模块接收所述部分张量;
所述预设关系中,所述第一汇总处理模块的数量至少为1个,所述第二汇总处理模块的数量至少为2个,并且所述第一汇总处理模块的数量不多于所述第二汇总处理模块的数量。
根据本公开的一个或多个实施例,提供了一种适用于异构环境中的通信方法,其特征在于,
基于所述预设关系,分别为所述第一汇总处理模块和所述第二汇总处理模块分配第一工作负载和第二工作负载,其中,所述预设关系包括第一关系和第二关系;
所述第一工作负载和所述第二工作负载分别与总工作负载存在所述第一关系和所述第二关系。
根据本公开的一个或多个实施例,提供了一种适用于异构环境中的通信方法,其特征在于,
其中,k为第一汇总处理模块的数量,n为第二汇总处理模块的数量。
根据本公开的一个或多个实施例,提供了一种适用于异构环境中的通信方法,其特征在于,
所述第一汇总处理模块运行在CPU服务器,所述第二汇总处理模块运行在GPU服务器。
根据本公开的一个或多个实施例,提供了一种适用于异构环境中的通信方法,其特征在于,
所述CPU服务器的通信时间与所述GPU服务器的通信时间相等。
根据本公开的一个或多个实施例,提供了一种适用于异构环境中的通信方法,其特征在于,
还包括,基于所述GPU服务器的内部处理能力和拓扑结构进行张量聚合;
所述拓扑结构至少包括基于PCIe的服务器拓扑或基于NVLink的服务器拓扑。
根据本公开的一个或多个实施例,提供了一种适用于异构环境中的通信方法,其特征在于,
当所述拓扑结构为基于PCIe的服务器拓扑时,所述方法还包括:
将数据发送到所述第一汇总处理模块或所述第二汇总处理模块并从所述第一汇总处理模块或所述第二汇总处理模块接收全局聚合的数据。
根据本公开的一个或多个实施例,提供了一种适用于异构环境中的通信方法,其特征在于,
还包括,在与所述汇总处理模块通信之前或之后聚合或广播所述张量。
根据本公开的一个或多个实施例,提供了一种适用于异构环境中的通信方法,其特征在于,
还包括,将计算密集型参数更新分配给GPU服务器,并且在CPU服务器中仅进行求和运算。
根据本公开的一个或多个实施例,提供了一种适用于异构环境中的通信方法,其特征在于,
还包括以下步骤的至少一者,
共享内存数据路径;
使用页面对齐的内存作为接收缓冲区;
对每个RDMA WRITE仅强制执行一个散布收集条目。
根据本公开的一个或多个实施例,提供了一种适用于异构环境中的通信装置,其特征在于,包括:
负载分配模块,用于为第一汇总处理模块和第二汇总处理模块分配工作负载,每个所述工作负载分别与总工作负载存在预设关系;
张量划分模块,用于将张量划分为预设大小的若干部分张量;
张量索引模块,用于索引每个所述部分张量并进行哈希处理,以使得相同的所述部分张量发送至同一汇总处理模块;
通信模块,用于根据所述预设关系与所述汇总处理模块通信,以分别向所述汇总处理模块发送和\或从所述汇总处理模块接收所述部分张量;
所述预设关系中,所述第一汇总处理模块的数量至少为1个,所述第二汇总处理模块的数量至少为2个,并且所述第一汇总处理模块的数量不多于所述第二汇总处理模块的数量。
根据本公开的一个或多个实施例,提供了一种适用于异构环境中的通信装置,其特征在于,
所述负载分配模块基于所述预设关系分别为所述第一汇总处理模块和所述第二汇总处理模块分配第一工作负载和第二工作负载,其中,所述预设关系包括第一关系和第二关系;
所述第一工作负载和所述第二工作负载分别与总工作负载存在所述第一关系和所述第二关系;
所述第一汇总处理模块运行在CPU服务器,和所述第二汇总处理模块运行在GPU服务器;
所述CPU服务器的通信时间与所述GPU服务器的通信时间相等。
根据本公开的一个或多个实施例,提供了一种适用于异构环境中的通信装置,其特征在于,
其中,k为第一汇总处理模块的数量,n为第二汇总处理模块的数量。
根据本公开的一个或多个实施例,提供了一种适用于异构环境中的通信装置,其特征在于,
还包括,张量聚合模块,用于基于所述GPU服务器的内部处理能力和拓扑结构进行张量聚合,并且在与所述汇总处理模块通信之前或之后聚合或广播所述张量;
所述拓扑结构至少包括基于PCIe的服务器拓扑或基于NVLink的服务器拓扑。
根据本公开的一个或多个实施例,提供了一种适用于异构环境中的通信装置,其特征在于,
还包括,当所述拓扑结构为基于PCIe的服务器拓扑时,所述张量聚合模块还用于:
将数据发送到所述第一汇总处理模块或所述第二汇总处理模块并从所述第一汇总处理模块或所述第二汇总处理模块接收全局聚合的数据。
根据本公开的一个或多个实施例,提供了一种适用于异构环境中的通信装置,其特征在于,
还包括,优化性能模块,至少用于实现以下步骤的至少一者:
将计算密集型参数更新分配给GPU服务器,并且在CPU服务器中仅进行求和运算;
共享内存数据路径;
使用页面对齐的内存作为接收缓冲区;
对每个RDMA WRITE仅强制执行一个散布收集条目。
根据本公开的一个或多个实施例,提供了一种适用于异构环境中的通信系统,其特征在于,
如前所述的适用于异构环境中的通信装置;
汇总处理模块,向所述通信装置发送和\或从所述通信装置接收张量;
服务器,运行所述通信装置和所述汇总处理模块。
根据本公开的一个或多个实施例,提供了一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器执行所述计算机程序时实现如上述任一项所述的方法。
根据本公开的一个或多个实施例,提供了一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述任一项所述的方法。
以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开中所涉及的公开范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述公开构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
此外,虽然采用特定次序描绘了各操作,但是这不应当理解为要求这些操作以所示出的特定次序或以顺序次序执行来执行。在一定环境下,多任务和并行处理可能是有利的。同样地,虽然在上面论述中包含了若干具体实现细节,但是这些不应当被解释为对本公开的范围的限制。在单独的实施例的上下文中描述的某些特征还可以组合地实现在单个实施例中。相反地,在单个实施例的上下文中描述的各种特征也可以单独地或以任何合适的子组合的方式实现在多个实施例中。
尽管已经采用特定于结构特征和/或方法逻辑动作的语言描述了本主题,但是应当理解所附权利要求书中所限定的主题未必局限于上面描述的特定特征或动作。相反,上面所描述的特定特征和动作仅仅是实现权利要求书的示例形式。
Claims (19)
1.一种适用于异构环境中的通信方法,其特征在于,包括:
为第一汇总处理模块和第二汇总处理模块分配工作负载,每个所述工作负载分别与总工作负载存在预设关系;
将张量划分为预设大小的若干部分张量;
索引每个所述部分张量并进行哈希处理,以使得相同的所述部分张量发送至同一汇总处理模块;
根据所述预设关系与所述汇总处理模块通信,以分别向所述汇总处理模块发送和\或从所述汇总处理模块接收所述部分张量;
所述预设关系中,所述第一汇总处理模块的数量至少为1个,所述第二汇总处理模块的数量至少为2个,并且所述第一汇总处理模块的数量不多于所述第二汇总处理模块的数量。
2.如权利要求1所述的适用于异构环境中的通信方法,其特征在于,
基于所述预设关系,分别为所述第一汇总处理模块和所述第二汇总处理模块分配第一工作负载和第二工作负载,其中,所述预设关系包括第一关系和第二关系;
所述第一工作负载和所述第二工作负载分别与总工作负载存在所述第一关系和所述第二关系。
4.如权利要求2所述的适用于异构环境中的通信方法,其特征在于,
所述第一汇总处理模块运行在CPU服务器,所述第二汇总处理模块运行在GPU服务器。
5.如权利要求4所述的适用于异构环境中的通信方法,其特征在于,
所述CPU服务器的通信时间与所述GPU服务器的通信时间相等。
6.如权利要求4所述的适用于异构环境中的通信方法,其特征在于,还包括,
基于所述GPU服务器的内部处理能力和拓扑结构进行张量聚合;
所述拓扑结构至少包括基于PCIe的服务器拓扑或基于NVLink的服务器拓扑。
7.如权利要求6所述的适用于异构环境中的通信方法,其特征在于,
当所述拓扑结构为基于PCIe的服务器拓扑时,所述方法还包括:
将数据发送到所述第一汇总处理模块或所述第二汇总处理模块并从所述第一汇总处理模块或所述第二汇总处理模块接收全局聚合的数据。
8.如权利要求1所述的适用于异构环境中的通信方法,其特征在于,还包括,
在与所述汇总处理模块通信之前或之后聚合或广播所述张量。
9.如权利要求1所述的适用于异构环境中的通信方法,其特征在于,还包括,
将计算密集型参数更新分配给GPU服务器,并且在CPU服务器中仅进行求和运算。
10.如权利要求1所述的适用于异构环境中的通信方法,其特征在于,还包括以下步骤的至少一者,
共享内存数据路径;
使用页面对齐的内存作为接收缓冲区;
对每个RDMA WRITE仅强制执行一个散布收集条目。
11.一种适用于异构环境中的通信装置,其特征在于,包括:
负载分配模块,用于为第一汇总处理模块和第二汇总处理模块分配工作负载,每个所述工作负载分别与总工作负载存在预设关系;
张量划分模块,用于将张量划分为预设大小的若干部分张量;
张量索引模块,用于索引每个所述部分张量并进行哈希处理,以使得相同的所述部分张量发送至同一汇总处理模块;
通信模块,用于根据所述预设关系与所述汇总处理模块通信,以分别向所述汇总处理模块发送和\或从所述汇总处理模块接收所述部分张量;
所述预设关系中,所述第一汇总处理模块的数量至少为1个,所述第二汇总处理模块的数量至少为2个,并且所述第一汇总处理模块的数量不多于所述第二汇总处理模块的数量。
12.根据权利要求11所述的适用于异构环境中的通信装置,其特征在于,
所述负载分配模块基于所述预设关系分别为所述第一汇总处理模块和所述第二汇总处理模块分配第一工作负载和第二工作负载,其中,所述预设关系包括第一关系和第二关系;
所述第一工作负载和所述第二工作负载分别与总工作负载存在所述第一关系和所述第二关系;
所述第一汇总处理模块运行在CPU服务器,所述第二汇总处理模块运行在GPU服务器;
所述CPU服务器的通信时间与所述GPU服务器的通信时间相等。
14.根据权利要求11所述的适用于异构环境中的通信装置,其特征在于,还包括,
张量聚合模块,用于基于所述GPU服务器的内部处理能力和拓扑结构进行张量聚合,并且在与所述汇总处理模块通信之前或之后聚合或广播所述张量;
所述拓扑结构至少包括基于PCIe的服务器拓扑或基于NVLink的服务器拓扑。
15.根据权利要求14所述的适用于异构环境中的通信装置,其特征在于,还包括,
当所述拓扑结构为基于PCIe的服务器拓扑时,所述张量聚合模块还用于:
将数据发送到所述第一汇总处理模块或所述第二汇总处理模块并从所述第一汇总处理模块或所述第二汇总处理模块接收全局聚合的数据。
16.根据权利要求11所述的适用于异构环境中的通信装置,其特征在于,还包括,
优化性能模块,用于实现以下步骤的至少一者:
将计算密集型参数更新分配给GPU服务器,并且在CPU服务器中仅进行求和运算;
共享内存数据路径;
使用页面对齐的内存作为接收缓冲区;
对每个RDMA WRITE仅强制执行一个散布收集条目。
17.一种适用于异构环境中的通信系统,其特征在于,包括,
根据权利要求11-16所述的适用于异构环境中的通信装置;
汇总处理模块,向所述通信装置发送和\或从所述通信装置接收张量;
服务器,运行所述通信装置和所述汇总处理模块。
18.一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器执行所述计算机程序时实现如权利要求1-10中任一项所述的方法。
19.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1-10中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010547423.0A CN111680791B (zh) | 2020-06-16 | 2020-06-16 | 适用于异构环境中的通信方法、装置、系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010547423.0A CN111680791B (zh) | 2020-06-16 | 2020-06-16 | 适用于异构环境中的通信方法、装置、系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111680791A CN111680791A (zh) | 2020-09-18 |
CN111680791B true CN111680791B (zh) | 2023-04-18 |
Family
ID=72455151
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010547423.0A Active CN111680791B (zh) | 2020-06-16 | 2020-06-16 | 适用于异构环境中的通信方法、装置、系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111680791B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114356818A (zh) * | 2022-03-17 | 2022-04-15 | 苏州浪潮智能科技有限公司 | 一种多通道数据传输方法、装置和存储介质 |
CN116069511A (zh) * | 2023-03-10 | 2023-05-05 | 苏州浪潮智能科技有限公司 | 用于深度学习的系统、处理数据的方法及电子设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107766148A (zh) * | 2017-08-31 | 2018-03-06 | 北京百度网讯科技有限公司 | 一种异构集群及任务处理方法和装置 |
CN109191364A (zh) * | 2018-08-01 | 2019-01-11 | 南京天数智芯科技有限公司 | 加速人工智能处理器的硬件架构 |
CN109885388A (zh) * | 2019-01-31 | 2019-06-14 | 上海赜睿信息科技有限公司 | 一种适用于异构系统的数据处理方法和装置 |
CN109918184A (zh) * | 2019-03-01 | 2019-06-21 | 腾讯科技(深圳)有限公司 | 图片处理系统、方法及相关装置和设备 |
CN110134636A (zh) * | 2018-02-09 | 2019-08-16 | 中兴通讯股份有限公司 | 模型训练方法、服务器和计算机可读存储介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111819579B (zh) * | 2018-08-03 | 2022-02-08 | 谷歌有限责任公司 | 跨计算装置分布张量计算的方法、系统和介质 |
US11423254B2 (en) * | 2019-03-28 | 2022-08-23 | Intel Corporation | Technologies for distributing iterative computations in heterogeneous computing environments |
-
2020
- 2020-06-16 CN CN202010547423.0A patent/CN111680791B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107766148A (zh) * | 2017-08-31 | 2018-03-06 | 北京百度网讯科技有限公司 | 一种异构集群及任务处理方法和装置 |
CN110134636A (zh) * | 2018-02-09 | 2019-08-16 | 中兴通讯股份有限公司 | 模型训练方法、服务器和计算机可读存储介质 |
CN109191364A (zh) * | 2018-08-01 | 2019-01-11 | 南京天数智芯科技有限公司 | 加速人工智能处理器的硬件架构 |
CN109885388A (zh) * | 2019-01-31 | 2019-06-14 | 上海赜睿信息科技有限公司 | 一种适用于异构系统的数据处理方法和装置 |
CN109918184A (zh) * | 2019-03-01 | 2019-06-21 | 腾讯科技(深圳)有限公司 | 图片处理系统、方法及相关装置和设备 |
Also Published As
Publication number | Publication date |
---|---|
CN111680791A (zh) | 2020-09-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108509276B (zh) | 一种边缘计算环境中的视频任务动态迁移方法 | |
CN110134636B (zh) | 模型训练方法、服务器和计算机可读存储介质 | |
CN108563808B (zh) | 基于fpga的异构可重构图计算加速器系统的设计方法 | |
JP7029554B2 (ja) | 深層学習モデルをトレーニングするための方法及び装置、電子機器、コンピュータ可読記憶媒体並びにコンピュータプログラム | |
CN110262901B (zh) | 一种数据处理方法及数据处理系统 | |
CN102906726B (zh) | 协处理加速方法、装置及系统 | |
CN114020470B (zh) | 资源分配方法、装置、可读介质及电子设备 | |
WO2023082560A1 (zh) | 一种任务处理方法、装置、设备及介质 | |
CN111680791B (zh) | 适用于异构环境中的通信方法、装置、系统 | |
CN111427706B (zh) | 数据处理方法、多服务器系统、数据库、电子设备及存储介质 | |
CN107122244A (zh) | 一种基于多gpu的图数据处理系统及方法 | |
CN111475274A (zh) | 云协同多任务调度方法及装置 | |
WO2023040197A1 (zh) | 一种跨节点通信方法、装置、设备及可读存储介质 | |
CN114675964A (zh) | 基于联邦决策树模型训练的分布式调度方法、系统及介质 | |
CN111580974B (zh) | Gpu实例分配方法、装置、电子设备和计算机可读介质 | |
Nicolae et al. | Towards memory-optimized data shuffling patterns for big data analytics | |
CN112418389A (zh) | 数据处理方法、装置、电子设备及计算机可读存储介质 | |
CN117311975A (zh) | 大模型并行训练方法、系统及可读存储介质 | |
Chu et al. | Dynamic kernel fusion for bulk non-contiguous data transfer on GPU clusters | |
CN115879543A (zh) | 一种模型训练方法、装置、设备、介质及系统 | |
CN112148474B (zh) | 面向负载均衡的龙芯大数据一体机自适应任务分割方法及系统 | |
CN112416887B (zh) | 信息交互方法、装置和电子设备 | |
CN117170986B (zh) | 芯片一致性处理系统,及其方法、装置、设备及介质 | |
Yang et al. | DFS: Joint data formatting and sparsification for efficient communication in Distributed Machine Learning | |
US10630957B2 (en) | Scalable distributed computation framework for data-intensive computer vision workloads |
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 |