CN116366467B - 服务器无感知的分布式训练软件定义聚合通信框架和方法 - Google Patents
服务器无感知的分布式训练软件定义聚合通信框架和方法 Download PDFInfo
- Publication number
- CN116366467B CN116366467B CN202310614094.0A CN202310614094A CN116366467B CN 116366467 B CN116366467 B CN 116366467B CN 202310614094 A CN202310614094 A CN 202310614094A CN 116366467 B CN116366467 B CN 116366467B
- Authority
- CN
- China
- Prior art keywords
- node
- communication
- module
- distributed training
- sub
- 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
- 230000006854 communication Effects 0.000 title claims abstract description 381
- 238000004891 communication Methods 0.000 title claims abstract description 379
- 238000000034 method Methods 0.000 title claims description 67
- 238000012549 training Methods 0.000 claims abstract description 152
- 238000004422 calculation algorithm Methods 0.000 claims abstract description 123
- 230000002776 aggregation Effects 0.000 claims abstract description 119
- 238000004220 aggregation Methods 0.000 claims abstract description 119
- 238000004364 calculation method Methods 0.000 claims abstract description 43
- 230000008447 perception Effects 0.000 claims abstract description 22
- 238000012545 processing Methods 0.000 claims description 34
- 230000008569 process Effects 0.000 claims description 26
- 238000010586 diagram Methods 0.000 claims description 20
- 230000006837 decompression Effects 0.000 claims description 16
- 230000006870 function Effects 0.000 claims description 16
- 230000004927 fusion Effects 0.000 claims description 10
- 238000007906 compression Methods 0.000 claims description 8
- 239000004973 liquid crystal related substance Substances 0.000 claims description 8
- 230000006835 compression Effects 0.000 claims description 7
- 230000004044 response Effects 0.000 claims description 6
- 238000012163 sequencing technique Methods 0.000 claims description 6
- 230000004048 modification Effects 0.000 abstract description 12
- 238000012986 modification Methods 0.000 abstract description 12
- 238000005457 optimization Methods 0.000 abstract description 9
- 238000004590 computer program Methods 0.000 description 7
- 238000013135 deep learning Methods 0.000 description 7
- 238000003860 storage Methods 0.000 description 6
- 230000001360 synchronised effect Effects 0.000 description 6
- 238000013461 design Methods 0.000 description 5
- HPTJABJPZMULFH-UHFFFAOYSA-N 12-[(Cyclohexylcarbamoyl)amino]dodecanoic acid Chemical compound OC(=O)CCCCCCCCCCCNC(=O)NC1CCCCC1 HPTJABJPZMULFH-UHFFFAOYSA-N 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 230000001960 triggered effect Effects 0.000 description 3
- 238000010276 construction Methods 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 230000001747 exhibiting effect Effects 0.000 description 1
- 238000007499 fusion processing Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000016507 interphase Effects 0.000 description 1
- 238000005304 joining Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012821 model calculation Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000007723 transport mechanism Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
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
-
- 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/16—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks using machine learning or artificial intelligence
Landscapes
- Engineering & Computer Science (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Mathematical Optimization (AREA)
- Algebra (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Artificial Intelligence (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Databases & Information Systems (AREA)
- Evolutionary Computation (AREA)
- Medical Informatics (AREA)
- Software Systems (AREA)
- Computer And Data Communications (AREA)
Abstract
本申请提供了一种服务器无感知的分布式训练软件定义聚合通信框架和方法,属于聚合通信技术领域,本申请实施例通过在控制平面向用户提供可编程接口模块,能够实现控制平面与数据平面的清晰解耦,使得用户在面对服务器无感知场景时,不仅能够对各个分布式训练节点的运行状态信息和性能信息进行实时监测,还能够将算法调整信息注入到聚合通信操作的适当流程节点,实现对原始聚合通信算法的修改和优化,并利用数据平面负责对接不同计算引擎及底层通信库,实现自定义聚合通信算法在不同运行环境下的透明化部署,进而在改善聚合通信性能的同时提高分布式训练的效率。
Description
技术领域
本申请涉及聚合通信技术领域,特别是涉及一种服务器无感知的分布式训练软件定义聚合通信框架和方法。
背景技术
数据并行是深度学习分布式训练的常用模式。与单机训练不同,在数据并行分布式训练中,不同训练节点间需要进行额外的数据通信以保证梯度同步。作为一种常见的梯度同步算法,聚合通信(collective communication)被广泛应用于PyTorch、TensorFlow等深度学习计算引擎以及Horovod、ONNXruntime等分布式训练框架。与传统的高性能计算不同,聚合通信的实际性能受到集群节点故障、异构性节点以及深度学习“前向-反向”交替训练模式等多种因素的影响。
在服务器无感知场景下,用户在任务部署过程中不能预先了解硬件资源的真实配置,例如加速卡的拓扑结构等,这使得预先指定的通信算法可能是次优解,从而导致了分布式训练中的性能损失。常见的深度学习计算引擎基于较为原始的通信库实现分布式训练,例如PyTorch的nn.parallel库和TensorFlow的distribute库,这类通信库实现与特定计算引擎紧密耦合,从而表现出极大的设计差异性。上述差异性使得新型聚合通信算法在不同计算引擎上的部署工作变得极为繁重和困难。此外,上述通信库中的控制平面和数据平面紧密耦合,完整的聚合通信操作被抽象为单一接口,近一步加大了开发人员进行自定义修改的实现难度。从而开发人员难以在服务器无感知场景下进行任何关于聚合通信算法的修改和优化。
发明内容
本申请提供一种服务器无感知的分布式训练软件定义聚合通信框架和方法,以解决相关技术在服务器无感知场景下难以实现对聚合通信算法的修改和优化的问题。
为了解决上述问题,本申请采用了以下的技术方案:
第一方面,本申请实施例提供了一种服务器无感知的分布式训练软件定义聚合通信框架,包括控制平面和数据平面,所述控制平面包括任务控制模块和可编程接口模块;其中,
所述任务控制模块,用于获取各个分布式训练节点的运行状态信息和性能信息;
所述可编程接口模块,用于获取用户针对所述运行状态信息和所述性能信息输入的算法调整信息,并基于所述算法调整信息对原始聚合通信算法进行更新,得到自定义聚合通信算法;
所述任务控制模块,还用于基于所述自定义聚合通信算法,生成控制信号,并将所述控制信号发送给所述数据平面;
所述数据平面,用于响应于所述控制信号,确定目标计算引擎和目标通信库,并基于所述目标计算引擎和所述目标通信库,执行聚合通信操作,以完成针对目标模型的分布式训练。
在本申请一实施例中,所述自定义聚合通信算法包括多个自定义聚合通信子算法,所述可编程接口模块包括与所述多个自定义聚合通信子算法一一对应的多个可编程接口,不同的可编程接口用于生成不同的自定义聚合通信子算法,且不同的自定义聚合通信子算法用于指示完成所述聚合通信操作中的不同流程节点;
所述任务控制模块包括连接管理模块、统计管理模块和任务管理模块;其中,
所述任务管理模块,用于针对所述聚合通信操作中的任一流程节点,基于所述流程节点对应的自定义聚合通信子算法,生成控制子信号,并将所述控制子信号发送给所述数据平面,以使数据平面响应于所述控制子信号,完成所述流程节点;
所述连接管理模块,用于获取各个所述分布式训练节点的所述运行状态信息,并在检测到任一分布式训练节点退出或者增加的情况下,更新所述运行状态信息;其中,所述运行状态信息包括分布式训练节点的数量、节点序号和节点拓扑关系;
所述统计管理模块,用于调用预设的计时函数,记录各个所述分布式训练节点的性能信息;其中,所述性能信息包括分布式训练任务每轮的迭代时长以及各个所述分布式训练节点的平均运行时间。
在本申请一实施例中,所述数据平面包括数据流图模块;
所述数据流图模块,用于针对任一分布式训练节点,确定所述分布式训练节点的当前计算操作节点以及所述当前计算操作节点对应的当前通信操作节点,并在所述当前计算操作节点进行反向计算的过程中,通过所述当前通信操作节点更新所述当前计算操作节点的当前梯度。
在本申请一实施例中,所述数据流图模块包括第一通信子模块和第二通信子模块;
所述第一通信子模块,用于在所述当前计算操作节点为一个的情况下,通过所述当前通信操作节点获取所述当前计算操作节点的反向梯度,并基于所述反向梯度,更新所述当前计算操作节点的当前梯度;
所述第二通信子模块,用于在所述当前计算操作节点为多个的情况下,通过所述当前通信操作节点对多个所述当前计算操作节点各自对应的反向梯度进行融合操作,并基于融合后的多个所述反向梯度,更新多个所述当前计算操作节点的当前梯度。
在本申请一实施例中,所述数据流图模块还包括排序子模块;
所述排序子模块,用于获取用户针对每个所述通信操作节点输入的优先级序列,并按照所述优先级序列,依次控制每个所述通信操作节点进行梯度更新操作。
在本申请一实施例中,所述数据平面还包括操作执行模块,所述操作执行模块包括具有若干个调用接口的代理层;
所述操作执行模块,用于针对所述聚合通信操作中的任一流程节点,响应于所述流程节点对应的控制子信号,从所述若干个调用接口中确定目标调用接口,通过所述目标调用接口,调用所述目标计算引擎和所述目标通信库,执行所述流程节点对应的操作。
在本申请一实施例中,所述若干个调用接口包括对张量操作接口和对内存操作接口;所述操作执行模块包括第一操作执行子模块和第二操作执行子模块;
所述第一操作执行子模块,用于在所述流程节点对应的操作为张量级操作的情况下,从所述对张量操作接口中确定所述目标调用接口,并按照所述目标调用接口对应的调用指令,调用所述目标计算引擎和所述目标通信库,执行所述流程节点对应的张量操作;所述张量级操作表征需要对反向梯度进行处理的操作;
所述第二操作执行子模块,用于在所述流程节点对应的聚合通信操作为内存级操作的情况下,从所述对内存操作接口中确定所述目标调用接口,并按照所述目标调用接口对应的调用指令,调用所述目标计算引擎和所述目标通信库,执行所述流程节点对应的内存操作;所述内存级操作表征需要对内存缓冲区进行处理的操作。
在本申请一实施例中,所述操作执行模块还包括解压缩子模块;
所述解压缩子模块,用于对所述当前计算操作节点输出的反向梯度进行张量压缩处理,并在所述当前通信操作节点基于压缩后的反向梯度更新所述当前计算操作节点的当前梯度之后,对压缩后的反向梯度进行解压操作。
在本申请一实施例中,所述数据平面还包括上下文管理模块;
所述上下文管理模块,用于存储各个所述分布式训练节点的运行时上下文,并在检测到任一分布式训练节点退出或者增加的情况下,更新各个所述分布式训练节点的运行时上下文。
第二方面,基于相同发明构思,本申请实施例提供了一种服务器无感知的分布式训练软件定义聚合通信方法,其特征在于,运用于服务器无感知的分布式训练软件定义聚合通信框架,所述服务器无感知的分布式训练软件定义聚合通信框架包括控制平面和数据平面,所述控制平面包括任务控制模块和可编程接口模块;所述服务器无感知的分布式训练软件定义聚合通信方法包括:
所述任务控制模块获取各个分布式训练节点的运行状态信息和性能信息;
所述可编程接口模块获取用户针对所述运行状态信息和所述性能信息输入的算法调整信息,并基于所述算法调整信息对原始聚合通信算法进行更新,得到自定义聚合通信算法;
所述任务控制模块基于所述自定义聚合通信算法,生成控制信号,并将所述控制信号发送给所述数据平面;
所述数据平面响应于所述控制信号,确定目标计算引擎和目标通信库,并基于所述目标计算引擎和所述目标通信库,执行聚合通信操作,以完成针对目标模型的分布式训练。
在本申请一实施例中,所述自定义聚合通信算法包括多个自定义聚合通信子算法,所述可编程接口模块包括与所述多个自定义聚合通信子算法一一对应的多个可编程接口,不同的可编程接口用于生成不同的自定义聚合通信子算法,且不同的自定义聚合通信子算法用于指示完成所述聚合通信操作中的不同流程节点;所述任务控制模块包括连接管理模块、统计管理模块和任务管理模块;所述服务器无感知的分布式训练软件定义聚合通信方法包括:
所述任务管理模块针对所述聚合通信操作中的任一流程节点,基于所述流程节点对应的自定义聚合通信子算法,生成控制子信号,并将所述控制子信号发送给所述数据平面,以使数据平面响应于所述控制子信号,完成所述流程节点;
所述连接管理模块获取各个所述分布式训练节点的所述运行状态信息,并在检测到任一分布式训练节点退出或者增加的情况下,更新所述运行状态信息;其中,所述运行状态信息包括分布式训练节点的数量、节点序号和节点拓扑关系;
所述统计管理模块调用预设的计时函数,记录各个所述分布式训练节点的性能信息;其中,所述性能信息包括分布式训练任务每轮的迭代时长以及各个所述分布式训练节点的平均运行时间。
在本申请一实施例中,所述数据平面包括数据流图模块;所述服务器无感知的分布式训练软件定义聚合通信方法包括:
所述数据流图模块针对任一分布式训练节点,确定所述分布式训练节点的当前计算操作节点以及所述当前计算操作节点对应的当前通信操作节点,并在所述当前计算操作节点进行反向计算的过程中,通过所述当前通信操作节点更新所述当前计算操作节点的当前梯度。
在本申请一实施例中,所述数据流图模块包括第一通信子模块和第二通信子模块;所述服务器无感知的分布式训练软件定义聚合通信方法包括:
所述第一通信子模块在所述当前计算操作节点为一个的情况下,通过所述当前通信操作节点获取所述当前计算操作节点的反向梯度,并基于所述反向梯度,更新所述当前计算操作节点的当前梯度;
所述第二通信子模块在所述当前计算操作节点为多个的情况下,通过所述当前通信操作节点对多个所述当前计算操作节点各自对应的反向梯度进行融合操作,并基于融合后的多个所述反向梯度,更新多个所述当前计算操作节点的当前梯度。
在本申请一实施例中,所述数据流图模块还包括排序子模块;所述服务器无感知的分布式训练软件定义聚合通信方法包括:
所述排序子模块获取用户针对每个所述通信操作节点输入的优先级序列,并按照所述优先级序列,依次控制每个所述通信操作节点进行梯度更新操作。
在本申请一实施例中,所述数据平面还包括操作执行模块,所述操作执行模块包括具有若干个调用接口的代理层;所述服务器无感知的分布式训练软件定义聚合通信方法包括:
所述操作执行模块针对所述聚合通信操作中的任一流程节点,响应于所述流程节点对应的控制子信号,从所述若干个调用接口中确定目标调用接口,通过所述目标调用接口,调用所述目标计算引擎和所述目标通信库,执行所述流程节点对应的操作。
在本申请一实施例中,所述若干个调用接口包括对张量操作接口和对内存操作接口;所述操作执行模块包括第一操作执行子模块和第二操作执行子模块;所述服务器无感知的分布式训练软件定义聚合通信方法包括:
所述第一操作执行子模块在所述流程节点对应的操作为张量级操作的情况下,从所述对张量操作接口中确定所述目标调用接口,并按照所述目标调用接口对应的调用指令,调用所述目标计算引擎和所述目标通信库,执行所述流程节点对应的张量操作;所述张量级操作表征需要对反向梯度进行处理的操作;
所述第二操作执行子模块在所述流程节点对应的聚合通信操作为内存级操作的情况下,从所述对内存操作接口中确定所述目标调用接口,并按照所述目标调用接口对应的调用指令,调用所述目标计算引擎和所述目标通信库,执行所述流程节点对应的内存操作;所述内存级操作表征需要对内存缓冲区进行处理的操作。
在本申请一实施例中,所述操作执行模块还包括解压缩子模块;所述服务器无感知的分布式训练软件定义聚合通信方法包括:
所述解压缩子模块对所述当前计算操作节点输出的反向梯度进行张量压缩处理,并在所述当前通信操作节点基于压缩后的反向梯度更新所述当前计算操作节点的当前梯度之后,对压缩后的反向梯度进行解压操作。
在本申请一实施例中,所述数据平面还包括上下文管理模块;所述服务器无感知的分布式训练软件定义聚合通信方法包括:
所述上下文管理模块存储各个所述分布式训练节点的运行时上下文,并在检测到任一分布式训练节点退出或者增加的情况下,更新各个所述分布式训练节点的运行时上下文。
与现有技术相比,本申请包括以下优点:
本申请实施例提供的一种服务器无感知的分布式训练软件定义聚合通信框架,包括控制平面和数据平面,控制平面包括任务控制模块和可编程接口模块,用户可以通过任务控制模块获取各个分布式训练节点的运行状态信息和性能信息;并将相应的算法调整信息输入可编程接口模块,实现对原始聚合通信算法进行更新,以得到自定义聚合通信算法;任务控制模块则基于自定义聚合通信算法,生成控制信号,并将控制信号发送给数据平面,进而数据平面能够响应于控制信号,确定目标计算引擎和目标通信库,并基于目标计算引擎和目标通信库,执行聚合通信操作,以完成针对目标模型的分布式训练。本申请实施例通过在控制平面向用户提供可编程接口模块,能够实现控制平面与数据平面的清晰解耦,使得用户在面对服务器无感知场景时,不仅能够对各个分布式训练节点的运行状态信息和性能信息进行实时监测,还能够将算法调整信息注入到聚合通信操作的适当流程节点,实现对原始聚合通信算法的修改和优化,并利用数据平面负责对接不同计算引擎及底层通信库,实现自定义聚合通信算法在不同运行环境下的透明化部署,进而在改善聚合通信性能的同时提高分布式训练的效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请一实施例中一种服务器无感知的分布式训练软件定义聚合通信框架的结构示意图。
图2是本申请一实施例中一种服务器无感知的分布式训练软件定义聚合通信框架的具体结构示意图。
图3是本申请一实施例中数据流图的示意图。
图4是本申请一实施例中一种服务器无感知的分布式训练软件定义聚合通信的步骤流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为便于理解,下面对本申请实施例中的相关术语概念进行介绍。
数据并行:数据并行是一种分布式训练模式,在此模式下训练任务被切分到多个工作节点(可能是设备或进程)上,每个节点维护相同的模型和计算任务,但处理不同的数据。
梯度同步:在数据并行训练模式下,对所有节点的本地梯度取均值的过程。具体流程为在所有训练节点完成本地模型计算后,收集它们的梯度,然后基于聚合通信或参数服务器算法进行进程间通信,对梯度取均值,最后对所有训练节点的本地模型参数进行统一更新。
服务器无感知:一种新兴的云原生架构,云平台将算力环境和资源进行了“隐藏”,让用户不可见,用户在任务部署过程中不能预先了解硬件资源的真实配置,服务器无感知计算模式允许用户只关注应用逻辑本身,而不用考虑资源管理等繁杂的任务,开发者只需编写代码并上传,云平台就会自动准备好相应的计算资源,完成运算并输出结果,从而大幅简化开发运维过程。
聚合通信:深度学习分布式训练中最主要的通信方式,是训练时用于保证不同训练节点梯度同步的方式之一。
需要进一步说明的是,虽然已有众多的工作致力于实现多场景下聚合通信算法的优化,当在服务器无感知场景下,部署上述算法是困难的。由于通信库与计算引擎紧密耦合,使得用户在选择指定的计算引擎实现分布式训练时,无法自由选择聚合通信算法,并且,由于完整的聚合通信操作被抽象为单一接口,即通信库仅提供一个独立的API(Application Programming Interface,应用程序编程接口)以完成聚合通信操作,使得用户无法对API中的控制函数进行修改,近一步加大了开发人员进行自定义修改的实现难度。
部分分布式训练框架提供对于不同计算引擎以及网络传输机制的普遍支持。这类框架使用中间层对接不同计算引擎的数据接口,收集各个节点的梯度并基于TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/网际协议)、RDMA(Remote Direct MemoryAccess,远程直接内存访问)等数据传输机制进行聚合通信,最后将同步后的梯度传回计算引擎。虽然提供了对不同计算引擎的支持,上述框架仍旧不适用于服务器无感知场景。首先,上述框架在对接计算引擎与网络传输接口时未能实现数据平面与控制平面的解耦,也没有开放任何控制接口。这使得用户对中间层的定制化变得非常困难,用户仍旧难以在服务器无感知场景开发和部署新的聚合通信算法。此外,在服务器无感知场景中,用户在任务部署过程中不能预先了解硬件资源的真实配置,例如加速卡的拓扑结构等,这使得预先指定的通信算法可能是次优解,而上述紧密耦合使得分布式训练过程中任何关于通信算法的改动都极为笨重耗时。例如,Horovod等分布式训练框架只能通过完整的系统重启耗时数秒实现通信拓扑的重构。在弹性训练场景中(允许节点在训练中途加入或退出),上述问题将更加严重。
针对现有技术存在的控制平面和数据平面紧密耦合使得在面临服务器无感知场景下时难以实现对聚合通信算法的修改和优化的问题,本申请实施例旨在提供一种服务器无感知的分布式训练软件定义聚合通信框架,基于现代化设计思路对控制平面和数据平面进行清晰地解耦,并重新设计了分布式训练框架中聚合通信算法的实现构件,通过向用户暴露统一的可编程接口,进而允许用户快速设计和实现新的聚合通信算法。
参照图1,示出了本申请一种服务器无感知的分布式训练软件定义聚合通信框架,包括控制平面100和数据平面200,控制平面100包括任务控制模块101和可编程接口模块102。其中,控制平面100通过提供可编程接口模块102,使得用户可以通过可编程接口模块102实现自定义聚合通信方法,并基于自定义聚合通信方法控制数据平面200的具体行为;而数据平面200负责真实数据的处理工作,实现自定义聚合通信方法在不同计算引擎和底层通信库上的透明化部署。
在本实施方式中,任务控制模块101用于获取各个分布式训练节点的运行状态信息和性能信息。在具体实现中,任务控制模块101周期性地记录包括反向通信耗时在内的各个分布式训练节点的运行性能;同时,任务控制模块101还可以实时监控各个分布式训练节点的运行状态信息,以判定分布式训练过程中是否发生节点的进入或退出。用户可以根据各个分布式训练节点的运行状态信息和性能信息,选择是否对原始聚合通信算法进行修改和优化。
在本实施方式中,可编程接口模块102通过为用户提供一组可编程接口,使得用户可以针对原始聚合通信算法所存在的问题,进行针对性的修改和优化。在具体实现中,用户可以通过对应的可编程接口输入算法调整信息,以实现对原始聚合通信算法的更新,进而得到自定义聚合通信算法。任务控制模块101则可以根据自定义聚合通信算法,在聚合通信操作中的不同流程节点向数据平面200发送对应的控制信号,以控制数据平面200进行聚合通信操作。
在本实施方式中,数据平面200支持不同的计算引擎和不同的通讯库,用户可以根据分布式训练的训练需求选择相应目标计算引擎和目标通信库,数据平面200在获取到任务控制模块101发送的控制信号后,则可以基于用户选择的目标计算引擎和目标通信库,执行聚合通信操作,以完成针对目标模型的分布式训练。
示例性的,在服务器无感知场景下,用户需要对针对目标模型进行分布式训练,用户可以根据自身模型训练要求,通过可编程接口模块102编辑编辑得到原始聚合通信算法。在分布式训练过程中,用户通过任务控制模块101实时查询各个分布式训练节点的运行状态信息和性能信息,并检测到某个分布式训练节点的性能表现异常而存在通信耗时较长的问题,此时,用户可以通过可编程接口模块102修改原始聚合通信算法,以将该分布式训练节点从分布式训练节点集群中删除或者对该分布式训练节点进行调整,以提高整体的通信效率;同时,用户还可以针对聚合通信操作中的特殊事件,定制相应的算法逻辑,如针对特定张量的通信耗时问题、针对分布式训练的尾部延迟问题,对原始聚合通信算法进行针对性的修改和优化。
本申请实施例通过在控制平面100向用户提供可编程接口模块102,能够实现控制平面100与数据平面200的清晰解耦,使得用户在面对服务器无感知场景时,不仅能够对各个分布式训练节点的运行状态信息和性能信息进行实时监测,还能够将算法调整信息注入到聚合通信操作的适当流程节点,实现对原始聚合通信算法的修改和优化,并利用数据平面200负责对接不同计算引擎及底层通信库,实现自定义聚合通信算法在不同运行环境下的透明化部署,进而在改善聚合通信性能的同时提高分布式训练的效率。
在一个可行的实施方式中,参照图2,任务控制模块101具体可以包括连接管理模块1011、统计管理模块1012和任务管理模块1013。
在本实施方式中,考虑到整个聚合通信操作可以分为若干个流程节点,不同的流程节点执行不同的算法逻辑,因此,可以将自定义聚合通信算法划分为多个自定义聚合通信子算法,不同的自定义聚合通信子算法用于指示完成聚合通信操作中的不同流程节点。为使用户可以将修改和优化后的自定义聚合通信子算法注入到聚合通信操作的适当流程节点,可编程接口模块102提供了与多个自定义聚合通信子算法一一对应的多个可编程接口,不同的可编程接口用于生成不同的自定义聚合通信子算法。参照表1,示出了可编程接口模块102提供的多个可编程接口的示例表。
表1 可编程接口示例表
需要说明的是,用户可以在相应的可编程接口修改原有的自定义聚合通信子算法对应的算法逻辑。例如,在分布式训练节点加入或者退出时,可以通过onWorkerAdded接口或者onWorkerRemoved接口修改相应的算法逻辑,进而用户根据节点工作状态及实时性能动态调节聚合通信算法。
在本实施方式中,任务管理模块1013用于针对聚合通信操作中的任一流程节点,基于流程节点对应的自定义聚合通信子算法,生成控制子信号,并将控制子信号发送给数据平面200,以使数据平面200响应于控制子信号,完成流程节点。
在本实施方式中,在任务管理模块1013重新设计了梯度同步的控制逻辑。基于用户给定的自定义聚合通信算法,任务管理模块1013时刻监测不同计算引擎的数据就绪情况。一旦梯度张量通过就绪检查,就会触发onTensorReady事件,执行用户通过onTensorReady接口注入的自定义聚合通信子算法。在执行用户自定义逻辑后,任务管理模块1013可以按照用户指定的优先级,将优先选择具有最高优先级的梯度张量进行通信。框架使用统一的缓冲区操作接口和优先级属性对来自不同计算引擎的梯度张量进行包装,以进行排序控制,缓冲区就绪后将触发onBufferReady事件,任务管理模块1013将执行用户通过onBufferReady接口注入的自定义聚合通信子算法,此时任务管理模块1013将控制数据平面200进行实际通信。
在本实施方式中,连接管理模块1011用于获取各个分布式训练节点的运行状态信息,并在检测到任一分布式训练节点退出或者增加的情况下,更新运行状态信息。其中,运行状态信息包括分布式训练节点的数量、节点序号和节点拓扑关系。
具体而言,连接管理模块1011会在每个反向计算和梯度同步阶段开始时检查各个分布式训练节点的工作状态。当检测到节点状态变化(例如,新的分布式训练节点加入训练或某一分布式训练节点意外退出)时,控制平面100将阻止后续的通信操作并进行训练任务的重新配置。由于在分布式系统中,不同节点监测到节点状态变化的时间可能存在差异,如果允许节点在检测到状态变化后立即开始重新配置,则可能会导致系统死锁甚至崩溃,因为另一些节点此时可能正在基于旧的运行时上下文进行通信操作。为了避免这一问题,本实施例要求所有节点在进行训练任务重新配置之前进行全局同步,以等待所有正常工作节点完成当前通信操作。具体地,训练任务重配置包括在控制平面100更改节点拓扑关系,修正节点数目,以及在数据平面200重置底层数据通信库(如NCCL通信库或Gloo通信库)的上下文。
需要说明的是,节点拓扑关系表征各个分布式训练节点之间的连接关系,用户可以根据节点拓扑关系了解到每个分布式训练节点各自对应的相邻节点,进而可以根据需要对节点拓扑关系进行修改。
在本实施方式中,统计管理模块1012用于调用预设的计时函数,记录各个分布式训练节点的性能信息;其中,性能信息包括分布式训练任务每轮的迭代时长以及各个分布式训练节点的平均运行时间。
在具体实现中,可以通过使用内存键值存储来实现统计管理模块1012的功能设计,使得统计管理模块1012能够定期调用记录函数来存储运行时信息。为了收集工作节点的实时性能,可以在反向计算开始时触发计时函数,以测算分布式训练任务每轮迭代的耗时;本实施例还可以通过维护一个迭代计数器,以定期触发onTimerExpired事件,以调用用户通过onTimerExpired接口注入的自定义聚合通信子算法来获取运行时统计信息。为了简化开发,还可以提供了用于总结统计信息的辅助函数,例如用于记录各个分布式训练节点的平均运行时间的辅助函数等。此外,用户可以借助控制平面100暴露的可编程接口,根据自身算法需求记录其他运行时统计信息,诸如特定张量的通信耗时等。
在一个可行的实施方式中,继续参照图2,数据平面200包括数据流图模块201。数据流图模块201用于针对任一分布式训练节点,确定分布式训练节点的当前计算操作节点以及当前计算操作节点对应的当前通信操作节点,并在当前计算操作节点进行反向计算的过程中,通过当前通信操作节点更新当前计算操作节点的当前梯度。
在本实施方式中,参照图3,数据流图模块201将分布式训练中的计算阶段与通信阶段抽象为统一的数据流图。其中,数据流图的左侧两列代表前向和反向过程,每一次反向计算的执行均依赖于对应前向操作的激活输出以及前一次反向操作的梯度输出;图中右侧两列分别表示梯度同步通信操作及权重更新操作。需要说明的是,位于同一层级的前向操作节点和反向操作操作节点可视为一组计算操作节点,对计算操作节点输出的反向梯度进行梯度同步通信操作的节点则为该计算操作节点对应的通信操作节点,示例性的,图3中的前向操作节点C和反向操作节点G为一组当前计算操作节点,则与该当前计算操作节点连接的通信操作节点J即为该计算操作节点对应的通信操作节点。
在具体实现中,前向操作节点和反向操作节点可以根据训练任务的需要采用相应的算子以实现相应的前向和反向过程,例如,前向操作节点A和前向操作节点B可以均采用conv卷积层算子,前向操作节点C可以采用linear线性层算子,前向操作节点D可以采用loss损失函数算子,反向操作节点E、反向操作节点F、反向操作节点G和反向操作节点H则可以均采用back反向算子。
需要说明的是,由于深度学习计算引擎要求在模型权重更新前完成梯度同步,每一次权重更新操作都依赖于梯度同步通信操作,以从通信图回到计算图的衔接过程,因此,用户可以通过操控数据流图结构对其进行编程控制。
在本实施方式中,基于统一的数据流图,框架可以支持计算和通信两者的阶段间并行。例如在图3中,通信操作节点J和反向操作节点E和反向操作节点F执行的两个反向计算操作分属通信过程及计算过程,但二者在各自依赖被满足的情况下可以同时执行,从而进一步提高训练性能。
在一个可行的实施方式中,为进一步提高聚合通信的效率,并使用户可以根据自身需求选择不同的通信方式控制各个通信操作节点完成相应的聚合通信操作,数据流图模块201具体可以包括第一通信子模块和第二通信子模块。
在本实施方式中,第一通信子模块用于在当前计算操作节点为一个的情况下,通过当前通信操作节点获取当前计算操作节点的反向梯度,并基于反向梯度,更新当前计算操作节点的当前梯度。也就是说,在当前计算操作节点和当前通信操作节点为一对一的情况下,当前通信操作节点执行的通信操作直接依赖于相应反向操作。
示例性的,继续参照图3,其中,前向操作节点C和反向操作节点G组成的计算操作节点与通信操作节点J为一对一的关系,即由通信操作节点J直接基于反向操作节点G输出的反向梯度,完成前向操作节点C的梯度更新。
在本实施方式中,第二通信子模块用于在当前计算操作节点为多个的情况下,通过当前通信操作节点对多个当前计算操作节点各自对应的反向梯度进行融合操作,并基于融合后的多个反向梯度,更新多个当前计算操作节点的当前梯度。也就是说,在当前计算操作节点和当前通信操作节点为多对一的情况下,当前通信操作节点执行的通信操作直接依赖于相应的梯度融合操作。需要说明的是,梯度融合操作是指将两个反向梯度输出写入统一缓冲区,当针对缓冲区的通信结束后,缓冲区内数据被重新写回原始张量在计算引擎中的存储位置。
示例性的,继续参照图3,其中,前向操作节点A和反向操作节点E组成的第一计算操作节点,前向操作节点B和反向操作节点F组成的第二计算操作节点,第一计算操作节点和第二计算操作节点与通信操作节点I为多对一的关系,即反向操作节点E和反向操作节点F的两个反向梯度将输入融合节点进行融合操作,融合节点再将融合后的两个反向梯度发送给通信操作节点I进行梯度更新操作,在完成梯度更新之后,通过去融合节点将两个反向梯度从缓冲区写回原始张量在计算引擎中的存储位置,最终同时完成对前向操作节点A和前向操作节点B的梯度更新。
需要说明的是,由于实现了不同的通信优化技术的融合,因此,用户可以自由设置相应数量的通信操作节点进行梯度更新操作,并为每个通信操作节点分配对应数量的计算操作节点。例如,用户可以将计算相近时间的多个计算操作节点绑定在一起,并对多个计算操作节点完成反向操作后,对多个计算操作节点输出的反向梯度进行融合处理,以此降低梯度同步通信操作的时延,提高梯度同步的通信效率。
在一个可行的实施方式中,数据流图模块201还包括排序子模块。
在本实施方式中,排序子模块用于获取用户针对每个通信操作节点输入的优先级序列,并按照优先级序列,依次控制每个通信操作节点进行梯度更新操作。也就是说,用户可以针对任一分布式训练节点,通过onBufferReady接口输入该分布式训练节点的通信操作节点的优先级序列,实现不同通信操作节点的通信时序的控制,进而可以优先通信具有较高优先级的反向梯度。
在本实施方式中,相较于直接根据反向计算的时序执行通信操作,通过对每个通信操作节点设定优先级属性,实现对来自不同计算引擎的反向梯度张量进行包装,以进行排序控制,可以进一步提高梯度同步的通信效率。
在一个可行的实施方式中,继续参照图2,数据平面200还包括操作执行模块202,操作执行模块202包括具有若干个调用接口的代理层。
在本实施方式中,操作执行模块202用于针对聚合通信操作中的任一流程节点,响应于流程节点对应的控制子信号,从若干个调用接口中确定目标调用接口,通过目标调用接口,调用目标计算引擎和目标通信库,执行流程节点对应的操作。
在本实施方式中,操作执行模块202可以基于统一的数据流图,执行实际的聚合通信操作,通过引入代理层,操作执行模块202可以调用相应的目标调用接口,实现对相应流程节点的聚合通信操作。
在具体实现中,若干个调用接口可以包括对张量操作接口和对内存操作接口,操作执行模块202包括第一操作执行子模块和第二操作执行子模块。
在本实施方式中,第一操作执行子模块用于在流程节点对应的操作为张量级操作的情况下,从对张量操作接口中确定目标调用接口,并按照目标调用接口对应的调用指令,调用目标计算引擎和目标通信库,执行流程节点对应的张量操作;其中,张量级操作表征需要对反向梯度进行处理的操作。
在本实施方式中,第二操作执行子模块用于在流程节点对应的聚合通信操作为内存级操作的情况下,从对内存操作接口中确定目标调用接口,并按照目标调用接口对应的调用指令,调用目标计算引擎和目标通信库,执行流程节点对应的内存操作;其中,内存级操作表征需要对内存缓冲区进行处理的操作。
在本实施方式中,操作执行模块202引入了代理层以执行张量级或内存级操作。一方面,第一操作执行子模块根据张量的元数据对张量操作接口以控制不同计算引擎中执行相应的张量操作,例如,在执行onTensorReady接口对应的自定义聚合通信子算法时,可以通过第一操作执行子模块调用目标计算引擎中对应的对张量操作接口以执行张量操作;另一方面,代理层抽象出对内存操作接口来提供内存级操作,可以实现接口调用的灵活性和通用性,例如,在执行onBufferReady接口对应的自定义聚合通信子算法时,可以通过第二操作执行子模块调用相应的对内存操作接口以执行内存操作。
需要说明的是,内存级操作是通用于不同计算引擎的,在使用内存级操作时,第二操作执行子模块可以根据用户所提供的显式信息,如用户指定的内存指针和大小,查询到相应的内存缓冲区。在执行过程中,为了有效地处理诸如类型转换的缓冲区操作,操作执行模块202维护了一个额外的CUDA流,框架内部进行的所有缓冲区操作都在额外的流上启动,以便这些操作能够与梯度同步以及计算引擎内的数据处理并行执行。需要说明的是,一个CUDA流表示由主机发出的在一个设备中执行的CUDA操作序列,CUDA流各个操作的次序是由主机控制的,按照主机发布的次序执行。
在本实施方式中,操作执行模块202还负责在不同底层通信库中执行数据通信。当前的常用底层通信库,例如Gloo、NCCL和MPI等通信库具有不同的初始化过程和调用接口。操作执行模块202为此设置有相应的数据处理接口,以控制不同底层通信库执行特定初始化过程等操作。基于上述数据处理接口,用户可以方便快捷的进行自定义聚合通信算法的开发,开发后的通信算法可以被透明的部署在不同计算引擎和底层通信库之上,并在不同运行环境中快速迁移。参照表2,示出了框架支持的部分数据处理接口。
表2 框架支持的数据处理接口示例表
需要说明是,数据处理接口支持不同通信库和不同的传输机制,也就是说,针对不同的通信库和不同的传输机制,通过提供统一的数据处理接口,用户可以方便快捷的使用各个数据处理接口包装好的指令。其中,astype接口可以实现类型转化,例如在计算引擎采用float数据类型而用户输入的为int数据类型的情况下,astype接口可以实现int数据类型到float数据类型的类型转化;基于apply接口,用户则可以编写调用内存的算法逻辑;基于alloc接口,用户可以选择为加速器分配对应内存的API;基于allreduce接口和allgather接口,则可以基于对应的通信库,控制执行初始化等操作,并保存所需的数据。结合张量级操作和内存级操作的定义可以看出,astype接口在对张量进行类型转化时,可以视为对张量操作接口;astype接口在对内存进行类型转化时,可以视为对内存操作接口;而apply接口、alloc接口、allreduce接口和allgather接口则均属于对内存操作接口。
在一个可行的实施方式中,操作执行模块202可以支持所有类型的数据处理算法,甚至包括不常规的张量操作,如1位和4位压缩。具体而言,操作执行模块202还可以包括解压缩子模块。
在本实施方式中,解压缩子模块用于对当前计算操作节点输出的反向梯度进行张量压缩处理,并在当前通信操作节点基于压缩后的反向梯度更新当前计算操作节点的当前梯度之后,对压缩后的反向梯度进行解压操作。
具体而言,张量压缩处理可以在onTensorReady事件触发后执行,即一旦目标计算引擎的反向梯度张量通过就绪检查后,对一个或者多个当前计算操作节点各自输出的反向梯度进行张量压缩处理,以提高数据传输速度,在一个或者多个当前计算操作节点对应的当前通信操作节点基于压缩后的反向梯度完成梯度更新之后,对压缩后的反向梯度进行解压操作,并将解压后的反向梯度传回目标计算引擎。
在一个可行的实施方式中,继续参照图2,数据平面200还包括上下文管理模块203;
在本实施方式中,上下文管理模块203用于存储各个分布式训练节点的运行时上下文,并在检测到任一分布式训练节点退出或者增加的情况下,更新各个分布式训练节点的运行时上下文。
需要说明的是,不同的底层通信库有着特定的初始化进程与运行时上下文,对于通信库而言,初始化操作是耗时的。为了提升数据通信操作的运行效率。本实施例通过使用上下文管理模块203存储分布式训练中各个工作节点的运行时上下文,从而避免分布式训练过程中对通信库反复进行初始化操作。其中,运行时上下文可以理解为各个分布式训练节点的运行环境。
在本实施方式中,在服务器无感知场景中,一旦用户逻辑认为需要根据硬件拓扑修改原始聚合通信算法,或者在弹性训练场景中有工作节点进入或者退出训练,控制平面100将会重置通信库的运行时上下文,以保证通信操作的正确执行,而无需通过系统重启等方式花费较长的时间实现对通信拓扑的重构。
下面将针对本实施例提出的服务器无感知的分布式训练软件定义聚合通信框架的实现原理进行介绍:
本实施例提出的服务器无感知的分布式训练软件定义聚合通信框架,其运行流程包含三个阶段,分别是获取各节点运行状态信息和性能信息、构建分布式训练数据流图、执行分布式训练聚合通信。上述流程反复迭代,即可完成针对目标模型的分布式训练过程。
阶段一:获取各个分布式训练节点的运行状态信息和性能信息。一方面,框架周期性地记录包括反向通信耗时在内的节点性能信息;另一方面,框架时刻监控节点工作状态,以判定训练过程中是否发生节点的进入或退出。控制平面100通过提供一组开放式的可编程接口,允许用户指定特殊事件的处理逻辑,根据节点工作状态及实时性能动态调节原始聚合通信算法。
阶段二:分布式训练数据流图的构建。框架基于当前系统状态信息以及用户指定的自定义聚合通信算法,构建独立于不同计算引擎和底层通信库的统一数据流图。为了实现数据流图的构建,本框架实现了对于不同通信库数据通信原语的抽象,以及对于不同计算引擎数据计算操作的抽象。基于上述抽象,控制平面100得以向用户一组可编程接口,允许用户自行指定分布式训练中的数据计算以及通信操作,框架则根据用户定义的控制信号,在数据平面200维护一张独立于不同运行环境的数据流图。
阶段三:分布式训练聚合通信的执行阶段。基于已构建的数据流,任务管理模块1013将根据计算引擎的运行状态发送控制信号,由数据平面200的操作执行模块202对接不同计算引擎及底层通信库接口并进行聚合通信,通信过程中的运行时上下文将被存储在上下文管理模块203中。
为验证服务器无感知的分布式训练软件定义聚合通信框架的性能,进行了以下验证试验:选取PyTorch和Tensorflow作为深度学习计算引擎实例,TCP和EFA作为底层通信实例,ResNet50、ResNet101、VGG16以及BERT作为训练模型实例,从普适性、通用性以及运行开销三个角度对系统原型进行了性能评估,实验结果显示基于该框架,用户可以灵活高效的在不同运行环境中实现各类自定义聚合通信算法;与现有聚合通信框架相比,本实施例提供的服务器无感知的分布式训练软件定义聚合通信框架未引入明显的运行时开销,并且能够将节点故障退出的处理速度提升6至15倍。
本实施例提出了一种面向服务器无感知分布式训练的软件定义聚合通信框架,基于现代系统设计原则,将控制平面100与数据平面200清晰解耦,通过在控制平面100向用户暴露一组可编程接口,使得用户能够将自定义数据操作注入到聚合通信操作的适当流程节点,实现对原始聚合通信算法的修改和优化;通过将分布式训练中的数据计算与通信阶段抽象为统一的数据数据流图,实现了不同阶段间的高效并行;通过不同计算引擎的数据计算操作以及不同通信库的数据通信操作抽象为统一的数据处理接口,提高接口调用的灵活性和便捷性,进而帮助用户实现灵活普适的聚合通信算法;数据平面200则负责对接不同计算引擎及底层通信库,实现自定义聚合通信算法在不同运行环境下的透明化部署。
第二方面,基于相同发明构思,参照图4,本申请实施例提供了一种服务器无感知的分布式训练软件定义聚合通信方法,运用于服务器无感知的分布式训练软件定义聚合通信框架,服务器无感知的分布式训练软件定义聚合通信框架包括控制平面100和数据平面200,控制平面100包括任务控制模块101和可编程接口模块102;服务器无感知的分布式训练软件定义聚合通信方法包括:
S401:任务控制模块101获取各个分布式训练节点的运行状态信息和性能信息。
S402:可编程接口模块102获取用户针对运行状态信息和性能信息输入的算法调整信息,并基于算法调整信息对原始聚合通信算法进行更新,得到自定义聚合通信算法。
S403:任务控制模块101基于自定义聚合通信算法,生成控制信号,并将控制信号发送给数据平面200。
S404:数据平面200响应于控制信号,确定目标计算引擎和目标通信库,并基于目标计算引擎和目标通信库,执行聚合通信操作,以完成针对目标模型的分布式训练。
在本申请一实施例中,自定义聚合通信算法包括多个自定义聚合通信子算法,可编程接口模块102包括与多个自定义聚合通信子算法一一对应的多个可编程接口,不同的可编程接口用于生成不同的自定义聚合通信子算法,且不同的自定义聚合通信子算法用于指示完成聚合通信操作中的不同流程节点;任务控制模块101包括连接管理模块1011、统计管理模块1012和任务管理模块1013;服务器无感知的分布式训练软件定义聚合通信方法包括:
S501:任务管理模块1013针对聚合通信操作中的任一流程节点,基于流程节点对应的自定义聚合通信子算法,生成控制子信号,并将控制子信号发送给数据平面200,以使数据平面200响应于控制子信号,完成流程节点。
S502:连接管理模块1011获取各个分布式训练节点的运行状态信息,并在检测到任一分布式训练节点退出或者增加的情况下,更新运行状态信息;其中,运行状态信息包括分布式训练节点的数量、节点序号和节点拓扑关系。
S503:统计管理模块1012调用预设的计时函数,记录各个分布式训练节点的性能信息;其中,性能信息包括分布式训练任务每轮的迭代时长以及各个分布式训练节点的平均运行时间。
在本申请一实施例中,数据平面200包括数据流图模块201;服务器无感知的分布式训练软件定义聚合通信方法包括:
S601:数据流图模块201针对任一分布式训练节点,确定分布式训练节点的当前计算操作节点以及当前计算操作节点对应的当前通信操作节点,并在当前计算操作节点进行反向计算的过程中,通过当前通信操作节点更新当前计算操作节点的当前梯度。
在本申请一实施例中,数据流图模块201包括第一通信子模块和第二通信子模块;服务器无感知的分布式训练软件定义聚合通信方法包括:
S601-1:第一通信子模块在当前计算操作节点为一个的情况下,通过当前通信操作节点获取当前计算操作节点的反向梯度,并基于反向梯度,更新当前计算操作节点的当前梯度。
S601-2:第二通信子模块在当前计算操作节点为多个的情况下,通过当前通信操作节点对多个当前计算操作节点各自对应的反向梯度进行融合操作,并基于融合后的多个反向梯度,更新多个当前计算操作节点的当前梯度。
在本申请一实施例中,数据流图模块201还包括排序子模块;服务器无感知的分布式训练软件定义聚合通信方法包括:
602:排序子模块获取用户针对每个通信操作节点输入的优先级序列,并按照优先级序列,依次控制每个通信操作节点进行梯度更新操作。
在本申请一实施例中,数据平面200还包括操作执行模块202,操作执行模块202包括具有若干个调用接口的代理层;服务器无感知的分布式训练软件定义聚合通信方法包括:
S701:操作执行模块202针对聚合通信操作中的任一流程节点,响应于流程节点对应的控制子信号,从若干个调用接口中确定目标调用接口,通过目标调用接口,调用目标计算引擎和目标通信库,执行流程节点对应的操作。
在本申请一实施例中,若干个调用接口包括对张量操作接口和对内存操作接口;操作执行模块202包括第一操作执行子模块和第二操作执行子模块;服务器无感知的分布式训练软件定义聚合通信方法包括:
S701-1:第一操作执行子模块在流程节点对应的操作为张量级操作的情况下,从对张量操作接口中确定目标调用接口,并按照目标调用接口对应的调用指令,调用目标计算引擎和目标通信库,执行流程节点对应的张量操作;张量级操作表征需要对反向梯度进行处理的操作。
S701-2:第二操作执行子模块在流程节点对应的聚合通信操作为内存级操作的情况下,从对内存操作接口中确定目标调用接口,并按照目标调用接口对应的调用指令,调用目标计算引擎和目标通信库,执行流程节点对应的内存操作;内存级操作表征需要对内存缓冲区进行处理的操作。
在本申请一实施例中,操作执行模块202还包括解压缩子模块;服务器无感知的分布式训练软件定义聚合通信方法包括:
S801:解压缩子模块对当前计算操作节点输出的反向梯度进行张量压缩处理,并在当前通信操作节点基于压缩后的反向梯度更新当前计算操作节点的当前梯度之后,对压缩后的反向梯度进行解压操作。
在本申请一实施例中,数据平面200还包括上下文管理模块203;服务器无感知的分布式训练软件定义聚合通信方法包括:
S901:上下文管理模块203存储各个分布式训练节点的运行时上下文,并在检测到任一分布式训练节点退出或者增加的情况下,更新各个分布式训练节点的运行时上下文。
需要说明的是,本申请实施例的服务器无感知的分布式训练软件定义聚合通信方法的具体实施方式参照前述本申请实施例第一方面提出的服务器无感知的分布式训练软件定义聚合通信框架的具体实施方式,在此不再赘述。
本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本发明所提供的一种服务器无感知的分布式训练软件定义聚合通信框架和方法,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上,本说明书内容不应理解为对本发明的限制。
Claims (9)
1.一种服务器无感知的分布式训练软件定义聚合通信装置,其特征在于,包括控制平面和数据平面,所述控制平面包括任务控制模块和可编程接口模块;其中,
所述任务控制模块,用于获取各个分布式训练节点的运行状态信息和性能信息;
所述可编程接口模块,用于获取用户针对所述运行状态信息和所述性能信息输入的算法调整信息,并基于所述算法调整信息对原始聚合通信算法进行更新,得到自定义聚合通信算法;
所述任务控制模块,还用于基于所述自定义聚合通信算法,生成控制信号,并将所述控制信号发送给所述数据平面;
所述数据平面,用于响应于所述控制信号,确定目标计算引擎和目标通信库,并基于所述目标计算引擎和所述目标通信库,执行聚合通信操作,以完成针对目标模型的分布式训练;
所述自定义聚合通信算法包括多个自定义聚合通信子算法,所述可编程接口模块包括与所述多个自定义聚合通信子算法一一对应的多个可编程接口,不同的可编程接口用于生成不同的自定义聚合通信子算法,且不同的自定义聚合通信子算法用于指示完成所述聚合通信操作中的不同流程节点;
所述任务控制模块包括连接管理模块、统计管理模块和任务管理模块;其中,
所述任务管理模块,用于针对所述聚合通信操作中的任一流程节点,基于所述流程节点对应的自定义聚合通信子算法,生成控制子信号,并将所述控制子信号发送给所述数据平面,以使数据平面响应于所述控制子信号,完成所述流程节点;
所述连接管理模块,用于获取各个所述分布式训练节点的所述运行状态信息,并在检测到任一分布式训练节点退出或者增加的情况下,更新所述运行状态信息;其中,所述运行状态信息包括分布式训练节点的数量、节点序号和节点拓扑关系;
所述统计管理模块,用于调用预设的计时函数,记录各个所述分布式训练节点的性能信息;其中,所述性能信息包括分布式训练任务每轮的迭代时长以及各个所述分布式训练节点的平均运行时间。
2.根据权利要求1所述的服务器无感知的分布式训练软件定义聚合通信装置,其特征在于,所述数据平面包括数据流图模块;
所述数据流图模块,用于针对任一分布式训练节点,确定所述分布式训练节点的当前计算操作节点以及所述当前计算操作节点对应的当前通信操作节点,并在所述当前计算操作节点进行反向计算的过程中,通过所述当前通信操作节点更新所述当前计算操作节点的当前梯度。
3.根据权利要求2所述的服务器无感知的分布式训练软件定义聚合通信装置,其特征在于,所述数据流图模块包括第一通信子模块和第二通信子模块;
所述第一通信子模块,用于在所述当前计算操作节点为一个的情况下,通过所述当前通信操作节点获取所述当前计算操作节点的反向梯度,并基于所述反向梯度,更新所述当前计算操作节点的当前梯度;
所述第二通信子模块,用于在所述当前计算操作节点为多个的情况下,通过所述当前通信操作节点对多个所述当前计算操作节点各自对应的反向梯度进行融合操作,并基于融合后的多个所述反向梯度,更新多个所述当前计算操作节点的当前梯度。
4.根据权利要求2所述的服务器无感知的分布式训练软件定义聚合通信装置,其特征在于,所述数据流图模块还包括排序子模块;
所述排序子模块,用于获取用户针对每个通信操作节点输入的优先级序列,并按照所述优先级序列,依次控制每个所述通信操作节点进行梯度更新操作。
5.根据权利要求3所述的服务器无感知的分布式训练软件定义聚合通信装置,其特征在于,所述数据平面还包括操作执行模块,所述操作执行模块包括具有若干个调用接口的代理层;
所述操作执行模块,用于针对所述聚合通信操作中的任一流程节点,响应于所述流程节点对应的控制子信号,从所述若干个调用接口中确定目标调用接口,通过所述目标调用接口,调用所述目标计算引擎和所述目标通信库,执行所述流程节点对应的操作。
6.根据权利要求5所述的服务器无感知的分布式训练软件定义聚合通信装置,其特征在于,所述若干个调用接口包括对张量操作接口和对内存操作接口;所述操作执行模块包括第一操作执行子模块和第二操作执行子模块;
所述第一操作执行子模块,用于在所述流程节点对应的操作为张量级操作的情况下,从所述对张量操作接口中确定所述目标调用接口,并按照所述目标调用接口对应的调用指令,调用所述目标计算引擎和所述目标通信库,执行所述流程节点对应的张量操作;所述张量级操作表征需要对反向梯度进行处理的操作;
所述第二操作执行子模块,用于在所述流程节点对应的聚合通信操作为内存级操作的情况下,从所述对内存操作接口中确定所述目标调用接口,并按照所述目标调用接口对应的调用指令,调用所述目标计算引擎和所述目标通信库,执行所述流程节点对应的内存操作;所述内存级操作表征需要对内存缓冲区进行处理的操作。
7.根据权利要求5所述的服务器无感知的分布式训练软件定义聚合通信装置,其特征在于,所述操作执行模块还包括解压缩子模块;
所述解压缩子模块,用于对所述当前计算操作节点输出的反向梯度进行张量压缩处理,并在所述当前通信操作节点基于压缩后的反向梯度更新所述当前计算操作节点的当前梯度之后,对压缩后的反向梯度进行解压操作。
8.根据权利要求2所述的服务器无感知的分布式训练软件定义聚合通信装置,其特征在于,所述数据平面还包括上下文管理模块;
所述上下文管理模块,用于存储各个所述分布式训练节点的运行时上下文,并在检测到任一分布式训练节点退出或者增加的情况下,更新各个所述分布式训练节点的运行时上下文。
9.一种服务器无感知的分布式训练软件定义聚合通信方法,其特征在于,运用于服务器无感知的分布式训练软件定义聚合通信装置,所述服务器无感知的分布式训练软件定义聚合通信装置包括控制平面和数据平面,所述控制平面包括任务控制模块和可编程接口模块;所述服务器无感知的分布式训练软件定义聚合通信方法包括:
所述任务控制模块获取各个分布式训练节点的运行状态信息和性能信息;
所述可编程接口模块获取用户针对所述运行状态信息和所述性能信息输入的算法调整信息,并基于所述算法调整信息对原始聚合通信算法进行更新,得到自定义聚合通信算法;
所述任务控制模块基于所述自定义聚合通信算法,生成控制信号,并将所述控制信号发送给所述数据平面;
所述数据平面响应于所述控制信号,确定目标计算引擎和目标通信库,并基于所述目标计算引擎和所述目标通信库,执行聚合通信操作,以完成针对目标模型的分布式训练;
所述自定义聚合通信算法包括多个自定义聚合通信子算法,所述可编程接口模块包括与所述多个自定义聚合通信子算法一一对应的多个可编程接口,不同的可编程接口用于生成不同的自定义聚合通信子算法,且不同的自定义聚合通信子算法用于指示完成所述聚合通信操作中的不同流程节点;所述任务控制模块包括连接管理模块、统计管理模块和任务管理模块;所述服务器无感知的分布式训练软件定义聚合通信方法还包括:
所述任务管理模块针对所述聚合通信操作中的任一流程节点,基于所述流程节点对应的自定义聚合通信子算法,生成控制子信号,并将所述控制子信号发送给所述数据平面,以使数据平面响应于所述控制子信号,完成所述流程节点;
所述连接管理模块获取各个所述分布式训练节点的所述运行状态信息,并在检测到任一分布式训练节点退出或者增加的情况下,更新所述运行状态信息;其中,所述运行状态信息包括分布式训练节点的数量、节点序号和节点拓扑关系;
所述统计管理模块调用预设的计时函数,记录各个所述分布式训练节点的性能信息;其中,所述性能信息包括分布式训练任务每轮的迭代时长以及各个所述分布式训练节点的平均运行时间。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310614094.0A CN116366467B (zh) | 2023-05-29 | 2023-05-29 | 服务器无感知的分布式训练软件定义聚合通信框架和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310614094.0A CN116366467B (zh) | 2023-05-29 | 2023-05-29 | 服务器无感知的分布式训练软件定义聚合通信框架和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116366467A CN116366467A (zh) | 2023-06-30 |
CN116366467B true CN116366467B (zh) | 2023-08-08 |
Family
ID=86939908
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310614094.0A Active CN116366467B (zh) | 2023-05-29 | 2023-05-29 | 服务器无感知的分布式训练软件定义聚合通信框架和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116366467B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107547283A (zh) * | 2017-09-21 | 2018-01-05 | 新华三技术有限公司 | 分布式聚合组的管理方法及装置 |
WO2022062568A1 (zh) * | 2020-09-27 | 2022-03-31 | 华为技术有限公司 | 一种交换机的配置方法及相关设备 |
CN114363248A (zh) * | 2020-09-29 | 2022-04-15 | 华为技术有限公司 | 计算系统、加速器、交换平面及聚合通信方法 |
CN115102864A (zh) * | 2022-06-21 | 2022-09-23 | 中国人民解放军国防科技大学 | 一种用于Dragonfly拓扑的Allgather方法及装置 |
CN115277454A (zh) * | 2022-07-28 | 2022-11-01 | 中国人民解放军国防科技大学 | 用于分布式深度学习训练的聚合通信方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11012364B2 (en) * | 2018-10-11 | 2021-05-18 | Dell Products L.P. | Aggregated link flow control system |
EP3754550A1 (en) * | 2019-06-21 | 2020-12-23 | Siemens Healthcare GmbH | Method for providing an aggregate algorithm for processing medical data and method for processing medical data |
US11733767B2 (en) * | 2021-06-25 | 2023-08-22 | Qualcomm Incorporated | Power management for multiple-chiplet systems |
-
2023
- 2023-05-29 CN CN202310614094.0A patent/CN116366467B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107547283A (zh) * | 2017-09-21 | 2018-01-05 | 新华三技术有限公司 | 分布式聚合组的管理方法及装置 |
WO2022062568A1 (zh) * | 2020-09-27 | 2022-03-31 | 华为技术有限公司 | 一种交换机的配置方法及相关设备 |
CN114363272A (zh) * | 2020-09-27 | 2022-04-15 | 华为技术有限公司 | 一种交换机的配置方法及相关设备 |
CN114363248A (zh) * | 2020-09-29 | 2022-04-15 | 华为技术有限公司 | 计算系统、加速器、交换平面及聚合通信方法 |
CN115102864A (zh) * | 2022-06-21 | 2022-09-23 | 中国人民解放军国防科技大学 | 一种用于Dragonfly拓扑的Allgather方法及装置 |
CN115277454A (zh) * | 2022-07-28 | 2022-11-01 | 中国人民解放军国防科技大学 | 用于分布式深度学习训练的聚合通信方法 |
Non-Patent Citations (1)
Title |
---|
面向异构DHT存储的数据与位置解构算法;罗超然等;《软件学报》;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN116366467A (zh) | 2023-06-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9092738B2 (en) | Apparatus and methods for event-triggered updates in parallel networks | |
US9104973B2 (en) | Elementary network description for neuromorphic systems with plurality of doublets wherein doublet events rules are executed in parallel | |
US8725658B2 (en) | Elementary network description for efficient memory management in neuromorphic systems | |
US20230409974A1 (en) | Modularized model interaction system and method | |
CN115600676A (zh) | 深度学习模型推理方法、装置、设备及存储介质 | |
Deen et al. | Running Quake II on a grid | |
CN116366467B (zh) | 服务器无感知的分布式训练软件定义聚合通信框架和方法 | |
CN111274018A (zh) | 一种基于dl框架下的分布式训练方法 | |
Saad et al. | Wide area bonjourgrid as a data desktop grid: Modeling and implementation on top of redis | |
Sanches | Distributed computing in a cloud of mobile phones | |
Ekaireb et al. | Laminar: Dataflow Programming for Serverless IoT Applications | |
Cera | Providing adaptability to MPI applications on current parallel architectures | |
CN112988571B (zh) | 一种用于优化cc代码的自动化编译部署方法及系统 | |
Franks | Simulating layered queueing networks with passive resources. | |
Souza et al. | Controlling the parallel execution of workflows relying on a distributed database | |
Vardas | Process Placement Optimizations and Heterogeneity Extensions to the Slurm Resource Manager | |
Chandramouli et al. | CRA: A Common Runtime for Applications | |
Urena | TECHNISCHE UNIVERSIT AT MUNCHEN | |
Balis et al. | Using an actor framework for scientific computing: Opportunities and challenges | |
Zou | Optimizing response time for distributed applications in public clouds | |
Zhu et al. | A Domain-Specific Language for Reconfigurable, Distributed Software | |
Urmil et al. | ReactiveFnJ: A choreographed model for Fork-Join Workflow in Serverless Computing | |
Azzopardi et al. | Mapping CSP Networks to MPI Clusters Using Channel Graphs and Dynamic Instrumentation | |
CN114253532A (zh) | 模型开发方法、装置、引擎及存储介质 | |
Yethadka | A Distributed Lock Manager Using Paxos: Design and Implementation of Warlock, a Consensus Based Lock Manager |
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 |