掌桥专利:专业的专利平台
掌桥专利
首页

一种数据处理方法及装置

文献发布时间:2023-06-19 11:52:33


一种数据处理方法及装置

技术领域

本公开涉及机器学习技术领域,具体而言,涉及一种数据处理方法、装置以及系统。

背景技术

深度学习模型需要基于大量样本数据来进行多轮迭代训练。为了提升机器学习模型在训练过程中的收敛速度,通常采用多进程并行训练的方式来实现。在采用多进程并行训练的方式对深度学习模型进行每一轮训练中,各个并行的进程都会预先读取下一轮训练时所需要的训练数据,并基于上一轮训练预先读取的训练数据来执行计算任务。但由于各个并行的进程在执行完该轮训练后,所有进程之间需要进行通信和数据同步,若某个进程读取下一轮训练所用训练数据的速度过慢,就会导致整个训练进程被拖延,进而导致训练效率的下降。

发明内容

本公开实施例至少提供一种数据处理方法及装置。

第一方面,本公开实施例提供一种数据处理方法,应用于深度学习模型的训练,包括:对样本数据的预取数量进行第一更新处理,得到目标预取数量;响应于预取样本数据队列中当前包括的样本数据的数量未达到所述目标预取数量,读取新的样本数据,并将读取的所述新的样本数据存储至所述预取样本数据队列中。

这样,由于主进程会对预取数量进行第一更新处理,以得到目标预取数量,并在数据队列中当前包括的样本数据量未达到目标预取数量时,从样本数据池中读取新的样本数据;因而,主进程能够在执行完一次迭代训练后,其下一迭代训练所需要用到的样本数据已经完成了读取;而实际上在大多数情况下,主进程读取数据所需要耗费的时间往往少于其执行一个迭代训练所需要用到的时间,因此可以保证在数据队列中,一直会存储有足够数量的样本数据来满足后续几个迭代训练的使用,即使主进程对某个样本数据的读取时间过久,也不会造成由于样本数量未及时读取而导致的迭代训练发生延误,进而提升了训练效率。

一种可能的实施方式中,所述对样本数据的预取数量进行第一更新处理,得到目标预取数量,包括:根据所述预取样本数据队列当前占用的总内存空间以及内存使用上限阈值,对样本数据的预取数量进行第一更新处理,得到目标预取数量。

这样,能够基于预取样本数据队列当前占用的总内存空间以及内存使用上限阈值,来对对样本数据的预取数量进行动态更新,灵活调配预取的样本数据的量,以满足训练需求。

一种可能的实施方式中,所述根据所述预取样本数据队列当前占用的总内存空间以及内存使用上限阈值,对样本数据的预取数量进行第一更新处理,得到目标预取数量,包括:根据所述预取样本数据队列当前占用的总内存空间、内存使用上限阈值、以及对所述深度学习模型进行训练的数据吞吐量,对样本数据的预取数量进行第一更新处理,得到所述目标预取数量。

这样,基于预取样本数据队列当前占用的总内存空间、内存使用上限阈值、以及对所述深度学习模型进行训练的数据吞吐量来动态更新预取数量,在数据吞吐量增加时,使得预取样本数据队列中的数据量能够跟上样本数据的消耗,在数据吞吐量降低时,能够尽可能的减少预取样本数据队列占据内存的量,进而多余的内存可以用于其他工作,调整更加灵活。

一种可能的实施方式中,所述根据所述预取样本数据队列当前占用的总内存空间以及内存使用上限阈值,对样本数据的预取数量进行第一更新处理,得到目标预取数量,包括:在所述预取样本数据队列当前占用的总内存空间未达到所述内存使用上限阈值的情况下,将所述预取数量增大第一调节步长,得到所述目标预取数量;和/或在所述预取样本数据队列当前占用的总内存空间达到所述内存使用上限阈值的情况下,将所述预取数量减小第二调节步长,得到所述目标预取数量。

这样,在预取样本数据队列当前占用的总内存空间未达到所述内存使用上限阈值的情况,尽可能多的预取样本数据,在预取样本数据队列当前占用的总内存空间达到所述内存使用上限阈值的情况下则减少样本数据的预取数量,灵活调整预取样本数据队列的长度。

一种可能的实施方式中,所述在所述预取样本数据队列当前占用的总内存空间未达到所述内存使用上限阈值的情况下,将所述预取数量增大第一调节步长,得到所述目标预取数量,包括:在所述预取样本数据队列当前占用的总内存空间未达到所述内存使用上限阈值,且对所述深度学习模型进行训练的数据吞吐量满足预设数据吞吐量条件的情况下,将所述预取数量增大第一调节步长,得到所述目标预取数量。

一种可能的实施方式中,所述方法还包括:在所述预取样本数据队列当前占用的总内存空间未达到所述内存使用上限阈值,且所述数据吞吐量未满足所述预设数据吞吐量条件的情况下,将所述预取数量减小第三调节步长,得到所述目标预取数量。

一种可能的实施方式中,所述预设数据吞吐量条件,包括下述至少一种:所述数据吞吐量的当前数值大于历史数值,其中,所述历史数值为当前迭代之前的多个历史迭代训练的对应平均值或者为当前迭代训练的前一迭代训练的对应数值;所述数据吞吐量的当前数值大于数据吞吐量阈值。

一种可能的实施方式中,所述方法还包括:对所述预取数量的调节步长进行第二更新处理,得到目标调节步长,其中,所述目标调节步长用于所述预取数量的下一次更新处理。

一种可能的实施方式中,所述对所述预取数量的调节步长进行第二更新处理,得到目标调节步长,包括:在所述第一更新处理中增大所述预取数量的情况下,增大所述预取数量的调节步长;和/或在所述第一更新处理中减小所述预取数量的情况下,减小所述预取数量的调节步长。

这样,能够在需要增加预取数量时,更快增加预取数量,以更快的保证预取样本数据队列中存储的样本数据更快的达到较多的数量,以满足后续训练迭代周期的使用需求,避免由于预取数量过小而导致的模型训练过程被延误;同时,在需要降低预取数量时,较为和缓的降低预取数量,能够保证预取样本数据队列的长度变化会更加的平稳,避免由于预取的样本数据的数量的过快下降导致训练过程的震荡。

第二方面,本公开实施例还提供一种数据处理装置,应用于深度学习模型的训练,包括:第一更新模块,用于对样本数据的预取数量进行第一更新处理,得到目标预取数量;读取模块,用于响应于预取样本数据队列中当前包括的样本数据的数量未达到所述目标预取数量,读取新的样本数据,并将读取的所述新的样本数据存储至所述预取样本数据队列中。

一种可能的实施方式中,所述第一更新模块,在对样本数据的预取数量进行第一更新处理,得到目标预取数量时,用于:根据所述预取样本数据队列当前占用的总内存空间以及内存使用上限阈值,对样本数据的预取数量进行第一更新处理,得到目标预取数量。

一种可能的实施方式中,所述第一更新模块,在根据所述预取样本数据队列当前占用的总内存空间以及内存使用上限阈值,对样本数据的预取数量进行第一更新处理,得到目标预取数量时,用于:根据所述预取样本数据队列当前占用的总内存空间、内存使用上限阈值、以及对所述深度学习模型进行训练的数据吞吐量,对样本数据的预取数量进行第一更新处理,得到所述目标预取数量。

一种可能的实施方式中,所述第一更新模块,在根据所述预取样本数据队列当前占用的总内存空间以及内存使用上限阈值,对样本数据的预取数量进行第一更新处理,得到目标预取数量时,用于:在所述预取样本数据队列当前占用的总内存空间未达到所述内存使用上限阈值的情况下,将所述预取数量增大第一调节步长,得到所述目标预取数量;和/或

在所述预取样本数据队列当前占用的总内存空间达到所述内存使用上限阈值的情况下,将所述预取数量减小第二调节步长,得到所述目标预取数量。

所述第一更新模块,在在所述预取样本数据队列当前占用的总内存空间未达到所述内存使用上限阈值的情况下,将所述预取数量增大第一调节步长,得到所述目标预取数量时,用于:在所述预取样本数据队列当前占用的总内存空间未达到所述内存使用上限阈值,且对所述深度学习模型进行训练的数据吞吐量满足预设数据吞吐量条件的情况下,将所述预取数量增大第一调节步长,得到所述目标预取数量。

一种可能的实施方式中,所述第一更新模块,还用于:在所述预取样本数据队列当前占用的总内存空间未达到所述内存使用上限阈值,且所述数据吞吐量未满足所述预设数据吞吐量条件的情况下,将所述预取数量减小第三调节步长,得到所述目标预取数量。

一种可能的实施方式中,所述预设数据吞吐量条件,包括下述至少一种:所述数据吞吐量的当前数值大于历史数值,其中,所述历史数值为当前迭代之前的多个历史迭代训练的对应平均值或者为当前迭代训练的前一迭代训练的对应数值;所述数据吞吐量的当前数值大于数据吞吐量阈值。

一种可能的实施方式中,所述装置还包括:第二更新模块,用于对所述预取数量的调节步长进行第二更新处理,得到目标调节步长,其中,所述目标调节步长用于所述预取数量的下一次更新处理。

一种可能的实施方式中,所述第二更新模块,在对所述预取数量的调节步长进行第二更新处理,得到目标调节步长时,用于:在所述第一更新处理中增大所述预取数量的情况下,增大所述预取数量的调节步长;和/或在所述第一更新处理中减小所述预取数量的情况下,减小所述预取数量的调节步长。

第三方面,本公开实施例还提供一种计算机设备,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当计算机设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤。

第四方面,本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤。

为使本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。

附图说明

为了更清楚地说明本公开实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,此处的附图被并入说明书中并构成本说明书中的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。应当理解,以下附图仅示出了本公开的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1示出了本公开实施例所提供的一种数据处理方法的流程图;

图2示出了本公开实施例所提供的一种数据处理装置的示意图;

图3示出了本公开实施例所提供的一种计算机设备的示意图。

具体实施方式

为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本公开实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本公开的实施例的详细描述并非旨在限制要求保护的本公开的范围,而是仅仅表示本公开的选定实施例。基于本公开的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。

经研究发现,在采用多进程并行训练的方式对深度学习模型进行训练时,各个进程都会预先读取下一轮训练时所需要的训练数据,并基于上一轮训练预先读取的训练数据来执行本轮的训练任务。但是由于各个并行的进程在执行完成之后,所有进程之间需要进行通信和数据同步,并在所有进程都和其他进程进行了通信和数据同步后,所有进程才会开始下一轮训练任务;若其中有任一进程的训练任务发生了时间的延误,例如在预读取下一轮训练所用的训练数据时,读取时间超出了该轮训练任务的执行时间,就会造成所有进程的训练任务都会发生时间的延误,进而导致训练效率的下降。

基于上述研究,本公开提供了一种应用于深度学习模型训练的数据处理方法及装置,能够对样本数据的预取数量进行第一更新处理,得到目标预取数量,并响应于预取样本数据队列中当前包括的样本数据的数量未达到所述目标预取数量,读取新的样本数据,并将读取的所述新的样本数据存储至所述预取样本数据队列中,这样,使得主进程都能够在执行完一次迭代训练后,其下一迭代训练所需要用到的样本数据已经完成了读取;由于主进程会对预取数量进行动态更新,以得到目标预取数量,并在数据队列中当前包括的样本数据量未达到目标预取数量时,从样本数据池中读取新的样本数据;而实际上在大多数情况下,主进程读取数据所需要耗费的时间往往少于其执行一个迭代训练所需要用到的时间,因此可以保证在数据队列中,一直会存储有足够数量的样本数据来满足后续几个迭代训练的使用,即使主进程对某个样本数据的读取时间过久,也不会造成由于样本数量未及时读取而导致的迭代训练发生延误,进而提升了训练效率。

针对以上方案所存在的缺陷,均是发明人在经过实践并仔细研究后得出的结果,因此,上述问题的发现过程以及下文中本公开针对上述问题所提出的解决方案,都应该是发明人在本公开过程中对本公开做出的贡献。

下面将结合本公开中附图,对本公开中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本公开的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本公开的实施例的详细描述并非旨在限制要求保护的本公开的范围,而是仅仅表示本公开的选定实施例。基于本公开的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。

为便于对本实施例进行理解,首先对本公开实施例所公开的一种数据处理方法进行详细介绍,本公开实施例所提供的数据处理方法应用于深度学习模型的训练,其执行主体一般为用于对深度学习模型进行训练的主进程或者子进程。在一些可能的实现方式中,该数据处理方法可以通过处理器调用存储器中存储的计算机可读指令的方式来实现。

下面以执行主体为至少一个主进程中的任一主进程为例对本公开实施例提供的数据处理方法加以说明。

参见图1所示,为本公开实施例提供的数据处理方法的流程图,方法包括步骤S101~S102,其中:

S101:对样本数据的预取数量进行第一更新处理,得到目标预取数量;

S102:响应于预取样本数据队列中当前包括的样本数据的数量未达到目标预取数量,读取新的样本数据,并将读取的新的样本数据存储至预取样本数据队列中。

下面分别对上述S101~S102加以详细说明。

I:在上述S101中,当主进程有一个的情况下,一个主进程能够对深度学习模型进行训练,且该主进程对样本数据的预取数量进行第一更新处理,得到目标预取数量。

在主进程有多个的情况下,多个主进程能够对深度学习模型进行并行训练,各个主进程分别对样本数据的预取数量进行第一更新处理,得到目标预取数量。这里,不同的主进程所对应的预取数量可以不同,不同的主进程对应的目标预取数量也可以不同。

每个主进程对应一预取样本数据队列,与任一主进程对应的预取样本数据队列中,存储有多个样本数据,且每个主进程基于与之对应的预取样本数据队列中存储的样本数据对深度学习模型进行训练。

该预取样本数据队列例如为先进先出队列;主进程在开始一个新的迭代训练,首先从与该主进程对应的预取样本数据队列中读取一组样本数据;预取样本数据队列中的一组样本数据被对应主进程读取之后,该组样本数据会从预取样本数据队列中删除,以为新的样本数据留出存储位置。

这里,需要注意的是,一个迭代训练中,主进程会基于一组样本数据训练深度学习模型;在一组样本数据中,包括至少一个样本数据。本公开实施例中所指的预取数量,是指样本数据组的数量。

在未达到预先确定的预取数量更新周期时,主进程响应于预取样本数据队列中当前包括的样本数据的数量为达到当前的预取数量,读取新的样本数据。

当达到预先确定的预取数量更新条件时,主进程对样本数据的当前的预取数量进行第一更新处理,得到目标预取数量;主进程响应于预取样本数据队列中当前包括的样本数据的数量未达到目标预取数量,读取新的样本数据。其中,样本数据的预取数量和目标区域数量,可以相同,也可以不同。

具体地,预取数量更新条件例如包括下述a1~a3中一种或者多种:

a1:达到预设的更新周期。

这里,更新周期为对预取数量进行更新的周期。

该更新周期例如为时长固定的周期;例如可以更新周期为1小时,则可以每经过1小时就触发一次对预取数量的第一更新处理过程。

该更新周期例如为预设数量的迭代训练;例如,主进程每对深度学习模型进行5个周期的迭代训练过程,就触发一次对预取数量的第一更新处理过程。此时,由于不同的迭代训练所耗费的时间可能会有所区别,进而造成不同的更新周期的持续时长也会有所不同。

a2:基于样本数据对深度学习模型进行训练时的数据吞吐量大于第一数据吞吐量阈值。

这里,数据吞吐量用于表征主进程在对深度学习模型进行训练时的样本数据处理速度。若主进程在对深度学习模型进行训练时的数据吞吐量大于第一数据吞吐量阈值,则认为对预取样本数据队列中存储的样本数据的消耗速度较快,此时,若此时保持较小的预取数量,则可能会使得预取样本数据队列中存户的样本数据的数量无法及时跟上训练的消耗,因此可以考虑增加预取到预取样本数据队列中的样本数据的数量,进而触发对样本数据的预取数量的第一更新处理。

a2.1:这里,例如可以采用下述方式得到数据吞吐量:

响应于达到预取数量更新条件,基于达到预取数量更新条件时对深度学习模型的训练进度,从多个历史迭代训练中,确定至少一个目标迭代训练;根据各个目标迭代训练所使用的样本数据组中所包括的样本数据的数量,以及各个目标迭代训练所耗费的时间,确定基于样本数据对深度学习模型进行训练时的数据吞吐量。

这里,目标迭代训练,例如为距离达到预取数量更新条件的时刻最近的至少一个迭代训练。

例如某主进程已经对深度学习模型进行5个周期的迭代训练过程,且在达到预取数量更新条件时,正在对深度学习模型进行第6个周期的迭代训练过程。此时,针对目标迭代训练有一个的情况,可以将第5个迭代训练确定为目标迭代训练;若该第5个迭代训练所耗费的时间为15分钟,使用的样本数据的数量为64个,则数据吞吐量例如为:64÷15。

针对目标迭代训练有三个的情况,可以将3、第4和第5个迭代训练确定为目标迭代训练;若将3、第4和第5个迭代训练分别耗费的时间为12分钟、14分钟和15分钟,每个迭代训练所使用的样本数据的数量均为64个,则数据吞吐量例如为:64×3÷(12+14+15),单位为:个/分钟。

a2.2:在另一实施例中,还可以将当前正在进行的周期确定为目标迭代训练,并根据当前正进行的周期中,已经完成训练的样本的数量,以及已经持续的时间,确定数据吞吐量。

例如在例如某主进程已经对深度学习模型进行5个周期的迭代训练过程,且在达到预取数量更新条件时,正在对深度学习模型进行第6个周期的迭代训练过程。可以将第6个周期确定为目标迭代训练;在第6个迭代训练中,目标是使用一个样本数据组中的64个样本对深度学习模型进行训练,当前已经完成训练的样本数据的数量为30个,当前训练迭代周期已经持续的时间为4分钟,则数据吞吐量例如为:30÷4。

a3:基于样本数据对深度学习模型进行训练时的数据吞吐量小于第二数据吞吐量阈值。

这里,第二数据吞吐量阈值小于第一数据吞吐量阈值。

若主进程在对深度学习模型进行训练时的数据吞吐量小于第二数据吞吐量阈值,则认为对预取样本数据队列中存储的样本数据的消耗速度过慢,此时,若此时保持较大的预取数量,则可能会使得预取样本数据队列中存储的样本数据的数量一直积存,导致预取样本数据队列中存储的样本数据会占据较大的内存,因此可以考虑减小预取到预取样本数据队列中的样本数据的数量,进而触发对样本数据的预取数量的第一更新处理。

此处,数据吞吐量的确定方式与上述a2类似,再次不再赘述。

在预取数量更新条件后,例如可以采用下述方式对样本数据的预取数量进行第一更新处理:

根据预取样本数据队列当前占用的总内存空间以及内存使用上限阈值,对样本数据的预取数量进行第一更新处理,得到目标预取数量。

示例性的,例如可以通过检测预取样本数据队列所占用的总内存空间是否达到内存使用上限阈值,并基于检测结果对样本数据的预取数量进行第一更新处理,得到目标预取数量。

此处,预取样本数据队列所占用的总内存空间,是指所有主进程对应的样本数据队列所占用的总内存空间。

具体地:在预取样本数据队列当前占用的总内存空间未达到内存使用上限阈值的情况下,将预取数量增大第一调节步长,得到目标预取数量;和/或

在预取样本数据队列当前占用的总内存空间达到内存使用上限阈值的情况下,将预取数量减小第二调节步长,得到目标预取数量。

此处,第一调节步长,是指在将样本数据的预取数量增大时的调节步长;第二调节步长,是指在将样本数据的预取数量减小时的调节步长。

其中,第一调节步长和第二调节步长可以是同一调节步长,也可以是不同的调节步长。

示例性的,第一调节步长例如大于第二调节步长;在该种情况下,能够在需要增加预取数量时,更快增加预取数量,以更快的保证预取样本数据队列中存储的样本数据更快的达到较多的数量,以满足后续训练迭代周期的使用需求,避免由于预取数量过小而导致的模型训练过程被延误;同时,在需要降低预取数量时,较为和缓的降低预取数量,能够保证预取样本数据队列的长度变化会更加的平稳,避免由于预取的样本数据的数量的过快下降导致训练过程的震荡。

进一步地,在另一实施例中,还可以根据预取样本数据队列当前占用的总内存空间、内存使用上限阈值、以及对深度学习模型进行训练的数据吞吐量,对样本数据的预取数量进行第一更新处理,得到目标预取数量。

此处,在上述实施例的基础上,例如在预取样本数据队列当前占用的总内存空间未达到内存使用上限阈值的情况下:

在对深度学习模型进行训练的数据吞吐量满足预设数据吞吐量条件的情况下,将预取数量增大第一调节步长,得到目标预取数量。

在另一实施例中,还包括:在预取样本数据队列当前占用的总内存空间未达到内存使用上限阈值,且数据吞吐量小未满足预设数据吞吐量条件的情况下,将预取数量减小第三调节步长,得到目标预取数量。

具体地,第一调节步长和第三调节步长可以是同一调节步长,也可以是不同调节步长。类似的,第二调节步长和第三调节步长可以是同一调节步长,也可以是不同调节步长。

在另一实施例中,若预取样本数据队列中当前占用的总内存空间达到内存使用上限阈值,不论在对深度学习模型进行训练的数据吞吐量是否满足预设数据吞吐量条件的情况下,都会讲预取数量减小第二调节步长,得到目标预取数量。

上述的预设数据吞吐量条件包括下述b1~b2中至少一种:

b1:数据吞吐量的当前数值大于历史数值,其中,历史数值为当前迭代训练之前的多个历史迭代的对应平均值或者为当前迭代训练的前一迭代训练的对应数值。

具体的确定方式例如可以参见上述a2.1,这里不再赘述。

b2:数据吞吐量的当前数值大于数据吞吐量阈值。

这里,数据吞吐量的当前数值,例如可以参见上述a2.2所示,这里不再赘述。

另外,本公开实施例还提供的数据处理方法,在上述实施例的基础上,还包括:

对预取数量的调节步长进行第二更新处理,得到目标调节步长,其中,目标调节步长用于预取数量的下一次更新处理。

此处,例如可以在第一更新处理中增大预取数量的情况下,增大预取数量的调节步长;和/或

在第一更新处理中减小预取数量的情况下,减小预取数量的调节步长。

具体示例:

有M1、M2、M3、M4和M5共五个进程并行执行对同一深度学习模型的训练任务。

其中M1、M2、M3、M4和M5分别执行本公开实施例提供的数据处理方法。

以M1执行该数据处理方法为例:

示例1:基于内存使用上限阈值对样本数据的预取数量进行第一更新处理:

1.1:M1检测M1对应的预取样本数据队列L1、M2对应的预取样本数据队列L2、M3对应的预取样本数据队列L3、M4对应的预取样本数据队列L4和M5对应的预取样本数据队列L5占用的总内存空间是否达到内存使用上限阈值;如果否,则跳转至1.2(a)和1.2(b);如果是,或M1在向操作系统的主进程申请内存时申请失败,则跳转至1.3;

1.2(a):M1对样本数据的预取数量进行第一更新处理,得到目标预取数量:

目标预取数量=预取数量+第一调节步长,其中,第一调节步长为上一次对调节步长进行第二更新处理得到的目标调节步长。

1.2(b)M1对第一调节步长进行第二更新处理:

本次第二更新处理后得到的目标调节步长=第一调节步长*2,即下一第第一更新处理所使用的第一调节步长是本次第一更新处理所使用的调节步长的2倍。

1.3:M1检测第二调节步长是否大于1;如果第二调节步长大于1,则跳转至1.4(a)和1.4(b)。如果否,则跳转至1.5。

1.4(a):M1对第二调节步长进行第二更新处理:

调整后的第二调节步长=调整前的第二调节步长/2。

1.4(b):M1对样本数据的预取数量进行第一更新处理,得到目标预取数量:

目标预取数量=预取数量-调整后的第二调节步长。其中,调整后的第二调节步长为1.4(a)中的调整后的调节步长。

1.5:M1保持第二调节步长不变,并基于保持不变的第二调节步长,对样本数据的预取数量进行第一更新处理,得到目标预取数量:

目标预取数量=预取数量-保持不变的第二调节步长。

示例2:M1基于内存使用上限阈值、以及对深度学习模型进行训练的数据吞吐量对样本数据的预取数量进行第一更新处理:

2.1:M1检测M1对应的预取样本数据队列L1、M2对应的预取样本数据队列L2、M3对应的预取样本数据队列L3、M4对应的预取样本数据队列L4和M5对应的预取样本数据队列L5占用的总内存空间是否达到内存使用上限阈值;如果否,则跳转至2.2;如果是,或M1在向操作系统的主进程申请内存时申请失败,则跳转至2.7。

2.2:检测深度学习模型进行训练的数据吞吐量满足预设数据吞吐量条件;如果是,则跳转至2.3(a)和2.3(b);如果否,则跳转至2.4(a)和2.4(b)。

2.3(a):M1对样本数据的预取数量进行第一更新处理,得到目标预取数量:

目标预取数量=预取数量+第一调节步长,其中,第一调节步长为上一次对调节步长进行第二更新处理得到的目标调节步长。

2.3(b):M1对第一调节步长进行第二更新处理:

本次第二更新处理后得到的目标调节步长=第一调节步长*2。

2.4(a):M1对样本数据的预取数量进行第一更新处理,得到目标预取数量:

目标预取数量=预取数量-第三调节步长。

2.4(b):M1检测第二调节步长是否大于1;如果第二调节步长大于1,则跳转至2.5。如果否,则跳转至2.6。

2.5:M1对第三调节步长进行第二更新处理:

调整后的第三调节步长=调整前的第三调节步长/2。

2.6:M1保持第三调节步长不变。该第三调节步长用于下次对预取数量进行第一更新处理时使用。

2.7:M1检测第二调节步长是否大于1;如果第二调节步长大于1,则跳转至2.8(a)和2.8(b)。如果否,则跳转至2.9。

2.8(a):M1对第二调节步长进行第二更新处理:

调整后的第二调节步长=调整前的第二调节步长/2。

2.8(b):M1对样本数据的预取数量进行第一更新处理,得到目标预取数量:

目标预取数量=预取数量-调整后的第二调节步长。其中,调整后的第二调节步长为2.8(a)中的调整后的调节步长。

2.9:M1保持第二调节步长不变,并基于保持不变的第二调节步长,对样本数据的预取数量进行第一更新处理,得到目标预取数量:

目标预取数量=预取数量-保持不变的第二调节步长。

通过上述示例中的各个步骤,完成对样本数据的预取数量进行第一更新处理。

II:在上述S102中,主进程可以直接在预取样本数据队列中当前包括的样本数据的数量未达到目标预取数量的时候,从样本数据库中读取新的样本数据,也可以通过与一子进程的通信,来控制子进程实现从样本数据库中读取新的样本数据。

针对主进程直接从样本数据库中读取新的样本数据的情况,主进程能够通过从预取样本数据队列中提取的样本数据的数量,以及控制读取到预取样本年数据队列中的样本数据的数量,来确定预取样本数据队列中当前所存储的样本数据的数量,然后将该数量与目标预取数量进行比对;在该数量小于目标预取数量的情况下,直接从样本数据库中读取新的样本数据,并存储至预取样本数据队列中。

这怒地主进程通过控制子进程实现从样本数据库中读取新的样本数据的情况,主进程能够通过与子进程之间的通信,确定预取样本数据队列中当前所存储的样本数据的数量,然后将该数量与目标预取数量进行比对;在该数量小于目标预取数量的情况下,向子进程发送一样本数据读取指令;该样本数据读取指令中,携带有需要读取的样本数据的数量信息;子进程在接收到主进程发送的样本数据读取指令后,基于样本数据读取指令中携带的数量信息,读取新的样本数据存储至预取样本数据队列中。

本公开实施例中,由于主进程会对预取数量进行第一更新处理,以得到目标预取数量,并在数据队列中当前包括的样本数据量未达到目标预取数量时,从样本数据池中读取新的样本数据;因而,主进程能够在执行完一次迭代训练后,其下一迭代训练所需要用到的样本数据已经完成了读取;而实际上在大多数情况下,主进程读取数据所需要耗费的时间往往少于其执行一个迭代训练所需要用到的时间,因此可以保证在数据队列中,一直会存储有足够数量的样本数据来满足后续几个迭代训练的使用,即使主进程对某个样本数据的读取时间过久,也不会造成由于样本数量未及时读取而导致的迭代训练发生延误,进而提升了训练效率。

本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。

基于同一发明构思,本公开实施例中还提供了与数据处理方法对应的数据处理装置,由于本公开实施例中的装置解决问题的原理与本公开实施例上述数据处理方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。

参照图2所示,为本公开实施例提供的一种数据处理装置的示意图,所述装置包括:第一更新模块21、和读取模块22;其中,

第一更新模块21,用于对样本数据的预取数量进行第一更新处理,得到目标预取数量;

读取模块22,用于响应于预取样本数据队列中当前包括的样本数据的数量未达到所述目标预取数量,读取新的样本数据,并将读取的所述新的样本数据存储至所述预取样本数据队列中。

本公开实施例中,由于主进程会对预取数量进行第一更新处理,以得到目标预取数量,并在数据队列中当前包括的样本数据量未达到目标预取数量时,从样本数据池中读取新的样本数据;因而,主进程能够在执行完一次迭代训练后,其下一迭代训练所需要用到的样本数据已经完成了读取;而实际上在大多数情况下,主进程读取数据所需要耗费的时间往往少于其执行一个迭代训练所需要用到的时间,因此可以保证在数据队列中,一直会存储有足够数量的样本数据来满足后续几个迭代训练的使用,即使主进程对某个样本数据的读取时间过久,也不会造成由于样本数量未及时读取而导致的迭代训练发生延误,进而提升了训练效率。

一种可能的实施方式中,所述第一更新模块21,在对样本数据的预取数量进行第一更新处理,得到目标预取数量时,用于:

根据所述预取样本数据队列当前占用的总内存空间以及内存使用上限阈值,对样本数据的预取数量进行第一更新处理,得到目标预取数量。

一种可能的实施方式中,所述第一更新模块21,在根据所述预取样本数据队列当前占用的总内存空间以及内存使用上限阈值,对样本数据的预取数量进行第一更新处理,得到目标预取数量时,用于:

根据所述预取样本数据队列当前占用的总内存空间、内存使用上限阈值、以及对所述深度学习模型进行训练的数据吞吐量,对样本数据的预取数量进行第一更新处理,得到所述目标预取数量。

一种可能的实施方式中,所述第一更新模块21,在根据所述预取样本数据队列当前占用的总内存空间以及内存使用上限阈值,对样本数据的预取数量进行第一更新处理,得到目标预取数量时,用于:

在所述预取样本数据队列当前占用的总内存空间未达到所述内存使用上限阈值的情况下,将所述预取数量增大第一调节步长,得到所述目标预取数量;和/或

在所述预取样本数据队列当前占用的总内存空间达到所述内存使用上限阈值的情况下,将所述预取数量减小第二调节步长,得到所述目标预取数量。

一种可能的实施方式中,所述第一更新模块21,在在所述预取样本数据队列当前占用的总内存空间未达到所述内存使用上限阈值的情况下,将所述预取数量增大第一调节步长,得到所述目标预取数量时,用于:

在所述预取样本数据队列当前占用的总内存空间未达到所述内存使用上限阈值,且对所述深度学习模型进行训练的数据吞吐量满足预设数据吞吐量条件的情况下,将所述预取数量增大第一调节步长,得到所述目标预取数量。

一种可能的实施方式中,所述第一更新模块21,还用于:

在所述预取样本数据队列当前占用的总内存空间未达到所述内存使用上限阈值,且所述数据吞吐量未满足所述预设数据吞吐量条件的情况下,将所述预取数量减小第三调节步长,得到所述目标预取数量。

一种可能的实施方式中,所述预设数据吞吐量条件,包括下述至少一种:

所述数据吞吐量的当前数值大于历史数值,其中,所述历史数值为当前迭代之前的多个历史迭代训练的对应平均值或者为当前迭代训练的前一迭代训练的对应数值;

所述数据吞吐量的当前数值大于数据吞吐量阈值。

一种可能的实施方式中,所述装置还包括:第二更新模块23,用于对所述预取数量的调节步长进行第二更新处理,得到目标调节步长,其中,所述目标调节步长用于所述预取数量的下一次更新处理。

一种可能的实施方式中,所述第二更新模块23,在对所述预取数量的调节步长进行第二更新处理,得到目标调节步长时,用于:

在所述第一更新处理中增大所述预取数量的情况下,增大所述预取数量的调节步长;和/或

在所述第一更新处理中减小所述预取数量的情况下,减小所述预取数量的调节步长。

关于装置中的各模块的处理流程、以及各模块之间的交互流程的描述可以参照上述方法实施例中的相关说明,这里不再详述。

本公开实施例还提供了一种计算机设备30,如图3所示,为本公开实施例提供的计算机设备30结构示意图,包括:

处理器31、存储器32、和总线33;存储器32用于存储执行指令,包括内存321和外部存储器322;这里的内存321也称内存储器,用于暂时存放处理器31中的运算数据,以及与硬盘等外部存储器322交换的数据,处理器31通过内存321与外部存储器322进行数据交换,当所述计算机设备300运行时,所述处理器31与所述存储器32之间通过总线33通信,使得所述处理器31在用户态执行以下指令:

对样本数据的预取数量进行第一更新处理,得到目标预取数量;

响应于预取样本数据队列中当前包括的样本数据的数量未达到所述目标预取数量,读取新的样本数据,并将读取的所述新的样本数据存储至所述预取样本数据队列中。

一种可能的实施方式中,处理器31执行的指令中,所述对样本数据的预取数量进行第一更新处理,得到目标预取数量,包括:

根据所述预取样本数据队列当前占用的总内存空间以及内存使用上限阈值,对样本数据的预取数量进行第一更新处理,得到目标预取数量。

一种可能的实施方式中,处理器31执行的指令中,所述根据所述预取样本数据队列当前占用的总内存空间以及内存使用上限阈值,对样本数据的预取数量进行第一更新处理,得到目标预取数量,包括:

根据所述预取样本数据队列当前占用的总内存空间、内存使用上限阈值、以及对所述深度学习模型进行训练的数据吞吐量,对样本数据的预取数量进行第一更新处理,得到所述目标预取数量。

一种可能的实施方式中,处理器31执行的指令中,所述根据所述预取样本数据队列当前占用的总内存空间以及内存使用上限阈值,对样本数据的预取数量进行第一更新处理,得到目标预取数量,包括:

在所述预取样本数据队列当前占用的总内存空间未达到所述内存使用上限阈值的情况下,将所述预取数量增大第一调节步长,得到所述目标预取数量;和/或

在所述预取样本数据队列当前占用的总内存空间达到所述内存使用上限阈值的情况下,将所述预取数量减小第二调节步长,得到所述目标预取数量。

一种可能的实施方式中,处理器31执行的指令中,所述在所述预取样本数据队列当前占用的总内存空间未达到所述内存使用上限阈值的情况下,将所述预取数量增大第一调节步长,得到所述目标预取数量,包括:

在所述预取样本数据队列当前占用的总内存空间未达到所述内存使用上限阈值,且对所述深度学习模型进行训练的数据吞吐量满足预设数据吞吐量条件的情况下,将所述预取数量增大第一调节步长,得到所述目标预取数量。

一种可能的实施方式中,处理器31执行的指令中,所述方法还包括:

在所述预取样本数据队列当前占用的总内存空间未达到所述内存使用上限阈值,且所述数据吞吐量未满足所述预设数据吞吐量条件的情况下,将所述预取数量减小第三调节步长,得到所述目标预取数量。

一种可能的实施方式中,处理器31执行的指令中,所述预设数据吞吐量条件,包括下述至少一种:

所述数据吞吐量的当前数值大于历史数值,其中,所述历史数值为当前迭代之前的多个历史迭代训练的对应平均值或者为当前迭代训练的前一迭代训练的对应数值;

所述数据吞吐量的当前数值大于数据吞吐量阈值。

一种可能的实施方式中,处理器31执行的指令中,所述方法还包括:

对所述预取数量的调节步长进行第二更新处理,得到目标调节步长,其中,所述目标调节步长用于所述预取数量的下一次更新处理。

一种可能的实施方式中,处理器31执行的指令中,所述对所述预取数量的调节步长进行第二更新处理,得到目标调节步长,包括:

在所述第一更新处理中增大所述预取数量的情况下,增大所述预取数量的调节步长;和/或

在所述第一更新处理中减小所述预取数量的情况下,减小所述预取数量的调节步长。

本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述方法实施例中所述的数据处理方法的步骤。其中,该存储介质可以是易失性或非易失的计算机可读取存储介质。

本公开实施例所提供的数据处理方法的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行上述方法实施例中所述的数据处理方法的步骤,具体可参见上述方法实施例,在此不再赘述。

本公开实施例还提供一种计算机程序,该计算机程序被处理器执行时实现前述实施例的任意一种方法。该计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(Software DevelopmentKit,SDK)等等。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本公开所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

最后应说明的是:以上所述实施例,仅为本公开的具体实施方式,用以说明本公开的技术方案,而非对其限制,本公开的保护范围并不局限于此,尽管参照前述实施例对本公开进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本公开实施例技术方案的精神和范围,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应所述以权利要求的保护范围为准。

相关技术
  • 图像数据处理方法、用于图像数据处理方法的程序、记录有用于图像数据处理方法的程序的记录介质和图像数据处理装置
  • 药箱的数据处理方法、装置、数据处理方法和装置
技术分类

06120113082970