训练样本读取方法及装置与流程

文档序号:23468616发布日期:2020-12-29 12:55阅读:76来源:国知局
训练样本读取方法及装置与流程

本申请涉及计算机技术领域,尤其涉及一种训练样本读取方法及装置。



背景技术:

当前大规模训练系统由云管理平台、训练设备以及分布式存储设备三部分构成,当用户向云管理平台请求训练任务时,云管理平台将训练任务调度分配给其中的一台训练设备,该训练设备基于接收的训练任务进行模型训练,在训练过程中,需要从分布式存储设备反复多次读取某一样本集中的训练样本进行多次训练,因此分布式设备与训练设备之间的数据吞吐量大。

当有大量用户同时向云管理平台请求训练任务时,处理不同训练任务的训练设备会同时从分布式存储设备读取训练样本。然而,分布式存储设备与训练设备之间的网络带宽是固定的,因此分布式存储设备很容易达到瓶颈,影响训练样本的读取速度,降低模型训练效率。



技术实现要素:

有鉴于此,本申请提供一种训练样本读取方法及装置,以解决训练样本读取速度慢,模型训练效率低的问题。

根据本申请实施例的第一方面,提供一种训练样本读取方法,所述方法应用于训练设备,所述方法包括:

针对待训练模型的每次训练,判断本地存储介质中是否存储有待训练模型所需的训练样本;

若所述本地存储介质中没有待训练模型所需的训练样本,则从分布式存储设备中读取待训练模型所需的训练样本以对待训练模型进行本次训练,并将读取到的训练样本存储至本地存储介质;

若待训练模型所需的训练样本已存储在所述本地存储介质,则从所述本地存储介质中读取待训练模型所需的训练样本以用于对待训练模型进行本次训练。

根据本申请实施例的第二方面,提供一种训练样本读取装置,所述装置应用于训练设备,所述装置包括:

判断模块,用于针对待训练模型的每次训练,判断本地存储介质中是否存储有待训练模型所需的训练样本;

第一读取模块,用于在所述本地存储介质中没有待训练模型所需的训练样本时,从分布式存储设备中读取待训练模型所需的训练样本以对待训练模型进行本次训练;

存储模块,用于将读取到的训练样本存储至本地存储介质;

第二读取模块,用于在待训练模型所需的训练样本已存储在所述本地存储介质时,从所述本地存储介质中读取待训练模型所需的训练样本以用于对待训练模型进行本次训练。

根据本申请实施例的第三方面,提供一种训练设备,所述设备包括可读存储介质和处理器;

其中,所述可读存储介质,用于存储机器可执行指令;

所述处理器,用于读取所述可读存储介质上的所述机器可执行指令,并执行所述指令以实现上述第一方面所述方法的步骤。

应用本申请实施例,针对待训练模型的每次训练,判断本地存储介质中是否存储有待训练模型所需的训练样本,若本地存储介质中没有待训练模型所需的训练样本,则从分布式存储设备中读取待训练模型所需的训练样本以对待训练模型进行本次训练,并将读取到的训练样本存储至本地存储介质;若待训练模型所需的训练样本已存储在本地存储介质,则从本地存储介质中读取待训练模型所需的训练样本以用于对待训练模型进行本次训练。

基于上述描述可知,在模型训练过程中,通过将待训练模型所需的训练样本存储在本地,从而后续每次都可以从本地读取所需的训练样本进行训练,无需再占用带宽从分布式存储设备读取,减少了与分布式存储设备的交互次数,使得相同硬件规格的分布式存储设备可支撑更多的训练任务。另外,由于本地读取速度相对从外界读取速度快很多,因此模型训练效率也高,同时还使得训练设备的本地存储介质资源在训练过程中得到有效利用。

附图说明

图1为本申请根据一示例性实施例示出的一种大规模训练系统结构示意图;

图2为本申请根据一示例性实施例示出的一种训练样本读取方法的实施例流程图;

图3为本申请根据一示例性实施例示出的一种训练设备的硬件结构图;

图4为本申请根据一示例性实施例示出的一种训练样本读取装置的实施例结构图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。

在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

图1为本申请根据一示例性实施例示出的一种大规模训练系统结构示意图,包括云管理平台(如kubernetes、hadoop等)、训练集群以及分布式存储设备(由多个存储服务器组成的一个虚拟设备,可以无感知从多个存储服务器上读取训练样本)。其中,云管理平台用于接收用户触发的训练任务,并将训练任务调度分配给训练集群中的某一训练设备;训练设备用于基于该训练任务,从分布式存储设备中反复多次读取某一样本集中的训练样本进行模型训练;分布式存储设备用于存储样本集(如图片、文本、视频等样本集),每个样本集中包含大量的训练样本,这些样本集可以用于训练不同任务的模型。

由上述描述可知,模型训练过程具有样本集会被反复多次读取、单条训练样本训练速度快、分布式存储设备与训练设备之间数据吞吐量大的特点。

当有大量用户同时向云管理平台请求训练任务时,处理不同训练任务的训练设备会同时从分布式存储设备读取训练样本。然而,训练设备与分布式存储设备之间的网络带宽是固定的,当训练任务过多时,分布式存储设备很容易达到瓶颈,进而影响训练样本的读取速度,降低模型训练效率。

目前通过两种方式来提升模型训练效率,第一种方式为在训练设备与分布式存储设备之间的数据传输方面的优化,以降低网络带宽压力(如对训练样本进行编码压缩后再进行传输);第二种方式为分布式存储设备的负载均衡(如反复使用的训练样本均衡到多个存储服务器上以对外提供服务)。而上述两种方式没有有效利用训练设备本地存储介质,因此每个训练任务还都是从分布式存储设备反复多次读取数据,造成训练设备部分资源浪费,开销成本也比较高。

为解决上述问题,在不增加分布式存储硬件成本基础上,本申请提出一种训练样本读取方法,目的在于将训练设备本身的资源有效利用起来,以保证训练系统在多用户请求训练任务时,依然能够高效稳定的进行。

本申请提出的训练样本读取方法是针对待训练模型的每次训练,若本地存储介质中没有待训练模型所需的训练样本,则在从分布式存储设备中读取待训练模型所需的训练样本以对待训练模型进行本次训练,并将读取到的训练样本存储至本地存储介质;若待训练模型所需的训练样本已存储在本地存储介质,则从本地存储介质中读取待训练模型所需的训练样本以用于对待训练模型进行本次训练。

基于上述描述可知,在模型训练过程中,通过将待训练模型所需的训练样本存储在本地,从而后续每次都可以从本地读取所需的训练样本进行训练,无需再占用网络带宽从分布式存储设备读取,减少了与分布式存储设备的交互次数,使得相同硬件规格的分布式存储设备可支撑更多的训练任务。另外,由于本地读取速度相对从外界读取速度快很多,因此模型训练效率也高,同时还使得训练设备的本地存储介质资源在训练过程中得到有效利用。

下面以具体实施例对本申请提出的训练样本读取的技术方案进行详细阐述。

图2为本申请根据一示例性实施例示出的一种训练样本读取方法的实施例流程图,所述训练样本读取方法可以应用于上述图1所示训练系统结构中的训练设备(如pc机、服务器等)上。

如图2所示,所述训练样本读取方法包括如下步骤:

步骤201:针对待训练模型的每次训练,判断本地存储介质中是否存储有待训练模型所需的训练样本,若本地存储介质中没有待训练模型所需的训练样本,则执行步骤202,若待训练模型所需的训练样本已存储在所述本地存储介质,则执行步骤203。

其中,待训练模型可以是通过获取模型结构信息,并依据所述模型结构信息构建得到的模型。

示例性的,模型结构信息是用户根据实际项目需求配置的参数,可以包括计算层数量,每个计算层的参数等信息。

在实际模型训练过程中,待训练模型需要经过多次训练(称为多次epoch训练,每次epoch训练指的是使用样本集中的全部训练样本训练一次待训练模型)才能输出使用,并且每进行一次训练需要依据本次训练获得的结果数据,调整一次待训练模型中的网络参数。

步骤202:从分布式存储设备中读取待训练模型所需的训练样本以对待训练模型进行本次训练,并将读取到的训练样本存储至本地存储介质。

在一实施例中,在本地存储介质中没有待训练模型所需的训练样本时,可以通过获取待训练模型所需样本集包含的每条训练样本的访问路径,再从分布式存储设备中读取每条访问路径上的训练样本以对待训练模型进行本次训练。

其中,获取的访问路径是分布式存储设备存储训练样本的路径,且每条访问路径上存有一条待训练模型所需的训练样本,该训练样本可以直接用于训练待训练模块,其可以是用于无监督学习的无标签样本,也可以是用于有监督学习的有标签样本。

在一实施例中,针对将读取到的训练样本存储至本地存储介质的过程,在本地存储介质包括内存和磁盘时,考虑到内存读写速度优于磁盘的读写速度,可以优先存储至内存,当内存存储至一定阈值后再存储至磁盘,直到磁盘也缓存至一定阈值,停止存储训练样本。

基于此,训练样本的存储过程可以是:针对读取到的每条训练样本,若内存中剩余空间大于第一预设阈值,则将该训练样本存储至内存;若内存中剩余空间小于第一预设阈值且磁盘中剩余空间大于第二预设阈值,则将该训练样本存储至磁盘;若内存中剩余空间小于第一预设阈值且磁盘中剩余空间小于第二预设阈值,则停止存储。

其中,第一预设阈值为内存的预留空间,其可以根据实践经验设置,该预留空间用于存储一些与模型训练相关的实时数据,方便训练过程中的读取和网络参数的计算,如所需样本集中训练样本的访问路径需要反复读取、对待训练模型每次训练产生的结果数据需要用于下一次训练前计算待调整的网络参数等。

第二预设阈值为磁盘的预留空间,其也可以根据实践经验设置,该预留空间可以用于存储模型训练过程中的所有中间状态数据,以供用户查看,如每次训练后调整的网络参数、计算得到的损失值等状态数据。

当内存中剩余空间小于第一预设阈值且磁盘中剩余空间小于第二预设阈值时,表示本地存储介质达到饱和状态,为了保证模型训练过程的正常运行,需要停止存储训练样本。

需要说明的是,在将读取到的训练样本存储至内存或磁盘之后,针对存储至内存或磁盘中的每条训练样本,还可以为该训练样本生成存储路径和状态标识,所述状态标识用于指示该训练样本存储至内存还是磁盘,然后利用该存储路径更新该训练样本的访问路径,并对应更新后的访问路径记录所述状态标识。

其中,状态标识可以数字或字符,或者也可以是数字与字符的组合,本申请对状态标识的具体形式不进行限定。例如,用状态标识“1”指示存储至内存,其对应的更新后的访问路径是内存存储训练样本的路径,用状态标识“2”指示存储至磁盘,其对应的更新后的访问路径是磁盘存储训练样本的路径。

基于此,针对上述步骤201的判断过程,可以通过判断待训练模型所需样本集包含的访问路径中是否存在记录有状态标识的访问路径,若存在,则确定本地存储介质中存储有待训练模型所需的训练样本;若不存在,则确定本地存储介质中没有待训练模型所需的训练样本。

步骤203:从本地存储介质中读取待训练模型所需的训练样本以用于对待训练模型进行本次训练。

基于上述步骤202描述可知,存储至本地存储介质的训练样本的访问路径均记录有状态标识,因此针对从本地存储介质中读取待训练模型所需的训练样本的过程,可以从待训练模型所需样本集中获取记录有状态标识的访问路径,然后针对每条记录有状态标识的访问路径,若该访问路径的状态标识指示存储至内存,则从内存中读取该访问路径上的训练样本;若该访问路径的状态标识指示存储至磁盘,则从磁盘中读取该访问路径上的训练样本。

针对上述步骤201至步骤203的过程,训练样本的存储过程,可以在待训练模型的任意次训练过程中执行,本申请对此不进行限定,只要将训练样本存储至本地后,待训练模型的后续多次训练都可以直接从本地读取,无需再从分布式存储设备间接读取。

在本申请中,为了最大程度减少与分布式存储设备的交互,训练样本的存储过程可以是在对待训练模型进行首次训练过程中执行,从而后续每次都可以从本地读取。

下面以首次训练从分布式设备读取训练样本,后续多次训练从本地读取训练样本为例进行示例性说明:

如上述图1所示,云管理平台记录有分布式存储设备存储的所有样本集的标识以及样本集包含的每条训练样本的访问路径,因此,用户可以在云管理平台上根据实际项目需求配置模型结构信息,并选择所需的样本集,从而云管理平台可以生成携带有模型结构信息和所需样本集包含的多条访问路径的训练任务,进而再将该训练任务调度分配到训练设备,训练设备在接收到该训练任务时,基于该训练任务构建待训练模型,在对待训练模型进行首次训练过程中,将从分布式存储设备读取到的训练样本存储至本地存储介质,从而后续每次训练时,可以直接从本地存储介质读取所需的训练样本进行训练。

需要说明的是,由于训练设备的内存和磁盘的存储空间是有限的,而样本集中的训练样本量有时比较大,因此读取到的训练样本可能有一部分无法缓存至本地存储介质,对于这部分训练样本的访问路径不会被更新且也不会记录状态标识。

为了保证模型每次训练的样本数量充足(样本数量越充足,模型训练效果越好),提升训练模型准确度,使得模型更加优化,在每次训练过程中,在从本地存储介质中读取待训练模型所需的训练样本之后,若所需样本集中还存在未记录状态标识的访问路径,还可以从分布式存储设备中读取未记录状态标识的访问路径上的训练样本,进而利用从本地存储介质中读取的训练样本和从分布式存储设备中读取的训练样本对待训练模型进行本次训练。这样,虽然每次训练还需要与分布式存储设备交互,但是交互的数据量少很多。

仍以首次训练进行存储为例,在一个例子中,假设待训练模型所需的训练样本的总大小为100mb,在首次训练过程中,从分布式存储设备读取到的100mb训练样本均存储到了本地存储介质,从而在对待训练模型进行后续重复多次训练过程中,每次可以直接从本地存储介质读取训练样本以用于训练,无需再与分布式存储设备交互。

在另一个例子中,假设待训练模型所需的训练样本的总大小为100mb,在首次训练过程中,从分布式存储设备读取到的前80mb训练样本存储至本地存储介质时,本地存储介质已达饱和状态,后20mb训练样本无法存储在本地,从而在对待训练模型进行后续重复多次训练过程中,每次先直接从本地存储介质读取前80mb训练样本,再从分布式存储设备中读取后20mb训练样本。虽然每次训练还需要与分布式存储设备交互,但是交互的数据量减少很多。

需要进一步说明的是,在完成待训练模型的训练任务之后,训练设备可以将训练好的模型发送给云管理平台,并将本地存储介质中已缓存的训练样本释放。

在本申请实施例中,针对待训练模型的每次训练,判断本地存储介质中是否存储有待训练模型所需的训练样本,若本地存储介质中没有待训练模型所需的训练样本,则从分布式存储设备中读取待训练模型所需的训练样本以对待训练模型进行本次训练,并将读取到的训练样本存储至本地存储介质;若待训练模型所需的训练样本已存储在本地存储介质,则从本地存储介质中读取待训练模型所需的训练样本以用于对待训练模型进行本次训练。

基于上述描述可知,在模型训练过程中,通过将待训练模型所需的训练样本存储在本地,从而后续每次都可以从本地读取所需的训练样本进行训练,无需再占用带宽从分布式存储设备读取,减少了与分布式存储设备的交互次数,使得相同硬件规格的分布式存储设备可支撑更多的训练任务。另外,由于本地读取速度相对从外界读取速度快很多,因此模型训练效率也高,同时还使得训练设备的本地存储介质资源在训练过程中得到有效利用。

图3为本申请根据一示例性实施例示出的一种训练设备的硬件结构图,该训练设备包括:通信接口301、处理器302、机器可读存储介质303和总线304;其中,通信接口301、处理器302和机器可读存储介质303通过总线304完成相互间的通信。处理器302通过读取并执行机器可读存储介质303中与训练样本读取方法的控制逻辑对应的机器可执行指令,可执行上文描述的训练样本读取方法,该方法的具体内容参见上述实施例,此处不再累述。

本申请中提到的机器可读存储介质303可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,机器可读存储介质可以是:易失存储器、非易失性存储器或者类似的存储介质。具体地,机器可读存储介质303可以是ram(radomaccessmemory,随机存取存储器)、闪存、存储驱动器(如硬盘驱动器)、任何类型的存储盘(如光盘、dvd等),或者类似的存储介质,或者它们的组合。

图4为本申请根据一示例性实施例示出的一种训练样本读取装置的实施例结构图,所述训练样本读取装置可以应用于训练设备上,如图4所示,所述训练样本读取装置包括:

判断模块410,用于针对待训练模型的每次训练,判断本地存储介质中是否存储有待训练模型所需的训练样本;

第一读取模块420,用于在所述本地存储介质中没有待训练模型所需的训练样本时,从分布式存储设备中读取待训练模型所需的训练样本以对待训练模型进行本次训练;

存储模块430,用于将读取到的训练样本存储至本地存储介质;

第二读取模块440,用于在待训练模型所需的训练样本已存储在所述本地存储介质时,从所述本地存储介质中读取待训练模型所需的训练样本以用于对待训练模型进行本次训练。

在一可选实现方式中,第一读取模块420,具体用于获取所述待训练模型所需样本集包含的每条训练样本的访问路径;从分布式存储设备中读取每条访问路径上的训练样本以对待训练模型进行本次训练。

在一可选实现方式中,所述本地存储介质包括内存和磁盘;

所述存储模块430,具体用于针对读取到的每条训练样本,若内存中剩余空间大于第一预设阈值,则将该训练样本存储至内存;若内存中剩余空间小于第一预设阈值且磁盘中剩余空间大于第二预设阈值,则将该训练样本存储至磁盘;若内存中剩余空间小于第一预设阈值且磁盘中剩余空间小于第二预设阈值,则停止存储。

在一可选实现方式中,所述装置还包括(图4中未示出):

更新模块,用于在所述存储模块430将读取到的训练样本存储至内存或磁盘之后,针对存储至内存或磁盘中的每条训练样本,为该训练样本生成存储路径和状态标识,并利用所述存储路径更新该训练样本的访问路径,并对应更新后的访问路径记录所述状态标识,所述状态标识用于指示训练样本存储至内存还是磁盘;

所述判断模块410,具体用于判断待训练模型所需样本集包含的访问路径中是否存在记录有状态标识的访问路径;若存在,则确定本地存储介质中存储有待训练模型所需的训练样本;若不存在,则确定本地存储介质中没有待训练模型所需的训练样本。

在一可选实现方式中,所述第二读取模块440,具体用于从所述待训练模型所需样本集中获取记录有状态标识的访问路径;针对每条记录有状态标识的访问路径,若该访问路径的状态标识指示存储至内存,则从内存中读取该访问路径上的训练样本;若该访问路径的状态标识指示存储至磁盘,则从磁盘中读取该访问路径上的训练样本。

在一可选实现方式中,所述装置还包括(图4中未示出):

第三读取模块,用于在所述第二读取模块440从本地存储介质中读取待训练模型所需的训练样本之后,若所述待训练模型所需样本集中存在未记录状态标识的访问路径,从分布式存储设备中读取未记录状态标识的访问路径上的训练样本;利用从本地存储介质中读取的训练样本和从分布式存储设备中读取的训练样本对待训练模型进行本次训练。

上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。

对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求指出。

还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。

以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1