CN112668673A - 数据预处理方法、装置、计算机设备及存储介质 - Google Patents

数据预处理方法、装置、计算机设备及存储介质 Download PDF

Info

Publication number
CN112668673A
CN112668673A CN202110281387.2A CN202110281387A CN112668673A CN 112668673 A CN112668673 A CN 112668673A CN 202110281387 A CN202110281387 A CN 202110281387A CN 112668673 A CN112668673 A CN 112668673A
Authority
CN
China
Prior art keywords
sample data
nodes
preprocessing
preprocessed
iteration step
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
Application number
CN202110281387.2A
Other languages
English (en)
Other versions
CN112668673B (zh
Inventor
朱文熙
衡建宇
邓民文
朱泓霖
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202110281387.2A priority Critical patent/CN112668673B/zh
Publication of CN112668673A publication Critical patent/CN112668673A/zh
Application granted granted Critical
Publication of CN112668673B publication Critical patent/CN112668673B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本申请关于一种数据预处理方法、装置、计算机设备及存储介质,涉及模型训练技术领域。所述方法包括:在包含至少两个节点的分布式模型训练系统中,获取待处理的样本数据集;基于样本数据集,以第一条件为约束,生成预处理计划;该预处理计划用于指示至少两个节点在各个迭代步中进行预处理的样本数据;基于预处理计划,指示至少两个节点通过各个迭代步对至少两个样本数据进行预处理,以在对应的迭代步中提供给对应的模型进行模型训练。通过上述方法,使得各个节点预处理样本数据的数据量相近,从而使得各个节点预处理样本数据的时间相近,尽可能的降低多个迭代步中各个节点进行样本数据预处理的总时间,提高系统的模型训练性能。

Description

数据预处理方法、装置、计算机设备及存储介质
技术领域
本申请涉及模型训练技术领域,特别涉及数据预处理方法、装置、计算机设备及存储介质。
背景技术
在模型训练过程中,为提高训练效果,在模型训练之前,会对样本数据进行数据预处理,比如,在计算机视觉领域,在进行模型训练之前,需要对图像样本进行增强处理。
在相关技术中,一般通过将需要进行预处理的样本数据平均分配给进行预处理的若干个节点,使得各个节点对同一样本数据集中的样本数据进行同步预处理。
然而,上述相关技术中,分配到各个节点中的样本数据存在随机性,由于各个样本数据的数据量大小存在一定的差异,导致各个节点预处理样本数据所需要的时间存在差异,使得样本数据的预处理效率相对较低。
发明内容
本申请实施例提供了一种数据预处理方法、装置、计算机设备及存储介质,可以在保证模型收敛性的基础上,提高样本数据预处理效率,进而提高分布式模型训练系统的训练性能,该技术方案如下。
一方面,提供了一种数据预处理方法,所述方法应用于分布式模型训练系统中,所述分布式模型训练系统包含至少两个节点,至少两个所述节点用于同步进行对样本数据的预处理,所述方法包括:
获取待处理的样本数据集;所述样本数据集中包含至少两个所述样本数据;
基于所述样本数据集,以第一条件为约束,生成预处理计划;所述预处理计划用于指示至少两个所述节点在各个迭代步中进行预处理的样本数据;所述第一条件包括:至少两个所述节点中的每个所述节点,在各个所述迭代步中的每个迭代步中预处理的样本数据满足第二条件,且至少两个所述节点通过各个所述迭代步对至少两个所述样本数据进行预处理的总时间最小;
基于所述预处理计划,指示至少两个所述节点通过各个所述迭代步对至少两个所述样本数据进行预处理;预处理后的所述样本数据用于在对应的所述迭代步中提供给对应的模型进行模型训练。
另一方面,提供了一种数据预处理装置,所述装置包括:
样本数据集获取模块,用于获取待处理的样本数据集;所述样本数据集中包含至少两个所述样本数据;
预处理计划生成模块,用于基于所述样本数据集,以第一条件为约束,生成预处理计划;所述预处理计划用于指示至少两个所述节点在各个迭代步中进行预处理的样本数据;所述第一条件包括:至少两个所述节点中的每个所述节点,在各个所述迭代步中的每个迭代步中预处理的样本数据满足第二条件,且至少两个所述节点通过各个所述迭代步对至少两个所述样本数据进行预处理的总时间最小;
数据预处理模块,用于基于所述预处理计划,指示至少两个所述节点通过各个所述迭代步对至少两个所述样本数据进行预处理;预处理后的所述样本数据用于在对应的所述迭代步中提供给对应的模型进行模型训练。
在一种可能的实现方式中,所述第二条件包括:
所述节点在当前迭代步中预处理的样本数据的数量,与所述节点已完成预处理且未被使用的样本数据的数量之和大于数量阈值;所述未被使用的样本数据是在所述当前迭代步之前未被提供给对应的模型进行模型训练的样本数据;
以及,所述节点在当前迭代步中预处理的样本数据的数据量,与所述节点已完成预处理且未被使用的样本数据的数据量之和不大于数据量阈值。
在一种可能的实现方式中,所述预处理计划生成模块,包括:
样本数据子集确定子模块,用于基于所述样本数据集,以所述第二条件为约束,确定各个所述迭代步分别对应的至少一个样本数据子集,所述样本数据子集用以指示在一个所述迭代步中,至少两个所述节点预处理的样本数据的集合;
样本数据确定子模块,用于基于各个所述迭代步分别对应的至少一个所述样本数据子集,以至少两个所述节点在各个所述迭代步进行预处理的总时间最小为约束,确定至少两个所述节点在各个所述迭代步中分别预处理的样本数据;
预处理计划生成子模块,用于基于至少两个所述节点在各个所述迭代步中分别预处理的样本数据,生成所述预处理计划。
在一种可能的实现方式中,所述样本数据子集确定子模块,包括:
数量值确定单元,用于基于所述第二条件以及前i-1个所述迭代步中至少两个所述节点已完成预处理且未被使用的样本数据,以及所述样本数据集,确定前i个所述迭代步对应的至少一个样本数据子集中所能包含的样本数据的数量最小值和数量最大值;
第一样本数据子集确定单元,用于基于所述数量最小值和所述数量最大值,确定前i个所述迭代步对应的至少一个样本数据子集;
第二样本子集确定单元,用于基于前i个所述迭代步对应的至少一个样本数据子集,以及前i-1个所述迭代步对应的至少一个样本数据子集,确定第i个所述迭代步对应的至少一个样本数据子集,第i个所述迭代步是各个所述迭代步中的任意一个。
在一种可能的实现方式中,所述数量值确定单元,包括:
数量最小值确定子单元,用于基于所述第二条件中的所述数量阈值,以及所述节点的数量,确定前i个所述迭代步对应的至少一个样本数据子集中所能包含的样本数据的所述数量最小值;
数量最大值确定单元,用于基于所述第二条件中的所述数据量阈值,所述数量最小值以及前i-1个所述迭代步中至少两个所述节点已完成预处理且未被使用的样本数据,确定前i个所述迭代步对应的至少一个样本数据子集中所能包含的样本数据的所述数量最大值。
在一种可能的实现方式中,数量最大值确定单元,用于按照指定步长,对所述数量最小值进行增大调节,直至将基于调节后的数据数量获取的第i个迭代步对应的样本数据子集分配给至少两个所述节点后,至少两个所述节点对应的缓冲区内的样本数据的数据量均大于所述数据量阈值时,获取前一次增大调节后的数据数量作为所述数量最大值;
其中,所述节点对应的缓冲区内的样本数据,包括第i个所述迭代步中所述节点所需预处理的样本数据,以及前i-1个所述迭代步中所述节点已完成预处理且未被使用的样本数据。
在一种可能的实现方式中,所述样本数据确定子模块,包括:
样本数据分配单元,用于基于第i个所述迭代步对应的第一样本数据子集,通过贪心算法,将所述第一样本数据子集中的样本数据分配给至少两个所述节点,所述第一样本数据子集是至少一个所述样本数据子集中的任意一个;所述贪心算法用以按照指定顺序依次对所述第一样本数据子集中的样本数据进行逐个分配,并将当前待分配的样本数据分配给所述至少两个节点中当前负载最低的节点,以使得所述至少两个所述节点在第i个所述迭代步进行预处理的总时间最小;第i个所述迭代步是各个所述迭代步中的任意一个;
样本数据确定单元,用于基于所述贪心算法对所述第一样本数据子集的分配结果,确定至少两个所述节点在第i个所述迭代步中分别预处理的样本数据。
在一种可能的实现方式中,所述装置还包括:
排序模块,用于在基于第i个所述迭代步对应的第一样本数据子集,通过贪心算法,将所述第一样本数据子集中的样本数据分配给所述至少两个节点之前,按照数据量由大到小的顺序,对所述第一样本数据子集中的样本数据进行排序;
所述样本数据分配单元,用于通过贪心算法,将排序后的所述第一样本数据子集中的样本数据分配给至少两个所述节点。
在一种可能实现的方式中,至少两个所述节点在各个所述迭代步进行预处理的总时间是指在各个所述迭代步中,预处理时间最长的所述节点对应的预处理时间之和;各个所述节点的预处理时间与分配给各个节点的样本数据的数据量成正比。
在一种可能实现的方式中,所述装置还包括:
样本数据输入模块,用于响应于一个迭代步中,至少两个所述节点对样本数据进行预处理的过程结束,将至少两个所述各个节点预处理完成的样本数据中指定数量的所述样本数据输入到待训练网络中,以进行模型训练。
在一种可能实现的方式中,所述样本数据集获取模块,用于对原始样本数据集进行随机打乱,获得待处理的所述样本数据集。
在一种可能实现的方式中,所述贪心算法为4/3近似算法。
另一方面,提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储由至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现上述数据预处理方法。
另一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条计算机程序,所述计算机程序由处理器加载并执行以实现上述数据预处理方法。
另一方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各种可选实现方式中提供的数据预处理方法。
本申请提供的技术方案可以包括以下有益效果:
通过在进行模型训练之前,先基于待处理的样本数据集,以第一条件为约束,生成预处理计划,再基于该预处理计划对样本数据集进行预处理,之后将预处理后的样本数据集提供给对应的模型进行模型训练,其中,该预处理计划用以指示同步进行数据预处理的至少两个节点在各个迭代步中分别所需预处理的样本数据,以达到各个节点预处理样本数据的数据量相近,从而使得各个节点在预处理样本数据时所需的时间相近,尽可能的降低多个迭代步中各个节点进行样本数据预处理的总时间,实现对运算资源的合理分配,提高系统的模型训练性能。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
图1示出了本申请一示例性实施例提供的分布式模型训练系统的示意图;
图2示出了本申请一示例性实施例提供的数据预处理方法的流程图;
图3示出了本申请一示例性实施例提供的数据预处理方法的流程图;
图4示出了本申请一示例性实施例提供的各个迭代步进行样本数据子集确定的示意图;
图5示出了本申请一示例性实施例提供的数据预处理方法的示意图;
图6示出了本申请一示例性实施例提供的一种数据预处理装置的方框图;
图7示出了本申请一示例性实施例示出的计算机设备的结构框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
应当理解的是,在本文中提及的“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
本申请实施例提供了一种数据预处理方法,可以提高图像描述信息生成的准确性。为了便于理解,下面对本申请涉及的几个名词进行解释。
1)DNN(Deep Neural Networks,深度神经网络)
深度神经网络是一种具备至少一个隐层的神经网络。与浅层神经网络类似,深度神经网络也能够为复杂非线性系统提供建模,但多出的层次为模型提供了更高的抽象层次,因而提高了模型的能力。深度神经网络通常都是前馈神经网络,但也有语言建模等方面的研究将其拓展到递归神经网络。
2)同步随机梯度下降算法(Synchronous Stochastic Gradient Descent,Synchronous SGD)
同步SGD是指利用对个GPU(Graphics Processing Unit,处理器)或机器以完全相同的代码处理其在mini-batch(小批量)中分得的数据。在mini-batch之间对每个GPU的梯度求均值,并且每个GPU以完全相同的方式执行参数更新。在任何时间点上,参数在每个GPU上具有相同的值。同步SGD的另一种理解是它允许增加mini-batch大小。使用8个GPU,每卡运行批量为32,相当于一个GPU运行256大小的mini-batch。
多机分布训练可以大大缩短神经网络的训练时间,典型场景可以从几个月/天缩短至几小时/分钟级别,且目前大多数分布式训练都使用同步SGD方法,以利用同步SGD方法在复用单机训练的超参数的特点,使得模型达到较好的收敛性,同步SGD训练过程如下:
1.每个训练epoch(时期)开始前样本数据会被随机shuffle(打乱)并分给不同的节点;
2.在同一个step(迭代步)中,每个节点加载各自的样本数据,进行样本数据预处理,将预处理完成的样本数据输入到神经网络里,计算梯度;
3.之后,在节点之间同步梯度并更新参数,之后进入下一个step训练。
3)分布式训练
神经网络的分布式训练可以通过两种方式实现:数据并行化和模型并行化。数据并行化的目标是将数据集均等地分配到系统的各个节点(node),其中每个节点都有该神经网络的一个副本及其本地的权重,每个节点都会处理该数据集的一个不同子集并更新其本地权重集,这些本地权重会在整个集群中共享,从而通过累积算法计算出一个全新的全局权重集,这个全局权重集又会被分配给所有节点,之后,所有节点在此基础上处理下一批数据;模型并行化则是通过将该模型的架构切分到不同的节点上实现训练的分布化。
本申请实施例是基于数据并行化实现对神经网络的分布式训练的。
4)人工智能(Artificial Intelligence,AI)
人工智能是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。换句话说,人工智能是计算机科学的一个综合技术,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器。人工智能也就是研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。
人工智能技术是一门综合学科,涉及领域广泛,既有硬件层面的技术也有软件层面的技术。人工智能基础技术一般包括如传感器、专用人工智能芯片、云计算、分布式存储、大数据处理技术、操作/交互系统、机电一体化等技术。人工智能软件技术主要包括计算机视觉技术、语音处理技术、自然语言处理技术以及机器学习/深度学习等几大方向。本申请所示的包含图像采集组件的显示设备主要涉及其中的计算机视觉技术以及机器学习/深度学习等方向。
5)机器学习(Machine Learning,ML)
机器学习是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。机器学习是人工智能的核心,是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。机器学习和深度学习通常包括人工神经网络、置信网络、强化学习、迁移学习、归纳学习、示教学习等技术。
请参考图1,其示出了本申请一示例性实施例提供的分布式模型训练系统的示意图,如图1所示,该系统包括至少两个服务器110。
其中,上述服务器110可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(Content Delivery Network,内容分发网络)、以及大数据和人工智能平台等基础云计算服务的云服务器。
该至少两个服务器之间通过通信网络相连,以进行梯度共享和参数更新。可选的,该通信网络是有线网络或无线网络。
可选的,上述的无线网络或有线网络使用标准通信技术和/或协议。网络通常为因特网、但也可以是任何网络,包括但不限于局域网(Local Area Network,LAN)、城域网(Metropolitan Area Network,MAN)、广域网(Wide Area Network,WAN)、移动、有线或者无线网络、专用网络或者虚拟专用网络的任何组合。在一些实施例中,使用包括超文本标记语言(Hyper Text Mark-up Language,HTML)、可扩展标记语言(Extensible MarkupLanguage,XML)等的技术和/或格式来代表通过网络交换的数据。此外还可以使用诸如安全套接字层(Secure Socket Layer,SSL)、传输层安全(Transport Layer Security,TLS)、虚拟专用网络(Virtual Private Network,VPN)、网际协议安全(Internet ProtocolSecurity,IPsec)等常规加密技术来加密所有或者一些链路。在另一些实施例中,还可以使用定制和/或专用数据通信技术取代或者补充上述数据通信技术。本申请在此不做限制。
图2示出了本申请一示例性实施例提供的数据预处理方法的流程图,该方法可以应用于分布式模型训练系统中,该分布式模型训练系统包含至少两个节点,该至少两个节点用于同步进行对样本数据的预处理,其中,该分布式模型训练系统中的节点可以为计算机设备,该计算机设备可以实现为服务器,如图2所示,该数据预处理方法包括以下步骤。
步骤210,获取待处理的样本数据集;该样本数据集中包含至少两个样本数据。
其中,该样本数据集中的至少两个样本数据是未经过处理的原始样本数据,可选的,各个样本数据的数据量之间存差异,比如,在进行计算机视觉相关的模型训练时,用于进行训练的原始样本数据为原始图像样本,由于各个图像样本的分辨率不同,从而导致各个图像样本的大小,即各个图像样本的数据量不同。
步骤220,基于样本数据集,以第一条件为约束,生成预处理计划;该预处理计划用于指示至少两个节点在各个迭代步中进行预处理的样本数据;该第一条件包括:至少两个节点中的每个节点,在各个迭代步中的每个迭代步中预处理的样本数据满足第二条件,且至少两个节点通过各个迭代步对至少两个样本数据进行预处理的总时间最小。
在一种可能的实现方式中,该预处理计划通过指示至少两个节点在各个迭代步中所需预处理的样本数据的数量以及至少两个节点在各个迭代步中所需预处理的样本数据的位置坐标,指示各个节点在各个迭代步中所需进行处理的样本数据,该位置坐标用以指示样本数据在该样本数据集对应的样本数据序列中的位置;比如,在第一迭代步中,第一节点需要处理两个样本数据,示意性的,这两个样本数据分别为位置坐标为1的样本数据和位置坐标为5的样本数据,第二节点需要处理三个样本数据,示意性的,这两个样本数据分别为位置坐标为3和位置坐标为4以及位置坐标为2的样本数据,由于样本数据集对应的样本数据序列中,各个样本数据的位置是固定的,通过预处理计划中指定的各个节点要处理的样本数据的数量以及位置坐标,可以确定各个节点所要处理的样本数据。
在本申请中,通过第一条件对预处理计划的生成进行约束,以保证在同一个迭代步中,各个节点所要处理的样本数据的数据量相近,进而保证在同一轮迭代中各个节点在处理样本数据时所需要的时间长度相近,实现运算资源的合理分配。
步骤230,基于预处理计划,指示至少两个节点通过各个迭代步对至少两个样本数据进行预处理;预处理后的样本数据用于在对应的迭代步中提供给对应的模型进行模型训练。
在生成预处理计划之后,在对样本数据进行预处理时,可以直接按照预处理计划指示的各个节点在各个迭代步中需要预处理的样本数据,将对应的样本数据直接分配给对应的节点,以使得至少两个节点同步对至少两个样本数据中各自对应的样本数据进行预处理,以减少在进行样本数据预处理时所需的预处理时间。
其中,当样本数据为图像样本数据时,对样本数据的预处理可以是对图像样本数据的数据准备和数据增强处理,或者对样本数据的预处理可以包括对应于当前训练模型需求的其他预处理步骤,本申请对预处理的方式和样本数据的类型不进行限制。
综上所述,本申请实施例提供的数据预处理方法,通过在进行模型训练之前,先基于待处理的样本数据集,以第一条件为约束,生成预处理计划,再基于该预处理计划对样本数据集进行预处理,之后将预处理后的样本数据集提供给对应的模型进行模型训练,其中,该预处理计划用以指示同步进行数据预处理的至少两个节点在各个迭代步中分别所需预处理的样本数据,以达到各个节点预处理样本数据的数据量相近,从而使得各个节点在预处理样本数据时所需的时间长度相近,尽可能的降低多个迭代步中各个节点进行样本数据预处理的总时间,实现对运算资源的合理分配,提高系统的模型训练性能。
在一种可能的实现方式中,本申请所公开的数据预处理方法可以基于区块链实现。
比如,本申请所公开的数据预处理方法中,待处理的样本数据集,以及基于该样本数据集生成的预处理计划可以保存于区块链上;示意性的,本申请分布式模型训练系统包含的至少两个节点中均存储有相同的待处理的样本数据集,其中,各个节点中存储的待处理的样本数据集是从同一区块链中获取的样本数据集;在基于待处理的样本数据集,以第一条件为约束生成预处理计划之后,分布式模型训练系统将该预处理计划上传并保存到区块链中,之后,分布式模型训练系统中的各个节点,基于从区块链中获取到的预处理计划,在各个迭代步中对对应的样本数据进行预处理。通过从区块链中获取待处理的样本数据集,以及将生成的预处理计划存储到区块链中,使得各个节点获取该预处理计划,保证了各个节点获取到的待处理的样本数据集以及预处理计划的一致性。
示意性的,本申请实施例所述的方案可以应用于样本数据的数据量大小存在差异的模型训练场景中,比如:图像分类和物体检测模型训练场景;
在计算机视觉领域,数据预处理通常包括数据准备和数据增强;在图像分类和物体检测模型训练场景中,由于模型中包含全连接层(Full-connected Layers),因此在将训练数据集用作模型输入前,需要对训练数据集中包含的图像样本进行预处理,比如,调整图像样本的大小,因此,数据准备阶段包括图像解码,比如JPEG(Joint PhotographicExperts Group,联合图像专家组)图像解码,以及图像缩放。而数据增强则通过增加训练样本的数量以及多样性,以提升模型的鲁棒性,比如在数据准备阶段之后,对图像样本进行水平翻转,调整亮度和对比度等数据扩充方法。
由于不同的图像样本具有不同的分辨率,使得不同图像样本的大小存在差异,往往会有10到100倍的差别,且预处理图像样本所需的时间与图像样本的大小近似呈正比,因此,在预处理过程中,当不同节点分配到的图像样本的大小相差特别大时,会出现不同节点之间执行速度差别很大的情况,使得执行快的节点需要等待执行慢的节点同步梯度,从而导致运算资源闲置,系统整体性能下降。通过本申请提供的数据预处理方法,使得各个节点在各个迭代步所需预处理的图像样本的数据量大致相同,处理图像样本所需的时间大致相同,实现对运算资源的合理利用,提高系统的整体训练性能。
图3示出了本申请一示例性实施例提供的数据预处理方法的流程图,该方法可以应用于分布式模型训练系统中,该分布式模型训练系统包含至少两个节点,该至少两个节点用于同步进行对样本数据的预处理,其中,该分布式模型训练系统中的节点可以为计算机设备,该计算机设备可以实现为服务器,如图3所示,该数据预处理方法包括以下步骤。
步骤310,获取待处理的样本数据集;该样本数据集中包含至少两个样本数据。
为了增加模型收敛性和提高模型在测试集上的精确度,在模型训练的过程中,往往通过多次对样本数据集进行随机shuffle(打乱),来减少模型训练时的过拟合,因此,该待处理的样本数据集可以是基于对原始样本数据集进行随机打乱后获得的样本数据集,也就是说,该步骤可以实现为:
对原始样本数据集进行随机打乱,获得待处理的样本数据集。在模型训练过程中,同一Epoch(时期)对应的待处理的样本数据集中的数据序列保持一致,当进入新的Epoch时,需要对样本数据集进行重新随机shuffle。
步骤320,基于样本数据集,以第二条件为约束,确定各个迭代步分别对应的至少一个样本数据子集,该样本数据子集用以指示在一个迭代步中,至少两个节点预处理的样本数据的集合。
以一个迭代步为例,该迭代步对应的各个样本数据子集均为样本数据集中的一部分,且该迭代步对应的样本数据子集中的样本数据是至少两个节点在该迭代步中所需预处理的样本数据的总和。
在本申请实施例中,存在如下基本假设。
1)节点预处理每个样本数据所对应的预处理时间和样本数据的数据量(bytes)呈正比。
样本数据的数据量越小,节点预处理样本数据所需的预处理时间越短,样本数据的数据量越大,节点预处理样本数据所需的预处理时间越长。
2)每个迭代步中,每个节点需要向待训练网络提供至少N个预处理完成的样本数据,N为正整数,即N为本申请中的数量阈值。
3)每个节点对应的预处理数据的缓冲区域大小是有限的,该缓冲区域的大小即为各个节点数据量阈值。
4)在第k个迭代步开始时,节点j的缓冲区域中存储有在k-1迭代步中预处理完成RC(j,k)个的数据样本,大小为S(j,k)bytes;在第k个迭代步中,节点j至少需预处理SC(j,k)个样本,大小为R(j,k)bytes,以保证在已存储有RC(j,k)个的数据样本的基础上,在第k个迭代步结束时,总共有至少N个样本被预处理好。
基于上述基本假设,该第二条件包括:节点在当前迭代步中预处理的样本数据的数量,与节点已完成预处理且未被使用的样本数据的数量之和大于数量阈值;未被使用的样本数据是在当前迭代步之前未被提供给对应的模型进行模型训练的样本数据;
以及,节点在当前迭代步中预处理的样本数据的数据量,与节点已完成预处理且未被使用的样本数据的数据量之和不大于数据量阈值。
示意性的,该第二条件表示为:
minimizeΣR,s.t.max(Rjk+Sjk)≤B,RCjk+SCjk≥N
其中,RCjk表示节点j在进入第k个迭代步时缓冲区已存储的已经预处理好的样本数据的个数,Sjk表示节点j在进入第k个迭代步时缓冲区已存储的已经预处理好的样本数据的数据量大小;SCjk表示节点j在第k个迭代步中需要预处理的样本数据的个数,Rjk表示节点j在第k个迭代步中需要预处理的样本数据的数据量大小。
在本申请实施例中,由于各个迭代步中所需预处理的样本数据的数量不确定,为了实现对样本数据集中的样本数据的合理分配,首先,需要对各个迭代步中可能需要预处理的样本数据的集合进行确定,即确定各个迭代步分别对应的至少一个样本数据子集,该至少一个样本数据子集是在符合第二条件的基础上,在各个可能的情况下,各个迭代步需要预处理的样本数据的集合。
在一种可能的实现方式中,上述基于样本数据集,以第二条件为约束,确定各个迭代步分别对应的至少一个样本数据子集的过程可以实现为:
S321,基于第二条件以及前i-1个迭代步中节点已完成预处理且未被使用的样本数据,以及样本数据集,确定前i个迭代步对应的至少一个样本数据子集中所能包含的样本数据的数量最小值和数量最大值。
基于本申请实施例中的基本假设,可以得知在进行数据预处理的过程中,需要保证在每个迭代步中,每个节点需要提供至少N个样本给待训练网络,以进行模型训练和同步梯度,将分布式模型训练系统中节点的数量记为M,预设的迭代轮次记为L,那么,在一个迭代轮次中,各个节点所需预处理的样本数据的总个数至少为M*N,而在前i个轮迭代中,各个节点所需预处理的样本数据的总个数至少为M*N*i,其中0≤i≤L。
也就是说,可以基于第二条件中的数量阈值,以及节点的数量,确定前i个迭代步对应的至少一个样本数据子集中所能包含的样本数据的数量最小值。
而前i个迭代步对应的至少一个样本数据子集所能包含的样本数据的数量最大值则与数据量阈值(B)以及前i-1个迭代步中节点已完成预处理且未被使用的样本数据有关,基于本申请的基本假设可以得出,在各个迭代步中,各个节点所能缓冲的样本数据的最大数据量不能超过该数据量阈值,各个节点缓冲的样本数据包括各个节点在对应迭代步中预处理的样本数据以及各个节点在对应迭代步的上一个迭代步中已完成预处理且未被使用的样本数据,因此,确定前i个迭代步对应的至少一个样本数据子集所能包含的样本数据的数量最大值的过程可以实现为:
基于第二条件中的数据量阈值,数量最小值以及前i-1个迭代步中至少两个节点已完成预处理且未被使用的样本数据,确定前i个迭代步对应的至少一个样本数据子集中所能包含的样本数据的数量最大值。
在一种可能的实现方式中,该过程实现为按照指定步长,对数量最小值进行增大调节,直至将基于调节后的数据数量获取的第i个迭代步对应的样本数据子集分配给至少两个节点后,至少两个节点对应的缓冲区内的样本数据的数据量均大于数据量阈值时,获取前一次增大调节后的数据数量作为数量最大值。
其中,节点对应的缓冲区内的样本数据,包括第i个迭代步中节点所需预处理的样本数据,以及前i-1个迭代步中节点已完成预处理且未被使用的样本数据。
其中,该指定步长的取值可以由相关人员进行设置;示意性的,基于节点数,数量阈值以及迭代步数确定的数量最小值为M*N*i,指定步长为a,在前i个迭代步中,对应的样本数据子集中所能包含的样本数据的数量可以是M*N*i,M*N*i+a,M*N*i+2a等等,直至当取值为M*N*i+na个样本数据时确定的第i个迭代步对应的样本数据子集中的样本数据被分配给各个节点之后,各个节点的缓冲区中的样本数据的数据量均已达到数据量阈值,但样本数据子集中仍存在未被分配的样本数据,或者,在将样本数据子集中的样本数据分配给各个节点之后,各个节点中对应的缓冲区内的样本数据的数据量均超过数据量阈值,则表示当前样本数据子集无效,确定第M*N*i+(n-1)a为前i个迭代步对应的至少一个样本数据子集中所能包含的样本数据的数量最大值,也就是说,在将基于调节后的数据数量获取的第i个迭代步对应的样本数据子集分配给各个节点后,各个节点对应的缓冲区内的样本数据的数据量均大于数据量阈值时,获取前一次增大调节后的数据数量作为数量最大值。
S322,基于数量最小值和数量最大值,确定前i个迭代步对应的至少一个样本数据子集。
在一种可能的实现方式中,在确定前i个迭代步对应的至少一个样本数据子集中的样本数据的数量最小值和数量最大值的前提下,由于样本数据集的样本数据序列固定,因此,可以按照指定步长,获取从数量最小值到数量最大值区间范围的样本数据构成的至少一个样本数据集合,比如,数据量最小值为4,数据量最大值为10,指定步长为2,则可以分别获取包含4个样本数据的样本数据集合,包含6个样本数据的样本数据集合,包含7个样本数据的样本数据集合以及包含10个样本数据的样本数据集合共4个样本数据集合,由于在获取样本数据时,是按照样本数据序列从前向后的顺序进行样本数据获取的,因此,存在于数据数量个数最小的集合中的样本数据,在各个样本数据集合中相同,比如,上述4个样本数据集合中的前4个样本数据相同。
S323,基于前i个迭代步对应的至少一个样本数据子集,以及前i-1个迭代步对应的至少一个样本数据子集,确定第i个迭代步对应的至少一个样本数据子集,第i个迭代步是各个迭代步中的任意一个。
也就是说,第i个迭代步对应的样本数据子集中的样本数据是前i个迭代步对应的样本数据子集与前i-1个迭代步对应的样本数据子集的差集,由于前i个迭代步可以对应有多个样本数据子集,前i-1个迭代步也可以对应有多个样本数据子集,因此,第i个迭代步对应的样本数据子集不唯一。
示意性的,假设前i-1个迭代步对应的样本数据子集的个数为a,前i个迭代步对应的样本数据子集的个数为b,那么第i个迭代步对应的样本数据子集的可能个数为a*b;比如,假设前i-1个迭代步对应有3个样本数据子集,前i个迭代步对应有4个样本数据子集,那么对应于第i个迭代步的4个样本数据子集存在12中可能情况,图4示出了本申请一示例性实施例提供的各个迭代步进行样本数据子集确定的示意图,如图4所示,假设前2个迭代步(前i-1个迭代步)中确定的样本数据子集中分别包含8、9、10个样本数据,前3个迭代步(前i个迭代步)对应的4个样本数据子集中分别包含12、13、14、15个样本数据,那么对于第3个迭代步而言,当前3个迭代步对应的样本数据子集中包含12个样本数据时,第3个迭代步对应的样本数据子集中可能包含4、3、2个样本数据,当前3个迭代步对应的样本数据子集中包含13个样本数据时,第3个迭代步对应的样本数据子集中可能包含5、4、3个样本数据,当前3个迭代步对应的样本数据子集中包含14个样本数据时,第3个节点对应的样本数据子集中可能包含6、5、4个样本数据,且各个样本数据子集不同,在此情况下,需要基于各个迭代步处理完样本数据子集中的样本数据所用时间最小的原则,确定前i个节点对应的样本数据子集中的数量为指定数量时,第i个迭代步所要处理的样本数据,比如,前3个迭代步对应的样本数据子集中包含12个样本数据,分别计算第3个迭代步对应的样本数据子集中包含4、3、2个样本数据时,处理完各个样本数据子集中的样本数据,前3迭代步所需的总预处理时间,获取其中最小的一个为前3个迭代步预处理12个样本数据所需的最小预处理时间,更新DP(前i个迭代步处理共完j个样本所需的最小预处理时间)。
步骤330,基于各个迭代步分别对应的至少一个样本数据子集,以至少两个节点在各个迭代步进行预处理的总时间最小为约束,确定至少两个节点在各个迭代步中分别预处理的样本数据。
至少两个节点在各个迭代步进行预处理的总时间为至少两个节点在每个迭代步中进行预处理的时间之和,其中,至少两个节点在各个迭代步进行预处理的总时间是指在各个迭代步中,预处理时间最长的节点对应的预处理时间之和;各个节点的预处理时间与分配给各个节点的样本数据的数据量成正比。
也就是说,在某一分配方式下,第i个迭代步中各个节点的预处理时间是指,在当前分配方式下,所有节点中预处理时间最长的节点对应的预处理时间。比如,在一种分配方式中,第二个迭代步中,第一节点对应的预处理时间为3s,第二节点对应的预处理时间为5s,第三节点对应的预处理时间为4s,那么在该分配方式中,第二个迭代步预处理样本数据所需要的时间为5s。
在一种可能的是实现方式中,为使得至少两个节点在各个迭代步进行预处理的总时间最小,在各个迭代步中,通过贪心算法对对应迭代步中对应的至少一个样本数据子集中的样本数据进行分配,以至少一个样本数据子集中的任意一个样本数据子集为例:
基于第i个迭代步对应的第一样本数据子集,通过贪心算法,将第一样本数据子集中的样本数据分配给至少两个节点,该第一样本数据子集是至少一个样本数据子集中的任意一个;该贪心算法用以按照指定顺序依次对第一样本数据子集中的样本数据进行逐个分配,并将当前待分配的样本数据分配给至少两个节点中当前负载最低的节点,以使得至少两个节点在第i个迭代步进行预处理的总时间最小;第i个迭代步是各个迭代步中的任意一个;
基于贪心算法对第一样本数据子集的分配结果,确定至少两个节点在第i个迭代步中分别预处理的样本数据。
其中,响应于当前负载最低的节点存在多个,通过随机分配的方式将当前需要分配的样本数据分配给负载最低的节点中的任意一个,比如,模型训练系统中包含3个节点,在尚未进行样本数据分配时,各个节点中的负载均为0,在分配第一个样本数据时,可以随机将其分配给3个节点中的任意一个,比如分配给节点2,那么在分配下一个样本数据时,则在节点1以及节点3之间随机分配。
使用贪心算法按照指定顺序对第一样本数据子集中的样本数据依次进行分配,可以保证各个节点的负载(所需处理的样本数据的数据量)相近,各个节点预处理完对应的样本数据所需要的时间相近,从而使得运算资源分配合理。
在一种可能的实现方式中,该贪心算法为4/3近似算法(4/3-ApproximationAlgorithm);利用该贪心算法可以使得计算所得的总时间最差为最优解的4/3倍。
在一种可能的实现方式中,为进一步使得各个节点的负载相近,在基于各个迭代步对应的目标样本数据子集,通过贪心算法将目标样本数据子集中的样本数据分配给至少两个节点之前,按照数据量由大到小的顺序,对第一样本数据子集中的样本数据进行排序;之后,通过贪心算法,将排序后的第一样本数据子集中的样本数据分配给至少两个节点。
步骤340,基于至少两个节点在各个迭代步中分别预处理的样本数据,生成预处理计划。
在一种可能的实现方式中,该预处理计划(也就是确定各个迭代步对应的目标样本数据子集,以及目标样本数据子集在各个节点中的分配方式)可以在模型训练开始前生成,或者,该预处理计划可以在模型训练过程中生成,也就是说,该预处理计划可以离线生成,或者,也可以在线生成。
当预处理计划表为离线生成时,计算机设备可以通过离线模拟获得理论上随机shuffle后的数据集序列,从而根据随机shuffle后的数据集序列生成预处理计划表;需要说明的是,当预处理计划表是基于理论上随机shuffle后的数据集序列生成时,在训练过程中,需使得实际随机shuffle的数据集序列与理论上shuffle后的数据集序列保持一致,以使得生成的预处理计划表与随机shuffle的数据集序列相对应;也就是说,一个随机shuffle后的数据集序列对应一个预处理计划表。
其中,在离线生成预处理计划表时,可以通过离线模拟获得多个随机shuffle后的数据集序列,并生成多个对应的预处理计划表。
当预处理计划表为在线生成时,计算机设备可以实时根据实际随机shuffle后的数据集序列生成预处理计划表。
为保证各个节点中shuffle的数据集序列保持一致,在一种可能的实现方式中,在主节点中生成随机数种子,并将该随机数种子广播给所有节点,以使得各个节点都依据同一个随机数种子对样本数据集进行打乱,从而使得各个节点中随机shuffle的数据集序列保持一致。
步骤350,基于预处理计划,指示至少两个节点通过各个迭代步对至少两个样本数据进行预处理;预处理后的样本数据用于在对应的迭代步中提供给对应的模型进行模型训练。
本申请的应用场景为分布式模型训练的场景,因此,在各个迭代步中对赝本数据的预处理过程结束之后,各个节点即可将预处理结束后的指定数量的样本数据输入到待训练网络中,进行模型训练,也就是说,响应于一个迭代步中,至少两个节点对样本数据进行预处理的过程结束,将至少两个各个节点预处理完成的样本数据中指定数量的样本数据输入到待训练网络中,以进行模型训练。
在一种可能的实现方式中,各个节点中均存储有相同的待训练网络;
响应于各个迭代步预处理样本数据的过程结束,将各个迭代步中各个节点预处理完成的数据样本中,指定数量的样本数据输入到对应于各个节点对应的待训练网络中,计算梯度;
同步各个节点之间的梯度,对各个节点对应的待训练网络进行参数更新,以进行模型训练。
也就是说,响应于一个迭代步中,各个节点预处理样本数据的过程均已结束,按照各个节点需要在每个迭代步中需要输入到对应的待训练网络中的预处理样本数据的指定数量,将各个节点中预处理完的样本数据中指定数量的样本数据输入到对应的待训练网络中,以使得待训练网络基于对应节点当前迭代步输入的样本数据计算梯度,之后,对当前迭代步中各个节点计算所得的梯度进行同步,对各个节点对应的待训练网络中的参数进行同步更新,以在实现模型训练的基础上,保证了模型训练的准确性,同时,也能够减少模型训练所需要的时间。
在一种可能的实现方式中,按照预处理完的样本数据的先后顺序,将各个节点预处理完的样本数据中前指定数量的样本数据输入到对应的待训练网络中。
综上所述,本申请实施例提供的数据预处理方法,通过在进行模型训练之前,先基于待处理的样本数据集,以第一条件为约束,生成预处理计划,再基于该预处理计划对样本数据集进行预处理,之后将预处理后的样本数据集提供给对应的模型进行模型训练,其中,该预处理计划用以指示同步进行数据预处理的至少两个节点在各个迭代步中分别所需预处理的样本数据,以达到各个节点预处理样本数据的数据量相近,尽可能的降低多个迭代步中各个节点进行样本数据预处理的总时间,从而使得各个节点在预处理样本数据时所需的时间相近,实现对运算资源的合理分配,提高系统的模型训练性能。
以该数据预处理方法中涉及的待训练网络为基于DNN构建的模型,且该预处理计划为在线生成的为例,图5示出了本申请一示例性实施例提供的数据预处理方法的示意图,如图5所示,该方法包括以下步骤。
步骤510,主节点生成随机数种子,并将随机数种子广播给所有节点。
其中,主节点是各个节点中的任意一个节点。
步骤520,各个节点判断是否已达到最大时期数量,若是,则结束训练,否则执行步骤530。
步骤530,各个节点依据该随机数种子随机打乱样本数据集。
在所有节点中均存储有样本数据集,为避免训练获得的模型出现过拟合,需要在各个节点中对样本数据集进行随机打乱,为了保证各个节点中打乱后的样本数据序列一致,各个节点依据随机数种子对样本数据集进行随机打乱。
步骤540,主节点计算最佳的预处理计划,并将该预处理计划广播给所有节点。
在本申请实施例中,通过动态规划的方式进行预处理计划的计算,示意性的,令DP[i,j]表示前i轮迭代共处理j个样本数据,并在各轮迭代中各个节点中的样本数据均符合max(Rjk+Sjk) ≤B,RCjk+SCjk≥N条件的最小总时间,各个节点维护此状态下各节点的RC和S,即各节点当前保存的样本数量及其样本数据量。对于第1轮迭代,枚举该轮要处理的至少一个样本数据集合中样本数据,使用贪心算法求出符合条件的各个样本数据集合对应的最小总时间,并维护RC和S。对于之后的每轮迭代,枚举本轮要处理的至少一个样本数据集合中的样本数据,再枚举之前已预处理完成但未被使用的样本数据,根据DP维护的最小总时间,RC和S,使用贪心算法求出当前轮次符合条件的各个样本数据集合的最小总时间,并在前i轮迭代处理相同数量的样本数据的情况下,根据在各个迭代轮次中的不同样本数据分配方案,根据各个分配方案中的最小总时间更新DP中的状态。处理完所有迭代后,DP[L,N*M*L]记录的即为L轮迭代完成需要的最小总时间。基于该最小总时间对应的各个迭代轮次中各个节点预处理的样本数据,生成预处理计划。
步骤550,各个节点判断当前时期是否训练结束,若是,则返回步骤520,否则,执行步骤560。
步骤560,各个节点根据预处理计划,加载并预处理样本数据。
步骤570,各个节点基于预处理数据进行模型训练,之后返回步骤550。
其中,各个节点分别对应一个神经网络,各个节点将各自预处理完的数据中指定数量的样本数据输入到对应的神经网络里,计算梯度;之后,在节点之间同步梯度并更新参数,以对模型进行训练。
图6示出了本申请一示例性实施例提供的一种数据预处理装置的方框图,该装置应用于分布式模型训练系统中,该分布式模型训练系统包含至少两个节点,至少两个节点用于同步进行对样本数据的预处理;如图6所示,该装置包括:
样本数据集获取模块610,用于获取待处理的样本数据集;所述样本数据集中包含至少两个所述样本数据;
预处理计划生成模块620,用于基于所述样本数据集,以第一条件为约束,生成预处理计划;所述预处理计划用于指示至少两个所述节点在各个迭代步中进行预处理的样本数据;所述第一条件包括:至少两个所述节点中的每个所述节点,在各个所述迭代步中的每个迭代步中预处理的样本数据满足第二条件,且至少两个所述节点通过各个所述迭代步对至少两个所述样本数据进行预处理的总时间最小;
数据预处理模块630,用于基于所述预处理计划,指示至少两个所述节点通过各个所述迭代步对至少两个所述样本数据进行预处理;预处理后的所述样本数据用于在对应的所述迭代步中提供给对应的模型进行模型训练。
在一种可能的实现方式中,所述第二条件包括:
所述节点在当前迭代步中预处理的样本数据的数量,与所述节点已完成预处理且未被使用的样本数据的数量之和大于数量阈值;所述未被使用的样本数据是在所述当前迭代步之前未被提供给对应的模型进行模型训练的样本数据;
以及,所述节点在当前迭代步中预处理的样本数据的数据量,与所述节点已完成预处理且未被使用的样本数据的数据量之和不大于数据量阈值。
在一种可能的实现方式中,所述预处理计划生成模块620,包括:
样本数据子集确定子模块,用于基于所述样本数据集,以所述第二条件为约束,确定各个所述迭代步分别对应的至少一个样本数据子集,所述样本数据子集用以指示在一个所述迭代步中,至少两个所述节点预处理的样本数据的集合;
样本数据确定子模块,用于基于各个所述迭代步分别对应的至少一个所述样本数据子集,以至少两个所述节点在各个所述迭代步进行预处理的总时间最小为约束,确定至少两个所述节点在各个所述迭代步中分别预处理的样本数据;
预处理计划生成子模块,用于基于至少两个所述节点在各个所述迭代步中分别预处理的样本数据,生成所述预处理计划。
在一种可能的实现方式中,所述样本数据子集确定子模块,包括:
数量值确定单元,用于基于所述第二条件以及前i-1个所述迭代步中至少两个所述节点已完成预处理且未被使用的样本数据,以及所述样本数据集,确定前i个所述迭代步对应的至少一个样本数据子集中所能包含的样本数据的数量最小值和数量最大值;
第一样本数据子集确定单元,用于基于所述数量最小值和所述数量最大值,确定前i个所述迭代步对应的至少一个样本数据子集;
第二样本子集确定单元,用于基于前i个所述迭代步对应的至少一个样本数据子集,以及前i-1个所述迭代步对应的至少一个样本数据子集,确定第i个所述迭代步对应的至少一个样本数据子集,第i个所述迭代步是各个所述迭代步中的任意一个。
在一种可能的实现方式中,所述数量值确定单元,包括:
数量最小值确定子单元,用于基于所述第二条件中的所述数量阈值,以及所述节点的数量,确定前i个所述迭代步对应的至少一个样本数据子集中所能包含的样本数据的所述数量最小值;
数量最大值确定单元,用于基于所述第二条件中的所述数据量阈值,所述数量最小值以及前i-1个所述迭代步中至少两个所述节点已完成预处理且未被使用的样本数据,确定前i个所述迭代步对应的至少一个样本数据子集中所能包含的样本数据的所述数量最大值。
在一种可能的实现方式中,数量最大值确定单元,用于按照指定步长,对所述数量最小值进行增大调节,直至将基于调节后的数据数量获取的第i个迭代步对应的样本数据子集分配给至少两个所述节点后,至少两个所述节点对应的缓冲区内的样本数据的数据量均大于所述数据量阈值时,获取前一次增大调节后的数据数量作为所述数量最大值;
其中,所述节点对应的缓冲区内的样本数据,包括第i个所述迭代步中所述节点所需预处理的样本数据,以及前i-1个所述迭代步中所述节点已完成预处理且未被使用的样本数据。
在一种可能的实现方式中,所述样本数据确定子模块,包括:
样本数据分配单元,用于基于第i个所述迭代步对应的第一样本数据子集,通过贪心算法,将所述第一样本数据子集中的样本数据分配给至少两个所述节点,所述第一样本数据子集是至少一个所述样本数据子集中的任意一个;所述贪心算法用以按照指定顺序依次对所述第一样本数据子集中的样本数据进行逐个分配,并将当前待分配的样本数据分配给所述至少两个节点中当前负载最低的节点,以使得所述至少两个所述节点在第i个所述迭代步进行预处理的总时间最小;第i个所述迭代步是各个所述迭代步中的任意一个;
样本数据确定单元,用于基于所述贪心算法对所述第一样本数据子集的分配结果,确定至少两个所述节点在第i个所述迭代步中分别预处理的样本数据。
在一种可能的实现方式中,所述装置还包括:
排序模块,用于在基于第i个所述迭代步对应的第一样本数据子集,通过贪心算法,将所述第一样本数据子集中的样本数据分配给所述至少两个节点之前,按照数据量由大到小的顺序,对所述第一样本数据子集中的样本数据进行排序;
所述样本数据分配单元,用于通过贪心算法,将排序后的所述第一样本数据子集中的样本数据分配给至少两个所述节点。
在一种可能实现的方式中,至少两个所述节点在各个所述迭代步进行预处理的总时间是指在各个所述迭代步中,预处理时间最长的所述节点对应的预处理时间之和;各个所述节点的预处理时间与分配给各个节点的样本数据的数据量成正比。
在一种可能实现的方式中,所述装置还包括:
样本数据输入模块,用于响应于一个迭代步中,至少两个所述节点对样本数据进行预处理的过程结束,将至少两个所述各个节点预处理完成的样本数据中指定数量的所述样本数据输入到待训练网络中,以进行模型训练。
在一种可能实现的方式中,所述样本数据集获取模块610,用于对原始样本数据集进行随机打乱,获得待处理的所述样本数据集。
在一种可能实现的方式中,所述贪心算法为4/3近似算法。
综上所述,本申请实施例提供的数据预处理装置,通过在进行模型训练之前,先基于待处理的样本数据集,以第一条件为约束,生成预处理计划,再基于该预处理计划对样本数据集进行预处理,之后将预处理后的样本数据集提供给对应的模型进行模型训练,其中,该预处理计划用以指示同步进行数据预处理的至少两个节点在各个迭代步中分别所需预处理的样本数据,以达到各个节点预处理样本数据的数据量相近,从而使得各个节点在预处理样本数据时所需的时间相近,尽可能的降低多个迭代步中各个节点进行样本数据预处理的总时间,实现对运算资源的合理分配,提高系统的模型训练性能。
图7示出了本申请一示例性实施例示出的计算机设备700的结构框图。该计算机设备可以实现为本申请上述方案中的服务器。所述计算机设备700包括中央处理单元(Central Processing Unit,CPU)701、包括随机存取存储器(Random Access Memory,RAM)702和只读存储器(Read-Only Memory,ROM)703的系统存储器704,以及连接系统存储器704和中央处理单元701的系统总线705。所述计算机设备700还包括用于存储操作系统709、应用程序710和其他程序模块711的大容量存储设备706。
所述大容量存储设备706通过连接到系统总线705的大容量存储控制器(未示出)连接到中央处理单元701。所述大容量存储设备706及其相关联的计算机可读介质为计算机设备700提供非易失性存储。也就是说,所述大容量存储设备706可以包括诸如硬盘或者只读光盘(Compact Disc Read-Only Memory,CD-ROM)驱动器之类的计算机可读介质(未示出)。
不失一般性,所述计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括RAM、ROM、可擦除可编程只读寄存器(Erasable Programmable Read Only Memory,EPROM)、电子抹除式可复写只读存储器(Electrically-Erasable Programmable Read-OnlyMemory,EEPROM)闪存或其他固态存储其技术,CD-ROM、数字多功能光盘(DigitalVersatile Disc,DVD)或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知所述计算机存储介质不局限于上述几种。上述的系统存储器704和大容量存储设备706可以统称为存储器。
根据本公开的各种实施例,所述计算机设备700还可以通过诸如因特网等网络连接到网络上的远程计算机运行。也即计算机设备700可以通过连接在所述系统总线705上的网络接口单元707连接到网络708,或者说,也可以使用网络接口单元707来连接到其他类型的网络或远程计算机系统(未示出)。
所述存储器还包括至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、至少一段程序、代码集或指令集存储于存储器中,中央处理器701通过执行该至少一条指令、至少一段程序、代码集或指令集来实现上述各个实施例所示的数据预处理方法中的全部或者部分步骤。
在一示例性实施例中,还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条计算机程序,所述计算机程序由处理器加载并执行以实现上述数据预处理方法的全部或部分步骤。
在一示例性实施例中,还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述图2、图3或图5任一实施例所示方法的全部或部分步骤。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求指出。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制。

Claims (15)

1.一种数据预处理方法,其特征在于,所述方法应用于分布式模型训练系统中,所述分布式模型训练系统包含至少两个节点,至少两个所述节点用于同步进行对样本数据的预处理,所述方法包括:
获取待处理的样本数据集;所述样本数据集中包含至少两个所述样本数据;
基于所述样本数据集,以第一条件为约束,生成预处理计划;所述预处理计划用于指示至少两个所述节点在各个迭代步中进行预处理的样本数据;所述第一条件包括:至少两个所述节点中的每个所述节点,在各个所述迭代步中的每个迭代步中预处理的样本数据满足第二条件,且至少两个所述节点通过各个所述迭代步对至少两个所述样本数据进行预处理的总时间最小;
基于所述预处理计划,指示至少两个所述节点通过各个所述迭代步对至少两个所述样本数据进行预处理;预处理后的所述样本数据用于在对应的所述迭代步中提供给对应的模型进行模型训练。
2.根据权利要求1所述的方法,其特征在于,所述第二条件包括:
所述节点在当前迭代步中预处理的样本数据的数量,与所述节点已完成预处理且未被使用的样本数据的数量之和大于数量阈值;所述未被使用的样本数据是在所述当前迭代步之前未被提供给对应的模型进行模型训练的样本数据;
以及,所述节点在当前迭代步中预处理的样本数据的数据量,与所述节点已完成预处理且未被使用的样本数据的数据量之和不大于数据量阈值。
3.根据权利要求1或2所述的方法,其特征在于,所述基于所述样本数据集,以第一条件为约束,生成预处理计划,包括:
基于所述样本数据集,以所述第二条件为约束,确定各个所述迭代步分别对应的至少一个样本数据子集,所述样本数据子集用以指示在一个所述迭代步中,至少两个所述节点预处理的样本数据的集合;
基于各个所述迭代步分别对应的至少一个所述样本数据子集,以至少两个所述节点在各个所述迭代步进行预处理的总时间最小为约束,确定至少两个所述节点在各个所述迭代步中分别预处理的样本数据;
基于至少两个所述节点在各个所述迭代步中分别预处理的样本数据,生成所述预处理计划。
4.根据权利要求3所述的方法,其特征在于,所述基于所述样本数据集,以所述第二条件为约束,确定各个所述迭代步分别对应的至少一个样本数据子集,包括:
基于所述第二条件以及前i-1个所述迭代步中至少两个所述节点已完成预处理且未被使用的样本数据,以及所述样本数据集,确定前i个所述迭代步对应的至少一个样本数据子集中所能包含的样本数据的数量最小值和数量最大值;
基于所述数量最小值和所述数量最大值,确定前i个所述迭代步对应的至少一个样本数据子集;
基于前i个所述迭代步对应的至少一个样本数据子集,以及前i-1个所述迭代步对应的至少一个样本数据子集,确定第i个所述迭代步对应的至少一个样本数据子集,第i个所述迭代步是各个所述迭代步中的任意一个。
5.根据权利要求4所述的方法,其特征在于,所述基于所述第二条件以及前i-1个所述迭代步中至少两个所述节点已完成预处理且未被使用的样本数据,以及所述样本数据集,确定前i个所述迭代步对应的至少一个样本数据子集中所能包含的样本数据的数量最小值和数量最大值,包括:
基于所述第二条件中的所述数量阈值,以及所述节点的数量,确定前i个所述迭代步对应的至少一个样本数据子集中所能包含的样本数据的所述数量最小值;
基于所述第二条件中的所述数据量阈值,所述数量最小值以及前i-1个所述迭代步中至少两个所述节点已完成预处理且未被使用的样本数据,确定前i个所述迭代步对应的至少一个样本数据子集中所能包含的样本数据的所述数量最大值。
6.根据权利要求5所述的方法,其特征在于,所述基于所述第二条件中的所述数据量阈值,所述数量最小值以及前i-1个所述迭代步中至少两个所述节点已完成预处理且未被使用的样本数据,确定前i个所述迭代步对应的至少一个样本数据子集中所能包含的样本数据的所述数量最大值,包括:
按照指定步长,对所述数量最小值进行增大调节,直至将基于调节后的数据数量获取的第i个迭代步对应的样本数据子集分配给至少两个所述节点后,至少两个所述节点对应的缓冲区内的样本数据的数据量均大于所述数据量阈值时,获取前一次增大调节后的数据数量作为所述数量最大值;
其中,所述节点对应的缓冲区内的样本数据,包括第i个所述迭代步中所述节点所需预处理的样本数据,以及前i-1个所述迭代步中所述节点已完成预处理且未被使用的样本数据。
7.根据权利要求3所述的方法,其特征在于,所述基于各个所述迭代步分别对应的至少一个所述样本数据子集,以至少两个所述节点在各个所述迭代步进行预处理的总时间最小为约束,确定至少两个所述节点在各个所述迭代步中分别预处理的样本数据,包括:
基于第i个所述迭代步对应的第一样本数据子集,通过贪心算法,将所述第一样本数据子集中的样本数据分配给至少两个所述节点,所述第一样本数据子集是至少一个所述样本数据子集中的任意一个;所述贪心算法用以按照指定顺序依次对所述第一样本数据子集中的样本数据进行逐个分配,并将当前待分配的样本数据分配给所述至少两个节点中当前负载最低的节点,以使得所述至少两个所述节点在第i个所述迭代步进行预处理的总时间最小;第i个所述迭代步是各个所述迭代步中的任意一个;
基于所述贪心算法对所述第一样本数据子集的分配结果,确定至少两个所述节点在第i个所述迭代步中分别预处理的样本数据。
8.根据权利要求7所述的方法,其特征在于,在基于第i个所述迭代步对应的第一样本数据子集,通过贪心算法,将所述第一样本数据子集中的样本数据分配给所述至少两个节点之前,所述方法还包括:
按照数据量由大到小的顺序,对所述第一样本数据子集中的样本数据进行排序;
所述基于第i个所述迭代步对应的第一样本数据子集,通过贪心算法,将所述第一样本数据子集中的样本数据分配给所述至少两个节点,包括:
通过贪心算法,将排序后的所述第一样本数据子集中的样本数据分配给至少两个所述节点。
9.根据权利要求2所述的方法,其特征在于,至少两个所述节点在各个所述迭代步进行预处理的总时间是指在各个所述迭代步中,预处理时间最长的所述节点对应的预处理时间之和;各个所述节点的预处理时间与分配给各个节点的样本数据的数据量成正比。
10.根据权利要求1所述的方法,其特征在于,所述方法还包括:
响应于一个迭代步中,至少两个所述节点对样本数据进行预处理的过程结束,将至少两个所述各个节点预处理完成的样本数据中指定数量的所述样本数据输入到待训练网络中,以进行模型训练。
11.根据权利要求1所述的方法,其特征在于,所述获取待处理的样本数据集,包括:
对原始样本数据集进行随机打乱,获得待处理的所述样本数据集。
12.根据权利要求7所述的方法,其特征在于,所述贪心算法为4/3近似算法。
13.一种模型训练装置,其特征在于,所述装置应用于分布式模型训练系统中,所述分布式模型训练系统包含至少两个节点,至少两个所述节点用于同步进行对样本数据的预处理;所述装置包括:
样本数据集获取模块,用于获取待处理的样本数据集;所述样本数据集中包含至少两个所述样本数据;
预处理计划生成模块,用于基于所述样本数据集,以第一条件为约束,生成预处理计划;所述预处理计划用于指示至少两个所述节点在各个迭代步中进行预处理的样本数据;所述第一条件包括:至少两个所述节点中的每个所述节点,在各个所述迭代步中的每个迭代步中预处理的样本数据满足第二条件,且至少两个所述节点通过各个所述迭代步对至少两个所述样本数据进行预处理的总时间最小;
数据预处理模块,用于基于所述预处理计划,指示至少两个所述节点通过各个所述迭代步对至少两个所述样本数据进行预处理;预处理后的所述样本数据用于在对应的所述迭代步中提供给对应的模型进行模型训练。
14.一种计算机设备,其特征在于,所述计算机设备包括处理器和存储器,所述存储器存储有至少一条指令、至少一条程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如权利要求1至12任一所述的数据预处理方法。
15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有至少一条计算机程序,所述计算机程序由处理器加载并执行以实现如权利要求1至12任一所述的数据预处理方法。
CN202110281387.2A 2021-03-16 2021-03-16 数据预处理方法、装置、计算机设备及存储介质 Active CN112668673B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110281387.2A CN112668673B (zh) 2021-03-16 2021-03-16 数据预处理方法、装置、计算机设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110281387.2A CN112668673B (zh) 2021-03-16 2021-03-16 数据预处理方法、装置、计算机设备及存储介质

Publications (2)

Publication Number Publication Date
CN112668673A true CN112668673A (zh) 2021-04-16
CN112668673B CN112668673B (zh) 2021-06-08

Family

ID=75399479

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110281387.2A Active CN112668673B (zh) 2021-03-16 2021-03-16 数据预处理方法、装置、计算机设备及存储介质

Country Status (1)

Country Link
CN (1) CN112668673B (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104133837A (zh) * 2014-06-24 2014-11-05 上海交通大学 一种基于分布式计算的互联网信息投放渠道优化系统
CN104243531A (zh) * 2013-06-21 2014-12-24 华为技术有限公司 一种数据处理的方法、装置及系统
CN109918184A (zh) * 2019-03-01 2019-06-21 腾讯科技(深圳)有限公司 图片处理系统、方法及相关装置和设备
US20200104200A1 (en) * 2018-09-27 2020-04-02 Oracle International Corporation Disk drive failure prediction with neural networks
US20200174840A1 (en) * 2018-11-30 2020-06-04 EMC IP Holding Company LLC Dynamic composition of data pipeline in accelerator-as-a-service computing environment
CN112035261A (zh) * 2020-09-11 2020-12-04 杭州海康威视数字技术股份有限公司 数据处理方法及系统

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104243531A (zh) * 2013-06-21 2014-12-24 华为技术有限公司 一种数据处理的方法、装置及系统
CN104133837A (zh) * 2014-06-24 2014-11-05 上海交通大学 一种基于分布式计算的互联网信息投放渠道优化系统
US20200104200A1 (en) * 2018-09-27 2020-04-02 Oracle International Corporation Disk drive failure prediction with neural networks
US20200174840A1 (en) * 2018-11-30 2020-06-04 EMC IP Holding Company LLC Dynamic composition of data pipeline in accelerator-as-a-service computing environment
CN109918184A (zh) * 2019-03-01 2019-06-21 腾讯科技(深圳)有限公司 图片处理系统、方法及相关装置和设备
CN112035261A (zh) * 2020-09-11 2020-12-04 杭州海康威视数字技术股份有限公司 数据处理方法及系统

Also Published As

Publication number Publication date
CN112668673B (zh) 2021-06-08

Similar Documents

Publication Publication Date Title
CN109993299B (zh) 数据训练方法及装置、存储介质、电子装置
CN112235384B (zh) 分布式系统中的数据传输方法、装置、设备及存储介质
US20180253817A1 (en) Deep learning via dynamic root solvers
CN111178542A (zh) 基于机器学习建模的系统和方法
CN114997337B (zh) 信息融合、数据通信方法、装置及电子设备和存储介质
CN110689136B (zh) 一种深度学习模型获得方法、装置、设备及存储介质
CN110765320A (zh) 数据处理方法、装置、存储介质和计算机设备
KR20190054449A (ko) 이종 클러스터 환경에서 신경망 트레이닝 가속화를 위한 연산 노드 배치 기법
Lim et al. Distributed deep learning framework based on shared memory for fast deep neural network training
CN111967271A (zh) 分析结果的生成方法、装置、设备及可读存储介质
CN112861659A (zh) 一种图像模型训练方法、装置及电子设备、存储介质
CN109871942B (zh) 神经网络的训练方法和装置、系统、存储介质
CN114358250A (zh) 数据处理方法、装置、计算机设备、介质及程序产品
CN112668673B (zh) 数据预处理方法、装置、计算机设备及存储介质
CN114153640A (zh) 一种基于深度强化学习的系统容错策略方法
CN112199885B (zh) 一种分布式模型训练系统及应用方法
CN115794357B (zh) 一种自动搭建多任务网络的装置及方法
CN113505881B (zh) 面向异构设备的分布式神经网络训练方法、装置及介质
CN112434817B (zh) 构建通信算法数据库的方法、装置和计算机存储介质
CN114818863A (zh) 一种模型训练方法及装置
DE102021127803A1 (de) Einbindung einer ternären matrix in ein neuronales netz
WO2011008973A2 (en) Constant memory implementation of a phase-model neural network
WO2022145550A1 (ko) 딥러닝 네트워크의 동적 양자화 정밀도 가변 알고리즘 및 방법
Lu et al. An Efficient Light-Weight Federated Learning Framework Implemented on Kubernetes and Docker
Yang et al. Model-Aware Parallelization Strategy for Deep Neural Networks' Distributed Training

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
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40041585

Country of ref document: HK