CN115033292A - 模型训练方法及装置 - Google Patents
模型训练方法及装置 Download PDFInfo
- Publication number
- CN115033292A CN115033292A CN202210689425.2A CN202210689425A CN115033292A CN 115033292 A CN115033292 A CN 115033292A CN 202210689425 A CN202210689425 A CN 202210689425A CN 115033292 A CN115033292 A CN 115033292A
- Authority
- CN
- China
- Prior art keywords
- task
- data
- thread
- slice data
- model trainer
- 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.)
- Pending
Links
Images
Classifications
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
Abstract
本公开涉及一种模型训练方法及装置,其中,该方法包括:调用任务切分线程对任务数据进行切分得到连续的多个切片数据,将得到的切片数据缓存至切片数据队列中;调用任务分发线程从切片数据队列中获取待处理的切片数据,生成待处理任务,以及,根据参与模型训练的各模型训练器的任务执行进度,确定目标模型训练器,向所述目标模型训练器分发所述待处理任务,指示所述目标模型训练器执行所述待处理任务。本公开提供的方法,任务切分线程和任务分发线程并行运行,不存在先进行数据切分再进行数据分发的缺点,从而减小了数据准备时间,极大提高了整体模型训练效率。
Description
技术领域
本公开涉及数据处理技术领域,尤其涉及一种模型训练方法及装置。
背景技术
在机器学习中,随着训练数据越来越大,当前机器学习采用数据并行方式进行训练提速,而目前主流训练框架对于数据并行支持方式是将一个大数据集,按照计算节点数量进行平均划分,这种方式就导致训练前需要有大量的时间用于做数据切分,并且对于一些使用大量潮汐数据的业务,对应的计算节点需要不停地上线或下线,导致训练的并行度也不断变化,整体影响模型训练效率。
发明内容
为了解决上述技术问题,本公开提供了一种模型训练方法及装置。
第一方面,本公开提供了一种数据的处理方法,包括:
调用任务切分线程对任务数据进行切分得到连续的多个切片数据,将所述切片数据依次缓存至切片数据队列,所述切片数据队列用于动态维护切片数据的处理情况;
调用任务分发线程从所述切片数据队列中读取待处理的切片数据并基于所述待处理的切片数据生成待处理任务,以及,根据参与模型训练的各模型训练器的任务执行进度,确定目标模型训练器,向所述目标模型训练器分发所述待处理任务,指示所述目标模型训练器执行所述待处理任务,其中,所述任务切分线程和所述任务分发线程并行运行。
在一些实施例中,所述根据参与模型训练的各模型训练器的任务执行进度,确定目标模型训练器,包括:
扫描所述各模型训练器中正在执行的任务数量;
将所述任务数量与相应所述模型训练器能够执行的最大任务数量进行比较,从所述任务数量小于相应所述模型训练器能够执行的最大任务数量的模型训练器中确定所述目标模型训练器。
在一些实施例中,所述方法还包括:
调用所述任务分发线程获取各候选模型训练器分别发送的任务执行状态;
调用所述任务分发线程在内存中记录各任务执行状态,并以预设触发条件将已执行结束的任务执行状态存储至磁盘中。
在一些实施例中,所述调用所述任务分发线程在内存记录各任务执行状态,包括:
调用所述任务分发线程在磁盘中记录已执行结束的任务的标识信息,在内存中记录正在执行任务的标识信息和状态信息。
在一些实施例中,所述方法还包括:调用所述任务切分线程在内存中记录所述任务数据的切分进度信息,并定期将所述切分进度信息转存至磁盘中。
在一些实施例中,所述方法还包括:调用任务扫描线程扫描任务数据,并将扫描到的任务数据缓存至任务数据队列中,以使所述任务切分线程从所述任务数据队列中获取任务数据进行切片,其中,所述任务扫描线程和所述任务切分线程并行运行。
在一些实施例中,所述方法还包括:调用所述任务扫描线程在内存中记录数据的扫描进度信息,并定期将所述扫描进度信息转存至磁盘中。
在一些实施例中,所述方法还包括:
检测到模型训练器下线时,从内存中获取下线的所述模型训练器中未执行结束的任务对应的任务执行状态;
调用所述任务分发线程将所述未执行结束的任务对应的切片数据以及任务执行状态分发至在线的模型训练器,使得所述在线的模型训练器基于所述未执行结束的任务对应的任务执行状态确定相应切片数据的训练进度,基于所述训练进度继续进行训练。
第二方面,本公开提供了一种数据的处理装置,包括:
任务数据切分模块,用于调用任务切分线程对任务数据进行切分得到连续的多个切片数据,将所述切片数据依次缓存至切片数据队列,所述切片数据队列用于动态维护切片数据的处理情况;
任务分发模块,用于调用任务分发线程从所述切片数据队列中读取待处理的切片数据并基于所述待处理的切片数据生成待处理任务,以及,根据参与模型训练的各模型训练器的任务执行进度,确定目标模型训练器,向所述目标模型训练器分发所述待处理任务,指示所述目标模型训练器执行所述待处理任务,其中,所述任务切分线程和所述任务分发线程并行运行。
在一些实施例中,任务分发模块,具体用于扫描所述各模型训练器中正在执行的任务数量;将所述任务数量与相应所述模型训练器能够执行的最大任务数量进行比较,从所述任务数量小于相应所述模型训练器能够执行的最大任务数量的模型训练器中确定所述目标模型训练器。
在一些实施例中,任务分发模块,还用于调用所述任务分发线程获取各模型训练器分别发送的任务执行状态。
还包括:状态保存模块,用于调用所述任务分发线程在内存中记录各任务执行状态,并以预设触发条件将已执行结束的任务执行状态存储至磁盘中。
在一些实施例中,状态保存模块,具体用于调用所述任务分发线程在磁盘中记录已执行结束的任务的标识信息,在内存中记录正在执行任务的标识信息和状态信息。
在一些实施例中,状态保存模块,还用于调用所述任务切分线程在内存中记录所述任务数据的切分进度信息,并定期将所述切分进度信息转存至磁盘中。
在一些实施例中,还包括:数据扫描模块,用于调用任务扫描线程扫描任务数据,并将扫描到的任务数据缓存至任务数据队列中,以使所述任务切分线程从所述任务数据队列中获取任务数据进行切片,其中,所述任务扫描线程和所述任务切分线程并行运行。
在一些实施例中,状态保存模块,还用于调用所述任务扫描线程在内存中记录数据的扫描进度信息,并定期将所述扫描进度信息转存至磁盘中。
在一些实施例中,任务分发模块,还用于检测到模型训练器离线时,从内存中获取离线的所述模型训练器未执行结束的任务对应的任务执行状态;调用所述任务分发线程将所述未执行结束的任务对应的切片数据以及任务执行状态分发至在线的模型训练器,使得所述在线的模型训练器基于所述未执行结束的任务对应的任务执行状态确定相应切片数据的训练进度,基于所述训练进度继续进行训练。
第三方面,本公开提供了一种电子设备,包括:存储器和处理器;
存储器被配置为存储计算机程序指令;
处理器被配置为执行所述计算机程序指令,使得所述电子设备实现如第一方面以及第一方面任一项所述的模型训练方法。
第四方面,本公开提供了一种可读存储介质,包括:计算机程序指令;电子设备执行所述计算机程序指令,使得所述电子设备实现如第一方面以及第一方面任一项所述的模型训练方法。
第五方面,本公开提供了一种计算机程序产品,电子设备的至少一个处理器执行所述计算机程序产品,使得所述电子设备实现如第一方面以及第一方面任一项所述的模型训练方法。
本公开实施例提供了一种模型训练方法及装置,其中,该方法包括:调用任务切分线程对任务数据进行切分得到连续的多个切片数据,将切片数据依次缓存至切片数据队列中;调用任务分发线程从切片数据队列中读取待处理的切片数据,并基于待处理的切片数据生成待处理任务,以及,根据参与模型训练的各模型训练器的任务处理进度,确定目标模型训练器,向各目标模型训练器分发待处理任务;指示目标模型训练器执行待处理任务。本公开提供的方法,任务切分线程和任务分发线程并行执行,流水式的处理方式不存在先进行数据切分再进行任务分发的缺点,从而减小了数据准备时间,极大提高了模型训练效率。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本公开实施例提供的模型训练装置的整体框架图;
图2为本公开一实施例提供的模型训练方法的流程示意图;
图3为本公开另一实施例提供的模型训练方法的流程示意图;
图4为本公开另一实施例提供的模型训练方法的流程示意图;
图5为本公开一实施例提供的模型训练装置的结构示意图;
图6为本公开一实施例提供的电子设备的结构示意图。
具体实施方式
为了能够更清楚地理解本公开的上述目的、特征和优点,下面将对本公开的方案进行进一步描述。需要说明的是,在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本公开,但本公开还可以采用其他不同于在此描述的方式来实施;显然,说明书中的实施例只是本公开的一部分实施例,而不是全部的实施例。
目前,采用并行的方式进行模型训练的主要过程是先对任务数据集进行切分,然后将切分得到的切片数据再平均分发至各训练节点,由各训练节点分别调用相应的模型训练器对接收到的切片数据进行训练。例如,对任务数据集进行切分得到16个切片数据,假设有4个训练节点,则可以将16个切片数据平均分发至4个训练节点,训练节点1计算切片数据1、5、9、13,训练节点2计算切片数据2、6、10、14,训练节点3计算切片数据3、7、11、15,训练节点4计算切片数据4、8、12、16。
目前这种模型训练方式至少存在以下缺陷:
1、在任务数据集较大时,在执行训练之前,需要耗费大量的时间进行数据的切分。受到现有的模型训练框架的限制,在数据切分的过程中是无法同时进行训练的,因此,导致整体模型训练效率较低。
2、目前,模型训练通常是通过多个数据阶段(stage)的形式解决。模型训练过程中的checkpoint依赖于用户自行处理,其中,checkpoint是一个内部事件,这个事件激活以后会将内存中的数据(包括模型的各参数)进行写出,在模型训练场景中,一个阶段的数据训练完成以后,会触发激活checkpoint。
在模型训练场景中,checkpoint是同步进行的,在checkpoint的时候不能再执行模型训练,导致训练节点中的计算资源存在空闲时间,资源浪费较为严重。此外,每个数据阶段需要重复进行任务的切分和模型训练资源的申请调度,浪费了大量的调度时间,导致模型训练效率较低。此外,待处理任务执行失败后只能从上一个checkpoint保存的参数进行恢复,导致checkpoint之间的数据需要重算,浪费大量算力。
3、数据会动态更新。例如,在执行模型训练的过程中可能会收集到新增的任务数据。若要对新增的任务数据进行训练,则需要对新增的任务数据进行切分以及任务分发,并且将之前训练好的模型参数导入,新增的任务数据会导致训练时长较长。
4、训练节点的数量会动态更新。例如,一些功能或者训练节点的上线或者下线,会导致需要处理的数据是动态变化的,模型训练的并行度也是不断变化的。
5、环境异构且复杂。这里提及的“环境异构”包括机器硬件的异构、软件的异构、网络的异构、以及不同训练节点上的承载量(workload)等等。这会导致不同的训练节点的训练速度差别极大,且这些训练节点的训练速度无法提前预测,因此会出现很严重的训练速度不均衡的现象,如果采用固定分片会导致严重的长尾问题,从而影响整体的训练效率。其中,长尾问题是指在并行训练的场景中,以最后一个训练节点完成训练的时间确定整个模型训练的执行时长,若某个训练节点训练速度较慢,平均分配切片数据的方式会导致整个模型训练时长较长,从而影响整体的模型训练效率。
基于上述问题,本公开提供了一种模型训练方法及装置,通过解耦任务的扫描、切分以及任务分发流程,由任务扫描线程、任务切分线程以及任务分发线程并行执行,因此,不存在先进行数据切分,在数据切分完成之后进行任务分发以及执行任务的缺陷,极大降低了任务执行前的数据准备时间,提高模型训练效率。
此外,本公开提供的模型训练方法,采用中心化的方式进行统一的不间断的任务执行状态的保存,在有突发状况时能够及时恢复待处理任务的状态,解决了多阶段执行数据处理存在的缺陷。
此外,本公开提供的模型训练方法,采用动态扫描的方式能够及时发现新增的任务数据,将新增的任务数据缓存至任务数据队列中,任务切分线程通过对新增的任务数据进行数据切分得到一个或多个切片数据,将切片数据缓存至任务数据队列,任务分发线程从任务数据队列取出新增的任务数据生成相应的待处理任务并分发,由于任务切分线程和任务分发线程是并行执行的,在该过程中,不影响训练节点执行待处理任务,解决动态新增的任务数据无法被及时处理的缺陷。
此外,本公开提供的模型训练方法,任务是可以根据训练节点的数量变化进行动态分发以及回收,较好地控制待处理任务的并行度。且任务的动态分发能够较好地适配异构节点的问题,向处理速度较快的训练节点分发较多的待处理任务,向处理速度较慢的训练节点分发较少的待处理任务,保证各个训练节点的资源得到充分的利用,整体提高模型训练效率。
图1为本公开一实施例提供的模型训练装置的整体架构图。请参阅图1所示的架构主要包括:任务扫描模块、任务切分模块、任务分发模块以及多个模型训练器。
其中,任务扫描模块主要通过调用任务扫描线程扫描任务数据,并将扫描到的任务数据根据用户预先配置的排序策略进行重排后存储至任务数据队列中。其中,任务数据队列可以设置在磁盘中,启动模型训练时,可以在磁盘中分配预设大小的存储空间给任务数据队列,用于缓存任务扫描线程依次扫描到的任务数据。
任务切分模块主要通过调用任务切分线程从任务数据队列中读取任务数据,并进行数据切分得到连续的多个切片数据,再将得到的连续的多个切片数据依次缓存至切片数据队列中。其中,数据切分的方式不做限定,可以平均切分也可以按照设定的策略进行切分。
任务分发模块主要通过调用任务分发线程从切片数据队列中读取待处理的切片数据,生成相应的待处理任务,并基于下游的各模型训练器的任务执行情况动态地分发待处理任务。
模型训练器主要负责执行任务分发线程分发的待处理任务。其中,模型训练器可以维护一个相应的任务池,任务池的大小可以是固定的,例如任务池可以容纳4个、5个或者6个待处理任务,本公开对于任务池的大小不做限定,可根据需求设定。模型训练器可以从任务池中读出待处理任务,解析之后对切片数据进行训练。
本公开中,任务扫描线程、任务切分线程以及任务分发线程并行执行,流水式的处理过程不存在先扫描任务数据、任务数据扫描完成再进行数据切分,数据切分完成之后再分发执行训练的缺陷,因此,本公开的方法能够降低模型训练的耗时,提高模型训练效率。
在一些实施例中,模型训练装置还可以包括状态保存模块。其中,状态保存模块能够记录各线程的状态以及分发至各模型训练器的各任务的任务执行状态。
例如,各模型训练器可以按照预设的策略(如定期或者时间达到特定时刻)向任务分发线程汇报当前任务池的情况,以便任务分发线程能够根据各个模型训练器的任务执行情况合理分发待处理任务。例如,当某个模型训练器中的某个任务执行结束(即训练结束)时,当前任务池中剩余的待处理任务数量为2个,不足4个(任务池的大小为4个),则任务分发线程会从切片数据队列中取出两个待处理的切片数据生成两个待处理任务分发给该模型训练器,保证模型训练器任务池中待处理任务数量足够。
此外,模型训练器从任务池中读取一个待处理任务执行模型训练的过程中,模型训练器可以将当前正在执行的待处理任务的任务执行状态发送给任务分发线程,以通过任务分发线程在内存中记录正在执行的任务对应的任务执行状态。通过记录待处理任务的任务执行状态可以在模型训练器下线导致待处理任务执行失败时,基于任务执行状态能够恢复执行失败的任务。其中,任务执行状态可以但不限于包括:待处理任务对应的切片数据对应的偏移量(offset),通过偏移量能够确定切片数据中哪部分数据已经训练,哪部分数据没有被训练,从而能够确定训练进度。
此外,任务扫描线程、任务切分线程以及任务分发线程还可以将各自的状态,如当前已扫描的路径、已切分的路径、已分发完成的待处理任务等等信息,发送至状态保存模块中进行存储。
作为一种可能的实施方式,状态保存模块可以采用如下方式实现:
1、状态保存模块采用HDFS系统实现。由于状态保存可能需要较大的开销,采用HDFS系统能够降低外部依赖和硬件成本。
2、采用中心式的方式进行状态保存。在待处理任务数量较多时,若针对每个待处理任务生成相应的任务执行状态文件,这会导致文件数量较多,而文件中存储的信息量较少,即产生严重的小文件问题,而本公开提供的方法采用中心式的状态保存,由训练节点不间断地汇报各任务的任务执行状态,由任务分发线程统一收集各训练节点的任务对应的任务执行状态,并统一保存任务执行状态(如切片数据对应的offset),从而解决了小文件问题。
3、本公开中,训练节点将需要实时进行读写的各任务的任务执行状态存储在内存中,并定期异步地将内存中存储的各任务的任务执行状态通过任务分发线程同步至HDFS系统中。
4、由于待处理任务的数量可能较多,若每个待处理任务的任务执行状态全部存储在任务分发线程的内存中,则对于内存的需求较高,为了减小对于的内存的硬件要求,本公开中,针对不同类型的任务可以记录不同的信息,例如,针对执行成功的任务可以记录任务的标识信息,对于执行失败的任务可以记录任务的标识信息以及执行任务失败的训练节点的标识信息;对于正在执行中的任务,可以记录全部的任务执行状态。此外,针对不同类型的任务,可以存储至不同类型的存储空间,例如,对于成功和失败的任务,任务执行状态可以存储在磁盘中,不存在内存中;正在执行中的任务的,可以将任务执行状态保存在内存中,由于正在执行的任务的数量等于训练节点数与任务池大小的乘积,因此,是一个定量,从而不存在内存无法满足的风险。
5、本公开提供的模型训练方法,状态保存模块还可以记录任务扫描线程的扫描进度信息(扫描进度信息可以包括已扫描过的任务数据的路径)和任务切分线程的切分进度信息(切分进度信息可以包括已切分过的任务数据的路径),能够防止整个模型训练任务异常退出进行状态恢复时重新扫描任务数据和切分任务数据需要花费大量时间的问题。该功能尤其是在整个数据处理接近结束时非常有用,在这种场景下,任务数据的扫描和切分时间会远远大于任务执行的时间,会造成严重的计算资源的浪费。通过记录任务扫描线程的扫描进度信息以及任务切分线程的切分进度信息能够快速恢复,有效减小了计算资源的浪费。
综上,通过本公开提供的模型训练方法能够解决目前的并行训练的处理方式中存在的上述问题,极大幅度地提高模型训练效率。
图2为本公开一实施例提供的模型训练方法的流程示意图。请参阅图2所示,本实施例的方法包括:
S201、调用任务切分线程对任务数据进行切分得到多个连续的切片数据,将切片数据发送依次缓存至切片数据队列中。
任务数据可以为任意类型的数据,例如,图像数据、音频数据、交互数据、测试数据等等。本公开对于任务数据的处理类型、数据大小等等不做限定。
可以按照固定的切片大小对任务数据进行切分,也可以按照其他方式进行切分,例如,可以预先设置多个不同等级的切片大小,在读取到任务数据时,按照预设的多个等级的切片大小将任务数据切分为多个不同大小的切片数据,本公开对于切分方式不做限定。
切片数据队列用于动态维护切片数据的处理情况,切片数据队列可以设置在磁盘中,任务切分线程将得到的切片数据按照顺序依次缓存至切片数据队列对应的磁盘空间中。
S202、调用任务分发线程从切片数据队列中读取待处理的切片数据,生成待处理任务,以及,基于参与模型训练的各模型训练器的任务处理进度,确定目标模型训练器,并向目标模型训练器分发待处理任务;其中,任务切分线程和任务分发线程并行运行。
其中,切片数据队列设置在磁盘中,任务切分线程切分得到的多个切片数据可以存储在磁盘中,其中少量的切片数据可以缓存在内存中,当内存中没有切片数据或者切片数据少于预设数量时,再批量从磁盘中读取切片数据至内存中,任务分发线程则从内存中可以读取切片数据生成待处理任务,通过该方式降低内存使用量。
在一些实施例中,任务分发线程可以生成任务对应的标识(如名称、ID等等),再将切片数据与任务对应的标识进行封装从而生成待处理任务。
结合图1所示,模型训练装置可以从状态保存模块中获得各模型训练器的任务执行进度(即模型训练器对应的任务池中的任务数量),再基于各模型训练器中任务池可容纳的最大任务数量,确定是否可以向模型训练器分发新的待处理任务。若任务池中的待处理任务数量不足,则可以向其分发新的待处理任务,相应的模型训练器可能为目标模型训练器;若任务池中的待处理任务数量足够,则无法向其分发新的待处理任务。本公开中,可以将任务数量小于相应模型训练器能够执行的最大任务数量的模型训练器确定为候选模型训练器,从候选模型训练器中确定目标模型训练器,再将待处理任务分发至目标模型训练器。
其中,从候选模型训练器中确定目标模型训练器时,可以基于切片数据队列中的切片数据的数量、候选模型训练器的数量等一项或多项因素确定。例如,所有候选模型训练器可以接收的任务数量大于切片数据队列中缓存的切片数据的数量,则可以从候选模型训练器中选择一部分作为目标模型训练器,若候选模型训练器可以接收的任务数量小于切片数据队列中切片数据的数量,则可以将全部的候选模型训练器作为目标模型训练器,并按照切片数据队列中切片数据的顺序依次生成待处理任务,并进行分发。
此外,若任务分发线程扫描到有新增加的模型训练器,则针对新增加的模型训练器对应的任务池中不存在待处理任务,则可以从切片数据队列中取出多个切片数据,生成多个相应的待处理任务分发至新增的模型训练器。
S203、模型训练器执行分发的待处理任务。
模型训练器可以从任务池中读取待处理任务并执行待处理任务,以进行模型训练。
本实施例中,任务切分线程和任务分发线程并行运行,在分发待处理任务的过程中,任务切分线程可以并行地对读取的任务数据进行切分,不存在先进行数据切分再进行任务分发的缺点,从而减小了数据准备时间,极大提高了模型训练效率。
图3为本公开另一实施例提供的模型训练方法的流程示意图。请参阅图3所示,本实施例的方法包括:
S301、调用任务扫描线程扫描任务数据,并将扫描到的任务数据缓存之任务数据队列中。
其中,任务数据队列用于动态维护扫描到的任务数据的处理情况,任务数据队列可以设置在磁盘中,任务扫描线程扫描到的任务数据可以缓存在磁盘中,其中,少量的任务数据可以缓存至内存中,当内存中没有任务数据或者任务数据小于预设数量时,再批量从磁盘中将任务读取至内存,使得任务切分线程从内存中读取任务数据进行数据切分,通过该方式降低内存使用量。
S302、调用任务切分线程从任务数据队列中读取任务数据,并对任务数据进行切分得到连续的多个切片数据,将得到的切片数据依次缓存至切片数据队列中。
S303、调用任务分发线程从切片数据队列中读取待处理的切片数据,生成待处理任务,以及,基于参与模型训练的各模型训练器的任务处理进度,确定目标模型训练器,并向目标模型训练器分发待处理任务;其中,任务扫描线程、任务切分线程和任务分发线程并行运行。
S304、模型训练器执行待处理任务。
本实施例中,步骤S302至步骤S304分别与图2所示实施例中步骤S201至步骤S203类似,可参照图2所示实施例的详细描述,简明起见,此处不再赘述。
S305、各模型训练器将任务执行状态发送给任务分发线程,通过任务分发线程在内存中记录各任务执行状态,并以预设触发条件将已执行结束的任务状态存储至磁盘中。
本实施例中,各模型训练器通过将分发给模型训练器的各任务的任务执行状态,其中包括任务的标识、训练进度(如当前执行任务对应的切片数据的偏移量)、模型训练器的标识等等,发送给任务分发线程,由任务分发线程将任务执行状态记录在内存中;之后,通过任务分发线程基于预设触发条件将已执行结束(其中包括执行成功和执行失败)的任务对应的任务状态从内存再转存至磁盘中,转存之后,可以清除内存中的这部分任务执行状态。不仅记录了所有任务的任务执行状态,还能够减小任务状态保存对于内存的需求,也能够降低硬件成本。
其中,预设触发条件可以为周期性的进行任务状态记录,也可以是只要任务执行结束就往磁盘里写,任务执行结束包括任务执行成功和任务执行失败,从而,实现内存中其实主要存储的是执行中的任务的状态。
可选地,还可以包括:
S306、调用任务切分线程在内存中记录任务数据的切分进度信息,并定期将切分进度信息转存至磁盘中。
切分进度信息可以通过执行过切分的路径确定,因此,结合图1所示,任务切分线程可以将执行过切分的路径发送至状态保存模块(磁盘)以进行存储。
可选地,还可以包括:
S307、调用任务扫描线程在内存中记录数据的扫描进度信息,并定期将扫描进度信息转存至磁盘中。
扫描进度信息可以通过执行过扫描的路径确定,因此,结合图1所示,任务扫描线程可以将执行过扫描的路径发送至状态保存模块(磁盘)以进行存储。
通过保存任务切分线程以及任务扫描线程的状态信息,能够避免在整个数据处理进程异常退出进行状态恢复时重新扫描任务数据和切分任务数据导致花费大量时间的问题。
图4为本公开另一实施例提供的模型训练方法的流程图。请参参阅图4所示,本实施例的方法包括:
S401、检测到模型训练器离线时,从内存中获取离线的模型训练器未执行结束的任务对应的任务执行状态。
模型训练器离线可能是用户控制或者异常宕机等等原因导致。若是用户控制模型训练器离线,则模型训练器收到离线控制指令时,可以执行一次任务执行状态的保存,以使任务分发线程将最新的任务执行状态缓存在内存中;若是由于异常宕机造成的模型训练器离线,则可以从内存中读取最近一次缓存的任务执行状态用于任务的恢复。通过该方式,可以确定更为精准的训练进度,尽量减小重复计算已经训练过的切片数据。
由于模型训练器离线,模型训练器中可能存在未执行结束的任务,其中,未执行结束的任务可以包括:任务池中未开始执行的任务以及正在执行中的任务,这些未执行结束的任务需要被回收并重新分发,从而保证这些任务能够恢复执行。
在一些实施例中,恢复离线的模型训练器中未执行结束的任务时,可以基于离线的模型训练器的标识以及未执行结束的任务的标识在内存中记录的任务执行状态中进行匹配得到离线的模型训练器中未执行结束的任务对应的任务执行状态。
其中,未执行技术的任务对应的任务执行状态可以包括相应的切片数据的偏移量。
S402、调用任务分发线程将未执行结束的任务对应的切片数据以及任务执行状态分发至在线的模型训练器,使得在线的模型训练器基于未执行结束的任务对应的任务执行状态确定相应切片数据的训练进度,基于训练进度继续进行训练。
调用任务分发线程可以基于未执行结束的任务对应的切片数据以及任务执行状态生成新的待处理任务,并将新的待处理任务分发给在线的且任务池中的任务数量不足的模型训练器。
接收到待处理任务的模型训练器基于任务执行状态中包括的切片数据的偏移量确定切片数据的训练进度,再通过扫描切片数据至对应的偏移量所指示的位置,从该位置开始继续读取切片数据进行模型训练,无需再对之前已经训练过的切片数据重新进行计算,减小模型训练器的计算量,有效提高了模型训练效率。
在一个具体示例中,假设模型训练器a的任务池中有2个未开始执行的待处理任务,分别为任务1和任务2,且有2个正在执行的任务,分别为任务3和任务4,用户控制模型训练器a离线,模型训练器a接收到离线控制指令时任务3对应的切片数据训练至第100行,任务4对应的切片数据训练至第120行,模型训练器a将任务池中任务1和任务2的任务执行进度、以及任务3和任务4分别对应的偏移量发送至任务分发线程,并通过任务分发线程存储在内存中,模型训练器a完成其他的处理过程后离线。之后,任务分发线程可以从内存中得到任务1至任务4分别对应的任务执行状态,并得到任务1至任务4分别对应的切片数据,将任务1和任务2分别对应的切片数据以及任务执行状态分发给模型训练器b(相当于将未执行结束的任务1和任务2重新分发给模型训练b),将任务3以及任务4分别对应的切片数据以及任务执行状态分发给模型训练器c(相当于将未执行结束的任务3和任务4重新分发给模型训练c)。其中,模型训练器b可以基于任务1和任务2分别包含的任务执行状态确定这两个任务未开始执行,则从相应切片数据的第一行开始扫描进行训练;模型训练器c基于任务3以及任务4分别包含的任务执行状态确定任务3包含的切片数据已训练至第100行,任务4包含的切片数据已训练至第120行,则模型训练器c针对任务3从相应切片数据的第101行开始继续读取数据并训练,针对任务4从相应切片数据的第121行开始继续读取数据并训练。
通过上述示例实现了模型训练器a中未执行结束的任务的回收以及重新分发,且在重新分发时基于各未执行结束的任务对应的任务执行状态确定了各任务的训练进度,使得重新接收这些未执行结束的任务的模型训练器b和c能够准确确定训练进度,无需重复对任务3对应的切片数据的前100行数据再次训练,也无需对任务4对应的切片数据的前120行数据再次训练,减小了模型训练器的计算量,提高了模型训效率。
示例性地,本公开实施例还提供了一种模型训练装置。
图5为本公开一实施例提供的模型训练装置的结构示意图。请参阅图5所示,本实施例提供的装置500包括:
任务切分模块501,用于调用任务切分线程对任务数据进行切分得到连续的多个切片数据,将所述切片数据依次缓存至切片数据队列,所述切片数据队列用于动态维护切片数据的处理情况。
任务分发模块502,用于调用任务分发线程从所述切片数据队列中读取待处理的切片数据并基于所述待处理的切片数据生成待处理任务,以及,根据参与模型训练的各模型训练器的任务执行进度,确定目标模型训练器,向所述目标模型训练器分发所述待处理任务,指示所述目标模型训练器执行所述待处理任务,其中,所述任务切分线程和所述任务分发线程并行运行。
在一些实施例中,任务分发模块502,具体用于扫描所述各模型训练器中正在执行的任务数量;将所述任务数量与相应所述模型训练器能够执行的最大任务数量进行比较,从所述任务数量小于相应所述模型训练器能够执行的最大任务数量的模型训练器中确定所述目标模型训练器。
在一些实施例中,任务分发模块502,还用于调用所述任务分发线程获取各模型训练器分别发送的任务执行状态。
还包括:状态保存模块503,用于调用所述任务分发线程在内存中记录各任务执行状态,并以预设触发条件将已执行结束的任务执行状态存储至磁盘中。
在一些实施例中,状态保存模块503,具体用于调用所述任务分发线程在磁盘中记录已执行结束的任务的标识信息,在内存中记录正在执行任务的标识信息和状态信息。
在一些实施例中,状态保存模块503,还用于调用所述任务切分线程在内存中记录所述任务数据的切分进度信息,并定期将所述切分进度信息转存至磁盘中。
在一些实施例中,还包括:数据扫描模块504,用于调用任务扫描线程扫描任务数据,并将扫描到的任务数据缓存至任务数据队列中,以使所述任务切分线程从所述任务数据队列中获取任务数据进行切片,其中,所述任务扫描线程和所述任务切分线程并行运行。
在一些实施例中,状态保存模块503,还用于调用所述任务扫描线程在内存中记录数据的扫描进度信息,并定期将所述扫描进度信息转存至磁盘中。
在一些实施例中,任务分发模块502,还用于检测到模型训练器离线时,从内存中获取离线的所述模型训练器未执行结束的任务对应的任务执行状态;通过所述任务分发线程将所述未执行结束的任务对应的切片数据以及任务执行状态分发至在线的模型训练器,使得所述在线的模型训练器基于所述未执行结束的任务对应的任务执行状态确定相应切片数据的训练进度,基于所述训练进度继续进行训练。
本实施例提供的模型训练装置可以用于执行前述任一方法实施例的技术方案,其实现原理以及技术效果类似,可参照前述方法实施例的详细描述,简明起见,此处不再赘述。
图6为本公开一实施例提供的电子设备的结构示意图。请参阅图6所示,本实施例提供的电子设备600包括:存储器601和处理器602。
其中,存储器601可以是独立的物理单元,与处理器602可以通过总线603连接。存储器601、处理器602也可以集成在一起,通过硬件实现等。
存储器601用于存储程序指令,处理器602调用该程序指令,执行以上任一方法实施例提供的模型训练方法。
可选地,当上述实施例的方法中的部分或全部通过软件实现时,上述电子设备600也可以只包括处理器602。用于存储程序的存储器601位于电子设备600之外,处理器602通过电路/电线与存储器连接,用于读取并执行存储器中存储的程序。
处理器602可以是中央处理器(central processing unit,CPU),网络处理器(network processor,NP)或者CPU和NP的组合。
处理器602还可以进一步包括硬件芯片。上述硬件芯片可以是专用集成电路(application-specific integrated circuit,ASIC),可编程逻辑器件(programmablelogic device,PLD)或其组合。上述PLD可以是复杂可编程逻辑器件(complexprogrammable logic device,CPLD),现场可编程逻辑门阵列(field-programmable gatearray,FPGA),通用阵列逻辑(generic array logic,GAL)或其任意组合。
存储器601可以包括易失性存储器(volatile memory),例如随机存取存储器(random-access memory,RAM);存储器也可以包括非易失性存储器(non-volatilememory),例如快闪存储器(flash memory),硬盘(hard disk drive,HDD)或固态硬盘(solid-state drive,SSD);存储器还可以包括上述种类的存储器的组合。
本公开还提供一种可读存储介质,包括:计算机程序指令,所述计算机程序指令被电子设备的至少一个处理器执行时,使得所述电子设备实现如上任一方法实施例提供的模型训练方法。
本公开还提供一种计算机程序产品,当所述计算机程序产品在计算机上运行时,使得所述计算机实现如上任一方法实施例提供的模型训练方法。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本公开的具体实施方式,使本领域技术人员能够理解或实现本公开。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本公开的精神或范围的情况下,在其它实施例中实现。因此,本公开将不会被限制于本文所述的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (12)
1.一种模型训练方法,其特征在于,包括:
调用任务切分线程对任务数据进行切分得到连续的多个切片数据,将所述切片数据依次缓存至切片数据队列,所述切片数据队列用于动态维护切片数据的处理情况;
调用任务分发线程从所述切片数据队列中读取待处理的切片数据并基于所述待处理的切片数据生成待处理任务,以及,
根据参与模型训练的各模型训练器的任务执行进度,确定目标模型训练器,向所述目标模型训练器分发所述待处理任务,指示所述目标模型训练器执行所述待处理任务,其中,所述任务切分线程和所述任务分发线程并行运行。
2.根据权利要求1所述的方法,其特征在于,所述根据参与模型训练的各模型训练器的任务执行进度,确定目标模型训练器,包括:
扫描所述各模型训练器中正在执行的任务数量;
将所述任务数量与相应所述模型训练器能够执行的最大任务数量进行比较,从所述任务数量小于相应所述模型训练器能够执行的最大任务数量的模型训练器中确定所述目标模型训练器。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
调用所述任务分发线程获取各模型训练器分别发送的任务执行状态;
调用所述任务分发线程在内存中记录各任务执行状态,并以预设触发条件将已执行结束的任务执行状态存储至磁盘中。
4.根据权利要求3所述的方法,其特征在于,所述调用所述任务分发线程在内存记录各任务执行状态,包括:
调用所述任务分发线程在磁盘中记录已执行结束的任务的标识信息,在内存中记录正在执行任务的标识信息和状态信息。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
调用所述任务切分线程在内存中记录所述任务数据的切分进度信息,并定期将所述切分进度信息转存至磁盘中。
6.根据权利要求1至4任一项所述的方法,其特征在于,所述方法还包括:
调用任务扫描线程扫描任务数据,并将扫描到的任务数据缓存至任务数据队列中,以使所述任务切分线程从所述任务数据队列中获取任务数据进行切片,其中,所述任务扫描线程和所述任务切分线程并行运行。
7.根据权利要求6所述的方法,其特征在于,还包括:
调用所述任务扫描线程在内存中记录数据的扫描进度信息,并定期将所述扫描进度信息转存至磁盘中。
8.根据权利要求7所述的方法,其特征在于,还包括:
检测到模型训练器离线时,从内存中获取离线的所述模型训练器未执行结束的任务对应的任务执行状态;
调用所述任务分发线程将所述未执行结束的任务对应的切片数据以及任务执行状态分发至在线的模型训练器,使得所述在线的模型训练器基于所述未执行结束的任务对应的任务执行状态确定相应切片数据的训练进度,基于所述训练进度继续进行训练。
9.一种模型训练装置,其特征在于,包括:
任务切分模块,用于调用任务切分线程对任务数据进行切分得到连续的多个切片数据,将所述切片数据依次缓存至切片数据队列,所述切片数据队列用于动态维护切片数据的处理情况;
任务分发模块,用于调用任务分发线程从所述切片数据队列中读取待处理的切片数据并基于所述待处理的切片数据生成待处理任务,以及,根据参与模型训练的各模型训练器的任务执行进度,确定目标模型训练器,向所述目标模型训练器分发所述待处理任务,指示所述目标模型训练器执行所述待处理任务,其中,所述任务切分线程和所述任务分发线程并行运行。
10.一种电子设备,其特征在于,包括:存储器和处理器;
所述存储器被配置为存储计算机程序指令;
所述处理器被配置为执行所述计算机程序指令,使得所述电子设备实现如权利要求1至8任一项所述的模型训练方法。
11.一种可读存储介质,其特征在于,包括:计算机程序指令;
电子设备执行所述计算机程序指令,使得所述电子设备实现如权利要求1至8任一项所述的模型训练方法。
12.一种计算机程序产品,其特征在于,电子设备的至少一个处理器执行所述计算机程序产品,使得所述电子设备实现如权利要求1至8任一项所述的模型训练方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210689425.2A CN115033292A (zh) | 2022-06-16 | 2022-06-16 | 模型训练方法及装置 |
PCT/CN2023/095464 WO2023241312A1 (zh) | 2022-06-16 | 2023-05-22 | 模型训练方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210689425.2A CN115033292A (zh) | 2022-06-16 | 2022-06-16 | 模型训练方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115033292A true CN115033292A (zh) | 2022-09-09 |
Family
ID=83125130
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210689425.2A Pending CN115033292A (zh) | 2022-06-16 | 2022-06-16 | 模型训练方法及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN115033292A (zh) |
WO (1) | WO2023241312A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023241312A1 (zh) * | 2022-06-16 | 2023-12-21 | 北京火山引擎科技有限公司 | 模型训练方法及装置 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115456161A (zh) * | 2020-03-27 | 2022-12-09 | 华为技术有限公司 | 一种数据处理方法和数据处理系统 |
CN111898424B (zh) * | 2020-06-19 | 2023-07-21 | 贝壳技术有限公司 | 文字识别模型训练方法、装置、电子设备及存储介质 |
CN111860835A (zh) * | 2020-07-17 | 2020-10-30 | 苏州浪潮智能科技有限公司 | 一种神经网络模型训练方法和装置 |
CN112862662A (zh) * | 2021-03-12 | 2021-05-28 | 云知声智能科技股份有限公司 | 一种分布式训练transformer-xl语言模型的方法和设备 |
CN115033292A (zh) * | 2022-06-16 | 2022-09-09 | 北京火山引擎科技有限公司 | 模型训练方法及装置 |
-
2022
- 2022-06-16 CN CN202210689425.2A patent/CN115033292A/zh active Pending
-
2023
- 2023-05-22 WO PCT/CN2023/095464 patent/WO2023241312A1/zh unknown
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023241312A1 (zh) * | 2022-06-16 | 2023-12-21 | 北京火山引擎科技有限公司 | 模型训练方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2023241312A1 (zh) | 2023-12-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9917913B2 (en) | Large message support for a publish-subscribe messaging system | |
CN1251074C (zh) | 计算机的重启动方法 | |
US20180004777A1 (en) | Data distribution across nodes of a distributed database base system | |
CN110750592B (zh) | 数据同步的方法、装置和终端设备 | |
US8612973B2 (en) | Method and system for handling interrupts within computer system during hardware resource migration | |
CN109656896B (zh) | 故障修复方法、装置及分布式存储系统和存储介质 | |
CN111190753B (zh) | 分布式任务处理方法、装置、存储介质和计算机设备 | |
EP3311272A1 (en) | A method of live migration | |
CN115033292A (zh) | 模型训练方法及装置 | |
CN111726388A (zh) | 一种跨集群高可用的实现方法、装置、系统及设备 | |
CN112948169A (zh) | 数据备份的方法、装置、设备和存储介质 | |
CN104281636A (zh) | 海量报表数据并发分布式处理方法 | |
CN110298031B (zh) | 一种词典服务系统及模型版本一致性配送方法 | |
CN112631994A (zh) | 数据迁移方法及系统 | |
CN112558869A (zh) | 基于大数据遥感影像缓存方法 | |
CN116301644A (zh) | 基于多硬盘协调的数据存储方法、系统、终端及介质 | |
CN111831408A (zh) | 异步任务处理方法、装置、电子设备及介质 | |
CN111708812A (zh) | 一种分布式数据处理方法 | |
CN116069765A (zh) | 数据迁移方法、装置、电子设备及存储介质 | |
EP3389222B1 (en) | A method and a host for managing events in a network that adapts event-driven programming framework | |
KR20190139006A (ko) | 분산 메시지 시스템 및 분산 메시지 시스템에서의 동적 파티셔닝 방법 | |
CN114564281A (zh) | 容器调度方法、装置、设备及存储介质 | |
CN113986962A (zh) | 排行榜生成方法、装置、设备及存储介质 | |
CN110795334B (zh) | 一种测试装置和方法 | |
US10503543B1 (en) | Hosting virtual machines on a secondary storage system |
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 |