CN114139723A - 用于深度学习模型训练的方法、装置及系统 - Google Patents
用于深度学习模型训练的方法、装置及系统 Download PDFInfo
- Publication number
- CN114139723A CN114139723A CN202111443369.6A CN202111443369A CN114139723A CN 114139723 A CN114139723 A CN 114139723A CN 202111443369 A CN202111443369 A CN 202111443369A CN 114139723 A CN114139723 A CN 114139723A
- Authority
- CN
- China
- Prior art keywords
- node
- computing node
- memory
- parameter server
- usage amount
- 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
- 238000012549 training Methods 0.000 title claims abstract description 207
- 238000013136 deep learning model Methods 0.000 title claims abstract description 89
- 238000000034 method Methods 0.000 title claims abstract description 85
- 230000015654 memory Effects 0.000 claims abstract description 353
- 239000012634 fragment Substances 0.000 claims abstract description 104
- 238000013135 deep learning Methods 0.000 claims abstract description 81
- 230000008569 process Effects 0.000 claims abstract description 46
- 238000004891 communication Methods 0.000 claims abstract description 20
- 238000012545 processing Methods 0.000 claims description 34
- 238000013467 fragmentation Methods 0.000 claims description 26
- 238000006062 fragmentation reaction Methods 0.000 claims description 26
- 238000004364 calculation method Methods 0.000 claims description 12
- 238000004590 computer program Methods 0.000 claims description 12
- 238000012544 monitoring process Methods 0.000 claims description 8
- 230000008859 change Effects 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 25
- 230000006870 function Effects 0.000 description 11
- 238000013528 artificial neural network Methods 0.000 description 2
- 238000007418 data mining Methods 0.000 description 2
- 238000010801 machine learning Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000003058 natural language processing Methods 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 239000010977 jade Substances 0.000 description 1
- 238000012417 linear regression Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Artificial Intelligence (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Computing Systems (AREA)
- Medical Informatics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Debugging And Monitoring (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本说明书实施例提供了用于深度学习模型训练的方法、装置及系统。包括计算节点和参数服务器节点的深度学习资源管理系统与分布式集群通信连接,计算节点包括主计算节点和从计算节点,参数服务器节点用于存储和更新模型参数。在该方法中,启动主计算节点和参数服务器节点,将一个数据分片下发给主计算节点,以使主计算节点和参数服务器节点执行一次模型迭代计算;在主计算节点的模型迭代计算过程中确定主计算节点的第一内存实际使用量;根据第一内存实际使用量预估第一内存使用量;以及按照所预估的第一内存使用量来配置并启动各个从计算节点,以使主计算节点、各个从计算节点以及参数服务器节点基于多个数据分片中的其他数据分片进行模型训练。
Description
技术领域
本说明书实施例涉及深度学习技术领域,具体地,涉及用于深度学习模型训练的方法、装置及系统。
背景技术
深度学习是机器学习领域中的一个研究方向,深度学习是学习样本数据的内在规律以及表示层次,基于此,深度学习的学习过程中获得的信息能够帮助解释文字、图像、声音等数据。深度学习的最终目标是能够让机器像人一样具有分析学习能力。基于此,深度学习被广泛应用于搜索、数据挖掘、自然语言处理等各个领域。
深度学习的典型模型包括神经网络、自编码器、深度生成模型等,无论哪一种模型,在投入使用前需要先进行模型训练。针对深度学习模型的训练是一项较大的工程,尤其是模型复杂的情况下。在模型训练中,需要提供足够的算力以及耗费大量的时间。鉴于此,采用分布式集群的方式来进行深度学习的模型训练,分布式集群可以提供多台机器来执行训练作业。
目前,一种分布式集群是包括多个处理节点的分布式训练架构,在该分布式训练架构中,各个处理节点按照用户指定的配置参数进行配置,经过配置的各个处理节点同时启动后,能够并行地对训练样本进行数据处理,这样可以提高深度学习模块的训练效率。
发明内容
鉴于上述,本说明书实施例提供了用于深度学习模型训练的方法、装置及系统。通过本说明书实施例提供的技术方案,根据主计算节点的内存实际使用量来动态配置各个从计算节点的内存,从而确保为深度学习模型训练提供足够的内存,并提高深度学习模型训练中的内存利用率。
根据本说明书实施例的一个方面,提供了一种用于深度学习模型训练的方法,所述方法由深度学习资源管理系统来执行,所述深度学习资源管理系统与分布式集群通信连接,所述分布式集群包括多个计算节点和至少一个参数服务器节点,所述多个计算节点包括主计算节点和从计算节点,各个计算节点与所述参数服务器节点通信连接,所述参数服务器节点用于存储和更新模型参数,所述方法包括:启动所述主计算节点和所述参数服务器节点;将由训练样本集经过分片处理得到的多个数据分片中的一个数据分片下发给所述主计算节点,以使所述主计算节点和所述参数服务器节点基于该数据分片执行一次模型迭代计算;在所述主计算节点的所述模型迭代计算过程中,确定所述主计算节点的第一内存实际使用量;根据所确定的第一内存实际使用量来预估参与所述深度学习模型训练的各个从计算节点的第一内存使用量;以及按照所预估的第一内存使用量来配置并启动所述各个从计算节点,以使所述主计算节点、所述各个从计算节点以及所述参数服务器节点基于所述多个数据分片中的其他数据分片进行模型训练。
根据本说明书实施例的另一方面,还提供一种用于深度学习模型训练的装置,应用于深度学习资源管理系统,所述深度学习资源管理系统与分布式集群通信连接,所述分布式集群包括多个计算节点和至少一个参数服务器节点,所述多个计算节点包括主计算节点和从计算节点,各个计算节点与所述参数服务器节点通信连接,所述参数服务器节点用于存储和更新模型参数,所述装置包括:节点启动单元,启动所述主计算节点和所述参数服务器节点;数据分片下发单元,将由训练样本集经过分片处理得到的多个数据分片中的一个数据分片下发给所述主计算节点,以使所述主计算节点和所述参数服务器节点基于该数据分片执行一次模型迭代计算;内存实际使用量确定单元,在所述主计算节点的所述模型迭代计算过程中,确定所述主计算节点的第一内存实际使用量;内存使用量预估单元,根据所确定的第一内存实际使用量来预估参与所述深度学习模型训练的各个从计算节点的第一内存使用量;节点配置单元,按照所预估的第一内存使用量来配置并启动所述各个从计算节点,以使所述主计算节点、所述各个从计算节点以及所述参数服务器节点基于所述多个数据分片中的其他数据分片进行模型训练。
根据本说明书实施例的另一方面,还提供一种深度学习资源管理系统,包括:节点管理模块和数据分片管理模块,所述深度学习资源管理系统与分布式集群通信连接,所述分布式集群包括多个计算节点和至少一个参数服务器节点,所述多个计算节点包括主计算节点和从计算节点,各个计算节点与所述参数服务器节点通信连接,所述参数服务器节点用于存储和更新模型参数,所述节点管理模块,被配置为启动所述主计算节点和所述参数服务器节点;所述数据分片管理模块,被配置为将由训练样本集经过分片处理得到的多个数据分片中的一个数据分片下发给所述主计算节点,以使所述主计算节点和所述参数服务器节点基于该数据分片执行一次模型迭代计算;所述节点管理模块,还被配置为在所述主计算节点的所述模型迭代计算过程中,确定所述主计算节点的第一内存实际使用量;根据所确定的第一内存实际使用量来预估参与所述深度学习模型训练的各个从计算节点的第一内存使用量;以及按照所预估的第一内存使用量来配置并启动所述各个从计算节点,以使所述主计算节点、所述各个从计算节点以及所述参数服务器节点基于所述多个数据分片中的其他数据分片进行模型训练。
根据本说明书实施例的另一方面,还提供一种用于深度学习模型训练的系统,包括:深度学习资源管理系统和分布式集群,所述深度学习资源管理系统与分布式集群通信连接,所述分布式集群包括多个计算节点和至少一个参数服务器节点,所述多个计算节点包括主计算节点和从计算节点,各个计算节点与所述参数服务器节点通信连接,所述参数服务器节点用于存储和更新模型参数,所述深度学习资源管理系统包括:节点管理模块和数据分片管理模块,所述节点管理模块,被配置为启动所述主计算节点和所述参数服务器节点;所述数据分片管理模块,被配置为将由训练样本集经过分片处理得到的多个数据分片中的一个数据分片下发给所述主计算节点,以使所述主计算节点和所述参数服务器节点基于该数据分片执行一次模型迭代计算;所述节点管理模块,还被配置为在所述主计算节点的所述模型迭代计算过程中,确定所述主计算节点的第一内存实际使用量;根据所确定的第一内存实际使用量来预估参与所述深度学习模型训练的各个从计算节点的第一内存使用量;按照所预估的第一内存使用量来配置并启动所述各个从计算节点;所述分布式集群中的所述主计算节点、所述各个从计算节点以及所述参数服务器节点基于所述多个数据分片中的其他数据分片进行模型训练。
根据本说明书实施例的另一方面,还提供一种电子设备,包括:至少一个处理器,与所述至少一个处理器耦合的存储器,以及存储在所述存储器上的计算机程序,所述至少一个处理器执行所述计算机程序来实现如上述任一所述的用于深度学习模型训练的方法。
根据本说明书实施例的另一方面,还提供一种计算机可读存储介质,其存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的用于深度学习模型训练的方法。
根据本说明书实施例的另一方面,还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如上任一所述的用于深度学习模型训练的方法。
附图说明
通过参照下面的附图,可以实现对于本说明书实施例内容的本质和优点的进一步理解。在附图中,类似组件或特征可以具有相同的附图标记。
图1示出了根据本说明书实施例提供的用于深度学习模型训练的系统的一个示例的示意图。
图2示出了根据本说明书实施例提供的用于深度学习模型训练的方法的一个示例的流程图。
图3示出了根据本说明书实施例提供的预估第一内存使用量的另一个示例的流程图。
图4示出了根据本说明书实施例的预估第二内存使用量的一个示例的流程图。
图5示出了根据本说明书实施例的基于采集的第二内存实际使用量与时间点的对应关系得到的关系图的一个示例的示意图。
图6A示出了根据本说明书实施例的关系图的一个示例的示意图。
图6B示出了根据本说明书实施例的关系图的另一个示例的示意图。
图7示出了根据本说明书实施例的用于深度学习模型训练的装置的一个示例的方框图。
图8示出了根据本说明书实施例提供的深度学习资源管理系统的一个示例的方框图。
图9示出了本说明书实施例的用于实现深度学习模型训练方法的电子设备的方框图。
具体实施方式
以下将参考示例实施方式讨论本文描述的主题。应该理解,讨论这些实施方式只是为了使得本领域技术人员能够更好地理解从而实现本文描述的主题,并非是对权利要求书中所阐述的保护范围、适用性或者示例的限制。可以在不脱离本说明书实施例内容的保护范围的情况下,对所讨论的元素的功能和排列进行改变。各个示例可以根据需要,省略、替代或者添加各种过程或组件。另外,相对一些示例所描述的特征在其它例子中也可以进行组合。
如本文中使用的,术语“包括”及其变型表示开放的术语,含义是“包括但不限于”。术语“基于”表示“至少部分地基于”。术语“一个实施例”和“一实施例”表示“至少一个实施例”。术语“另一个实施例”表示“至少一个其他实施例”。术语“第一”、“第二”等可以指代不同的或相同的对象。下面可以包括其他的定义,无论是明确的还是隐含的。除非上下文中明确地指明,否则一个术语的定义在整个说明书中是一致的。
深度学习是机器学习领域中的一个研究方向,深度学习是学习样本数据的内在规律以及表示层次,基于此,深度学习的学习过程中获得的信息能够帮助解释文字、图像、声音等数据。深度学习的最终目标是能够让机器像人一样具有分析学习能力。基于此,深度学习被广泛应用于搜索、数据挖掘、自然语言处理等各个领域。
深度学习的典型模型包括神经网络、自编码器、深度生成模型等,无论哪一种模型,在投入使用前需要先进行模型训练。针对深度学习模型的训练是一项较大的工程,尤其是模型复杂的情况下。在模型训练中,需要提供足够的算力以及耗费大量的时间。鉴于此,采用分布式集群的方式来进行深度学习的模型训练,分布式集群可以提供多台机器来执行训练作业。
目前,一种分布式集群是包括多个处理节点的分布式训练架构,在该分布式训练架构中,各个处理节点按照用户指定的配置参数进行配置,经过配置的各个处理节点同时启动后,能够并行地对训练样本进行数据处理,这样可以提高深度学习模块的训练效率。
然而,在上述分布式训练架构中,各个处理节点的内存等资源参数都是由用户自定义进行配置的,由于深度学习的复杂性,用户很难配置准确的资源参数。因此,为了让训练作业顺序执行,用户往往配置较多的资源,这样就会导致集群资源的浪费。
鉴于上述,本说明书实施例提供了用于深度学习模型训练的方法、装置及系统。该方法由深度学习资源管理系统来执行,深度学习资源管理系统与分布式集群通信连接,分布式集群包括多个计算节点和至少一个参数服务器节点,多个计算节点包括主计算节点和从计算节点,各个计算节点与参数服务器节点通信连接,参数服务器节点用于存储和更新模型参数,方法包括:启动主计算节点和参数服务器节点;将由训练样本集经过分片处理得到的多个数据分片中的一个数据分片下发给主计算节点,以使主计算节点和参数服务器节点基于该数据分片执行一次模型迭代计算;在主计算节点的模型迭代计算过程中,确定主计算节点的第一内存实际使用量;根据所确定的第一内存实际使用量来预估参与深度学习模型训练的各个从计算节点的第一内存使用量;以及按照所预估的第一内存使用量来配置并启动各个从计算节点,以使主计算节点、各个从计算节点以及参数服务器节点基于多个数据分片中的其他数据分片进行模型训练。通过本说明书实施例提供的技术方案,根据主计算节点的内存实际使用量来动态配置各个从计算节点的内存,从而确保为深度学习模型训练提供足够的内存,并提高深度学习模型训练中的内存利用率。
下面结合附图对本说明书实施例提供了用于深度学习模型训练的方法、装置及系统进行说明。
图1示出了根据本说明书实施例提供的用于深度学习模型训练的系统100的一个示例的示意图。
如图1所示,该系统100可以包括深度学习资源管理系统和分布式集群,深度学习资源管理系统与分布式集群之间可以通信连接。下面分别对深度学习资源管理系统和分布式集群进行说明。
针对分布式集群
分布式集群可以包括多个计算节点(worker)和至少一个参数服务器(parameterserver,PS)节点。各个计算节点可以分别与至少一个参数服务器节点中的各个参数服务器节点通信连接。
在本说明书实施例中,各个计算节点可以用于数据处理。在一个示例中,当分布式集群应用于深度学习模型训练时,各个计算节点可以用于对训练样本进行计算处理,以计算模型参数的梯度。各个计算节点之间可以以并行的方式进行计算,由此,可以提高分布式集群的并行处理能力以及处理效率。
在本说明书实施例中,分布式集群中的多个计算节点可以包括主计算节点和从计算节点,主计算节点可以用于初始化深度学习模型,以及参与模型训练。在深度学习模型训练中,分布式集群中的主计算节点先启动并完成深度学习模型的初始化,然后,其他各个从计算节点再启动开始执行深度学习模型训练操作。
在本说明书实施例中,参数服务器节点可以用于存储和更新模型参数,具体地,参数服务器节点可以从计算节点接收到针对模型参数的梯度,然后基于所接收到的梯度更新对应的模型参数,由此实现深度学习模型的更新。
在本说明书实施例中,分布式集群中的参数服务器节点可以包括一个或多个。例如,如图1所示的分布式集群包括有两个参数服务器节点。需要说明的是,图1中的分布式集群包括有两个参数服务器节点仅作为一个示例,分布式集群还可以包括其他数量的参数服务器节点。
当分布式集群中的参数服务器节点仅有一个时,分布式集群中的各个计算节点与该参数服务器节点通信连接,该参数服务器节点可以存储深度学习模型的所有模型参数,从而参数服务器节点可以接收各个模型参数的梯度,并基于各个模型参数的梯度进行相应模型参数的更新。
当分布式集群中的参数服务器节点有多个时,每个参数服务器节点可以存储深度学习模型的一部分模型参数,所有参数服务器节点中存储的模型参数可以包括深度学习模型的所有模型参数。在这种情况下,各个计算节点与各个参数服务器节点可以通信连接,各个计算节点在计算出针对训练样本中的模型参数的梯度时,可以将该梯度发送给用于存储该训练样本中的模型参数的参数服务器节点。
在一个示例中,各个参数服务器节点可以按照存储数据的数据类型来区分,不同的参数服务器节点用于存储和更新不同数据类型的模型参数。在该示例中,各个计算节点在计算出训练样本的梯度时,可以按照该训练样本的数据类型来将所计算出的梯度发送给对应的参数服务器节点。
在本说明书实施例中,分布式集群中的各个计算节点(包括主计算节点和从计算节点)可以从分布式集群的外部接收待处理的数据,比如,训练样本。各个计算节点可以对所接收到的训练样本进行计算,以得到针对该训练样本中的模型参数对应的梯度。然后,计算节点可以将所得到的梯度发送给对应的参数服务器节点,该参数服务器节点存储有该梯度对应的模型参数。基于此,参数服务器节点可以利用模型参数和梯度进行模型参数的更新,并将更新后的模型参数存储在本地,进而实现深度学习模型的更新。
针对深度学习资源管理系统
深度学习资源管理系统可以用于对通信连接的分布式集群中的节点进行管理以及为分布式集群中的计算节点提供训练样本。深度学习资源管理系统对节点的管理可以包括节点参数的配置、节点启动、节点的状态监控等。深度学习资源管理系统可以对训练样本集进行数据分片处理,从而深度学习资源管理系统所提供的训练样本可以是训练样本集经过分片处理后的数据分片。
在一个示例中,深度学习资源管理系统可以包括节点管理模块和数据分片管理模块。节点管理模块可以用于对分布式集群中的各个节点进行管理,从而节点管理模块可以与分布式集群中的计算节点以及参数服务器节点通信连接。数据分片管理模块可以用于对数据样本集进行数据分片处理以及为分布式集群中的计算节点提供训练样本,从而数据分片管理模块可以与分布式集群中的计算节点通信连接。
在系统100中,深度学习资源管理系统可以响应于深度学习的模型训练指令,控制分布式集群中的计算节点以及参数服务器节点进行深度学习模型训练。此外,深度学习资源管理系统还可以为计算节点的模型训练提供训练样本集的数据分片。
图2示出了根据本说明书实施例提供的用于深度学习模型训练的方法的一个示例200的流程图。
本说明书实施例提供的深度学习模型训练方法可以由深度学习资源管理系统来执行,在一个示例中,深度学习模型训练可以由深度学习资源管理系统中的节点管理模块和数据分片管理模块共同来执行。
如图2所示,在210,启动分布式集群中的主计算节点和参数服务器节点。
在本说明书实施例中,分布式集群中可以配置有用于启动计算节点和参数服务器节点的接口,深度学习资源管理系统可以调用该接口来启动主计算节点和参数服务器节点。例如,分布式集群是Kubernetes,可以通过调用Kubernetes提供的用于启动计算节点和参数服务器节点的接口来启动PS pod(即,参数服务器节点所属的pod)以及chief workerpod(即,主计算节点所属的pod)。
在完成主计算节点和参数服务器节点的启动后,主计算节点可以执行本地存储的深度学习模块代码以初始化模型参数,初始化的模型参数可以包括环境变量参数等。在一个示例中,启动的参数服务器节点可以是一个或多个,启动的参数服务器节点的数量可以指定。
在一个示例中,可以由深度学习资源管理系统中的节点管理模块来执行启动主计算节点和参数服务器节点的操作。
深度学习资源管理系统可以响应于深度学习模块的训练请求来执行启动主计算节点和参数服务器节点的操作。在一个示例中,训练请求可以是由用户发起的,训练请求中可以包括用户设定的配置信息,该配置信息可以包括参与深度学习模型训练的计算节点的数量、参数服务器节点的数量等。
在220,将一个数据分片下发给主计算节点,以使主计算节点和参数服务器节点基于该数据分片执行一次模型迭代计算。
在本说明书实施例中,下发给主计算节点的数据分片可以是由训练样本集经过分片处理得到的多个数据分片中的其中一个数据分片。训练样本集用于对深度学习模型进行训练,训练样本集可以输入给深度学习资源管理系统,深度学习资源管理系统可以对训练样本集进行数据分片处理,得到多个数据分片。所得到的多个数据分片可以构成完整的训练样本集。然后,深度学习资源管理系统可以将其中的一个数据分片下发给主计算节点。
在一个示例中,上述220的操作可以由深度学习资源管理系统中的数据分片管理模块来执行,数据分片管理模块可以用于对训练样本集进行数据分片,还可以将其中一个数据分片下发给主计算节点。
在本说明书实施例中,训练样本集经过数据分片处理得到的数据分片的数量可以多于参与深度学习模块训练的计算节点(包括主计算节点和从计算节点)的数量。在一个示例中,数据分片的数量可以远超过计算节点的数量。
在一个示例中,数据分片的数量可以指定。例如,指定每个数据分片的大小为10000,训练样本集有1百万个样本的话,则将训练样本分片处理为100个数据分片。
在另一个示例中,数据分片的数量还可以根据参与深度学习模块训练的计算节点的数量来确定。在一个示例中,数据分片的数量可以是计算节点数量的指定倍数。例如,指定倍数是10倍,当参与深度学习模块训练的计算节点有10个时,则可以确定数据分片的数量是100。
在本说明书实施例中,在一次模型迭代计算过程中,主计算节点可以将数据分片作为训练样本输入给待训练的深度学习模型,数据分片在深度学习模型中正向传播,深度学习模型可以输出针对数据分片的得分,然后,可以将数据分片的得分输入给误差函数(loss function),误差函数将其与期待值进行比较得到误差,通过误差可以判断深度学习模型的训练程度。再通过反向传播的方式来确定梯度,梯度可以反映出深度学习模型中的模型参数使误差变小的衰减方向。主计算节点在得到梯度后,可以将梯度发送给参数服务器节点。
参数服务器节点存储有梯度对应的模型参数,在接收到模型参数的梯度后,参数服务器节点可以根据梯度来调整对应的模型参数,以得到新的模型参数,该新的模型参数用于更新深度学习模型。
每一次模型迭代计算过程都可以按照上述过程进行处理,每执行一次模型迭代计算过程,可以生成一次模型参数的梯度,相应地,可以更新深度学习模型一次。直至满足训练结束条件,训练结束条件可以包括指定的迭代次数、误差值小于指定阈值以及误差的梯度不再减小等中的至少一种。
在230,在主计算节点的模型迭代计算过程中,可以确定主计算节点的第一内存实际使用量。
在主计算节点的模型迭代计算开始后,深度学习资源管理系统可以实时采集主计算节点的状态信息,状态信息可以包括主计算节点的资源使用状态、模型迭代计算的进度等,资源使用状态可以包括内存使用、CPU使用等资源的状态。
针对主计算节点的内存使用量,随着模型迭代计算的执行,内存使用量可以持续增加,直至内存使用量不变。当内存使用量不再增加时,可以是模型迭代计算结束时,即此次迭代结束;还可以是模型迭代计算过程中,此时,随着模型迭代计算的继续执行,内存使用量也不会再增加。基于此,可以确定出主计算节点的第一内存实际使用量,该第一内存实际使用量可以用于反映主计算节点执行一次模型迭代过程所需的内存。
在240,根据所确定的第一内存实际使用量来预估各个从计算节点的第一内存使用量。
在本说明书实施例中,所预估的各个从计算节点是参与深度学习模型训练的计算节点。在一个示例中,参与深度学习模块训练的计算节点的数量可以是用户指定的,比如,用户可以在深度学习模型训练请求中设置参与深度学习模型训练的计算节点的数量。在另一个示例中,参与深度学习模块训练的计算节点的数量还可以是根据模型训练的任务量来确定的,任务量越大,则配置的计算节点的数量越多。
各个从计算节点的第一内存使用量相同,每个从计算节点的第一内存使用量是用于为该从计算节点配置内存大小的参数信息。
在本说明书实施例中,深度学习模型训练由若干次的模型迭代过程构成,每次的模型迭代过程基本一致,并且,在每次模型迭代过程中使用一个数据分片作为该模型迭代中的训练样本。基于此,可以认为,在每次模型迭代过程中计算节点所需的内存基本相同。因此,可以根据已实际执行一次模型迭代过程中所确定的第一内存实际使用量来预估其他从计算节点的第一内存使用量。
在一个示例中,可以在第一内存实际使用量的基础上增加第二指定内存增量所得到的内存使用量作为各个从计算节点的第一内存使用量。例如,第二指定内存增量是1G,则当第一内存实际使用量是2G时,所预估的第一内存使用量是3G。
在另一个示例中,可以将第一内存实际使用量的指定倍数确定为预估的各个从计算节点的第一内存使用量。例如,指定倍数是1.5倍,则当第一内存实际使用量是1G时,所预估的第一内存使用量是1.5G。
在另一个示例中,可以根据第一内存实际使用量、指定内存利用率以及第一指定内存增量来预估各个从计算节点的第一内存使用量。
指定内存利用率是从计算节点在运行过程中实际使用的内存量占所配置的内存量(即,第一内存使用量)的最低比例,指定内存利用率设置的越高,则从计算节点的实际内存利用率越高,相应地,内存资源的浪费就越少。
在该示例中,以第一内存实际使用量为起点,采用逐步增加内存增量的方式来试探从计算节点的内存利用率是否达到指定内存利用率,直至达到指定内存利用率时结束。每次增加的内存增量是第一指定内存增量。第一指定内存增量可以自定义,第一指定内存增量越小,从计算节点的内存利用率达到指定内存利用率更精确,第一指定内存增量越大,可以降低试探的次数,从而预估出第一内存使用量的效率越高。
图3示出了根据本说明书实施例提供的预估第一内存使用量的另一个示例300的流程图。
如图3所示,在242,可以以第一内存实际使用量为起点,在第一内存实际使用量的基础上增加第一指定内存增量来得到一个新的内存使用量,将该新的内存使用量作为待确定内存使用量。
在244,根据待确定内存使用量来重新配置并启动第一从计算节点,该第一从计算节点可以是待预估的从计算节点中的其中一个从计算节点,还可以是其中的部分从计算节点,还可以是待预估的所有从计算节点。
启动的第一从计算节点具有待确定内存使用量的内存,从而第一从计算节点可以基于具有待确定内存使用量的内存来进行模型迭代计算。
在246,在第一从计算节点的模型迭代计算过程中,深度学习资源管理系统可以监测第一从计算节点的内存使用率是否达到指定内存利用率。如果是,则执行247的操作,如果否,则执行248的操作。
在一个示例中,可以由深度学习资源管理系统中的节点管理模块来监测第一从计算节点的内存使用率是否达到指定内存利用率。
在247,在内存使用率达到指定内存利用率时,可以将待确定内存使用量确定为预估的各个从计算节点的第一内存使用量。
在248,在内存使用率未达到指定内存利用率时,在待确定内存使用量的基础上增加第一指定内存增量以得到新的待确定内存使用量。然后,基于新的待确定内存使用量来重新执行上述244的操作,直至预估出第一内存使用量。
通过上述示例,根据已发生的第一内存实际使用量来预估第一内存使用量,实现动态地预估第一内存使用量,从而动态地配置各个从计算节点,在确保为深度学习模型训练提供足够的内存的同时,具备第一内存使用量的内存的各个从计算节点进行模型训练时该内存的利用率可以达到指定内存利用率,从而提高了从计算节点的内存利用率。
回到图2,在预估出第一内存使用量后,在250,可以按照所预估的第一内存使用量来配置并启动各个从计算节点。
在本说明书实施例中,可以由深度学习资源管理系统来配置并启动各个从计算节点。在一个示例中,可以由深度学习资源管理系统中的节点管理模块来配置并启动各个从计算节点。
在各个从计算节点启动后,各个从计算节点可以与主计算节点在分布式集群中进行并行计算处理,并且,各个从计算节点以及主计算节点之间是异步执行。
在本说明书实施例中,主计算节点、各个从计算节点以及参数服务器节点可以基于多个数据分片中的其他数据分片进行模型训练。各个计算节点可以执行模型迭代计算,直至模型训练结束。每个计算节点在接收到数据分片时开始执行模型迭代计算,深度学习资源管理系统可以监控各个计算节点的执行状态和进度,在每个计算节点完成一次模型迭代时,可以为该计算节点下发一个新的数据分片,以使得该计算节点使用该数据分片执行下一次模型迭代计算。
通过本说明书实施例提供的用于深度学习模型训练的方法,根据主计算节点的内存实际使用量来动态地配置各个从计算节点的内存,从而确保为深度学习模型训练提供足够的内存,并提高深度学习模型训练中的内存利用率。
在本说明书实施例的一个示例中,在主计算节点和各个从计算节点进行模型训练的过程中,每个计算节点在进行一次模型迭代时都需要将模型参数的梯度发送给参数服务器节点,由参数服务器节点基于梯度来更新模型参数并存储模型参数,这样,随着模型训练的进行,参数服务器节点的内存使用量会随之增加。
基于此,在主计算节点和各个从计算节点进行模型训练的过程中,可以根据在该过程中采集的参数服务器节点中各个时间点对应的第二内存实际使用量来预估参数服务器节点所需的第二内存使用量。然后,根据第二内存使用量对参数服务器节点进行重新配置,以使参数服务器节点配置有具有第二内存使用量的内存,从而参数服务器节点可以基于重新配置的内存进行模型训练。
在重新配置的一种方式中,可以将待重新配置的参数服务器节点停止,然后将参数服务器节点的内存重新配置为第二内存使用量,配置完成后重新启动该参数服务器节点,重启后的参数服务器节点可以以具有第二内存使用量的内存进行模型训练。在重新配置的另一种方式中,还可以在参数服务器节点的运行过程中重新配置具有第二内存使用量的内存。
在该示例中,可以在模型训练过程中动态地对参数服务器节点的内存进行调整,以满足深度学习模型训练对内存的需求,避免内存不足而导致训练中断,此外,通过动态调整内存在满足模型训练需求的同时,提高参数服务器节点的内存利用率,减少内存资源的浪费。
图4示出了根据本说明书实施例的预估第二内存使用量的一个示例400的流程图。
如图4所示,在410,在主计算节点和各个从计算节点进行模型训练的过程中,可以采集参数服务器节点中各个时间点对应的第二内存实际使用量。
在该示例中,采集的时间段可以是整个模型训练的前期,在采集完成后,模型训练继续执行。例如,以模型训练开始为起点的一段时间内进行采集,该段时间仅占模型训练完整过程的三分之一。
在不同的时间点,参数服务器节点的第二内存实际使用量可以不同。至少在模型训练的前期一段时间内,随着时间推移,第二内存实际使用量可以随之增加。
在420,基于所采集的第二内存实际使用量与各个时间点的对应关系,拟合得到在所采集的第二内存实际使用量对应的时间段内内存使用量随时间变化的关系图。
所采集的每个第二内存实际使用量对应有一个时间点,对应时间点的第二内存实际使用量可以表示参数服务器节点在该时间点的内存实际使用量。基于第二内存实际使用量与各个时间点的对应关系,可以在以时间和第二内存实际使用量分别为轴的二维坐标系中,将每个对应关系用一个点来表示。
图5示出了根据本说明书实施例的基于采集的第二内存实际使用量与时间点的对应关系得到的关系图的一个示例的示意图。如图5所示,每个点表示所采集的一个时间点的第二内存实际使用量,不同的时间所采集的第二内存实际使用量不同,使得二维坐标系中的各个点的分布不同。
在该示例中,关系图是通过拟合方式得到,可以包括折线图、曲线图、直线图等。拟合的方式可以包括线性回归等。关系图可以反映出在所采集的第二内存实际使用量对应的时间段内内存使用量随时间的变化情况。以图5为例,所采集的第二内存实际使用量对应的时间段是t1-t5的时间段,通过将该时间段内的表征第二内存实际使用量与时间点的对应关系的各点进行拟合得到一条递增直线,该直线可以反映出在t1-t5的时间段内第二内存实际使用量随着时间逐渐增加。
在430,基于关系图来预测参数服务器节点所需的第二内存使用量。
在该示例中,用于表征内存使用量随时间变化的关系图可以包括两种:第一种关系图,在所采集的第二内存实际使用量对应的时间段内的前期,第二内存实际使用量随着时间逐渐增加,在达到一个时间点时第二内存实际使用量不再增加,并且在后期的时间段内,第二内存实际使用量也不再增加。以图6A为例,图6A示出了根据本说明书实施例的关系图的一个示例的示意图。
第二种关系图,在所采集的第二内存实际使用量对应的时间段内,第二内存实际使用量随着时间保持逐渐增加。以图6B为例,图6B示出了根据本说明书实施例的关系图的另一个示例的示意图。
在一个示例中,当关系图中在时间段内的内存使用量不再增加时,可以基于不再增加的内存使用量来预估参数服务器节点所需的第二内存使用量。
在该示例中,当不再增加的内存使用量保持不变时,可以将该保持不变的内存使用量确定为参数服务器节点的第二内存使用量。以图6A为例,在t1-t3的时间段内,第二内存实际使用量随着时间逐渐增加,当到达t3时刻时,第二内存实际使用量不再增加,并且在之后的时间内都保持不变,即,t3、t4和t5时刻对应的第二内存实际使用量相同,则可以将t3、t4和t5时刻对应的第二内存实际使用量确定为参数服务器节点的第二内存使用量。
当不再增加的内存使用量在不同时间点存在小幅度的变化时,可以将小幅度变化的内存使用量的平均值确定为参数服务器节点的第二内存使用量。内存使用量的平均值可以通过计算指定时间段内所采集的各个第二内存实际使用量的平均值得到,指定时间段是内存使用量不再持续增加的时间点之后的任一时间段。
在另一个示例中,当关系图中在时间段内的内存使用量持续增加时,可以认为,在深度学习模型训练过程中,参数服务器节点的第二内存实际使用量始终是持续增加。基于此,首先,可以基于关系图所表征的第二内存实际使用量与时间点之间的关系来构造出第二内存实际使用量与时间之间的函数,其中,第二内存实际使用量作为因变量,时间作为自变量。
以图6B为例,关系图是一条随时间递增的直线,则基于该直线可以构造出的函数为:y=at+b,其中,y表示第二内存实际使用量,t表示时间,a和b表示常数,可以根据直线上的已知点计算得到。
然后,预估参数服务器节点的训练结束时间,训练结束时间可以根据模型训练过程中消耗训练样本的速度以及训练样本集来预估。在一个示例中,深度学习资源管理系统可以统计各个从计算节点进行模型训练消耗训练样本的速度,然后,可以基于模型训练过程中消耗训练样本的速度以及训练样本集来预估训练结束时间。例如,总样本量1亿条,训练速度为每秒迭代1万个样本,则可以计算出训练时长为1万秒,进而可以确定训练结束时间。
再可以根据所构造的函数以及参数服务器节点的训练结束时间点来预估参数服务器节点所需的第二内存使用量。
在本说明书实施例的一个示例中,在主计算节点和各个从计算节点进行模型训练的过程中,深度学习资源管理系统可以监测各个计算节点的计算状态。在一个示例中,可以由深度学习资源管理系统中的节点管理模块来监测各个计算节点的计算状态。
在该示例中,计算节点的计算状态可以包括空闲状态、运行状态、计算成功状态以及计算失败状态。计算节点的空闲状态表示该计算节点当前没有执行模型迭代计算,计算节点的运行状态表示该计算节点正在执行模型迭代计算。
当监测到各个计算节点中存在计算失败的计算节点时,可以确定该计算节点未成功处理的数据分片。
在确定数据分片的一种方式中,在深度学习资源管理系统中,当数据分配下发给一个计算节点时,可以记录该数据分片与该计算节点的对应关系。在一个示例中,记录该对应关系的操作可以由数据分片管理模块来执行。基于所记录的数据分片与接收该数据分配的计算节点的对应关系,可以确定出计算失败的计算节点未成功处理的数据分片。通过记录数据分片与计算节点的对应关系,便于确定各个计算节点所分配的数据分配。
此外,当监测到计算节点针对所接收到的数据分片的计算状态是成功时,可以将该计算节点与该数据分片的对应关系清除。这样,可以节省深度学习资源管理系统本地的存储空间。
然后,可以重新启动一个新的计算节点,该新的计算节点的配置参数与该计算失败的计算节点的配置参数相同。再可以将所确定的数据分片下发给该新的计算节点,以使该新的计算节点对该数据分片执行模型迭代计算。
在上述示例中,通过监控各个计算节点的计算状态,在计算失败的情况下能够通过启动新的计算节点对计算失败的数据分片重新进行模型迭代计算,从计算失败之前的训练状态继续进行训练,避免模型训练被中断或者重新开始。
在本说明书实施例的一个示例中,在分布式集群包括多个参数服务器节点时,不同的参数服务器节点可以用于存储和更新不同数据类型的模型参数,每个参数服务器节点可以针对一种或多种数据类型的模型参数进行存储和更新。
在分布式集群中,主计算节点以及各个从计算节点可以对各自接收到的数据分片进行模型梯度计算。进行模型梯度计算的各个计算节点可以根据各自得到的梯度所属的数据类型将该梯度发送给对应的参数服务器节点。接收到梯度的参数服务器节点,基于所存储的模型参数以及所接收到的梯度进行模型参数更新。
在模型训练完成后,各个参数服务器节点中存储的模型参数也训练完成,将各个参数服务器节点中存储的最新更新的模型参数配置在深度学习模型中,以得到经过训练的深度学习模型。
通过设置多个参数服务器节点,不同的参数服务器节点存储和更新不同数据类型的模型参数,各个参数服务器节点之间可以并行执行,提高了模型训练的整体并行执行能力,从而提高了模型训练的效率。
图7示出了根据本说明书实施例的用于深度学习模型训练的装置(以下称为深度学习模型训练装置700)的一个示例的方框图。
如图7所示,深度学习模型训练装置700可以应用于深度学习资源管理系统,深度学习资源管理系统与分布式集群通信连接,分布式集群包括多个计算节点和至少一个参数服务器节点,多个计算节点包括主计算节点和从计算节点,各个计算节点与参数服务器节点通信连接,参数服务器节点用于存储和更新模型参数。
深度学习模型训练装置700包括节点启动单元710、数据分片下发单元720、内存实际使用量确定单元730、内存使用量预估单元740和节点配置单元750。
节点启动单元710,被配置为启动主计算节点和参数服务器节点。
数据分片下发单元720,被配置为将由训练样本集经过分片处理得到的多个数据分片中的一个数据分片下发给主计算节点,以使主计算节点和参数服务器节点基于该数据分片执行一次模型迭代计算。
内存实际使用量确定单元730,被配置为在主计算节点的模型迭代计算过程中,确定主计算节点的第一内存实际使用量。
内存使用量预估单元740,被配置为根据所确定的第一内存实际使用量来预估参与深度学习模型训练的各个从计算节点的第一内存使用量。
节点配置单元750,被配置为按照所预估的第一内存使用量来配置并启动各个从计算节点,以使主计算节点、各个从计算节点以及参数服务器节点基于多个数据分片中的其他数据分片进行模型训练。
在一个示例中,内存使用量预估单元740还可以被配置为:根据第一内存实际使用量、指定内存利用率以及第一指定内存增量来预估各个从计算节点的第一内存使用量;或者将第一内存实际使用量的指定倍数确定为预估的各个从计算节点的第一内存使用量;或者将在第一内存实际使用量的基础上增加第二指定内存增量所得到的内存使用量确定为预估的各个从计算节点的第一内存使用量。
在一个示例中,内存使用量预估单元740还可以被配置为:在第一内存实际使用量的基础上增加第一指定内存增量以得到待确定内存使用量;根据待确定内存使用量来重新配置并启动第一从计算节点,以使第一从计算节点基于具有待确定内存使用量的内存来进行模型迭代计算;在第一从计算节点的模型迭代计算过程中监测第一从计算节点的内存使用率是否达到指定内存利用率;在内存使用率达到指定内存利用率时,将待确定内存使用量确定为预估的各个从计算节点的第一内存使用量;以及在内存使用率未达到指定内存利用率时,在待确定内存使用量的基础上增加第一指定内存增量以得到新的待确定内存使用量。
在一个示例中,深度学习模型训练装置700还可以包括PS节点内存使用量预估单元,PS节点内存使用量预估单元可以被配置为:在主计算节点和各个从计算节点进行模型训练的过程中,根据在该过程中采集的参数服务器节点中各个时间点对应的第二内存实际使用量来预估参数服务器节点所需的第二内存使用量。节点配置单元750还可以被配置为:根据第二内存使用量对参数服务器节点进行重新配置,以使参数服务器节点基于所配置的具有第二内存使用量的内存进行模型训练。
在一个示例中,PS节点内存使用量预估单元还可以被配置为:在主计算节点和各个从计算节点进行模型训练的过程中,采集参数服务器节点中各个时间点对应的第二内存实际使用量;基于所采集的第二内存实际使用量与各个时间点的对应关系,拟合得到在所采集的第二内存实际使用量对应的时间段内内存使用量随时间变化的关系图;以及基于关系图来预估参数服务器节点所需的第二内存使用量。
在一个示例中,PS节点内存使用量预估单元还可以被配置为:当关系图中在时间段内的内存使用量不再增加时,基于不再增加的内存使用量来预估参数服务器节点所需的第二内存使用量;当关系图中在时间段内的内存使用量持续增加时,基于关系图所表征的第二内存实际使用量与时间点之间的关系以及参数服务器节点的训练结束时间点来预估参数服务器节点所需的第二内存使用量。
在一个示例中,深度学习模型训练装置700还可以包括:计算节点状态监测单元和数据分片确定单元。计算节点状态监测单元可以被配置为:在主计算节点和各个从计算节点进行模型训练的过程中,监测各个计算节点的计算状态。数据分片确定单元可以被配置为:当监测到各个计算节点中存在计算失败的计算节点时,确定该计算节点未成功处理的数据分片。节点配置单元750还可以被配置为:按照计算失败的计算节点的配置方式来配置并启动一个新的计算节点。数据分片下发单元720还可以被配置为:将所确定的数据分片下发给新的计算节点,以使新的计算节点对该数据分片执行模型迭代计算。
在一个示例中,深度学习模型训练装置700还可以包括:对应关系记录单元和对应关系清除单元。对应关系记录单元可以被配置为:当数据分片下发给一个计算节点时,记录该数据分片与该计算节点的对应关系。对应关系清除单元可以被配置为:当监测到计算节点针对所接收到的数据分片的计算状态是成功时,将该计算节点与该数据分片的对应关系清除。
图8示出了根据本说明书实施例提供的深度学习资源管理系统800的一个示例的方框图。
如图8所示,深度学习资源管理系统800包括节点管理模块810和数据分片管理模块820。深度学习资源管理系统800与分布式集群通信连接,分布式集群包括多个计算节点和至少一个参数服务器节点,多个计算节点包括主计算节点和从计算节点,各个计算节点与参数服务器节点通信连接,参数服务器节点用于存储和更新模型参数。
节点管理模块810,被配置为启动主计算节点和参数服务器节点。
数据分片管理模块820,被配置为将由训练样本集经过分片处理得到的多个数据分片中的一个数据分片下发给主计算节点,以使主计算节点和参数服务器节点基于该数据分片执行一次模型迭代计算。
节点管理模块810,还被配置为在主计算节点的模型迭代计算过程中,确定主计算节点的第一内存实际使用量;根据所确定的第一内存实际使用量来预估参与深度学习模型训练的各个从计算节点的第一内存使用量;以及按照所预估的第一内存使用量来配置并启动各个从计算节点,以使主计算节点、各个从计算节点以及参数服务器节点基于多个数据分片中的其他数据分片进行模型训练。
本说明书实施例还提供一种用于深度学习模型训练的系统,该系统可以参照图1所示的系统100。该系统包括:深度学习资源管理系统和分布式集群,深度学习资源管理系统与分布式集群通信连接,分布式集群包括多个计算节点和至少一个参数服务器节点,多个计算节点包括主计算节点和从计算节点,各个计算节点与参数服务器节点通信连接,参数服务器节点用于存储和更新模型参数,深度学习资源管理系统包括:节点管理模块和数据分片管理模块。
节点管理模块,被配置为启动主计算节点和参数服务器节点。
数据分片管理模块,被配置为将由训练样本集经过分片处理得到的多个数据分片中的一个数据分片下发给主计算节点,以使主计算节点和参数服务器节点基于该数据分片执行一次模型迭代计算。
节点管理模块,还被配置为在主计算节点的模型迭代计算过程中,确定主计算节点的第一内存实际使用量;根据所确定的第一内存实际使用量来预估参与深度学习模型训练的各个从计算节点的第一内存使用量;按照所预估的第一内存使用量来配置并启动各个从计算节点。
分布式集群中的主计算节点、各个从计算节点以及参数服务器节点基于多个数据分片中的其他数据分片进行模型训练。
在一个示例中,参数服务器节点包括多个参数服务器节点,不同的参数服务器节点用于存储和更新不同数据类型的模型参数。
主计算节点以及各个从计算节点,被配置为对各自接收到的数据分片进行模型梯度计算。进行模型梯度计算的各个计算节点,被配置为根据各自得到的梯度所属的数据类型将该梯度发送给对应的参数服务器节点。接收到梯度的参数服务器节点,被配置为基于所存储的模型参数以及所接收到的梯度进行模型参数更新。
以上参照图1到图8,对根据本说明书实施例的用于深度学习模型训练的方法、装置、系统以及深度学习资源管理系统的实施例进行了描述。
本说明书实施例的用于深度学习模型训练的装置可以采用硬件实现,也可以采用软件或者硬件和软件的组合来实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在设备的处理器将存储器中对应的计算机程序指令读取到内存中运行形成的。在本说明书实施例中,用于深度学习模型训练的装置例如可以利用电子设备实现。
图9示出了本说明书实施例的用于实现深度学习模型训练方法的电子设备900的方框图。
如图9所示,电子设备900可以包括至少一个处理器910、存储器(例如,非易失性存储器)920、内存930和通信接口940,并且至少一个处理器910、存储器920、内存930和通信接口940经由总线950连接在一起。至少一个处理器910执行在存储器中存储或编码的至少一个计算机可读指令(即,上述以软件形式实现的元素)。
在一个实施例中,在存储器中存储计算机可执行指令,其当执行时使得至少一个处理器910:启动主计算节点和参数服务器节点;将由训练样本集经过分片处理得到的多个数据分片中的一个数据分片下发给主计算节点,以使主计算节点和参数服务器节点基于该数据分片执行一次模型迭代计算;在主计算节点的模型迭代计算过程中,确定主计算节点的第一内存实际使用量;根据所确定的第一内存实际使用量来预估参与深度学习模型训练的各个从计算节点的第一内存使用量;以及按照所预估的第一内存使用量来配置并启动各个从计算节点,以使主计算节点、各个从计算节点以及参数服务器节点基于多个数据分片中的其他数据分片进行模型训练。
应该理解,在存储器中存储的计算机可执行指令当执行时使得至少一个处理器910进行本说明书的各个实施例中以上结合图1-8描述的各种操作和功能。
根据一个实施例,提供了一种例如机器可读介质的程序产品。机器可读介质可以具有指令(即,上述以软件形式实现的元素),该指令当被机器执行时,使得机器执行本说明书的各个实施例中以上结合图1-8描述的各种操作和功能。
具体地,可以提供配有可读存储介质的系统或者装置,在该可读存储介质上存储着实现上述实施例中任一实施例的功能的软件程序代码,且使该系统或者装置的计算机或处理器读出并执行存储在该可读存储介质中的指令。
在这种情况下,从可读介质读取的程序代码本身可实现上述实施例中任何一项实施例的功能,因此机器可读代码和存储机器可读代码的可读存储介质构成了本发明的一部分。
本说明书各部分操作所需的计算机程序代码可以用任意一种或多种程序语言编写,包括面向对象编程语言,如Java、Scala、Smalltalk、Eiffel、JADE、Emerald、C++、C#、VB、NET以及Python等,常规程序化编程语言如C语言、Visual Basic 2003、Perl、COBOL2002、PHP以及ABAP,动态编程语言如Python、Ruby和Groovy,或者其他编程语言等。该程序编码可以在用户计算机上运行,或者作为独立的软件包在用户计算机上运行,或者部分在用户计算机上运行另一部分在远程计算机运行,或者全部在远程计算机或服务器上运行。在后一种情况下,远程计算机可以通过任何网络形式与用户计算机连接,比如局域网(LAN)或广域网(WAN),或连接至外部计算机(例如通过因特网),或者在云计算环境中,或者作为服务使用,比如软件即服务(SaaS)。
可读存储介质的实施例包括软盘、硬盘、磁光盘、光盘(如CD-ROM、CD-R、CD-RW、DVD-ROM、DVD-RAM、DVD-RW、DVD-RW)、磁带、非易失性存储卡和ROM。可选择地,可以由通信网络从服务器计算机上或云上下载程序代码。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
上述各流程和各系统结构图中不是所有的步骤和单元都是必须的,可以根据实际的需要忽略某些步骤或单元。各步骤的执行顺序不是固定的,可以根据需要进行确定。上述各实施例中描述的装置结构可以是物理结构,也可以是逻辑结构,即,有些单元可能由同一物理实体实现,或者,有些单元可能分由多个物理实体实现,或者,可以由多个独立设备中的某些部件共同实现。
在整个本说明书中使用的术语“示例性”意味着“用作示例、实例或例示”,并不意味着比其它实施例“优选”或“具有优势”。出于提供对所描述技术的理解的目的,具体实施方式包括具体细节。然而,可以在没有这些具体细节的情况下实施这些技术。在一些实例中,为了避免对所描述的实施例的概念造成难以理解,公知的结构和装置以框图形式示出。
以上结合附图详细描述了本说明书的实施例的可选实施方式,但是,本说明书的实施例并不限于上述实施方式中的具体细节,在本说明书的实施例的技术构思范围内,可以对本说明书的实施例的技术方案进行多种简单变型,这些简单变型均属于本说明书的实施例的保护范围。
本说明书内容的上述描述被提供来使得本领域任何普通技术人员能够实现或者使用本说明书内容。对于本领域普通技术人员来说,对本说明书内容进行的各种修改是显而易见的,并且,也可以在不脱离本说明书内容的保护范围的情况下,将本文所定义的一般性原理应用于其它变型。因此,本说明书内容并不限于本文所描述的示例和设计,而是与符合本文公开的原理和新颖性特征的最广范围相一致。
Claims (15)
1.一种用于深度学习模型训练的方法,所述方法由深度学习资源管理系统来执行,所述深度学习资源管理系统与分布式集群通信连接,所述分布式集群包括多个计算节点和至少一个参数服务器节点,所述多个计算节点包括主计算节点和从计算节点,各个计算节点与所述参数服务器节点通信连接,所述参数服务器节点用于存储和更新模型参数,
所述方法包括:
启动所述主计算节点和所述参数服务器节点;
将由训练样本集经过分片处理得到的多个数据分片中的一个数据分片下发给所述主计算节点,以使所述主计算节点和所述参数服务器节点基于该数据分片执行一次模型迭代计算;
在所述主计算节点的所述模型迭代计算过程中,确定所述主计算节点的第一内存实际使用量;
根据所确定的第一内存实际使用量来预估参与所述深度学习模型训练的各个从计算节点的第一内存使用量;以及
按照所预估的第一内存使用量来配置并启动所述各个从计算节点,以使所述主计算节点、所述各个从计算节点以及所述参数服务器节点基于所述多个数据分片中的其他数据分片进行模型训练。
2.如权利要求1所述的方法,其中,根据所确定的第一内存实际使用量来预估用于所述深度学习模型训练的各个从计算节点的第一内存使用量包括:
根据所述第一内存实际使用量、指定内存利用率以及第一指定内存增量来预估所述各个从计算节点的第一内存使用量;或者
将所述第一内存实际使用量的指定倍数确定为预估的所述各个从计算节点的第一内存使用量;或者
将在所述第一内存实际使用量的基础上增加第二指定内存增量所得到的内存使用量确定为预估的所述各个从计算节点的第一内存使用量。
3.如权利要求2所述的方法,其中,根据指定内存利用率、所述第一内存实际使用量以及第一指定内存增量来预估所述各个从计算节点的第一内存使用量包括:
在所述第一内存实际使用量的基础上增加所述第一指定内存增量以得到待确定内存使用量;
根据所述待确定内存使用量来重新配置并启动第一从计算节点,以使所述第一从计算节点基于具有所述待确定内存使用量的内存来进行模型迭代计算;
在所述第一从计算节点的模型迭代计算过程中监测所述第一从计算节点的内存使用率是否达到所述指定内存利用率;
在所述内存使用率达到所述指定内存利用率时,将所述待确定内存使用量确定为预估的所述各个从计算节点的第一内存使用量;以及
在所述内存使用率未达到所述指定内存利用率时,在所述待确定内存使用量的基础上增加所述第一指定内存增量以得到新的待确定内存使用量。
4.如权利要求1所述的方法,还包括:
在所述主计算节点和所述各个从计算节点进行模型训练的过程中,根据在该过程中采集的所述参数服务器节点中各个时间点对应的第二内存实际使用量来预估所述参数服务器节点所需的第二内存使用量;以及
根据所述第二内存使用量对所述参数服务器节点进行重新配置,以使所述参数服务器节点基于所配置的具有所述第二内存使用量的内存进行模型训练。
5.如权利要求4所述的方法,其中,在所述主计算节点和所述各个从计算节点进行模型训练的过程中,根据在该过程中采集的所述参数服务器节点中各个时间点对应的第二内存实际使用量来预估所述参数服务器节点所需的第二内存使用量包括:
在所述主计算节点和所述各个从计算节点进行模型训练的过程中,采集所述参数服务器节点中各个时间点对应的第二内存实际使用量;
基于所采集的第二内存实际使用量与所述各个时间点的对应关系,拟合得到在所采集的所述第二内存实际使用量对应的时间段内内存使用量随时间变化的关系图;以及
基于所述关系图来预估所述参数服务器节点所需的所述第二内存使用量。
6.如权利要求5所述的方法,其中,基于所述关系图来预估所述参数服务器节点所需的所述第二内存使用量包括:
当所述关系图中在所述时间段内的内存使用量不再增加时,基于不再增加的内存使用量来预估所述参数服务器节点所需的第二内存使用量;
当所述关系图中在所述时间段内的内存使用量持续增加时,基于所述关系图所表征的第二内存实际使用量与时间点之间的关系以及所述参数服务器节点的训练结束时间点来预估所述参数服务器节点所需的第二内存使用量。
7.如权利要求1所述的方法,还包括:
在所述主计算节点和所述各个从计算节点进行模型训练的过程中,监测各个计算节点的计算状态;
当监测到所述各个计算节点中存在计算失败的计算节点时,确定该计算节点未成功处理的数据分片;
按照所述计算失败的计算节点的配置方式来配置并启动一个新的计算节点;以及
将所确定的数据分片下发给所述新的计算节点,以使所述新的计算节点对该数据分片执行模型迭代计算。
8.如权利要求7所述的方法,还包括:
当数据分片下发给一个计算节点时,记录该数据分片与该计算节点的对应关系;
当监测到计算节点针对所接收到的数据分片的计算状态是成功时,将该计算节点与该数据分片的对应关系清除。
9.一种用于深度学习模型训练的装置,应用于深度学习资源管理系统,所述深度学习资源管理系统与分布式集群通信连接,所述分布式集群包括多个计算节点和至少一个参数服务器节点,所述多个计算节点包括主计算节点和从计算节点,各个计算节点与所述参数服务器节点通信连接,所述参数服务器节点用于存储和更新模型参数,
所述装置包括:
节点启动单元,启动所述主计算节点和所述参数服务器节点;
数据分片下发单元,将由训练样本集经过分片处理得到的多个数据分片中的一个数据分片下发给所述主计算节点,以使所述主计算节点和所述参数服务器节点基于该数据分片执行一次模型迭代计算;
内存实际使用量确定单元,在所述主计算节点的所述模型迭代计算过程中,确定所述主计算节点的第一内存实际使用量;
内存使用量预估单元,根据所确定的第一内存实际使用量来预估参与所述深度学习模型训练的各个从计算节点的第一内存使用量;
节点配置单元,按照所预估的第一内存使用量来配置并启动所述各个从计算节点,以使所述主计算节点、所述各个从计算节点以及所述参数服务器节点基于所述多个数据分片中的其他数据分片进行模型训练。
10.一种深度学习资源管理系统,包括:节点管理模块和数据分片管理模块,所述深度学习资源管理系统与分布式集群通信连接,所述分布式集群包括多个计算节点和至少一个参数服务器节点,所述多个计算节点包括主计算节点和从计算节点,各个计算节点与所述参数服务器节点通信连接,所述参数服务器节点用于存储和更新模型参数,
所述节点管理模块,被配置为启动所述主计算节点和所述参数服务器节点;
所述数据分片管理模块,被配置为将由训练样本集经过分片处理得到的多个数据分片中的一个数据分片下发给所述主计算节点,以使所述主计算节点和所述参数服务器节点基于该数据分片执行一次模型迭代计算;
所述节点管理模块,还被配置为在所述主计算节点的所述模型迭代计算过程中,确定所述主计算节点的第一内存实际使用量;根据所确定的第一内存实际使用量来预估参与所述深度学习模型训练的各个从计算节点的第一内存使用量;以及按照所预估的第一内存使用量来配置并启动所述各个从计算节点,以使所述主计算节点、所述各个从计算节点以及所述参数服务器节点基于所述多个数据分片中的其他数据分片进行模型训练。
11.一种用于深度学习模型训练的系统,包括:深度学习资源管理系统和分布式集群,所述深度学习资源管理系统与分布式集群通信连接,所述分布式集群包括多个计算节点和至少一个参数服务器节点,所述多个计算节点包括主计算节点和从计算节点,各个计算节点与所述参数服务器节点通信连接,所述参数服务器节点用于存储和更新模型参数,所述深度学习资源管理系统包括:节点管理模块和数据分片管理模块,
所述节点管理模块,被配置为启动所述主计算节点和所述参数服务器节点;
所述数据分片管理模块,被配置为将由训练样本集经过分片处理得到的多个数据分片中的一个数据分片下发给所述主计算节点,以使所述主计算节点和所述参数服务器节点基于该数据分片执行一次模型迭代计算;
所述节点管理模块,还被配置为在所述主计算节点的所述模型迭代计算过程中,确定所述主计算节点的第一内存实际使用量;根据所确定的第一内存实际使用量来预估参与所述深度学习模型训练的各个从计算节点的第一内存使用量;按照所预估的第一内存使用量来配置并启动所述各个从计算节点;
所述分布式集群中的所述主计算节点、所述各个从计算节点以及所述参数服务器节点基于所述多个数据分片中的其他数据分片进行模型训练。
12.如权利要求11所述的系统,其中,所述参数服务器节点包括多个参数服务器节点,不同的参数服务器节点用于存储和更新不同数据类型的模型参数,
所述主计算节点以及所述各个从计算节点,对各自接收到的数据分片进行模型梯度计算;
进行模型梯度计算的各个计算节点,根据各自得到的梯度所属的数据类型将该梯度发送给对应的参数服务器节点;以及
接收到梯度的参数服务器节点,基于所存储的模型参数以及所接收到的梯度进行模型参数更新。
13.一种电子设备,包括:至少一个处理器,与所述至少一个处理器耦合的存储器,以及存储在所述存储器上的计算机程序,所述至少一个处理器执行所述计算机程序来实现如权利要求1-8中任一所述的方法。
14.一种计算机可读存储介质,其存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1-8中任一所述的方法。
15.一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如权利要求1-8中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111443369.6A CN114139723B (zh) | 2021-11-30 | 2021-11-30 | 用于深度学习模型训练的方法、装置及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111443369.6A CN114139723B (zh) | 2021-11-30 | 2021-11-30 | 用于深度学习模型训练的方法、装置及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114139723A true CN114139723A (zh) | 2022-03-04 |
CN114139723B CN114139723B (zh) | 2024-06-21 |
Family
ID=80389916
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111443369.6A Active CN114139723B (zh) | 2021-11-30 | 2021-11-30 | 用于深度学习模型训练的方法、装置及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114139723B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114780225A (zh) * | 2022-06-14 | 2022-07-22 | 支付宝(杭州)信息技术有限公司 | 一种分布式模型训练系统、方法及装置 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106815644A (zh) * | 2017-01-26 | 2017-06-09 | 北京航空航天大学 | 机器学习方法和从节点 |
CN107578094A (zh) * | 2017-10-25 | 2018-01-12 | 济南浪潮高新科技投资发展有限公司 | 基于参数服务器和fpga实现神经网络分布式训练的方法 |
CN109271015A (zh) * | 2018-10-10 | 2019-01-25 | 杭州电子科技大学 | 一种降低大规模分布式机器学习系统能耗的方法 |
CN109634735A (zh) * | 2018-12-18 | 2019-04-16 | 郑州云海信息技术有限公司 | 一种调度Pod的方法及装置 |
CN109754060A (zh) * | 2017-11-06 | 2019-05-14 | 阿里巴巴集团控股有限公司 | 一种神经网络机器学习模型的训练方法及装置 |
CN110462591A (zh) * | 2017-04-26 | 2019-11-15 | 美的集团股份有限公司 | 使用作业服务器在大规模分布式系统上训练机器学习模型 |
CN111079921A (zh) * | 2019-11-29 | 2020-04-28 | 杭州电子科技大学舟山同博海洋电子信息研究院有限公司 | 一种基于异构分布式系统的高效神经网络训练调度方法 |
CN113157413A (zh) * | 2021-04-16 | 2021-07-23 | 上海交通大学 | 基于服务质量需求的深度学习任务资源优化配置方法及系统 |
-
2021
- 2021-11-30 CN CN202111443369.6A patent/CN114139723B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106815644A (zh) * | 2017-01-26 | 2017-06-09 | 北京航空航天大学 | 机器学习方法和从节点 |
CN110462591A (zh) * | 2017-04-26 | 2019-11-15 | 美的集团股份有限公司 | 使用作业服务器在大规模分布式系统上训练机器学习模型 |
CN107578094A (zh) * | 2017-10-25 | 2018-01-12 | 济南浪潮高新科技投资发展有限公司 | 基于参数服务器和fpga实现神经网络分布式训练的方法 |
CN109754060A (zh) * | 2017-11-06 | 2019-05-14 | 阿里巴巴集团控股有限公司 | 一种神经网络机器学习模型的训练方法及装置 |
CN109271015A (zh) * | 2018-10-10 | 2019-01-25 | 杭州电子科技大学 | 一种降低大规模分布式机器学习系统能耗的方法 |
CN109634735A (zh) * | 2018-12-18 | 2019-04-16 | 郑州云海信息技术有限公司 | 一种调度Pod的方法及装置 |
CN111079921A (zh) * | 2019-11-29 | 2020-04-28 | 杭州电子科技大学舟山同博海洋电子信息研究院有限公司 | 一种基于异构分布式系统的高效神经网络训练调度方法 |
CN113157413A (zh) * | 2021-04-16 | 2021-07-23 | 上海交通大学 | 基于服务质量需求的深度学习任务资源优化配置方法及系统 |
Non-Patent Citations (3)
Title |
---|
CHAN-YI LIN: "DRAGON: A Dynamic Scheduling and Scaling Controller for Managing Distributed Deep Learning Jobs in Kubernetes Cluster", 《CLOSER 2019: PROCEEDINGS OF THE 9TH INTERNATIONAL CONFERENCE ON CLOUD COMPUTING AND SERVICES SCIENCE》, 2 May 2019 (2019-05-02), pages 569 * |
QINLONG WANG: "DLRover: An Elastic Deep Training Extension with Auto Job Resource Recommendation", 《ARXIV:2304.01468》, 4 April 2023 (2023-04-04), pages 1 - 10 * |
朱紫钰: "面向CPU-GPU集群的分布式机器学习资源调度框架研究", 《西北工业大学学报》, vol. 39, no. 03, 30 June 2021 (2021-06-30), pages 529 - 538 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114780225A (zh) * | 2022-06-14 | 2022-07-22 | 支付宝(杭州)信息技术有限公司 | 一种分布式模型训练系统、方法及装置 |
CN114780225B (zh) * | 2022-06-14 | 2022-09-23 | 支付宝(杭州)信息技术有限公司 | 一种分布式模型训练系统、方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN114139723B (zh) | 2024-06-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10496532B1 (en) | Automatically reconfiguring a performance test environment | |
Davis et al. | Analysis of probabilistic cache related pre-emption delays | |
EP3678068A1 (en) | Distributed system for executing machine learning and method therefor | |
CN109886859B (zh) | 数据处理方法、系统、电子设备和计算机可读存储介质 | |
CA3090095C (en) | Methods and systems to determine and optimize reservoir simulator performance in a cloud computing environment | |
EP3961413A1 (en) | Method and device for determining database configuration parameters | |
KR20120040707A (ko) | 폴트 톨러런트 배치 처리 | |
CN111813523A (zh) | 时长预估模型生成方法、系统资源调度方法、装置、电子设备和存储介质 | |
CN111209077A (zh) | 深度学习框架设计方法 | |
CN107608781B (zh) | 一种负载预测方法、装置以及网元 | |
CN114139723B (zh) | 用于深度学习模型训练的方法、装置及系统 | |
CN115033391A (zh) | 一种用于神经网络计算的数据流动方法和装置 | |
US20170262310A1 (en) | Method for executing and managing distributed processing, and control apparatus | |
Rodrigues et al. | Towards enabling live thresholding as utility to manage elastic master-slave applications in the cloud | |
CN114564281A (zh) | 容器调度方法、装置、设备及存储介质 | |
JP6992343B2 (ja) | 情報処理装置、情報処理方法、および情報処理プログラム | |
US20140052431A1 (en) | Supporting proactive decision-making in event-driven applications | |
US8595659B2 (en) | Verification and reachability using an organic approach | |
CN112860534B (zh) | 硬件架构性能评估和性能优化方法及装置 | |
US9152611B2 (en) | Trust-tech enhanced methods for solving mixed-integer optimization problems | |
US10592813B1 (en) | Methods and apparatus for data operation pre-processing with probabilistic estimation of operation value | |
Kail et al. | A novel adaptive checkpointing method based on information obtained from workflow structure | |
US11934870B2 (en) | Method for scheduling a set of computing tasks in a supercomputer | |
CN117349775B (zh) | 一种面向集群计算的异常子任务识别方法及装置 | |
CN112861951B (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 |