法律状态公告日
法律状态信息
法律状态
2022-09-16
实质审查的生效 IPC(主分类):G06F 9/50 专利申请号:2022106320366 申请日:20220607
实质审查的生效
技术领域
本发明涉及深度学习领域,尤其是涉及一种面向多并发深度学习训练任务的数据缓存方法和装置。
背景技术
作为机器学习的重要分支,深度学习的性能优化一直是近年的研究热点。深度学习训练任务涵盖数据I/O,CPU计算和GPU计算等多个阶段,而随着CPU和GPU等组件的性能持续快速提升,深度学习训练的I/O瓶颈问题日益凸显。
缓存技术是缓解和消除I/O瓶颈的重要手段,但现有的面向深度学习训练的缓存面临“过度命中”问题。具体地,在一个训练周期epoch期间,一些训练批次batch在缓存内命中的样本占比大,使得这些batch的数据载入阶段的时间显著小于数据增强阶段或模型训练阶段,而另一些batch的情况则相反,这种缓存使用不均衡的情况使得前一部分batch浪费了有限的缓存资源,这一现象被称为缓存“过度命中”。
此外,多个深度学习训练任务并发执行的情况越来越普遍,这些任务相互独立,它们可能使用不同的数据集,执行不同的增强操作,使用不同的模型训练。当这些任务并发执行时,常见的方法是根据任务的数据集的大小按预定的比例为它们预分配缓存。但这种静态的缓存分配方案的缓存利用率有待提高:一方面,任务所需缓存大小不仅取决于数据集大小,还需考虑任务的数据增强阶段和模型训练阶段的时间开销;另一方面,深度学习训练具有周期性,且不同任务的样本相邻两次被引用的平均间隔时间往往是不同的,这使得不同任务的样本在缓存中平均驻留时间也不相同,利用这一规律在多任务间动态分配缓存能进一步提高全局缓存空间的利用率。
面向并发深度学习训练的缓存设计问题是当前的研究热点,最有代表性的工作是Quiver,它利用样本的可替代性保证所有并发任务都能快速从缓存获取到样本,从而减少任务I/O阶段的时间开销,缓解任务的I/O瓶颈。但Quiver具有明显的缺点,一方面,其适用的应用场景很窄,即共享缓存的多任务需使用相同数据集;另一方面,它破坏了每个epoch期间任务访问样本的全局随机性,可能对模型训练的精度带来不利影响。因此,如何为多并发深度学习训练任务动态地分配和管理缓存成为亟待解决的问题。
发明内容
为了解决现有技术中存在的上述技术问题,本发明提出了一种面向多并发深度学习训练任务的数据缓存方法和装置,动态地为并发深度学习训练任务分配和管理缓存,并通过解决“过度命中”问题提升每个任务对缓存的利用效率,从而在最大程度上缓解和消除深度学习训练任务的I/O瓶颈,其具体技术方案如下:
一种面向多并发深度学习训练任务的数据缓存方法,包括以下步骤:
步骤一,对多并发任务中每个任务的样本集,单独执行一个训练周期的预热训练,并采集训练批次样本的特征参数,根据采集到的特征参数,对所有任务进行排序产生列表;
步骤二,计算每个任务在默认缓存分配方案下每个训练批次样本在缓存空间中的平均样本数目和每个任务期望每个训练批次样本在缓存空间中的样本数目;
步骤三,基于步骤二中计算得到的两个参数,多并发任务采用缓存动态分配和管理策略并发执行深度学习训练;
步骤四,当各任务进入最后一个训练周期时,不再有新的样本数据加入各任务的缓存空间,同时随着缓存空间内的样本数据被逐渐使用消耗,被占用的缓存空间逐步被释放,被释放的缓存空间可被其他尚未结束的任务使用。
进一步地,所述步骤一具体包含如下子步骤:
步骤S11,获取初始参数配置,并发任务的总数记为
步骤S12,预热训练不使用任何缓存,当每个任务预热训练完成时,统计其信息:任务
步骤S13,根据步骤S12获取的任务
并且列表中每个任务
进一步地,所述步骤二具体包含如下子步骤:
步骤S21,计算每个任务
步骤S22,计算每个任务
进一步地,所述步骤三具体包括如下子步骤:
步骤S31,将多并发任务的空闲缓存空间组成一个全局的空闲缓存池,其总大小记为totalMem,每个任务的缓存空间在逻辑上可分为两部分,记为
步骤S32,对于任务
步骤S33,若任务
步骤S34,在任务
步骤S35,当
步骤S36,若
步骤S37,若任务
步骤S38,任务
步骤S39,当任务
进一步地,所述多并发任务中的每个任务的缓存空间彼此隔离,只能存取各自的缓存空间内的样本。
进一步地,所述每个任务在其当前训练周期内,进入缓存空间的样本相对均匀地分布在下一个训练周期的所有训练批次中,列表中位置靠前的任务以更快的速度从空闲缓存池申请空闲的缓存空间,而位置靠后的任务可强制要求列表中位于其前面的其他任务归还部分缓存空间。
一种面向多并发深度学习训练任务的数据缓存装置,包括一个或多个处理器,用于实现所述的一种面向多并发深度学习训练任务的数据缓存方法。
一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时,实现所述的一种面向多并发深度学习训练任务的数据缓存方法。
本发明的优势和有益效果在于:
本发明面向多并发深度学习训练任务设计了一个缓存动态分配和管理策略,对于其中的任一训练任务,本发明在每个训练周期精准选择进入缓存的样本,使得它们尽可能均匀地分布在下一个训练周期的所有训练批次,从而解决每个任务的缓存“过度命中”问题,提高缓存空间的利用率;在此基础上,本发明面向多并发训练任务设计了实时的动态缓存分配策略,使得任一任务可在适当的时间将其缓存空间借给其他任务,并在其需要缓存空间时从其他任务借用缓存空间,从而充分利用所有并发任务的缓存空间,并保证每个任务实际利用的缓存空间不小于系统预分配的缓存空间,进一步提高全局缓存空间的利用率。
附图说明
图1是本发明的多并发任务基于缓存动态分配和管理策略的训练过程示意图;
图2是本发明实施例的多并发深度学习训练任务的主要参数配置示意图;
图3是本发明实施例的面向多并发深度学习训练任务的数据缓存方法流程示意图;
图4是本发明实施例的三个并发任务采用缓存动态分配和管理策略的框架示意图;
图5是本发明实施例的多并发任务中每个任务缓存处理流程示意图;
图6是本发明实施例的一种面向多并发深度学习训练任务的数据缓存装置结构示意图。
具体实施方式
为了使本发明的目的、技术方案和技术效果更加清楚明白,以下结合说明书附图和实施例,对本发明作进一步详细说明。
一种面向多并发深度学习训练任务的缓存动态分配和管理方法,目的是提高深度学习训练任务对缓存的使用效率,利用缓存加快所有任务的数据载入阶段,减轻或消除它们的I/O瓶颈。如图1所示,该方法通过预热训练采集各任务的特征参数,然后根据这些参数配置和初始化缓存分配和管理策略,最后多任务基于实时的缓存动态分配和管理策略执行并发训练。
本发明提出的方法将不同任务的缓存相互隔离,对于每个任务,在其当前训练周期内,保证其缓存接收的样本尽可能均匀地分布于其下一训练周期的所有批次中,从而解决缓存“过度命中”问题。同时,它在不同任务间实时地动态地分配缓存资源,一方面解决默认的缓存静态预分配策略带来的不均衡问题,另一方面利用任务的特征提高整个缓存空间的使用效率。
本发明的装置可部署在Pytorch平台,在单物理节点上,每个并发深度学习训练任务拥有独立的GPU和CPU,使用ImageNet数据集,训练的模型为ResNet,主要参数配置如图2所示,此场景下,本发明的方法,如图3所示,包括如下步骤:
步骤一,对多并发任务中每个任务的样本集,单独执行一个训练周期的预热训练,并采集训练批次样本的特征参数,根据采集到的特征参数,对所有任务进行排序产生列表,具体包含如下子步骤:
步骤S11,获取初始参数配置,并发任务的总数为
步骤S12,每个任务预热训练完成时,统计其信息:任务单独执行一个训练周期所需的时间,记为
步骤S13,根据步骤S12获取的任务
此实施例假设统计到的信息满足
那么,得到列表为
并且列表中每个任务
步骤二,计算每个任务在默认缓存分配方案下每个训练批次样本在缓存空间中的平均样本数目和每个任务期望每个训练批次样本在缓存空间中的样本数目;
具体的,包含如下子步骤:
步骤S21,计算每个任务
其中,
步骤S22,计算每个任务
步骤三,如图4所示,基于步骤二中计算得到的两个参数,多并发任务采用缓存动态分配和管理策略并发执行深度学习训练;在多并发任务中,将每个任务的缓存空间彼此隔离,只能存取各自所属缓存空间内的样本,各任务在当前训练周期内,使进入缓存空间的样本尽可能均匀地分布在下一个训练周期的所有训练批次中,列表中位置靠前的任务以更快的速度从空闲缓存池申请空闲的缓存空间,而当空闲缓存池为空时,位置靠后的任务可强制要求列表中位于其前面的其他任务归还部分缓存空间。
所述步骤三包含如下子步骤:
步骤S31,将多并发任务的空闲缓存空间组成一个全局的空闲缓存池,其总大小记为totalMem,每个任务的缓存空间在逻辑上可分为两部分,记为
步骤S32,如图5所示,对于任务
步骤S33,若任务
步骤S34,在任务
步骤S35,当
步骤S36,若
步骤S37,若任务
步骤S38,任务
步骤S39,当任务
步骤四,当各任务进入最后一个训练周期时,不再有新的样本数据加入各任务的缓存空间,同时随着缓存空间内的样本数据被逐渐使用消耗,被占用的缓存空间逐步被释放,被释放的缓存空间可被其他尚未结束的任务使用.
与前述一种面向多并发深度学习训练任务的数据缓存方法的实施例相对应,本发明还提供了一种面向多并发深度学习训练任务的数据缓存装置的实施例。
参见图6,本发明实施例提供的一种面向多并发深度学习训练任务的数据缓存装置,包括一个或多个处理器,用于实现上述实施例中的一种面向多并发深度学习训练任务的数据缓存方法。
本发明一种面向多并发深度学习训练任务的数据缓存装置的实施例可以应用在任意具备数据处理能力的设备上,该任意具备数据处理能力的设备可以为诸如计算机等设备或装置。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在任意具备数据处理能力的设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图6所示,为本发明一种面向多并发深度学习训练任务的数据缓存装置所在任意具备数据处理能力的设备的一种硬件结构图,除了图6所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的任意具备数据处理能力的设备通常根据该任意具备数据处理能力的设备的实际功能,还可以包括其他硬件,对此不再赘述。
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本发明方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
本发明实施例还提供一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时,实现上述实施例中的一种面向多并发深度学习训练任务的数据缓存方法。
所述计算机可读存储介质可以是前述任一实施例所述的任意具备数据处理能力的设备的内部存储单元,例如硬盘或内存。所述计算机可读存储介质也可以是风力发电机的外部存储设备,例如所述设备上配备的插接式硬盘、智能存储卡(Smart Media Card,SMC)、SD卡、闪存卡(Flash Card)等。进一步的,所述计算机可读存储介质还可以既包括任意具备数据处理能力的设备的内部存储单元也包括外部存储设备。所述计算机可读存储介质用于存储所述计算机程序以及所述任意具备数据处理能力的设备所需的其他程序和数据,还可以用于暂时地存储已经输出或者将要输出的数据。
以上所述,仅为本发明的优选实施案例,并非对本发明做任何形式上的限制。虽然前文对本发明的实施过程进行了详细说明,对于熟悉本领域的人员来说,其依然可以对前述各实例记载的技术方案进行修改,或者对其中部分技术特征进行同等替换。凡在本发明精神和原则之内所做修改、同等替换等,均应包含在本发明的保护范围之内。
机译: 面向预读器的数据缓存的有效替换算法的方法和装置
机译: 使用基于类对象的锁继承在面向对象的数据库中并发的方法和装置
机译: 一种用于从包含对至少两个源的数据响应的同时源分离复合数据的方法,用于通过分集频率滤波器获取和分离同时源数据的装置,其中复合同时源数据包含对至少两个源的响应的设备以及系统数据处理通过不同的频率过滤分离并发源复合数据,其中,并发源复合数据包含对至少两个源的响应