CN117332881B - 分布式训练方法及电子设备 - Google Patents
分布式训练方法及电子设备 Download PDFInfo
- Publication number
- CN117332881B CN117332881B CN202311594384.XA CN202311594384A CN117332881B CN 117332881 B CN117332881 B CN 117332881B CN 202311594384 A CN202311594384 A CN 202311594384A CN 117332881 B CN117332881 B CN 117332881B
- Authority
- CN
- China
- Prior art keywords
- cache
- data
- node
- computing
- data set
- 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
- 238000000034 method Methods 0.000 title claims abstract description 255
- 238000012549 training Methods 0.000 title claims abstract description 110
- 238000013145 classification model Methods 0.000 claims description 21
- 238000004422 calculation algorithm Methods 0.000 claims description 8
- 238000004590 computer program Methods 0.000 claims description 6
- 239000007787 solid Substances 0.000 claims description 6
- 238000004891 communication Methods 0.000 abstract description 10
- 238000010586 diagram Methods 0.000 description 19
- 238000004364 calculation method Methods 0.000 description 15
- 230000006870 function Effects 0.000 description 9
- FFBHFFJDDLITSX-UHFFFAOYSA-N benzyl N-[2-hydroxy-4-(3-oxomorpholin-4-yl)phenyl]carbamate Chemical compound OC1=C(NC(=O)OCC2=CC=CC=C2)C=CC(=C1)N1CCOCC1=O FFBHFFJDDLITSX-UHFFFAOYSA-N 0.000 description 6
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000010801 machine learning Methods 0.000 description 3
- 238000012544 monitoring process Methods 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000012512 characterization method Methods 0.000 description 1
- 238000003066 decision tree Methods 0.000 description 1
- 238000013136 deep learning model Methods 0.000 description 1
- 238000007477 logistic regression Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
- G06N20/20—Ensemble learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/21—Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
- G06F18/213—Feature extraction, e.g. by transforming the feature space; Summarisation; Mappings, e.g. subspace methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/24—Classification techniques
-
- 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/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- Computer Vision & Pattern Recognition (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Life Sciences & Earth Sciences (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Evolutionary Biology (AREA)
- Computing Systems (AREA)
- Medical Informatics (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供了一种分布式训练方法及电子设备。该方法包括:在第一集群的多个目标计算节点中,创建目标计算任务对应的计算任务进程;将第一数据集对应的第一缓存服务设置为目标计算任务的输入;根据交换网络、第一缓存服务和计算节点组,确定是否扩容;如果确定扩容,在每个目标计算节点中创建第一缓存服务的第二缓存进程,从第一缓存进程读取第一数据集并存储到第二缓存进程;目标计算节点从目标计算节点中的第二缓存进程读取第一数据集中的数据,用于目标计算节点上的计算任务进程的训练。这样,使计算任务训练过程中能够在本地读取训练所需数据,提高数据读取速度,节约网络通信带宽,从而提高训练速度。
Description
技术领域
本申请涉及终端设备领域,尤其涉及一种分布式训练方法及电子设备。
背景技术
目前,各类模型例如机器学习模型、深度学习模型等应用越来越广泛。这些模型在投入使用之前,需要进行训练,以确定模型中的参数。
对于大模型,通常采用分布式训练方式,将大模型的训练任务(通常称为计算任务)分配在多个设备(这些设备称为计算节点)上进行训练。这些训练任务需要从远程数据集中读取训练数据。
训练数据的读取时间是模型的整体训练时间中的重要组成部分。如何减少训练数据的读取时间,对于提高模型的训练速度具有重要意义。
发明内容
为了解决上述技术问题,本申请提供一种分布式训练方法及电子设备,能够提高模型的分布式训练的训练速度。
第一方面,本申请提供一种分布式训练方法,该方法包括:在第一集群的多个目标计算节点中,创建目标计算任务对应的计算任务进程,所有目标计算节点组成计算节点组;将第一数据集对应的第一缓存服务设置为目标计算任务的输入,第一集群的至少一个缓存节点中包括第一缓存服务的第一缓存进程,第一缓存进程中存储有第一数据集;缓存节点设备通过交换网络与第一集群之外的远程数据库相连;根据交换网络、第一缓存服务和计算节点组,确定是否扩容;如果确定扩容,在每个目标计算节点中创建第一缓存服务的第二缓存进程,从第一缓存进程读取第一数据集并存储到第二缓存进程;目标计算节点从目标计算节点中的第二缓存进程读取第一数据集中的数据,用于目标计算节点上的计算任务进程的训练。这样,能够自动将远程训练数据,扩容到计算任务所在的计算节点,使计算任务训练过程中能够在本地读取训练所需数据,一方面能够节约网络通信带宽,另一方面能够提高数据读取速度,从而减少模型的训练时间,提高模型的分布式训练的训练速度。
根据第一方面,在第一集群的多个目标计算节点中,创建目标计算任务对应的计算任务进程之前,还包括:在至少一个缓存节点中创建第一缓存服务的第一缓存进程;从远程数据库读取第一数据集并存储到第一缓存进程中。
根据第一方面,根据交换网络、第一缓存服务和计算节点组,确定是否扩容,包括:获取第一缓存服务对应的第一特征数据、交换网络对应的第二特征数据、计算节点组对应的第三特征数据;从第一特征数据中提取第一特征向量,从第二特征数据中提取第二特征向量,从第三特征数据中提取第三特征向量;根据第一特征向量、第二特征向量和第三特征向量,得到第一组合特征向量;将第一组合特征向量输入到已训练好的扩容决策模型,由扩容决策模型输出是否扩容的第一决策结果。
根据第一方面,根据交换网络、第一缓存服务和计算节点组,确定是否扩容,包括:根据交换网络、第一缓存服务、计算节点组和目标计算任务,确定是否扩容。
根据第一方面,根据交换网络、第一缓存服务、计算节点组和目标计算任务,确定是否扩容,包括:获取第一缓存服务对应的第一特征数据、交换网络对应的第二特征数据、计算节点组对应的第三特征数据、以及目标计算任务对应的第四特征数据;从第一特征数据中提取第一特征向量,从第二特征数据中提取第二特征向量,从第三特征数据中提取第三特征向量,从第四特征数据中提取第四特征向量;根据第一特征向量、第二特征向量、第三特征向量和第四特征向量,得到第二组合特征向量;将第二组合特征向量输入到已训练好的扩容决策模型,由扩容决策模型输出是否扩容的第二决策结果。
根据第一方面,扩容决策模型为分类模型。
根据第一方面,第一特征数据包括第一数据集的统计信息、缓存设置信息和缓存应用信息。
根据第一方面,第一数据集的统计信息包括第一数据集的文件总大小、文件总数量、文件格式;第一数据集的缓存设置信息包括缓存容量、缓存介质、缓存进程数量;第一数据集的缓存应用信息包括应用第一数据集的缓存的计算任务数量、应用第一数据集的缓存的计算任务历史信息。
根据第一方面,第二特征数据包括如下数据中的任意一种或多种:交换网络中各交换机的:中央处理器CPU利用率、内存使用率、网络吞吐率、丢包率、错误报文数、拥塞信息。
根据第一方面,第三特征数据包括如下数据中的任意一种或多种:计算节点组中各个计算节点可分配的空闲的:第一CPU信息、第一GPU信息、第一内存信息、第一固态硬盘信息,各个计算节点已经分配的:第二CPU信息、第二GPU信息、第二内存信息、第二固态硬盘信息,各个计算节点所处的网络拓扑结构。
根据第一方面,第四特征数据包括如下数据中的任意一种或多种:任务优先级、用户信息、申请的中央处理器CPU资源、申请的图形处理器GPU资源、申请内存资源、使用的输入数据信息、对应的算法类型、历史执行信息。
根据第一方面,在至少一个缓存节点中创建第一缓存服务的第一缓存进程,包括:接收第一缓存服务创建请求;获取第一数据集的数据量;如果第一数据集的数据量小于数据量阈值,设置第一缓存服务的第一缓存进程的缓存容量等于第一数据集的数据量;为第一数据集对应的第一缓存服务资源设置缓存初始化标签和缓存服务标签;向第一集群发送第一指令,第一指令携带第一缓存服务资源;根据第一指令,在第一集群中具有缓存初始化标签的至少一个缓存节点中创建第一缓存进程。
根据第一方面,根据交换网络、第一缓存服务和计算节点组,确定是否扩容,包括:如果交换网络的吞吐率大于预设的吞吐率阈值,且第一缓存服务中的第一数据集的数据量小于计算节点组中的目标计算节点的可用存储容量,确定扩容。
根据第一方面,根据交换网络、第一缓存服务、计算节点组和目标计算任务,确定是否扩容,包括:如果交换网络的吞吐率大于预设的吞吐率阈值,第一缓存服务中的第一数据集的数据量小于计算节点组中的目标计算节点的可用存储容量,且目标计算任务的优先级高于预设等级和/或目标计算任务的算法的历史训练速度小于预设速度值,确定扩容。
根据第一方面,每个第一缓存进程存储第一数据集的全部数据;每个第二缓存进程存储第一数据集的全部数据。
第二方面,本申请提供一种电子设备,包括:存储器和处理器,存储器与处理器耦合;存储器存储有程序指令,当程序指令由处理器执行时,使得电子设备执行第一方面任意一项的分布式训练方法。
第三方面,本申请提供一种计算机可读存储介质,包括计算机程序,当计算机程序在电子设备上运行时,使得电子设备执行前述的第一方面任意一项的分布式训练方法。
附图说明
图1为示例性示出的远程读数据的示意图;
图2为示例性示出的集群内读数据的示意图;
图3为示例性示出的传输数据集流量和模型相关流量的示意图;
图4为示例性示出的本实施例的分布式训练方法中在计算节点本地读数据的示意图;
图5为示例性示出的本实施例的分布式训练方法的一种流程示例图;
图6为示例性示出的本实施例的分布式训练方法的另一种流程示例图;
图7为示例性示出的分布式训练系统与分布式训练过程的示例图;
图8为示例性示出的缓存服务创建过程的一种示例图;
图9为示例性示出的缓存服务应用过程的一个示例图
图10为示例性示出的缓存服务扩容过程的示例图;
图11为示例性示出的由扩容决策模型所需的输入数据得到是否扩容的结果的过程示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。
本申请实施例的说明书和权利要求书中的术语“第一”和“第二”等是用于区别不同的对象,而不是用于描述对象的特定顺序。例如,第一目标对象和第二目标对象等是用于区别不同的目标对象,而不是用于描述目标对象的特定顺序。
在本申请实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
在本申请实施例的描述中,除非另有说明,“多个”的含义是指两个或两个以上。例如,多个处理单元是指两个或两个以上的处理单元;多个系统是指两个或两个以上的系统。
在大模型多机分布式训练场景下,模型参数收集和梯度交换需要大量带宽。同时计算节点加载非本地数据集会抢占有限的网络带宽。本实施例综合考虑网络特征决策是否扩容,如果扩容,将数据加载到计算节点本地磁盘,减少数据集加载所需的带宽,达到训练加速效果。
模型越大,本实施例对于模型的训练加速效果显著。当然,本实施例不仅可以应用于大模型的分布式训练,也可以用于中、小模型的分布式训练。
本文中,大模型可以是指结构复杂、参数较多、所需训练时间较长的模型。
图1为示例性示出的远程读数据的示意图。如图1所示,计算节点1中的计算进程和计算节点2中的计算进程都需要从远程数据集中读取训练所需的数据。其中,计算节点1和计算节点2可以处于同一集群,例如集群1中。远程数据集与计算节点1和计算节点2之间通过网络相连。这样,计算节点1和计算节点2从远程数据集读取数据时,需要占用网络带宽。
图2为示例性示出的集群内读数据的示意图。如图2所示,计算节点1、计算节点2、缓存节点1、缓存节点2位于集群1中。缓存节点1、缓存节点2中分别设置有缓存进程,缓存进程从远程数据集中加载数据(即缓存进程从远程数据集中读取数据并存储在缓存进程中)。在进行模型训练时,计算节点1中的计算进程通过计算节点1中的缓存客户端从缓存节点1中的缓存进程读取数据,计算节点2中的计算进程通过计算节点2中的缓存客户端从缓存节点2中的缓存进程读取数据。
本文中,缓存进程存储数据是指缓存进程将数据存储在缓存进程所在机器或设备本地的磁盘或内存中。
图2所示示例中,计算节点1、计算节点2都是从所在集群内部的缓存节点读取数据,数据不需要经过集群之外的网络传输,因此相比于图1所示的远程读数据方式,可以减少训练数据的读取时间。
图3为示例性示出的传输数据集流量和模型相关流量的示意图。如图3所示,交换网络中的各个非叶子节点(spine)从远程数据集服务器读取数据集数据,然后将数据集数据传输给各个叶子节点(leaf)。各叶子节点将模型参数和梯度信息以及数据集信息传输给集群1中的各个机器(也可以称为设备)。由图3可见,模型参数和梯度信息的交换需要大量带宽,集群1中的各个机器(这些机器中可以包括例如计算节点、缓存节点等)加载非本地数据集也会占用网络带宽。这样,如果模型分布式训练过程中所需的网络带宽较大,在网络带宽有限的情况下,训练数据的读取时间会增加,从而降低模型训练速度。
下面,本实施例通过设置计算节点组(例如GPU节点)和缓存初始化节点组(例如CPU节点),将缓存初始化节点组的缓存进程worker弹性调度到计算节点。
图4为示例性示出的本实施例的分布式训练方法中在计算节点本地读数据的示意图。如图4所示,本实施例中,计算节点组包括计算节点1、计算节点2,缓存初始化节点组包括缓存节点1、缓存节点2。缓存节点1中包括缓存进程worker1,缓存节点2中包括缓存进程worker2。计算节点1中包括计算进程1、缓存客户端1、缓存进程worker3。计算节点2中包括计算进程1、缓存客户端2、缓存进程worker4。
请继续参见图4,缓存节点1中的缓存进程worker1和缓存节点2中的缓存进程worker2从远程数据集中加载数据集中的数据。计算进程1中的缓存进程worker3从缓存节点1的缓存进程worker1中加载数据。计算进程2中的缓存进程worker4从缓存节点2的缓存进程worker2中加载数据。
请继续参见图4,在进行模型训练时,计算节点1中的计算进程1通过缓存客户端1从计算节点1本地的缓存进程worker3读取数据,计算节点2中的计算进程2通过缓存客户端2从计算节点2本地的缓存进程worker4读取数据。这样,由于计算节点是在本地读取数据,因此减少了数据集加载所需的带宽,也减少了训练数据的读取时间,从而提高了模型的分布式训练的训练速度。
需要说明的是,尽管图4中计算节点组中包括的计算节点数量为2,缓存初始化节点组包括的缓存节点的数量也为2,但可以理解的是,在其他实施例中,计算节点组中包括的计算节点数量,以及缓存初始化节点组包括的缓存节点的数量,都可以为其他数量,并且,计算节点组中包括的计算节点数量与缓存初始化节点组包括的缓存节点的数量可以不相等。
图5为示例性示出的本实施例的分布式训练方法的一种流程示例图。如图5所示,本实施例中,分布式训练方法的整体流程可以包括如下步骤:
1、用户基于原始数据集数据创建缓存服务,创建一次即可。
2、计算任务配置缓存服务作为输入,不同的任务使用同一个缓存服务。
3、自动扩容缓存服务的缓存进程worker到任务所在的计算节点。本步骤基于计算任务调度的节点情况,通过扩容决策模型,决策是否调度缓存进程worker到计算节点,尽量保证计算任务本地读取数据。
(1)在开启弹性调度情况下,检测到存在使用缓存服务的计算节点本地没有缓存worker,触发弹性调度任务。
(2)将相关数据输入到扩容决策模型得到是否扩容的结果,基于结果执行扩容或结束程序。
(3)如果扩容,设置worker数量等于标签节点数量,扩容worker到打标签节点。
(4)计算任务读取其他缓存进程worker数据后,数据会缓存到本地缓存进程worker,后续再读取相同的数据即可保证本地读。
图6为示例性示出的本实施例的分布式训练方法的另一种流程示例图。如图6所示,本实施例中,分布式训练方法的整体流程可以包括如下步骤:
S601,在第一集群的多个目标计算节点中,创建目标计算任务对应的计算任务进程,所有目标计算节点组成计算节点组。
S602,将第一数据集对应的第一缓存服务设置为目标计算任务的输入,第一集群的至少一个缓存节点中包括第一缓存服务的第一缓存进程,第一缓存进程中存储有第一数据集;缓存节点设备通过交换网络与第一集群之外的远程数据库相连。
S603,根据交换网络、第一缓存服务和计算节点组,确定是否扩容。
S604,如果确定扩容,在每个目标计算节点中创建第一缓存服务的第二缓存进程,从第一缓存进程读取第一数据集并存储到第二缓存进程。
S605,目标计算节点从目标计算节点中的第二缓存进程读取第一数据集中的数据,用于目标计算节点上的计算任务进程的训练。
图7为示例性示出的分布式训练系统与分布式训练过程的示例图。请参见图7,本实施例中,分布式训练系统可以包括控制节点、集群1、远程服务器和交换机监控系统。
控制节点属于k8s外部机器,处于非k8s机器环境中。控制节点中部署有管理服务,用于训练管理。管理服务是控制节点设备上的一个应用。可以理解的是,管理服务可以部署在多个节点,每个部署有管理服务的节点都可以作为控制节点。管理服务可以遵从微服务架构。
集群1处于k8s机器环境(云原生环境)中。集群1中包括其他节点组、缓存初始化节点组、计算节点组等。其他节点组中可以包括集群数据库、控制器、调度器、api接口服务。
远程服务器属于k8s外部机器,处于非k8s机器环境中。远程服务器中存储有数据集,例如数据集1。为描述方便,本文中将存储在远程服务器中的数据集称为远程数据集。远程服务器中可以存储多个不同的数据集。需要说明的是,尽管图1中仅示例了一个远程服务器,但应当理解的是,分布式训练系统中可以包括一个或多个远程服务器。
图7的集群1中,计算节点组可以包括多个计算节点,缓存初始化节点组可以包括多个缓存节点。这些节点组可以是管理员预先划分好的。其中,计算节点组中的节点称为计算节点,每个计算节点均设置有GPU标签。
图7的集群1中,缓存初始化节点组中的节点称为缓存节点,每个缓存节点均设置有CPU标签,CPU称为缓存初始化标签。
这样,根据集群1中节点的标签是GPU还是CPU,可以区分是计算节点还是缓存节点,即具有CPU标签的节点属于缓存初始化节点组,具有GPU标签的节点属于计算节点组,这里的CPU、GPU为标签名称。
在其他实施例中,缓存初始化节点组中的节点也可以采用CPU以外的其他标签,计算节点组中的节点也可以采用GPU以外的其他标签。
其中,每个计算节点上都设置有缓存客户端守护进程。缓存客户端守护进程用于在检测到节点上设置有缓存客户端标签client-id时,在节点上创建缓存客户端。
图7中,集群1外部的设备,例如控制节点,可以通过api接口服务调用集群1(处于k8s机器环境)中的控制器、调度器等,来对集群1内的节点进行控制,以执行相应的操作。因此,控制节点中的管理服务可以通过向集群1内其他节点组中的api接口服务发送指令或信息的方式,对集群1内的节点进行控制。
图7中,交换机系统用于获取交换机数据。这里的交换机数据主要是指后续将提及的交换网络特征数据。
图7中的各个数字表示分布式训练方法中各步骤的编号。请参见图7,本实施例中,分布式训练的过程可以包括如下步骤:
步骤1,创建缓存服务。
用户可以在控制节点的管理服务的界面上发起创建缓存服务的第一操作。管理服务接收到该操作,通过集群1中的api接口服务创建缓存服务。
步骤2,创建计算任务。
用户可以在控制节点的管理服务的界面上发起创建计算任务的第二操作。管理服务接收到该操作,通过集群1中的api接口服务创建计算任务。
步骤3,决策扩容,为计算节点设置cache-id标签,更新缓存服务的缓存进程worker数量。
请继续参见图7,创建缓存服务的步骤1可以包括如下子步骤:
步骤1.1,控制节点中的管理服务向api接口服务发送创建缓存服务资源的指令1,该指令1中携带缓存初始化标签CPU和缓存服务标签cache-id。
缓存服务与cache-id一一对应,即一个缓存服务对应一个cache-id,不同缓存服务对应的cache-id不同。
其中,缓存初始化标签CPU用于指示在缓存初始化节点组内的节点上创建缓存服务的缓存进程worker。集群内的调度器和控制器根据缓存初始化标签CPU确定在具有相同标签(即缓存初始化标签CPU)的节点上创建缓存服务的缓存进程worker。缓存服务标签cache-id用于指示创建哪个缓存服务的缓存进程worker。
步骤1.2,api接口服务根据指令1,调用控制器、调度器等在缓存初始化节点组的多个缓存节点中创建cache-id对应的缓存服务的缓存进程worker。在缓存节点中创建缓存进程worker后,控制器为已经创建了缓存进程worker的缓存节点设置cache-id标签,以表明该节点已经创建了标签为cache-id的缓存服务。
其中,在缓存初始化节点组的哪些缓存节点中创建缓存进程worker由其他节点组中的调度器根据预设的调度策略确定。有缓存初始化标签CPU但没有cache-id标签的缓存节点中没有缓存进程worker。
本实施例中,图7仅示出了一个创建了缓存进程worker的缓存节点,但应当理解的是,在应用中,可以在多个缓存节点中创建缓存进程worker。
步骤1.3,预加载远程服务器中数据集1的数据到缓存节点的缓存进程worker中。
即从远程服务器中读取数据集1的数据,存储到缓存节点的缓存进程worker中。
这样,数据集1就被缓存到了缓存节点的缓存进程worker中,集群1中的计算节点在训练计算任务的过程中,无需从远程服务器中读取数据,而是可以从缓存节点的缓存进程worker中读取数据。
请继续参见图7,创建计算任务的步骤2可以包括如下子步骤:
步骤2.1,控制节点中的管理服务向api接口服务发送创建计算任务资源的指令2,该指令2中携带缓存服务信息。
其中,缓存服务信息可以包括缓存服务标签cache-id。
步骤2.2,在计算节点上创建计算任务进程(即计算任务的进程,也可以称为计算进程)。
其中,在计算节点组的哪些计算节点中创建计算任务进程,是由其他节点组中的调度器根据各计算节点的资源情况以及预设的调度策略确定的。
步骤2.3,为计算任务进程所在的计算节点设置缓存客户端标签client-id。
在计算节点中创建计算任务进程后,控制器为已经创建了计算任务进程的计算节点设置客户端标签client-id。
客户端标签client-id的作用是控制缓存客户端的创建。当对某个节点打上客户端标签client-id时,计算节点中的缓存客户端守护进程会在该节点创建对应的缓存客户端。
因此,设置了缓存客户端标签client-id的计算节点上的缓存客户端守护进程,在检测到本计算节点设置有缓存客户端标签client-id后,在本计算节点上创建缓存客户端。
缓存客户端用于从缓存进程worker中读取数据。
其中,每个缓存客户端对应一个缓存服务的所有缓存进程worker,即每个缓存客户端可以从一个缓存服务的所有缓存进程worker中读取数据。
请继续参见图7,决策扩容的步骤3可以包括如下子步骤:
步骤3.1,管理服务确定扩容后,通过api接口服务将缓存服务扩容到计算节点。
本步骤中,api接口服务在计算节点中创建前述步骤2中缓存服务标签cache-id对应的缓存进程worker,然后为该计算节点设置缓存服务标签cache-id,并更新相应的缓存进程worker数量。
这样,图7中带有计算任务进程、缓存进程worker的计算节点设置有标签GPU、缓存服务标签cache-id和缓存客户端标签client-id。
步骤3.2,从缓存节点中的缓存进程worker中读取数据集1的数据,保存到计算节点中的缓存进程worker中,即将缓存节点中的缓存进程worker中的数据集1加载到计算节点的缓存进程worker中。
在一个示例中,可以采用图8所示实施例的流程创建缓存服务。
图8为示例性示出的缓存服务创建过程的一种示例图。请参见图8,本实施例中,缓存服务创建过程可以包括如下步骤:
S801、控制节点中的管理服务接收缓存服务创建请求。
在应用中,用户可以通过在管理服务中点击创建缓存服务的选项,向管理服务发出缓存服务创建请求。
S802、管理服务响应于用户选择目标数据集的操作,获取目标数据集的相关信息,目标数据集的相关信息包括目标数据集的数据量。
本实施例中,目标数据集即为图7中的数据集1。
用户可以从当前的数据集列表中选择目标数据集。其中,数据集列表中可以包括控制节点当前所连接的各个远程服务器中的所有数据集。并且,控制节点的管理服务的数据库中存储有远程服务器所有数据集的信息,这些数据集信息包括数据集的数据量等信息。在一个示例中,管理服务的数据库中存储的数据集信息可以是用户预先输入的。
举例说明。假设数据集列表中包括数据集1、数据集2、数据集3、数据集4、数据集5个数据集,其中图7中远程服务器中的数据集为数据集1,当用户在数据集列表选择数据集1,那么数据集1就是目标数据集,管理服务就从数据库获取数据集1的相关信息,该相关信息包括数据集1的数据量。
S803、管理服务判断目标数据集的数据量是否小于数据量阈值,如果是,执行步骤S805,否则执行步骤S804。
在一个示例中,可以根据节点的硬盘存储容量设置数据库阈值。例如,可以设置数据量阈值等于硬盘存储容量的60%。
本实施例中,管理服务根据目标数据集的数据量和数据量阈值设置缓存服务中的单个缓存进程worker的缓存容量。
缓存服务可以包括一个或多个缓存进程worker。缓存服务所包括的缓存进程worker的数量可以根据数据集的数据量和数据量阈值来设置。
S804、设置单个缓存进程worker的缓存容量等于数据量阈值,关闭弹性调度,执行步骤S806。
当目标数据集的数据量大于数据量阈值,表示数据集过大。此时,使用多个缓存进程worker缓存一整个目标数据集的全部原始数据,设置单个缓存进程worker的缓存容量等于数据量阈值,缓存进程worker的数量等于目标数据集的数据量除以数据量阈值所得的商。在不能整除的情况下,通过向上取整的方式获得缓存进程worker的数量。
当目标数据集的数据量大于数据量阈值,不需要开启弹性调度来将数据集中的数据缓存到计算节点本地,因此关闭弹性调度。管理服务可以为每个缓存进程worker设置状态标志位,该状态标志位用于指示弹性调度是否开启。例如,在一个示例中,如果缓存进程worker的状态标志位为1,表明该缓存进程worker的弹性调度是开启的,可以将该缓存进程worker扩容到计算节点;如果缓存进程worker的状态标志位为0,表明该缓存进程worker的弹性调度是关闭的,不能将该缓存进程worker扩容到计算节点。
S805、设置单个缓存进程worker的缓存容量等于目标数据集的数据量,开启弹性调度。
当目标数据集的数据量小于或等于数据量阈值,使用一个缓存进程worker缓存一整个目标数据集的全部原始数据,并设置单个缓存进程worker的缓存容量等于目标数据集的数据量。在一个示例中,综合考虑资源利用和数据读取速度,可以设置初始化缓存进程worker的数量为2。这样,既能够抵御可能的单点故障的影响,又可以较大限度地节约存储资源。
假设图7中数据集1的数据量小于数据量阈值,那么为数据集1设置2个缓存进程worker,并且设置单个缓存进程worker的缓存容量等于数据集1的数据量,开启弹性调度缓存进程worker的功能,这样,数据集1的缓存进程worker就可以被弹性调度了。
S806、为缓存服务资源设置亲和性标签。
本步骤中的亲和性标签包括缓存服务标签cache-id和缓存初始化标签CPU,缓存服务标签cache-id可以控制缓存进程worker的创建,缓存初始化标签可以控制缓存进程worker初始化调度到缓存初始化节点组。可以设置初始化标签的亲和性权重低于缓存服务标签cache-id,以保证优先调度到打缓存服务标签cache-id的节点。
步骤S801至S806是在图7中的步骤1.1之前在管理服务中完成的。步骤S806之后,管理服务执行图7中的步骤1.1。
步骤S806之后,管理服务生成图1中的步骤1.1中的指令1,然后执行步骤1.1,这样,集群1就接收到了指令1。
S807、创建缓存进程worker。
本步骤中,集群1中的k8s的调度器和控制器根据指令1创建缓存进程worker。其中,调度器用于进行节点调度(即确定在哪些节点创建缓存服务),控制器用于根据调度结果(即调度器调度的节点),在相应节点上创建缓存进程worker。
假设本次创建的结果是,在2个缓存节点(即图4中的缓存节点1和缓存节点2)上分别创建了缓存进程worker1和缓存进程worker2。
S808、启动预加载任务,加载目标数据集的原始数据到缓存进程worker。
管理服务定时任务查询k8s,缓存进程是否创建完成。如果完成,k8s启动数据预加载任务。
通过图8所示实施例,用户可以分别创建多个缓存服务,创建完成后,这些缓存服务可以显示在缓存服务列表中。创建计算任务的界面中可以显示缓存服务列表,以供用户在创建计算任务时从缓存服务列表选择缓存服务。
在一个示例中,可以采用图9所示实施例应用缓存服务。
图9为示例性示出的缓存服务应用过程的一个示例图。请参见图9,本实施例中,缓存服务应用过程可以包括如下步骤:
S901、管理服务根据用户在创建计算任务时选择缓存服务的操作,将缓存服务配置为计算任务的输入。
在缓存服务可用情况下,用户在创建计算任务时可以选择缓存服务作为输入。
例如,假设当前有缓存服务1、缓存服务2、缓存服务3共3个缓存服务可用,那么用户在创建计算任务X时,该3个缓存服务均可选择。假设用户选择了缓存服务1,那么管理服务就将缓存服务1配置为计算任务X的输入。
S902、管理服务向api接口服务提交计算任务后,调度器将计算任务调度到计算节点,也即在计算节点上创建计算任务进程。
管理服务向api接口服务发送创建计算任务资源的指令2,即认为管理服务向api接口服务提交计算任务。
请参见图5,假设本次计算任务调度到2个计算节点,即图5中的计算节点1和计算节点2。计算节点1中的计算进程1和计算节点2中的计算进程2运行的是该计算任务的分布式任务(即计算进程)。即将本次计算任务分配到计算节点1和计算节点2中。
S903、集群1中的控制器定时检测缓存服务资源的使用情况,如果存在计算节点使用缓存服务,对该节点打上该缓存服务对应的缓存客户端标签client-id。
集群1内部的数据库存储有缓存资源的使用情况。缓存资源的使用情况的内容可以是:计算容器使用了哪个缓存服务。然后,集群1的其他节点组的控制器根据检测到的缓存服务资源的使用情况,在这些计算容器所在节点打上缓存客户端标签client-id。
S904、客户端守护进程感知到计算节点具有缓存客户端标签后,在该计算节点创建缓存客户端。
S905、计算任务通过缓存客户端读取缓存服务对应的缓存进程worker中的数据。
在一个示例中,可以采用图10所示实施例扩容缓存服务。
图10为示例性示出的缓存服务扩容过程的示例图。请参见图10,本实施例中,缓存服务扩容过程可以包括如下步骤:
S1001、在开启弹性调度情况下,管理服务检测到存在使用缓存服务的计算节点本地没有缓存进程worker,触发弹性调度任务,计算节点中的计算任务为计算任务a。
本文中,计算任务也可称为训练任务,这些任务是利用数据集中的数据进行训练的任务。
S1002、获取扩容决策模型所需的输入数据,将该输入数据输入到扩容决策模型,得到是否针对计算任务a扩容的决策结果。
对于扩容决策模型请参见后续的描述。
S1003、判断决策结果是否为扩容,如果是,执行步骤S1004,否则执行步骤S1007。
S1004、对计算任务a相关的所有计算节点打缓存服务标签cache-id,统计打缓存服务标签cache-id的全部节点数量n,设置扩容的缓存进程worker数量等于节点数量n,更新云原生资源。
本文中,对节点打标签是指为节点设置标签。
更新云原生资源的方式是:向云原生服务提交请求,更新缓存进程worker的数量。
S1005、调度器根据缓存服务标签cache-id在打缓存服务标签cache-id的计算节点创建缓存进程worker。
请参见图4,本次创建的结果是,在2个计算节点(即图2中的计算节点1和计算节点2)上分别创建了缓存进程worker3和缓存进程worker4。
S1006、计算节点中的计算进程的缓存客户端从缓存节点的缓存进程worker读取数据,并将读取的数据缓存到计算节点本地的缓存进程worker中,结束。
这样,后续计算节点就可以直接从本地的缓存进程worker中读取数据集数据了。以图4为例,计算进程1在训练过程中,可以直接从本地的缓存进程worker3读取数据。同样地,计算进程2在训练过程中,可以直接从本地的缓存进程worker4读取数据。这样,通过将缓存服务弹性调度到计算节点,使得计算节点中的计算任务在分布式训练过程中,能够直接从本地读取数据,提高了数据读取速度,从而提高了计算任务的分布式训练速度。
S1007、计算节点中的计算进程的缓存客户端从缓存节点的缓存进程worker中读取数据,结束。
这里,对步骤S1002中的扩容决策模型进行说明。
扩容决策模型可以是二分类模型,该模型可以基于人工经验收集不同场景的数据构成训练数据集训练得到。例如,扩容决策模型可以是决策树、逻辑回归、svm等模型。扩容决策模型是一个机器学习领域的分类模型,例如扩容决策模型可以为LGBM模型,当然不限于此模型,也可以采用其他模型作为扩容决策模型。
扩容决策模型所需的输入数据可以根据具体模型确定。
在一个示例中,扩容决策模型所需的输入数据可以包括如下数据:
(1)与计算任务相关的缓存服务特征数据,包括但不限于:
原生数据集的统计信息:文件总大小、文件总数量、文件格式。
缓存设置信息: 缓存容量、缓存介质(ram、ssd)、缓存worker数量;缓存设置信息也可称为缓存节点详情。
缓存应用信息:应用原生数据集的缓存的计算任务数量、应用原生数据集的缓存的计算任务历史信息。缓存应用信息也可称为使用任务详情。
(2)计算任务特征数据,包括但不限于:
任务优先级、用户信息、申请CPU资源、申请GPU资源、申请内存资源、使用的输入数据信息、对应的算法类型、历史执行信息。
需要说明的是,在一些实施例中,也可以不考虑计算任务特征数据。
(3)与计算任务相关的计算节点组特征数据,包括但不限于:
与计算任务相关的各个计算节点可分配空闲的CPU、GPU、内存、固态硬盘等信息,各个计算节点已经分配的CPU、GPU、内存、固态硬盘等信息,各个计算节点所处的网络拓扑结构。由扩容决策模型所需的输入数据得到是否扩容的结果的过程请参见图11。图11为示例性示出的由扩容决策模型所需的输入数据得到是否扩容的结果的过程示意图。
需要说明的是,与计算任务相关的计算节点组是指分配了该计算任务的计算进程的计算节点组成的计算节点组。以任务a为例,所有分配了任务a的计算进程的计算节点组成与计算任务a相关的计算节点组。
(4)交换网络特征数据(也可称为交换机网络组特征数据),包括但不限于:
交换网络中各交换机的:中央处理器CPU利用率、内存使用率、网络吞吐率、丢包率、错误报文数、拥塞信息等。
其中,交换网络请参见图3。
请参见图11,在获取上述特征数据后,从缓存服务特征数据中提取缓存服务特征向量,从计算任务特征数据中提取计算任务特征向量,从计算节点组特征数据中提取计算节点组特征向量;
然后,将缓存服务特征向量、计算任务特征向量、计算节点组特征向量组合为一个组合特征向量,将组合特征向量输入到已训练好的扩容决策模型,由扩容决策模型输出是否扩容的决策结果。
其中,扩容决策模型是已经训练好的模型。
在一个示例中,扩容决策模型的训练过程可以包括如下步骤:
构建第一分类模型,并设置初始参数值;
获取若干组样本数据,每组样本数据包括:组合特征向量样本和对应的决策结果标签数据;
利用若干组样本数据对第一分类模型进行训练,得到训练完毕的第一分类模型,将训练完毕的第一分类模型作为已训练好的扩容决策模型。
其中,样本数据中的组合特征向量样本的获取过程,与前述由扩容决策模型所需的输入数据得到组合特征向量的过程一致,此处不再赘述。
其中,利用若干组样本数据对第一分类模型进行训练,得到训练完毕的第一分类模型的过程,可以是:
将上一组样本数据训练后得到的第一分类模型确定为本组样本数据对应的初始分类模型;
将本组样本数据中的组合特征向量样本输入初始分类模型,获得初始分类模型输出的决策结果,记为输出决策结果;
根据输出决策结果与本组样本数据中的决策结果标签数据之间的差异,调整初始分类模型中的参数值,将本次调整参数值后的分类模型作为本组样本数据训练后得到的第一分类模型;
判断是否满足训练的收敛条件,如果满足,停止训练,将本组样本数据训练后得到的第一分类模型作为已训练好的扩容决策模型;否则,继续执行下一组样本数据的训练。
其中,第一组样本数据对应的第一分类模型为构建的带有初始参数值的第一分类模型。
当然,以上仅为训练方式的一种示例性说明,并非用于对本实施例进行限定,本实施例可以不限于上述列举的训练方式。
本实施例中,通过采用机器学习领域的分类模型决策是否将缓存进程worker扩容到计算节点,可以提高决策准确度。
当然,除了采用分类模型决策是否扩容外,还可以采用其他的方式确定是否扩容,本实施例对如何确定扩容不作限制。例如,基于预设规则的扩容决策方式。
在一个示例中,该预设规则可以为:
如果交换网络的吞吐率大于预设的吞吐率阈值,且第一缓存服务中的第一数据集的数据量小于计算节点组中的目标计算节点的可用存储容量,确定扩容。如果交换网络的吞吐率小于或等于预设的吞吐率阈值,或者第一缓存服务中的第一数据集的数据量大于或等于计算节点组中的目标计算节点的可用存储容量,确定不扩容。
在另一个示例中,该预设规则可以为:
如果交换网络的吞吐率大于预设的吞吐率阈值,第一缓存服务中的第一数据集的数据量小于计算节点组中的目标计算节点的可用存储容量,且目标计算任务的优先级高于预设等级和/或目标计算任务的算法的历史训练速度小于预设速度值,确定扩容。
下面通过对比的方式,来说明扩容与不扩容情况下计算任务读取数据的速度的区别。
图7为示例性示出的不同数据集的扩容情况与读取方式示例图。请参见图7,数据集1、数据集2、数据集3和数据集4中,数据集1扩容缓存服务worker到计算节点,因此,使用数据集1的计算任务能够达到计算节点本地读取数据效果,训练速度快。数据集2和数据集3没有进行扩容,读取集群内其他节点数据,因此,使用数据集2和数据集3的计算任务的训练速度要慢一些。
可见,扩容后,由于计算任务能够在计算节点本地读取数据,相比于从远程数据集服务器读取数据或者从缓存节点读取数据,可以显著提高数据读取速度,因此能够提高模型的训练速度。
本实施例的分布式训练方法,能够将计算任务训练所需的数据集对应的缓存进程,自动扩容到计算任务所在的计算节点,从而使计算任务训练过程中能够在本地读取训练所需数据,提高训练速度。
特别是在计算节点内存资源不足,需要利用磁盘资源缓存数据的情况下,本实施例能够在不改变云原生调度器的情况下,自适应扩容缓存进程。
并且,本实施例的分布式训练方法,由于能够在扩容的计算节点本地读取训练所需数据,无需通过网络通信访问远程存储服务或者访问缓存节点,这样,一方面能够节约网络通信带宽,将更多的网络带宽用于模型参数和梯度信息的传输,减少通信带宽竞争,提高训练速度;另一方面还能够缓解远程存储服务压力,避免出现大量计算任务读取远程存储服务时导致远程存储服务性能下降的问题。
进一步地,本实施例的分布式训练方法,由于能够在扩容的计算节点本地读取训练所需数据,无需访问远程存储服务,还减少了对通信带宽的占用,节约了通信资源,避免大模型进行分布式训练时,由于不同节点的参数交换需要大量的带宽资源,远程读取数据会占据一定的带宽资源而降低参数之间交换性能的问题。
本实施例还提供一种分布式训练系统,该系统包括控制节点、交换机监控系统和第一集群,其中:
控制节点,用于执行前述任一实施例中的分布式训练方法。
交换机监控系统用于获取交换网络特征数据,并将交换网络特征数据发送给控制节点,以使控制节点能够根据交换网络、第一缓存服务和计算节点组,确定是否扩容。
其中,第一集群请参见图7中的集群1。
本申请实施例还提供一种电子设备,该电子设备包括存储器和处理器,存储器与处理器耦合,存储器存储有程序指令,当程序指令由所述处理器执行时,使得电子设备前述电子设备所执行的分布式训练方法。
可以理解的是,电子设备为了实现上述功能,其包含了执行各个功能相应的硬件和/或软件模块。结合本文中所公开的实施例描述的各示例的算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以结合实施例对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本实施例还提供一种计算机存储介质,该计算机存储介质中存储有计算机指令,当该计算机指令在电子设备上运行时,使得电子设备执行上述相关方法步骤实现上述实施例中的分布式训练方法。
本实施例还提供了一种计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行上述相关步骤,以实现上述实施例中的分布式训练方法。
另外,本申请实施例还提供一种装置,这个装置具体可以是芯片,组件或模块,该装置可包括相连的处理器和存储器;其中,存储器用于存储计算机执行指令,当装置运行时,处理器可执行存储器存储的计算机执行指令,以使芯片执行上述各方法实施例中的分布式训练方法。
其中,本实施例提供的电子设备、计算机存储介质、计算机程序产品或芯片均用于执行上文所提供的对应的方法,因此,其所能达到的有益效果可参考上文所提供的对应的方法中的有益效果,此处不再赘述。
通过以上实施方式的描述,所属领域的技术人员可以了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
本申请各个实施例的任意内容,以及同一实施例的任意内容,均可以自由组合。对上述内容的任意组合均在本申请的范围之内。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
上面结合附图对本申请的实施例进行了描述,但是本申请并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本申请的启示下,在不脱离本申请宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本申请的保护之内。
结合本申请实施例公开内容所描述的方法或者算法的步骤可以硬件的方式来实现,也可以是由处理器执行软件指令的方式来实现。软件指令可以由相应的软件模块组成,软件模块可以被存放于随机存取存储器(Random Access Memory,RAM)、闪存、只读存储器(Read Only Memory,ROM)、可擦除可编程只读存储器(Erasable Programmable ROM,EPROM)、电可擦可编程只读存储器(Electrically EPROM,EEPROM)、寄存器、硬盘、移动硬盘、只读光盘(CD-ROM)或者本领域熟知的任何其它形式的存储介质中。一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于ASIC中。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本申请实施例所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是通用或专用计算机能够存取的任何可用介质。
上面结合附图对本申请的实施例进行了描述,但是本申请并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本申请的启示下,在不脱离本申请宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本申请的保护之内。
Claims (17)
1.一种分布式训练方法,其特征在于,所述方法包括:
在第一集群的多个目标计算节点中,创建目标计算任务对应的计算任务进程,所有所述目标计算节点组成计算节点组;
将第一数据集对应的第一缓存服务设置为所述目标计算任务的输入,所述第一集群的至少一个缓存节点中包括所述第一缓存服务的第一缓存进程,所述第一缓存进程中存储有所述第一数据集;所述缓存节点通过交换网络与所述第一集群之外的远程数据库相连,其中,所述交换网络中的各个非叶子节点从所述远程数据库读取所述第一数据集,并将所述第一数据集传输给各个叶子节点;每个叶子节点将所述目标计算任务对应的模型参数和梯度信息,以及所述第一数据集传输给第一集群中的各个节点;
根据所述交换网络、所述第一缓存服务和所述计算节点组,确定是否扩容;
如果确定扩容,在每个所述目标计算节点中创建所述第一缓存服务的第二缓存进程,从所述第一缓存进程读取所述第一数据集并存储到所述第二缓存进程;
所述目标计算节点从所述目标计算节点中的第二缓存进程读取所述第一数据集中的数据,用于所述目标计算节点上的所述计算任务进程的训练。
2.根据权利要求1所述的方法,其特征在于,在第一集群的多个目标计算节点中,创建目标计算任务对应的计算任务进程之前,还包括:
在所述至少一个缓存节点中创建所述第一缓存服务的所述第一缓存进程;
从所述远程数据库读取所述第一数据集并存储到所述第一缓存进程中。
3.根据权利要求1所述的方法,其特征在于,根据所述交换网络、所述第一缓存服务和所述计算节点组,确定是否扩容,包括:
获取所述第一缓存服务对应的第一特征数据、所述交换网络对应的第二特征数据、所述计算节点组对应的第三特征数据;
从所述第一特征数据中提取第一特征向量,从所述第二特征数据中提取第二特征向量,从所述第三特征数据中提取第三特征向量;
根据所述第一特征向量、所述第二特征向量和所述第三特征向量,得到第一组合特征向量;
将所述第一组合特征向量输入到已训练好的扩容决策模型,由所述扩容决策模型输出是否扩容的第一决策结果。
4.根据权利要求1所述的方法,其特征在于,根据所述交换网络、所述第一缓存服务和所述计算节点组,确定是否扩容,包括:
根据所述交换网络、所述第一缓存服务、所述计算节点组和所述目标计算任务,确定是否扩容。
5.根据权利要求4所述的方法,其特征在于,根据所述交换网络、所述第一缓存服务、所述计算节点组和所述目标计算任务,确定是否扩容,包括:
获取所述第一缓存服务对应的第一特征数据、所述交换网络对应的第二特征数据、所述计算节点组对应的第三特征数据、以及所述目标计算任务对应的第四特征数据;
从所述第一特征数据中提取第一特征向量,从所述第二特征数据中提取第二特征向量,从所述第三特征数据中提取第三特征向量,从所述第四特征数据中提取第四特征向量;
根据所述第一特征向量、所述第二特征向量、所述第三特征向量和所述第四特征向量,得到第二组合特征向量;
将所述第二组合特征向量输入到已训练好的扩容决策模型,由所述扩容决策模型输出是否扩容的第二决策结果。
6.根据权利要求3或5所述的方法,其特征在于,所述扩容决策模型为分类模型。
7.根据权利要求3或5所述的方法,其特征在于,所述第一特征数据包括所述第一数据集的统计信息、缓存设置信息和缓存应用信息。
8.根据权利要求7所述的方法,其特征在于,所述第一数据集的统计信息包括所述第一数据集的文件总大小、文件总数量、文件格式;所述第一数据集的缓存设置信息包括缓存容量、缓存介质、缓存进程数量;所述第一数据集的缓存应用信息包括应用所述第一数据集的缓存的计算任务数量、应用所述第一数据集的缓存的计算任务历史信息。
9.根据权利要求3或5所述的方法,其特征在于,所述第二特征数据包括如下数据中的任意一种或多种:
所述交换网络中各交换机的:中央处理器CPU利用率、内存使用率、网络吞吐率、丢包率、错误报文数、拥塞信息。
10.根据权利要求3或5所述的方法,其特征在于,所述第三特征数据包括如下数据中的任意一种或多种:
所述计算节点组中各个计算节点可分配的空闲的:第一CPU信息、第一GPU信息、第一内存信息、第一固态硬盘信息,各个计算节点已经分配的:第二CPU信息、第二GPU信息、第二内存信息、第二固态硬盘信息,各个计算节点所处的网络拓扑结构。
11.根据权利要求5所述的方法,其特征在于,所述第四特征数据包括如下数据中的任意一种或多种:
任务优先级、用户信息、申请的中央处理器CPU资源、申请的图形处理器GPU资源、申请内存资源、使用的输入数据信息、对应的算法类型、历史执行信息。
12.根据权利要求2所述的方法,其特征在于,在所述至少一个缓存节点中创建所述第一缓存服务的所述第一缓存进程,包括:
接收第一缓存服务创建请求;
获取所述第一数据集的数据量;
如果所述第一数据集的数据量小于数据量阈值,设置第一缓存服务的第一缓存进程的缓存容量等于所述第一数据集的数据量;
为所述第一数据集对应的第一缓存服务资源设置缓存初始化标签和缓存服务标签;
向所述第一集群发送第一指令,所述第一指令携带所述第一缓存服务资源;
根据所述第一指令,在所述第一集群中具有所述缓存初始化标签的至少一个缓存节点中创建所述第一缓存进程。
13.根据权利要求1所述的方法,其特征在于,根据所述交换网络、所述第一缓存服务和所述计算节点组,确定是否扩容,包括:
如果所述交换网络的吞吐率大于预设的吞吐率阈值,且所述第一缓存服务中的所述第一数据集的数据量小于所述计算节点组中的目标计算节点的可用存储容量,确定扩容。
14.根据权利要求4所述的方法,其特征在于,根据所述交换网络、所述第一缓存服务、所述计算节点组和所述目标计算任务,确定是否扩容,包括:
如果所述交换网络的吞吐率大于预设的吞吐率阈值,所述第一缓存服务中的所述第一数据集的数据量小于所述计算节点组中的目标计算节点的可用存储容量,且所述目标计算任务的优先级高于预设等级和/或所述目标计算任务的算法的历史训练速度小于预设速度值,确定扩容。
15.根据权利要求1所述的方法,其特征在于,每个所述第一缓存进程存储所述第一数据集的全部数据;每个所述第二缓存进程存储所述第一数据集的全部数据。
16.一种电子设备,其特征在于,包括:
存储器和处理器,所述存储器与所述处理器耦合;
所述存储器存储有程序指令,当所述程序指令由所述处理器执行时,使得所述电子设备执行如权利要求1至15任一项所述的分布式训练方法。
17.一种计算机可读存储介质,包括计算机程序,其特征在于,当所述计算机程序在电子设备上运行时,使得所述电子设备执行如权利要求1至15任一项所述的分布式训练方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311594384.XA CN117332881B (zh) | 2023-11-27 | 2023-11-27 | 分布式训练方法及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311594384.XA CN117332881B (zh) | 2023-11-27 | 2023-11-27 | 分布式训练方法及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117332881A CN117332881A (zh) | 2024-01-02 |
CN117332881B true CN117332881B (zh) | 2024-04-05 |
Family
ID=89277715
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311594384.XA Active CN117332881B (zh) | 2023-11-27 | 2023-11-27 | 分布式训练方法及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117332881B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118152131A (zh) * | 2024-03-25 | 2024-06-07 | 摩尔线程智能科技(北京)有限责任公司 | 一种gpu集群以及基于gpu集群的数据预处理方法 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108881047A (zh) * | 2018-08-01 | 2018-11-23 | 中国联合网络通信集团有限公司 | 网络扩容判别的方法及装置 |
CN110399271A (zh) * | 2019-07-29 | 2019-11-01 | 中国工商银行股份有限公司 | 日志处理设备、方法、电子设备及计算机可读存储介质 |
CN115277454A (zh) * | 2022-07-28 | 2022-11-01 | 中国人民解放军国防科技大学 | 用于分布式深度学习训练的聚合通信方法 |
CN116089477A (zh) * | 2023-04-10 | 2023-05-09 | 荣耀终端有限公司 | 分布式训练方法及系统 |
WO2023125380A1 (zh) * | 2021-12-31 | 2023-07-06 | 华为技术有限公司 | 一种数据管理的方法及相应装置 |
CN116737363A (zh) * | 2023-05-09 | 2023-09-12 | 鹏城实验室 | 深度学习平台的数据集缓存加速方法、系统、设备及介质 |
CN116956994A (zh) * | 2022-12-01 | 2023-10-27 | 中国移动通信集团浙江有限公司 | 业务平台扩容预测方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20220101189A1 (en) * | 2020-09-30 | 2022-03-31 | Vmware, Inc. | Federated inference |
-
2023
- 2023-11-27 CN CN202311594384.XA patent/CN117332881B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108881047A (zh) * | 2018-08-01 | 2018-11-23 | 中国联合网络通信集团有限公司 | 网络扩容判别的方法及装置 |
CN110399271A (zh) * | 2019-07-29 | 2019-11-01 | 中国工商银行股份有限公司 | 日志处理设备、方法、电子设备及计算机可读存储介质 |
WO2023125380A1 (zh) * | 2021-12-31 | 2023-07-06 | 华为技术有限公司 | 一种数据管理的方法及相应装置 |
CN115277454A (zh) * | 2022-07-28 | 2022-11-01 | 中国人民解放军国防科技大学 | 用于分布式深度学习训练的聚合通信方法 |
CN116956994A (zh) * | 2022-12-01 | 2023-10-27 | 中国移动通信集团浙江有限公司 | 业务平台扩容预测方法及装置 |
CN116089477A (zh) * | 2023-04-10 | 2023-05-09 | 荣耀终端有限公司 | 分布式训练方法及系统 |
CN116737363A (zh) * | 2023-05-09 | 2023-09-12 | 鹏城实验室 | 深度学习平台的数据集缓存加速方法、系统、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN117332881A (zh) | 2024-01-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112153700B (zh) | 一种网络切片资源管理方法及设备 | |
US10715460B2 (en) | Opportunistic resource migration to optimize resource placement | |
US11914894B2 (en) | Using scheduling tags in host compute commands to manage host compute task execution by a storage device in a storage system | |
US10810054B1 (en) | Capacity balancing for data storage system | |
US10817380B2 (en) | Implementing affinity and anti-affinity constraints in a bundled application | |
CN111124254B (zh) | 调度存储空间回收请求的方法、电子设备和程序产品 | |
US20230037783A1 (en) | Resource scheduling method and related apparatus | |
CN110162396A (zh) | 内存回收方法、装置、系统和存储介质 | |
CN117332881B (zh) | 分布式训练方法及电子设备 | |
CN103108020A (zh) | 服务协作设备、服务协作方法和计算机可读记录介质 | |
CN108475201A (zh) | 一种虚拟机启动过程中的数据获取方法和云计算系统 | |
CN107977167A (zh) | 一种基于纠删码的分布式存储系统的退化读优化方法 | |
EP4189542A1 (en) | Sharing of compute resources between the virtualized radio access network (vran) and other workloads | |
CN116089477B (zh) | 分布式训练方法及系统 | |
US10594620B1 (en) | Bit vector analysis for resource placement in a distributed system | |
CN111143033B (zh) | 基于可伸缩操作系统的操作执行方法及装置 | |
CN112631994A (zh) | 数据迁移方法及系统 | |
CN108595251A (zh) | 动态图更新方法、装置、存储引擎接口和程序介质 | |
CN113407343A (zh) | 一种基于资源分配的业务处理方法、装置及设备 | |
US11973839B1 (en) | Microservice throttling based on learned demand predictions | |
US20230385048A1 (en) | Predictive recycling of computer systems in a cloud environment | |
CN115951845B (zh) | 一种磁盘管理方法、装置、设备及存储介质 | |
US11381468B1 (en) | Identifying correlated resource behaviors for resource allocation | |
US10721181B1 (en) | Network locality-based throttling for automated resource migration | |
KR20220071895A (ko) | 오토 스케일링 방법, 장치 및 시스템 |
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 |