一种网络重置方法及基于此的加速分布式训练方法和系统
文献发布时间:2023-06-19 11:54:11
技术领域
本发明涉及AI模型分布式训练技术领域;具体地,涉及一种网络重置方法及基于此的加速分布式训练方法和系统。
背景技术
近年来,人工智能,特别是深度学习,在图像识别,语言处理等领域取得重大突破,并且开始广泛应用于商业活动中。深度学习能够取得如此重大突破的一个关键原因是深度学习在训练过程中处理了大量样本,从样本中学习到样本之中包含的众多特征。若是仅使用单台服务器运行深度学习训练,那么其处理完大量样本过程中将耗费大量时间,严重影响工作效率。因此,既有必要将训练扩展到多台服务中进行,每台服务器处理不同的样本,加快样本处理速度,缩短深度学习训练时间,这也就是最近兴起的分布式训练。深度学习可以理解为是基于梯度的学习:深度学习训练过程中处理样本,经过一系列复杂运算,可以得到深度学习过程中一个至关重要的中间结果梯度。在分布式训练过程中的关键即每台服务器需要将其计算得到的梯度分享给其他服务器。
由于要保证各节点(例如前面述及的服务器节点)上的梯度等参数的一致性,一个用于分布式训练的服务器集群,其部署运行环境、启动训练过程中都有着大量网络配置、分布式训练配置等工作,需要运维人员和算法工程师们手动实施。如此方法配置,是一定会严重制约其部署和训练效率。
容器技术的出现,不仅能够实现容器集群的快速部署,同时它也是一种轻量化的解决方案,且能够有效整合和管理着裸机资源。Kubernetes即为一种典型的基于容器技术的用于管理多主机上的容器化的应用。以Kubernetes平台运行分布式机器学习训练任务为例,Kubernetes不仅大大简化深度学习环境部署过程,还能够实现分布式训练的快速启动,最大限度减少运维人员和算法工程师们手动操作,进而提高训练效率。
不同于在物理服务器集群上部署分布式训练,在如Kubernetes平台等的这类容器云平台部署分布式训练任务时,通常是先配置分布式训练任务,再依据其资源需求向平台申请资源和和为分布式训练任务中的各子任务创建对应的虚拟节点(即容器或容器组,例如Pod——Kubernetes平台的最小调度单位,其实质上为包含一个或者多个容器的逻辑主机),以上也即是将分布式训练任务调度到容器云平台的过程。此外,为保障训练过程中各虚拟节点上的子任务间训练参数等的一致性,还需要为之生成一系列分布式训练配置;例如,在Kubernetes平台部署分布式tensorflow任务时,即是通过Pod的环境变量TF_CONFIG实现各Pod上任务训练参数的一致性的。因为是设置分布式训练任务在前而用于训练的容器集群创建在后,所以配置中用于虚拟节点间互联通信的网络连接配置,并非虚拟节点实际的网络地址这样网络配置信息,而仅是一个连接访问服务的字符串;而上述虚拟节点间的通信,实际上是通过上述的连接访问服务字符串请求容器云平台提供的连接访问服务实现的;这其中的虚拟节点间通信,自然也包括后续的训练过程中的各虚拟节点间的互联通信。
在分布式训练过程中,每个节点中的训练进程将其计算的梯度发送给其他节点和接收其他节点发来的梯度的过程,将会产生大量网络通信,并且随着分布式训练集群规模越来越大,其中产生的网络通信成倍增加,逐渐成为制约深度学习分布式训练效率的主要因素。这主要是因为分布式训练过程中网络通信往往是基于TCP/IP协议实现的,而基于TCP/IP协议的传统网络通信,需要系统内核和网络协议栈接入,其中涉及大量不必要的数据拷贝,特别是随着样本数据集的爆炸性增长、样本数据集Batch Size的几何倍数增大,不仅是其本身通信效率低下,而且还将大量占用CPU资源。因此,传统的基于TCP/IP协议的网络通信,越来越不适用今日之分布式训练。
远程直接内存访问技术,即RDMA技术,则可以省去数据传输过程中不必要的数据拷贝;同时,由于其将数据读取等业务逻辑卸载到网卡中,故数据传输过程中也不再需要CPU参与。因此,较之传统网络通信,RDMA网络大大提升网络通信速度。将其应用于深度学习分布式训练,可以加快分布式训练过程中各个节点间的参数、梯度交换过程,大幅降低传统网络通信瓶颈对于分布式训练效率的不利影响。其中使在物理服务器集群上部署的分布式训练使用RDMA网络,并不存在十分复杂的技术问题。具体而言,在部署时提供额外的RDMA网络,并获取集群RDMA网络配置,将其对应地设为分布式训练过程中训练数据传输的网络即可。
然而,在容器云平台部署分布式训练任务时,因为是设置分布式训练任务在前而构成训练集群的虚拟节点创建在后,所以在训练集群上运行的各分布式训练应用是无法获知训练集群的RDMA网络配置的,那么显然也是无法使用RDMA网络传输训练数据的。
发明内容
有鉴于此,本发明提供一种网络重置方法及基于此的加速分布式训练方法和系统。其中,本发明拟提供一种网络重置方法,在分布式训练过程中重置训练数据的传输网络——由默认的传统网络替换为高效的RDMA网络;此外,在此基础上,还将提供一种加速分布式训练方法以及加速分布式训练系统。
一方面,本发明实施例提供一种分布式训练过程中训练数据传输网络重置的方法,其中,通过使所有运行着训练进程的虚拟节点构成一个逻辑环和确定逻辑环的起始节点、终止节点,以及从起始节点起向下游直到终止节点,通过递次地传递上游节点RDMA网络配置到下游相邻节点,正向收集逻辑环中各节点的RDMA网络配置,即收集全局RDMA网络配置;和在正向收集过程结束后,从终止节点起向上游直到起始节点,通过逐节点地传递全局RDMA网络配置,反向同步全局RDMA网络配置到逻辑环中各节点的训练进程;最后,在上述反向同步过程结束后,通过各节点训练进程根据全局RDMA网络配置重置训练集群中的训练数据传输网络为RDMA网络。其中,
上述的分布式训练过程中重置训练数据传输网络的方法,具体包括:
在分布式训练启动后和各虚拟节点上运行的分布式训练应用执行训练运算前,
将所有运行着训练进程的虚拟节点分别视为独立的逻辑节点,构建一个逻辑环,使其包括上述的全部虚拟节点;
确定逻辑环中任意的相邻的两个虚拟节点分别为起始节点、终止节点;
从起始节点起向下游,正向收集逻辑环中各节点的RDMA网络配置:
从起始节点起向下游直到终止节点,其中的各训练进程递次地获取本虚拟节点RDMA网络配置和接收自上游相邻节点训练进程发来的上游节点的RDMA网络配置(其中,起始节点视为无上游相邻节点,只需获取其自身虚拟节点的RDMA网络配置即可);并将它们一并作为下游相邻节点的上游节点RDMA网络配置,发送给下游相邻节点的训练进程;直至终止节点的训练进程获得逻辑环内全部节点的RDMA网络配置,也即训练集群的全局RDMA网络配置;
从终止节点起向上游,反向同步全局RDMA网络配置:
在上述正向收集过程结束后,从终止节点起向上游直到起始节点,其中的各训练进程,逐节点地将传递和同步上述的全局RDMA网络配置给上游相邻节点的训练进程;直至起始节点的训练进程也获得上述的全局RDMA网络配置;
在上述的正向收集和反向同步过程结束后,各节点的训练进程均获得了全部RDMA网络配置;根据全局RDMA网络配置,各节点的训练进程分别生成新的包括RDMA网络配置的训练数据传输网络配置,替换训练集群中默认的训练数据传输网络配置,也即重置训练集群的训练数据传输网络为RDMA网络。
另一方面,基于第一方面提供的分布式训练过程中训练数据传输网络重置的方法,本发明实施例提供一种加速分布式训练方法,也即一种基于高效通信网络的加速分布式训练方法。
结合第一方面,上述的基于高效通信网络的加速分布式训练方法,包括:
将分布式训练任务调度到容器云平台;
在训练集群启动分布式训练应用;
在各虚拟节点上的训练应用执行训练前,
以第一方面述及的方法重置上述训练集群的训练数据传输网络配置为RDMA网络;
在训练数据传输网络配置被重置为RDMA网络后,
各训练应用即开始执行训练运算以及训练运算相关的操作等具体训练业务逻辑;
在之后的训练过程中,通过RDMA网络,进行各训练进程间的训练数据的通信。
再一方面,基于第一方面提供的分布式训练过程中训练数据传输网络重置的方法,本发明实施例提供一种加速分布式训练系统,也即一种基于高效通信网络的加速分布式训练系统。
结合第一、第二方面,上述的基于高效通信网络的加速分布式训练系统,包括:
网络重置单元,用于在分布式训练启动后和训练集群各虚拟节点上分布式训练应用执行训练前,重置训练集群的训练数据传输网络配置为RDMA网络;具体地,上述的网络重置单元,通过执行第一方面述及方法中的操作,实现上述的网络重置;
在上述网络重置单元将训练集群的训练数据传输网络配置为RDMA网络后,所述的加速分布式训练系统,通过训练集群各虚拟节点上的分布式训练应用开始执行训练运算以及训练运算相关的操作等具体训练业务逻辑,以及在后续训练过程中通过RDMA网络进行各训练进程间的训练数据的通信,实现高效RDMA网络的加速分布式训练。
上述实施例提供的分布式训练过程中训练数据传输网络重置的方法,通过使所有运行着训练进程的虚拟节点构成一个逻辑环以及从逻辑环的起始节点起向下游的正向收集全局RDMA网络配置和从终止节点起向上游的反向同步全局RDMA网络配置过程,使各虚拟节点训练进程都获得全局RDMA网络配置,并根据其重置训练集群中的训练数据传输网络配置为RDMA网络。
而上述实施例提供的基于高效通信网络的加速分布式训练方法、系统,则进一步地在前面述及的训练数据传输网络重置方法的基础上,在分布式训练过程中重置训练数据传输网络为RDMA网络,利用RDMA网络高效传输训练数据,克服分布式训练过程中训练数据传输的网络通信瓶颈问题,进而提升分布式训练效率。
下面通过附图、具体实施例对本发明的技术方案做进一步的描述。
附图说明
为更加清楚地说明本发明实施例或现有技术中的技术方案,下面将对本发明中一部分实施例或现有技术描述中涉及的附图做简单介绍。
图1为基于本发明一些优选实施例提供的一种基于高效通信网络的加速分布式训练方法的流程示意图。
具体实施方式
下面结合本发明实施例的附图,对本发明实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
以下为本发明的一些优选实施例。
这些优选实施例中的一些提供一种分布式训练过程中训练数据传输网络重置的方法。
该方法具体包括:
当分布式训练任务被调度到容器云平台,
在各虚拟节点启动分布式训练应用后和分布式训练应用执行训练前,将所有运行训练进程的虚拟节点均视为独立的逻辑节点,构建一个逻辑环,使其包括全部的上述虚拟节点;
选择逻辑环中任意的相邻的两个虚拟节点,分别作为逻辑环的起始节点、终止节点;
从起始节点起向下游方向,正向收集逻辑环中各节点的RDMA网络配置,即收集全局RDMA网络配置:
由起始节点的训练进程获取本虚拟节点的RDMA网络配置,并将之发送给与其相邻的下游节点(记做第二节点);第二节点接收上游相邻节点(即起始节点)发来的上游节点RDMA网络配置,并获取本节点的RDMA网络配置,将它们一并作为其下游相邻节点(这里即是指第三节点)的上游节点RDMA网络配置,发送给第三节点的训练进程;……,上述传递和收集过程由后续节点的训练进程递次进行,直至终止节点的训练进程获得逻辑环中全部节点的RDMA网络配置,也即训练集群的全局RDMA网络配置;
从终止节点起向上游方向,反向同步全局RDMA网络配置到各节点:
在正向收集过程结束后,由终止节点的训练进程将其获得的全局RDMA网络配置发送给与其相邻的上游节点(将终止节点记做为第N节点,那么这里的终止节点的上游相邻节点即记做第N-1节点)的训练进程;接下来,第N-1节点的训练进程在收到和同步全局RDMA网络配置后,将之发送给其上游相邻节点(记做第N-2节点)的训练进程;……上述的传递和同步过程由后续节点的训练进程逐节点地进行,直至起始节点的训练进程也获得全局RDMA网络配置;
经过上述的正向收集和反向同步过程,各节点的训练进程均获得了全部RDMA网络配置;根据获得的全局RDMA网络配置,各节点的训练进程分别生成新的包括RDMA网络配置的训练数据传输网络配置,替换训练集群中默认的训练数据传输网络配置,即重置训练集群的训练数据传输网络为RDMA网络。其中,上述更新训练数据传输网络配置的一种简单的实现方式,可以是:修改默认训练数据传输网络配置中的连接访问服务字符串为全局RDMA网络配置中对应节点的RDMA网络配置。
一般来说,上述的优选实施例提供的基于高效通信网络的加速分布式训练方法中,在网络重置过程中,不免会因节点或节点间链路故障而使逻辑环中的一些节点无法通信;通常在这种情况下,训练数据传输网络重置过程会重置失败并导致整个训练退出。因此,进一步地,在上述的优选实施例中的一些提供的分布式训练过程中训练数据传输网络重置的方法中,在正向收集全局RDMA网络配置的过程中,若其中的训练进程发现其下游相邻节点无法通信,则跳过该下游相邻节点,向该下游相邻节点的下游相邻节点的训练进程发送上游节点RDMA网络配置;若仍不通,则继续跳过,直至有下游节点接收其发送的上游RDMA网络配置。
此外,进一步地,在上述的优选实施例中的一些提供的分布式训练过程中训练数据传输网络重置的方法中,在反向同步全局RDMA网络配置的过程中,若其中的训练进程发现其上游相邻节点无法通信,则删除在全局RDMA网络配置中的该上游相邻节点的RDMA网络配置;并跳过该上游相邻节点向该上游相邻节点的上游相邻节点的训练进程同步新的全局RDMA网络配置;以及根据全局RDMA网络配置向已同步全局RDMA网络配置的下游节点同步新的全局RDMA网络配置;若上述的上游相邻节点的上游相邻节点仍不通,则继续通过删除更新全局RDMA网络配置、跳过无法通信的上游节点和向下游节点同步新的全局RDMA网络配置,直至有上游节点接收其同步的全局RDMA网络配置。
进一步地,在上述的优选实施例中的一些提供的分布式训练过程中训练数据传输网络重置的方法中,在根据全局RDMA网络配置重置训练数据传输网络配置前,删除在全局RDMA网络配置中没有RDMA网络配置的节点,根据删除后的全局RDMA网络配置,生成新的全部为RDMA网络配置构成的训练数据传输网络配置。如此即可删除没有RDMA网络配置的节点以及因无法通信而无法收集RDMA网络配置或同步失败的节点,避免出现混合网络的训练集群或报错退出。
进一步地,在上述的优选实施例中的一些提供的分布式训练过程中训练数据传输网络重置的方法中,其中的各训练进程在获取、接收RDMA网络配置、更新训练数据传输网络配置后,即时保存。例如,根据生成的新的训练数据传输网络配置修改节点操作系统的环境变量,将新的训练数据传输网络配置保存在节点操作系统的环境变量中。
进一步地,在上述的优选实施例中的一些提供的分布式训练过程中训练数据传输网络重置的方法中,其中的训练数据传输主要包括分布式训练过程中AI模型的参数交换;例如深度学习中的梯度聚合等。
在上述优选实施例提供的分布式训练过程中训练数据传输网络重置的方法的基础上,本发明的另一些优选实施例提供一种基于高效通信网络的加速分布式训练方法。如图1所示,该方法包括:
将分布式训练任务调度到容器云平台;
在训练集群启动分布式训练应用;
在各虚拟节点上的训练应用执行训练前,以上述任一实施例述及的分布式训练过程中训练数据传输网络重置的方法重置训练集群的训练数据传输网络配置为RDMA网络;
在训练数据传输网络配置被重置为RDMA网络后,
各训练应用即在本节点开始执行训练运算以及训练运算相关的操作等具体训练业务逻辑;以及在之后的训练过程中,通过RDMA网络,进行各训练进程间的训练数据的通信。
一般来说,若上述的优选实施例提供的基于高效通信网络的加速分布式训练方法中,在网络重置过程中,虽然是可以通过在正向收集、反向同步和根据全局RDMA网络配置重置训练数据传输网络的过程中,剔除没有RDMA网络配置的节点和/或在正向收集、反向同步过程中无法通信的节点;但是,由于并不存在统一的管理节点来管理各个节点,这些节点的训练进程将仍在继续等待其他节点的通信,而并不重置网络并继而开始执行训练运算;这些节点的存在将仍占用容器云平台资源。因此,进一步地,在上述的优选实施例中的一些提供的一种基于高效通信网络的加速分布式训练方法中,其中的训练进程若在一定时间内都没有收到来自其他节点的通信,则退出训练,并通知容器云平台销毁该虚拟节点(即容器或容器组),释放占用资源。
在上述优选实施例提供的分布式训练过程中训练数据传输网络重置的方法的基础上,本发明的又一些优选实施例提供一种基于高效通信网络的加速分布式训练系统。该系统包括:
网络重置单元,用于在分布式训练启动后和训练集群各虚拟节点上分布式训练应用执行训练前,重置训练集群的训练数据传输网络配置为RDMA网络;其中,上述的网络重置单元,通过执行上述任一实施例述及的分布式训练过程中训练数据传输网络重置方法中的操作,实现网络重置的目的;
在上述的网络重置单元将训练集群的训练数据传输网络配置为RDMA网络后,所述的加速分布式训练系统,通过训练集群各虚拟节点上的分布式训练应用开始执行训练运算以及训练运算相关的操作等具体训练业务逻辑,以及在后续训练过程中通过RDMA网络进行各训练进程间的训练数据的通信,实现高效RDMA网络的加速分布式训练。
进一步地,在上述的优选实施例中的一些提供的一种基于高效通信网络的加速分布式训练系统中,还包括:
资源优化单元,用于在分布式训练过程中处理那些经训练数据传输网络重置后未能参与分布式训练的节点,即“空转节点”;例如,没有RDMA网络配置的节点、在正向收集、反向同步过程中无法通信的节点;
具体而言,其通过在执行训练后的各节点的训练进程的跨节点通信情况判断哪些节点为“空转节点”,未参与分布式训练;其中,若有节点的训练进程在一定时间内都没有收到来自其他节点的通信,则退出训练,并通知容器云平台销毁该虚拟节点(即容器或容器组),释放占用资源。
以下为上述优选实施例中的一个的具体实现,其以在Kubernetes平台部署分布式训练任务为例,其中:
当分布式任务被调度到容器云平台;
用于分布式训练的Pod以及由其构成的训练集群被创建;
在各Pod中启动运行训练进程,
在上述训练进程执行训练运行相关的构建图以及训练运算等业务逻辑前,
所有训练进程根据深度学习框架提供的功能,生成各自的任务ID,并构建逻辑环;
预先定义其中的两个相邻的ID的Pod分别为起始节点、终止节点;例如,其中的任务ID编号0-M,且根据该顺序构建逻辑环,定义其中的为0和为M的节点为起始节点、终止节点;
每个训练进程根据任务ID,确认其是否为起始节点、终止节点;
每个训练进程分别获取各自的包含RDMA网卡地址(一般是RDMA网络IP)等的网络配置信息;
每个训练进程执行RDMA网络配置的正向收集传递,其过程如下:
若执行的训练进程位于起始节点,则将其RDMA网络配置信息发送给其下游相邻节点(即ID为1的节点);
若执行的训练进程既不位于起始节点也不位于终止节点(即ID为1至M-1的节点),则等待上游相邻节点发来的RDMA网络配置信息,并加入自身RDMA网络配置信息,生成新的上游节点RDMA网络配置信息;以及将新的上游节点RDMA网络配置信息发送给其下游相邻节点;
若执行的训练进程位于终止节点,则等待上游相邻节点(即ID为M-1的节点)发来的上游节点RDMA网络配置信息,加入自身RDMA网络配置信息,生成全局RDMA网络配置信息;
如果在上述正向收集传递过程中,其中的某个训练进程发现下游相邻节点的训练进程无法通信,则跳过该下游相邻节点,发送给该下游相邻节点的下游相邻节点的训练进程;若仍不通,则继续跳过,直至有下游节点接收其发送的上游RDMA网络配置;
在终止节点获得全局RDMA网络配置信息后,继而每个训练进程执行全局RDMA网络配置的反向同步传递,其过程如下:
若执行的训练进程位于终止节点,则将全局RDMA网络配置信息发送给其上游相邻节点(即ID为M-1的节点);
若执行的训练进程既不位于起始节点也不位于终止节点(即ID为1至M-1的节点),则等待下游相邻节点发来的全局RDMA网络配置信息,并将其发送给其上游相邻节点;
若执行的训练进程位于起始节点,则等待接收其下游相邻节点发来的全局RDMA网络配置信息;
如果在上述反向同步传递过程中,其中的某个训练进程发现上游相邻节点的训练进程无法通信,则删除在全局RDMA网络配置信息中的该上游相邻节点的RDMA网络配置;并跳过该上游相邻节点,向该上游相邻节点的上游相邻节点的训练进程同步新的全局RDMA网络配置信息;以及根据全局RDMA网络配置信息向已同步全局RDMA网络配置的下游节点同步新的全局RDMA网络配置信息;若上述的上游相邻节点的上游相邻节点仍不通,则继续通过删除更新全局RDMA网络配置信息、跳过无法通信的上游节点和向下游节点同步新的全局RDMA网络配置信息,直至有上游节点接收其同步的全局RDMA网络配置信息;
经过上述的正向收集后反向同步后,所有训练进程都拥有了全局RDMA网络配置信息(重置过程中无法通信的节点的训练进程除外);上述的各训练进程根据保存的全局RDMA网络配置信息生成新的由RDMA网络配置构成的训练数据传输网络配置,修改替换保存在各节点操作系统环境变量中的默认的训练数据传输网络配置;
所有训练进程开始执行构建图、训练运算等操作,使用新的训练数据传输网络——RDMA网络进行节点间的参数交换。
此外,在上述的分布式训练过程中(特别是在训练集群开始执行训练后),其中的训练进程若在设定的时间t内(例如,根据经验值设定为5分钟)都没有收到来自其他节点的通信,则退出训练,并通知容器云平台销毁该Pod,释放占用资源。
以上所述仅为本发明的具体实施方式,但本发明的保护范围并不局限于此。
- 一种网络重置方法及基于此的加速分布式训练方法和系统
- 分布式处理用人工神经网络运算加速装置、利用其的人工神经网络加速系统、及该人工神经网络的加速方法