CN112235344A - 一种面向分布式机器学习的稀疏通信模型的实现方法 - Google Patents
一种面向分布式机器学习的稀疏通信模型的实现方法 Download PDFInfo
- Publication number
- CN112235344A CN112235344A CN202010927942.XA CN202010927942A CN112235344A CN 112235344 A CN112235344 A CN 112235344A CN 202010927942 A CN202010927942 A CN 202010927942A CN 112235344 A CN112235344 A CN 112235344A
- Authority
- CN
- China
- Prior art keywords
- communication
- algorithm
- sparse
- nodes
- processes
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/14—Network analysis or design
- H04L41/142—Network analysis or design using statistical or mathematical methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/14—Network analysis or design
- H04L41/145—Network analysis or design involving simulating, designing, planning or modelling of a network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- 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
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/70—Reducing energy consumption in communication networks in wireless communication networks
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Algebra (AREA)
- Evolutionary Computation (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Artificial Intelligence (AREA)
- Medical Informatics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Probability & Statistics with Applications (AREA)
- Pure & Applied Mathematics (AREA)
- Mobile Radio Communication Systems (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种面向分布式机器学习的稀疏通信模型的实现方法。根据多核分布式系统底层通信特征对进程进行分组,将处于同一节点的进程分为一组,并采用二维向量保存分组信息,便于获取分组信息。针对稀疏数据特征,设计了稀疏数据的通信协议。在此基础上,实现了稀疏数据的allreduce通信算法。该通信算法根据节点数的不同及消息长度的不同选择不同的实现方法。当节点数为2的幂时,采用hier_recursive_halving算法来实现短消息的allreduce操作,采用hier_split_allgather算法来实现长消息的allreduce操作。当节点数不是2的幂时,采用hier_split_scannter算法实现allreduce操作。这三种通信算法利用层次化稀疏通信模型来减少节点间通信开销,且本发明根据稀疏数据的特征动态选择通信算法。
Description
技术领域
本发明涉及一种高效的稀疏通信方法,具体涉及一种面向分布式机器学习的稀疏通信模型的实现方法,主要目的是减少分布机器学习算法的通信开销,涉及机器学习、大数据处理和并行计算领域。
背景技术
近年来,硬件技术的发展为机器学习的发展提供了广阔的平台,针对机器学习设计的软件平台进一步推动了机器学习的飞速发展。由于数据集及模型规模的不断增大,将机器学习任务分布到多个计算节点上计算是目前最普遍的做法。最常用的分布式机器学习算法为基于数据并行的分布式机器学习算法,即每个计算节点保存部分的数据集,并利用本地数据集更新模型参数,最后节点间需要通过交换信息以保证模型参数的一致性。基于数据并行的分布式机器学习算法通常采用基于allreduce的对等模式或基于参数服务器的主从模式来实现。由于节点间需要传送模型参数的值,受带宽资源的限制,该类算法的可扩展性受到限制。因此,通过对传送参数进行压缩或稀疏化是减少分布式系统节点间通信开销的一种有效途径。针对稀疏数据设计高效的集合通信算法可进一步提高系统通信效率,目前已有很多研究者专门为稀疏数据集设计了各类高效的通信算法。
另一方面,多核/多处理器分布式集群已变得非常普遍,针对多核/多处理器分布式集群特征设计的高效的集合通信算法近年来也受到高度关注。如针对MPI底层通信机制设计的层次化通信模型、拓扑无关的层次化通信模型等。但目前尚没有相关研究专门为稀疏数据集设计层次化通信模型。与稠密数据不同的是,稀疏数据在通信过程中参数个数是变化的,因此如何为稀疏数据集设计层次化通信模型,减少节点间通信开销,提高系统通信效率,成为亟待解决的技术问题。
发明内容
本发明针对已有技术的不足,提供一种面向分布式机器学习的稀疏通信模型的实现方法,根据机器学习领域中稀疏模型参数特征及多核/处理器分布式集群底层通信特征,设计层次化的通信模型,为分布式机器学习算法提供层次化稀疏通信算法。本发明方法分为进程初始化、稀疏数据通信协议设计及稀疏数据通信算法的设计与实现。本发明方法实施的进程初始化,主要是根据分布式集群中每个进程所处的节点的不同对进程进行分组,为实现层次化通信算法提供支持。
为达到上述目的,本发明采用下述技术方案:
一种面向分布式机器学习的稀疏通信模型的实现方法,该方法实现包括如下过程:
A.采用进程初始化方法,进行进程初始化函数的设计及实现过程;
B.稀疏数据通信协议设计过程;
C.稀疏数据通信算法的设计与实现过程。
优选地,所述步骤A中进程初始化方法如下:
(1)获取进程号及主机名信息:
利用MPI接口函数直接获取当前进程的进程号及主机名,将相关信息保存到结构体id_host_msg中,结构体id_host_msg的定义如下:
typedefstruct{
intpId;//系统为进程分配的进程号
char*hostName;//进程所在节点的主机名
}id_host_msg;
(2)进程分组:
将主机名相同的进程分为一组,定义二维向量groupInfo,并将分组信息保存到二维向量groupInfo中,groupInfo的具体定义如下:
std::vector<std::vector<int>>groupInfo;
groupInfo的每一个元素代表一组进程的信息,包含了该组内所有进程的进程号;
(3)获取当前进程的组号和组内编号:
根据groupInfo的信息,获取进程的组号和组内编号;每个进程的进程号对应groupInfo中一个元素的值,若当前进程的进程号对应groupInfo中元素为groupInfo[g_index][in_index],则将当前进程的组号设置为g_index,组内编号设置为in_index;
采用二维向量groupInfo保存进程的分组信息,可直接读取向量元素获取分组信息,向量groupInfo[g_index]表示第g_index组进程;同样,可直接利用组号及组内编号获取对应的进程号。
优选地,所述稀疏数据的通信协议,包括稀疏数据的表示、传输数据类型的动态选择及稀疏数据的聚合规则,所述步骤B中的稀疏数据通信协议设计方法如下:
(1)稀疏数据的表示:
由于稀疏数据只包含部分的模型参数信息,所以稀疏数据除了保存模型参数的值外,还需要保存对应的索引值,即需要保存参数的“键-值”对信息;利用键-值对保存稀疏数据,将每个稀疏数据的值及对应索引值按顺序分别保存到数组sparse_value和数组sparse_index中;
(2)传输数据类型的动态选择:
假如存储一个索引值所需要的字节数为Fk,存储一个模型参数所需要的字节数为Fv,则存储n个稀疏数据所占用的字节数为n(Fk+Fv);而存储N个模型参数占用的字节数为NFv;当n>NFv/(Fk+Fv)时,采用稀疏数据通信反而会比采用稠密数据占用更多的字节数;从而在通信时,需要根据稀疏数据的个数动态选择通信数据类型;若采用稀疏数据通信;否则,选择稠密数据通信;
(3)数据聚合规则:
稀疏数据以字符串形式进行传输,将模型参数的索引值直接连接到模型参数后,接收方根据接收到参数的个数再将参数的值及索引值进行分离,并根据索引值不同执行不同的操作;
若接收到的参数的索引值与当前进程的索引值重叠或接收到的稀疏数据索引值恰好属于当前进程稀疏数据索引值的集合,则将索引相同的本进程的模型参数值与接收到的模型参数的值执行规约操作;若接收到的参数的索引值与当前进程的索引值不重叠,则将接收到的参数值及对应索引值分别增加到本进程的sparse_value数组及sparse_index数组中。
优选地,所述步骤C中的稀疏数据通信算法的设计及实现方法如下:
所述稀疏数据通信算法功能为实现所有节点的稀疏模型参数的allreduce操作;根据节点数的不同及消息长度不同采用不同的实现方法;根据节点数不同,本发明将节点类型分为节点数为2的幂的情形和节点数不是2的幂的情形。根据消息长度不同,本发明将消息类型分为短消息和长消息,消息类型由用户通过参数输入确定;若节点数为2的幂,本发明用hier_recursive_halving算法来实现短消息的allreduce操作,利用hier_split_allgather算法来实现长消息的allreduce操作;若节点数不为2的幂,本发明利用hier_split_scannter算法来实现allreduce操作;
对于稠密数据,常用的allreduce实现算法有recursive_halving、recursive_doubling、ring-allreduce算法;对于短消息,recursive_halving、recursive_doubling算法比其他算法更有优势,当节点数较多且当消息长度较大时,ring-allreduce算法比其他allreduce的实现算法更有优势;类似的,针对稀疏数据,也将消息类型分为短消息和长消息。针对短消息,本发明利用hier_recursive_halving算法来实现allreduce操作,由于稀疏数据在聚合过程中可能会增加参数个数,而在分布式系统中,节点间进程的通信速度往往小于节点内进程的通信速度,因此本发明先聚合节点间进程的参数,再聚合节点内进程参数,所述hier_recursive_halving算法包括如下步骤:
(1)组间进程通信:
每个进程与其他组进程中对应组内编号相同的进程进行通信,通信对象的组号由recursive-halving算法决定,即第一轮通信时,节点间的距离为第二轮通信时,节点间距离为最后一轮通信节点间距离为1。G表示分布式系统中使用的节点数;
(2)组内进程通信:
针对长消息,本发明利用hier_split_allgather算法来实现allreduce操作,步骤如下:
(1)每个进程将参数按照索引值分为Np块,Np表示分布式系统中的分配总进程数;
(2)split阶段:
该阶段每个进程负责聚合一块模型参数,每个进程直接与其他进程进行通信;聚合参数时,将每个进程作为主节点,其他进程看作从节点;因此该阶段通信次数为Np-1,节点间进程先进行通信,然后是节点内进程的通信;
(3)allgather阶段:
每个节点将split阶段负责聚合的块广播给其他节点,该阶段采用recursive-halving算法实现,通信过程与hier_recursive_halving算法的通信过程一致;
hier_recursive_halving和heir_split_allgather算法中,假设节点数为2的幂,若节点数不是2的幂,那么节点间需要增加额外的通信次数。因此针对节点数不是2的幂的情形,本发明利用hier_split_scannter算法来实现稀疏数据的allreduce操作。该算法分为split阶段和scannter阶段,split阶段与heir_split_allgather算法的split阶段操作一致。在scannter阶段又分为节点间进程通信和节点内进程通信。节点间通信时,将组内编号相同的进程分别组成一个环,然后利用ring-allreduce算法将本进程负责聚合的参数块发送给其他进程。节点内进程利用recursive-halving算法执行allgather操作。
与现有技术相比较,本发明具有如下显而易见的突出实质性特点和显著的优点:
1.由于在多核分布式集群中,节点间进程与节点内进程通信机制的不同,节点间的进程的通信开销是影响分布式系统通信开销的主要因素;本发明方法针对不同情形设计不同的通信算法,实现针对稀疏数据的层次化通信算法,以减少节点间通信开销;
2.本发明根据多核分布式系统底层通信特征对进程进行分组,将处于同一节点的进程分为一组,并采用二维向量保存分组信息,便于获取分组信息;本发明针对稀疏数据特征,设计了稀疏数据的通信协议;在此基础上,本发明实现了稀疏数据的allreduce通信算法,该通信算法根据节点数的不同及消息长度的不同选择不同的实现方法,当节点数为2的幂时,采用hier_recursive_halving算法来实现短消息的allreduce操作,采用hier_split_allgather算法来实现长消息的allreduce操作;当节点数不是2的幂时,采用hier_split_scannter算法实现allreduce操作;本发明采用三种通信算法,利用层次化稀疏通信模型来减少节点间通信开销,且本发明根据稀疏数据的特征动态选择通信算法。
附图说明
图1是本发明中的程序流程图。
图2是本发明中hier_recursive_halving算法进程间通信过程示意图;图中,节点数为4,每个节点分配2个进程,Gi表示第i个节点,Pij表示Gi中的第j个进程。
图3是本发明中hier_split_allgather算法在split阶段进程间通信过程示意图;图中,节点数为4,每个节点分配2个进程,Gi表示第i个节点,Pij表示Gi中的第j个进程,Bijk表示进程Pij的第k块参数,Bl表示所有进程的第l块参数聚合后的参数值。
图4是本发明中hier_split_allgather算法在allgather阶段进程间通信过程示意图;图中,节点数为4,每个节点分配2个进程,Gi表示第i个节点,Pij表示Gi中的第j个进程,Bl表示所有进程的第l块参数聚合后的参数值。
图5是本发明中hier_split_scannter算法在split阶段进程间通信过程示意图;图中,节点数为3,每个节点分配2个进程,Gi表示第i个节点,Pij表示Gi中的第j个进程,Bijk表示进程Pij的第k块参数,Bl表示所有进程的第l块参数聚合后的参数值。
图6是本发明中hier_split_scannter算法在scannter阶段进程间通信过程示意图;图中,节点数为3,每个节点分配2个进程,Gi表示第i个节点,Pij表示Gi中的第j个进程,Bijk表示进程Pij的第k块参数,Bl表示所有进程的第l块参数聚合后的参数值。
具体实施方式
下面结合说明书附图和优选实施例对本发明做进一步详细的说明。
实施例一:
参见图1,一种面向分布式机器学习的稀疏通信模型的实现方法,该方法实现包括如下过程:
A.采用进程初始化方法,进行进程初始化函数的设计及实现过程;
B.稀疏数据通信协议设计过程;
C.稀疏数据通信算法的设计与实现过程。
本实施例方法实施的进程初始化,通过稀疏数据通信协议设计和算法的设计与实现过程,实现了面向分布式机器学习的稀疏通信模型的实现。
实施例二:
本实施例与实施例一基本相同,特别之处如下:
参见图1-6,所述步骤A中进程初始化方法如下:
1)获取当前进程的进程号及主机名,本部分内容定义了结构体id_host_msg,该结构体定义如下:
typedefstruct{
intpId;//系统为进程分配的进程号
char*masterName;//进程所在节点的主机名
}id_host_msg;
2)进程分组,本部分将主机名相同的进程分为一组,并定义了向量groupInfo保存分组信息,groupInfo定义如下:
std::vector<std::vector<int>>groupInfo;
3)获取进程的组号和组内编号,本部分利用groupInfo的信息获取进程的组号及组内编号。
所述步骤B中稀疏数据通信协议设计方法如下:
1)稀疏数据的表示,利用键-值对保存稀疏数据,对应索引值及模型参数的值分别用sparse_index数据及sparse_value数组表示;
2)传输数据类型的动态选择,通过稀疏数据参数个数来选择采用稀疏数据还是稠密数据进行通信,若n>NFv/(Fk+Fv),利用稠密数据通信,否则,采用稀疏数据通信;其中Fk表示存储一个索引值所需要的字节数,Fv表示存储一个模型参数所需要的字节数,n为稀疏参数个数,N为模型参数的维度;
3)数据聚合规则,稀疏数据以字符串形式进行传输,将模型参数的索引值直接连接到模型参数后;接收方根据接收到参数的个数将参数的值及索引值进行分离,并根据索引值不同执行不同的操作;若接收到的稀疏数据索引值恰好属于当前进程稀疏数据索引值的集合,则直接对两者的模型参数执行规约操作;否则,需要将索引及对应的值增加到当前节点的sparse_index数组及sparse_value数组中。
所述步骤C中稀疏数据通信算法的设计及实现方法如下:
根据节点数及消息长度的不同,使用不同的通信算法实现稀疏数据的allreduce操作;当节点数为2的幂且消息类型为短消息时,使用hier_recursive_halving算法来实现allreduce操作;当节点数为2的幂且消息类型为长消息时,使用hier_split_allgather算法来实现allreduce操作;当节点数不是2的幂时,则使用hier_split_scannter算法来实现allreduce操作;
hier_recursive_halving算法包括如下步骤:
1)组间进程通信:每个进程与其他组进程中对应组内编号相同的进程进行通信,通信对象的组号由recursive-halving算法决定,即第一轮通信时,节点间的距离为第二轮通信,距离为最后一轮通信节点间距离为1;
hier_split_allgather算法分为slit和allgather两个阶段,详细步骤如下:
1)每个进程将参数按照索引值分为NP块;
2)split阶段:该阶段每个进程负责聚合一块模型参数,每个进程直接与其他进程进行通信;聚合参数时,将每个进程当作主节点,其他进程为从节点;因此该阶段通信次数为NP-1,节点间进程先进行通信,然后是节点内进程的通信;
3)allgather阶段:每个进程将split阶段负责聚合的块广播给其他进程,该阶段采用recursive-halving算法实现,通信过程与hier_recursive_halving算法的通信过程一致;
hier_split_scannter算法分为split和scannter阶段,其中split阶段与hier_split_allgather的split阶段一样,而在scannter阶段,先执行节点间通信,每个进程与其他组中组内编号相同的进程进行通信,进程间采用ring-allreduce算法进行通信;然后执行节点内进程通信,节点内进程利用recursive_halving算法进行通信。
实施例三:
本实施例与前述实施例基本相同,特别之处如下:
一种基于多核/处理器分布式集群为机器学习算法设计层次化稀疏通信模型,包括进程初始化;稀疏数据通信协议设计及稀疏数据通信算法的设计与实现,具体实现如下:
1、进程初始化包括如下步骤:
1)获取进程基本信息:
获取进程号并读取当前进程所处节点的主机名,将相关信息保存到结构体id_host_msg中;进程号可直接调用MPI_Comm_rank函数获取,主机名直接调用函数MPI_Get_processor_name获取;
2)进程分组:
首先调用MPI_Allgather接口函数对每个进程的id_host_msg信息执行allgather操作;然后将主机名相同的进程分为一组,并将分组信息保存到向量groupInfo中;groupInfo的每个元素为vector类型,每个元素保存一组进程的信息,包含该组内所有进程的进程号;groupInfo[g_index][in_index]表示组号为g_index、组内编号为in_index的进程;并将每个进程对应的组号及组内编号保存到变量gId及inId中;groupInfo.size()表示系统分配的节点数G,groupInfo[g_index].size()表示第g_index组进程中的进程总数;
2、稀疏数据通信协议设计包括如下内容:
1)稀疏数据的表示:本实施例利用数组sparse_index和数组sparse_value分别表示稀疏数据的索引值及模型参数的值,并利用参数n表示稀疏参数的个数;
2)传输数据类型的动态选择:
3)数据聚合规则:
稀疏数据以字符串数组形式进行传送,传送参数前一部分为模型参数的值,后一部分为索引值;接收方根据接收到的字节数将字符串再分解为模型参数和索引值;并根据索引值不同执行不同的操作,若接收到的稀疏数据索引值恰好属于当前进程稀疏数据索引值的集合,则直接将两者的值相加;否则,需要将索引及对应的值增加到当前节点的sparse_index及sparse_value中,并修改n的值;
3、稀疏数据通信算法的设计与实现:
所述稀疏数据通信算法的实现根据节点数的不同及消息长度的不同采用不同的实现方法;根据节点数不同,将节点数类型分为节点数为2的幂情形和节点数不是2的幂的情形;根据消息长度不同,本实施例将消息分为短消息和长消息,消息类型由用户通过参数输入;若节点数为2的幂,本实施例利用hier_recursive_halving算法来实现短消息的allreduce操作,利用hier_split_allgather算法来实现长消息allreduce操作;若节点数不为2的幂,本实施例利用hier_split-scannter算法来实现allreduce操作;hier_recursive_halving算法包括如下步骤:
1)组间进程通信:
2)组内进程通信:
hier_split_allgather算法分为slit和allgather两个阶段,详细步骤如下:
1)将参数按照索引值分为NP块;
2)split阶段:
该阶段每个进程负责聚合一块模型参数,每个进程直接与其他进程进行通信;聚合参数时,将每个进程当作主节点,其他进程为从节点;因此该阶段通信次数为NP-1,节点间进程先进行通信,然后是节点内进程的通信;
3)allgather阶段:
每个进程将split阶段负责聚合的块广播给其他进程,该阶段采用recursive-halving算法实现,通信过程与hier_recursive_halving算法的通信过程一致;
hier_split_scannter算法分为split和scannter阶段,其中split阶段与hier_split_allgather的split阶段一样,而在scannter阶段,先执行节点间通信,每个进程与其他组中组内编号相同的进程进行通信,进程间采用ring-allreduce算法进行通信。然后执行节点内进程通信,节点内进程利用recursive_halving算法进行通信。
实验测试及结果分析
本实验环境由1000M以太网连接的8个计算节点组成的分布式集群,每个节点均配有IntelCorei777003.6GHz处理器和8GB内存,每个处理器核心数为4。实验中以基于ADMM算法框架求解稀疏logistic回归问题为例,利用本实施例中提出的稀疏通信算法来聚合分布式ADMM算法中的模型参数,并与其他通信算法进行比较。并分别采用公共数据news20,rcvl,kddb(raw)作为测试数据集。数据集的详细信息如表1所示。
表1.测试数据集信息表
数据集 | 特征数 | 训练样本数 | 测试样本数 | 数据稀疏度(%) |
rcvl | 47,236 | 677,399 | 20,242 | 0.15 |
kddb(raw) | 1,193,024 | 19,264,097 | 748,401 | 0.002 |
由于本实施例针对节点数的不同采用不同的通信算法,因此实验时分别采用8个节点和6个节点进行测试,每个节点分配4个线程。表2、表3分别描述了采用8个节点和6个节点时,采用不同通信算法时系统时间分配情况。本实验比较了以下几种不同的通信算法:
(1)dense-allreduce(DA):采用MPI库中自带的MPI_Allreduce接口实现的稠密数据的allreduce通信算法;
(2)hier_recursive_halving(HRH):本发明中针对短消息提出的层次化稀疏allreduce通信算法;
(3)hier_split_allgather(HSA):本发明中针对长消息提出的层次化稀疏allreduce通信算法;
(4)SSAR_Recursive_double(SRD):SPARCML库中针对短消息提出的稀疏allreduce通信算法;
(5)SSAR_Split_allgather(SSA):SPARCML库中针对长消息提出的稀疏allreduce通信算法;
(6)hier_split_scannter(HSS):本发明中针对节点数不是2的幂的情形提出的层次化稀疏allreduce通信算法。
表2.节点数为8时采用不同通信算法系统时间分配情况
由表2、表3可以看出,相对于基于稠密数据实现的allreduce通信算法——DA,基于稀疏数据的allreduce通信算法所需要的通信开销更小,当数据集的特征数较大且数据集稀疏度高时(如kddb(raw)),稀疏allreduce通信算法的优势更明显。与SPARCML库中提出的稀疏通信算法SRD和SSA相比,本发明中实现的层次化稀疏通信算法HRH和HAS算法通信开销更小,表明在多核集群环境中,本发明改进的通信算法具有更高的运行效率。主要原因是本发明充分考虑了多核集群环境中节点间与节点内进程的差异性,以减少节点间通信量。
由表2、表3也可以看出,当节点数为8,总进程数为32时,HSA算法比HSS算法的通信时间少,而当节点数为6,总进程数为24时,HSS算法比HAS算法的通信时间更少。因此在具体实现时,本实施例根据节点数不同动态选择通信算法。
表3.节点数为6时采用不同通信算法系统时间分配情况
本实施例面向分布式机器学习的稀疏通信模型的实现方法,根据多核分布式系统底层通信特征对进程进行分组,将处于同一节点的进程分为一组,并采用二维向量保存分组信息,便于获取分组信息。针对稀疏数据特征,设计了稀疏数据的通信协议。在此基础上,实现了稀疏数据的allreduce通信算法。该通信算法根据节点数的不同及消息长度的不同选择不同的实现方法。当节点数为2的幂时,采用hier_recursive_halving算法来实现短消息的allreduce操作,采用hier_split_allgather算法来实现长消息的allreduce操作。当节点数不是2的幂时,采用hier_split_scannter算法实现allreduce操作。本实施例这三种通信算法利用层次化稀疏通信模型来减少节点间通信开销,且本实施例根据稀疏数据的特征动态选择通信算法实施的进程初始化,根据分布式集群中每个进程所处的节点的不同对进程进行分组,为实现层次化通信算法提供支持。
上面对本发明实施例结合附图进行了说明,但本发明不限于上述实施例,还可以根据本发明的发明创造的目的做出多种变化,凡依据本发明技术方案的精神实质和原理下做的改变、修饰、替代、组合或简化,均应为等效的置换方式,只要符合本发明的发明目的,只要不背离本发明的技术原理和发明构思,都属于本发明的保护范围。
Claims (5)
1.一种面向分布式机器学习的稀疏通信模型的实现方法,其特征在于,该方法实现包括如下过程:
A.采用进程初始化方法,进行进程初始化函数的设计及实现过程;
B.稀疏数据通信协议设计过程;
C.稀疏数据通信算法的设计与实现过程。
2.根据权利要求1所述面向分布式机器学习的稀疏通信模型的实现方法,其特征在于,所述步骤A中进程初始化方法如下:
A-1.获取进程号及主机名信息:
获取当前进程的进程号及主机名,将相关信息保存到结构体id_host_msg中,定义结构体id_host_msg,该结构体定义如下:
typedef struct{
int pId;//系统为进程分配的进程号
char*masterName;//进程所在节点的主机名
}id_host_msg;
A-2.进程分组:
将主机名相同的进程分为一组,定义二维向量groupInfo保存分组信息,groupInfo定义如下:
std::vector<std::vector<int>>groupInfo;
A-3.获取进程的组号和组内编号:
利用groupInfo的信息,获取进程的组号及组内编号。
3.根据权利要求2所述面向分布式机器学习的稀疏通信模型的实现方法,其特征在于,在所述步骤A-3中,每个进程的进程号对应groupInfo中一个元素的值,若当前进程对应为groupInfo[g_index][in_index],则将组号设置为g_index,组内编号设置为in_index。
4.根据权利要求1所述面向分布式机器学习的稀疏通信模型的实现方法,其特征在于,所述稀疏数据的通信协议包括稀疏数据的表示、传输数据类型的动态选择及稀疏数据的聚合规则,所述步骤B中的稀疏数据通信协议设计方法如下:
B-1.稀疏数据的表示:
利用键-值对保存稀疏数据,对应索引值及模型参数的值分别用sparse_index数组及sparse_value数组表示;
B-2.传输数据类型的动态选择:
通过稀疏数据参数个数来选择采用稀疏数据还是稠密数据进行通信,若n>NFv/(Fk+Fv),利用稠密数据通信,否则,采用稀疏数据通信;其中Fk表示存储一个索引值所需要的字节数,Fv表示存储一个模型参数所需要的字节数,n为稀疏参数个数,N为模型参数的维度;
B-3.数据聚合规则:
稀疏数据以字符串形式进行传输,将模型参数的索引值直接连接到模型参数后,接收方根据接收到参数的个数将参数的值及索引值进行分离,并根据索引值不同执行不同的操作;若接收到的稀疏数据索引值恰好属于当前进程稀疏数据索引值的集合,则直接对两者的模型参数执行规约操作;否则,需要将索引及对应的值增加到当前节点的sparse_index数组及sparse_value数组中。
5.根据权利要求1所述面向分布式机器学习的稀疏通信模型的实现方法,其特征在于,所述步骤C中的稀疏数据通信算法的设计及实现方法如下:
根据节点数及消息长度的不同,使用不同的通信算法实现稀疏数据的allreduce操作;当节点数为2的幂且消息类型为短消息时,使用hier_recursive_halving算法来实现allreduce操作;当节点数为2的幂且消息类型为长消息时,使用hier_split_allgather算法来实现allreduce操作;当节点数不是2的幂时,则使用hier_split_scannter算法来实现allreduce操作;
所述hier_recursive_halving算法包括如下步骤:
1)组间进程通信:
每个进程与其他组进程中对应组内编号相同的进程进行通信,通信对象的组号由recursive-halving算法决定,即第一轮通信时,节点间的距离为第二轮通信,距离为……,最后一轮通信节点间距离为1,G表示分布式系统中使用的节点数;
2)组内进程通信:
针对长消息,hier_split_allgather算法分为slit和allgather两个阶段,步骤如下:
①每个进程将参数按照索引值分为Np块,Np表示分布式系统中的分配总进程数;
②split阶段:
该阶段每个进程负责聚合一块模型参数,每个进程直接与其他进程进行通信;聚合参数时,将每个进程当作主节点,其他进程为从节点;该阶段通信次数为Np-1,节点间进程先进行通信,然后是节点内进程的通信;
③allgather阶段:
每个进程将split阶段负责聚合的块广播给其他进程,allgather采用recursive-halving算法实现,通信过程与hier_recursive_halving算法的通信过程一致;
hier_split_scannter算法分为split和scannter阶段,其中split阶段与hier_split_allgather的split阶段一样,而在scannter阶段,先执行节点间通信,每个进程与其他组中组内编号相同的进程进行通信,进程间采用ring-allreduce算法进行通信;然后执行节点内进程通信,节点内进程利用recursive_halving算法进行通信。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010927942.XA CN112235344B (zh) | 2020-09-07 | 2020-09-07 | 一种面向分布式机器学习的稀疏通信模型的实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010927942.XA CN112235344B (zh) | 2020-09-07 | 2020-09-07 | 一种面向分布式机器学习的稀疏通信模型的实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112235344A true CN112235344A (zh) | 2021-01-15 |
CN112235344B CN112235344B (zh) | 2022-12-23 |
Family
ID=74116461
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010927942.XA Active CN112235344B (zh) | 2020-09-07 | 2020-09-07 | 一种面向分布式机器学习的稀疏通信模型的实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112235344B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112434817A (zh) * | 2021-01-26 | 2021-03-02 | 鹏城实验室 | 构建通信算法数据库的方法、装置和计算机存储介质 |
CN113660113A (zh) * | 2021-07-27 | 2021-11-16 | 上海大学 | 面向分布式机器学习的自适应稀疏参数模型设计与量化传输方法 |
CN114221871A (zh) * | 2021-04-09 | 2022-03-22 | 无锡江南计算技术研究所 | 一种网格化流水的全收集方法 |
CN115102864A (zh) * | 2022-06-21 | 2022-09-23 | 中国人民解放军国防科技大学 | 一种用于Dragonfly拓扑的Allgather方法及装置 |
WO2023134590A1 (zh) * | 2022-01-14 | 2023-07-20 | 华为技术有限公司 | 一种聚合通信方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103944680A (zh) * | 2014-04-23 | 2014-07-23 | 浙江大学 | 基于信号稀疏特性的不可靠无线链路信息传输方法 |
CN105912633A (zh) * | 2016-04-11 | 2016-08-31 | 上海大学 | 面向稀疏样本的聚焦式Web信息抽取系统及方法 |
CN110287031A (zh) * | 2019-07-01 | 2019-09-27 | 南京大学 | 一种减少分布式机器学习通信开销的方法 |
CN111488981A (zh) * | 2020-03-05 | 2020-08-04 | 天津大学 | 基于高斯分布估计选取深度网络参数稀疏阈值的方法 |
-
2020
- 2020-09-07 CN CN202010927942.XA patent/CN112235344B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103944680A (zh) * | 2014-04-23 | 2014-07-23 | 浙江大学 | 基于信号稀疏特性的不可靠无线链路信息传输方法 |
CN105912633A (zh) * | 2016-04-11 | 2016-08-31 | 上海大学 | 面向稀疏样本的聚焦式Web信息抽取系统及方法 |
CN110287031A (zh) * | 2019-07-01 | 2019-09-27 | 南京大学 | 一种减少分布式机器学习通信开销的方法 |
CN111488981A (zh) * | 2020-03-05 | 2020-08-04 | 天津大学 | 基于高斯分布估计选取深度网络参数稀疏阈值的方法 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112434817A (zh) * | 2021-01-26 | 2021-03-02 | 鹏城实验室 | 构建通信算法数据库的方法、装置和计算机存储介质 |
CN112434817B (zh) * | 2021-01-26 | 2021-05-28 | 鹏城实验室 | 构建通信算法数据库的方法、装置和计算机存储介质 |
CN114221871A (zh) * | 2021-04-09 | 2022-03-22 | 无锡江南计算技术研究所 | 一种网格化流水的全收集方法 |
CN113660113A (zh) * | 2021-07-27 | 2021-11-16 | 上海大学 | 面向分布式机器学习的自适应稀疏参数模型设计与量化传输方法 |
CN113660113B (zh) * | 2021-07-27 | 2023-09-15 | 上海大学 | 面向分布式机器学习的自适应稀疏参数模型设计与量化传输方法 |
WO2023134590A1 (zh) * | 2022-01-14 | 2023-07-20 | 华为技术有限公司 | 一种聚合通信方法及装置 |
CN115102864A (zh) * | 2022-06-21 | 2022-09-23 | 中国人民解放军国防科技大学 | 一种用于Dragonfly拓扑的Allgather方法及装置 |
CN115102864B (zh) * | 2022-06-21 | 2023-08-29 | 中国人民解放军国防科技大学 | 一种用于Dragonfly拓扑的Allgather方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN112235344B (zh) | 2022-12-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112235344B (zh) | 一种面向分布式机器学习的稀疏通信模型的实现方法 | |
CN110134636B (zh) | 模型训练方法、服务器和计算机可读存储介质 | |
Brenna et al. | Distributed event stream processing with non-deterministic finite automata | |
CN110308984B (zh) | 一种用于处理地理分布式数据的跨集群计算系统 | |
CN109871502B (zh) | 一种基于Storm的流数据正则匹配方法 | |
US11221890B2 (en) | Systems and methods for dynamic partitioning in distributed environments | |
WO2024051388A1 (zh) | 一种基于禁忌搜索算法的神经网络片上映射方法和装置 | |
CN113900810A (zh) | 分布式图处理方法、系统及存储介质 | |
CN114281521A (zh) | 优化深度学习异构资源通信效率方法、系统、设备及介质 | |
US20170371892A1 (en) | Systems and methods for dynamic partitioning in distributed environments | |
Kang et al. | Improving all-to-many personalized communication in two-phase i/o | |
Yang et al. | WholeGraph: a fast graph neural network training framework with multi-GPU distributed shared memory architecture | |
CN113645076B (zh) | 基于超图匹配算法的虚拟网络资源分配方法 | |
CN115277454A (zh) | 用于分布式深度学习训练的聚合通信方法 | |
CN114567634A (zh) | 面向后e级图计算的方法、系统、存储介质及电子设备 | |
CN110609924A (zh) | 基于图数据的全量关系计算方法、装置、设备及存储介质 | |
CN115952385B (zh) | 用于大规模稀疏方程组求解的并行超节点排序方法及系统 | |
WO2005041067A1 (ja) | 分散メモリ型情報処理システム | |
CN109254844B (zh) | 一种大规模图的三角形计算方法 | |
CN114895985B (zh) | 一种面向基于采样的图神经网络训练的数据加载系统 | |
CN115982230A (zh) | 数据库的跨数据源查询方法、系统、设备及存储介质 | |
Zhou et al. | Tsengine: Enable efficient communication overlay in distributed machine learning in wans | |
Yang et al. | EDGES: An efficient distributed graph embedding system on GPU clusters | |
Lv et al. | A Survey of Graph Pre-processing Methods: From Algorithmic to Hardware Perspectives | |
CN111767287A (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 |