CN118984998A - 模型训练系统、模型训练方法、训练设备和训练节点 - Google Patents
模型训练系统、模型训练方法、训练设备和训练节点 Download PDFInfo
- Publication number
- CN118984998A CN118984998A CN202280094724.XA CN202280094724A CN118984998A CN 118984998 A CN118984998 A CN 118984998A CN 202280094724 A CN202280094724 A CN 202280094724A CN 118984998 A CN118984998 A CN 118984998A
- Authority
- CN
- China
- Prior art keywords
- data
- training
- batch
- list
- index
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/098—Distributed learning, e.g. federated learning
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/509—Offload
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/544—Remote
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- Computing Systems (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Medical Informatics (AREA)
- Biophysics (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computational Linguistics (AREA)
- Biomedical Technology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种模型训练系统、模型训练方法、训练设备及训练节点。该系统包括:n台训练设备,总共部署M个训练节点,每台训练设备存储全局索引列表和该训练设备中部署的训练节点对应的数据集;全局索引列表指示M个训练节点各自对应的数据集中数据的索引;每台训练设备用于通过随机数种子对全局索引列表进行混洗,通过混洗后的列表对自身存储的数据集进行查询,以得到自身部署的训练节点的交换数据;其中,交换数据为数据查询命中数据;还用于获取共享数据,得到自身部署的训练节点的训练数据,共享数据由M个训练节点各自的交换数据融合而成;M个训练节点基于对应的训练数据进行模型训练。可在不增加额外的存储成本的前提下提高读取效率。
Description
本申请涉及数据处理技术领域,尤其涉及一种模型训练系统、模型训练方法、训练设备和训练节点。
在模型的分布式训练时,涉及到多个训练节点共同训练,多个训练节点所在的训练设备的磁盘上均会存放一份数据集的拷贝以及数据集的数据索引。在分布式训练启动时,数据处理线程会负责将数据集从磁盘加载至内存中,并执行一系列用户定义的数据处理操作,如混洗、分片等操作。如图1所示,训练节点不断执行训练,每次训练会按照数据索引依次向数据集获取当前训练需要的数据,在获取到当前训练需要的数据后,对该数据进行数据处理。
在数据集非常巨大,超过训练设备本身存储空间时,在分布式训练的场景下,依赖全量完整数据集的数据处理方法变得不可行。
目前,可以将数据集存储在训练设备之外的数据中心或数据库中,训练节点在分布式训练过程中,可以访问数据中心或数据库中的数据集。
但是,上述方式将数据集存储在源端,不仅会增加额外的存储开销,还会降低读取效率。
公开于该背景技术部分的信息仅仅旨在增加对本发明的总体背景的理解,而不应当被视为承认或以任何形式暗示该信息构成已为本领域一般技术人员所公知的现有技术。
发明内容
本发明实施例提供了一种模型训练系统、模型训练方法、训练设备和训练节点,采用分布式存储和训练节点的数据交换,补全每个训练节点所缺数据,在不增加额外的存储成本的前提下,一方面可以提高读取效率,另一方面可以保证每个训练节点得到相同的共享数据,基于共享数据得到自身的训练数据进行模型训练。
第一方面,本发明实施例提供了一种模型训练系统,包括:
n台训练设备,总共部署M个训练节点,每台训练设备存储全局索引列表和该训练设备中部署的训练节点对应的数据集;其中,全局索引列表指示M个训练节点各自对应的数据集中数据的索引,n为大于等于1的正整数、M为大于等于n的正整数,n台设备中的每一台都满足下述对第一设备的描述;
第一设备,用于通过随机数种子对全局索引列表进行混洗,通过混洗后的列表对每台训练设备存储的数据集进行查询,以得到每台训练设备部署的训练节点的交换数据;其中,交换数据为数据查询命中数据;
第一设备,还用于获取共享数据,基于共享数据,得到每台训练设备部署的训练节点对应的训练数据;其中,共享数据由M个训练节点各自的命中数据相互补充而成;
M个训练节点用于基于对应的训练数据进行模型训练。
本方案中,采用分布式存储和训练节点的数据交换,补全每个训练节点所缺数据,在不增加额外的存储成本的前提下,一方面可以提高读取效率,另一方面可以保证每个训练节点 得到相同的共享数据,通过共享数据得到自身的训练数据进行模型训练。
在一种可能的实现方式中,对于M个训练节点中的任一训练节点,训练节点用于获取M个训练节点中其他训练节点各自的交换数据,得到共享数据,基于共享数据,得到自身的训练数据进行模型训练。
本方案中,由训练节点实现数据交换,可以提高数据交换的效率。
在一种可能的实现方式中,训练设备用于在多个轮次迭代过程中的当前轮次,通过随机数种子对全局索引列表进行混洗,通过混洗后的列表对自身存储的数据集进行数据查询和批次划分,以得到自身部署的训练节点在批次迭代过程中当前批次的交换数据;其中,批次划分依据混洗后的列表指示的索引的顺序,索引的顺序指示了数据的顺序,当前批次为当前轮次的多个批次中的任一批次,多个轮次的混洗后的列表不同。
本方案中,通过批次迭代,一方面可以提高模型训练的效率,另一方面可以改变数据分布,确保数据的参考价值,提高模型训练效果。
在一种可能的实现方式中,命中数据指示了当前批次的交换索引列表进行数据查询所命中的数据;其中,交换索引列表指示了对混洗后的列表进行批次划分得到的当前批次的数据索引;M个训练节点各自的当前批次的交换索引列表相同;共享数据指示了消除部署的训练节点的交换索引列表未命中数据后的数据
本方案中,所有训练节点在一个批次采用相同的交换索引列表,最终所有训练节点共享该索引列表中每个索引值命中的数据,实现对一个批次的训练数据的数据量的控制,同时可以避免一个批次的数据量较少或较多的可能性。
在一种可能的实现方式中,第一设备用于基于混洗后的列表,对自身存储的数据集进行查询,得到混洗后的列表对应的全局数据掩码列表;基于全局数据掩码列表进行批次划分,确定自身部署的训练节点在当前批次的交换数据。
本方案中,一次性实现全量数据掩码,后续迭代全局数据掩码列表即可,无需以批次为单位进行反复查询和掩码,提高批次迭代效率。
在一种可能的实现方式中,第一设备用于对混洗后的全局索引列表中,在自身存储的数据集的索引范围之外的索引值进行掩码处理,得到全局索引掩码列表;基于全局索引掩码列表,对自身存储的数据集进行数据查询,得到全局索引掩码列表对应的全局数据掩码列表。
本方案中,考虑M个训练节点全局的数据集的数据量是巨大的,而每个训练节点对应的数据集的数据量相对较小,采用先掩码再查询的方式,可以减少不必要的数据查询的开销,提高处理效率。
在一种可能的实现方式中,全局索引列表包括M个训练节点各自对应的至少一个批次索引值,批次索引值指示了对应训练节点对应的数据集中的一个批次的增强批次数据;第一设备用于以批次为单位对自身存储的数据集进行数据增强,得到自身部署的训练节点对应的至少一个批次索引值各自的增强批次数据;当前批次对应目标索引值,目标索引值为至少一个批次索引值中的任一个或多个,命中数据为目标索引值对应的增强批次数据。
本方案中,以批次为单位进行数据增强,充分利用数据集的数据,不需要考虑数据集之外的其他数据的影响,提高数据参考价值,使得模型可以充分学习不同数据之间的关系。
在一种可能的实现方式中,第一设备部署的训练节点对应的批次索引值有多个,存储自身部署的训练节点对应的数据集的局部数据索引列表;第一设备用于对自身存储的局部数据索引列表进行混洗后进行划分,确定自身部署的训练节点对应的多个批次索引值各自的数据索引列表;对于多个批次索引值中的任一批次索引值,基于该批次索引值的数据索引列表, 对自身存储的数据集进行数据查询,对查询到的数据进行数据增强,得到增强批次数据。
本方案中,全局索引列表和数据集均进行混洗,通过两级混洗达到充分混洗的目的,改变数据的分布,确保数据参考价值,使得模型可以充分学习不同数据之间的关系。
第二方面,本发明实施例提供了一种模型训练方法,应用于训练设备,训练设备为n台训练设备中的任一台训练设备,n台训练设备总共部署M个训练节点,训练设备存储有全局索引列表和训练设备中部署的训练节点对应的数据集;其中,全局索引列表至少指示部署的训练节点对应的数据集中数据的索引,n为大于等于1的正整数、M为大于等于n的正整数;方法包括:
采用随机数种子对全局索引列表进行混洗,通过混洗后的列表对自身部署的训练节点对应的数据集进行数据查询,得到自身部署的训练节点对应的交换数据;其中,交换数据为数据查询的命中数据;获取共享数据,基于共享数据,得到自身部署的训练节点对应的训练数据;其中,共享数据由M个训练节点各自的命中数据相互补充而成;自身部署的训练节点基于对应的训练数据进行模型训练。
本方案中的有效效果参见上文不在赘述。
在一种可能的实现方式中,获取共享数据,基于共享数据,得到自身部署的训练节点对应的训练数据,包括:自身部署的训练节点获取M个训练节点中其他训练节点的交换数据后融合,以得到共享数据,基于共享数据,得到自身的训练数据。
本方案中的有效效果参见上文不在赘述。
在一种可能的实现方式中,采用随机数种子对全局索引列表进行混洗,通过混洗后的列表对自身存储的数据集进行数据查询,得到自身部署的训练节点对应的交换数据,包括:在多个轮次迭代过程中的当前轮次,通过随机数种子对全局索引列表进行混洗,通过混洗后的列表对自身存储的数据集进行数据查询和批次划分,以得到自身部署的训练节点在批次迭代过程中当前批次的交换数据;其中,批次划分依据混洗后的列表指示的索引的顺序,索引的顺序指示了数据的顺序,当前批次为当前轮次的多个批次中的任一批次,多个轮次的混洗后的列表不同。
本方案中的有效效果参见上文不在赘述。
在一种可能的实现方式中,命中数据指示了当前批次的交换索引列表进行数据查询所命中的数据;其中,交换索引列表指示了对混洗后的列表进行批次划分得到的当前批次的数据索引;M个训练节点各自的当前批次的交换索引列表相同;共享数据指示了消除部署的训练节点的交换索引列表未命中数据后的数据。
本方案中的有效效果参见上文不在赘述。
在一种可能的实现方式中,通过随机数种子对全局索引列表进行混洗,通过混洗后的列表针对部署的训练节点对应的数据集进行数据查询和批次划分,以得到部署的训练节点在当前批次的交换数据,包括:基于混洗后的列表,对自身存储的数据集进行查询,得到混洗后的列表对应的全局数据掩码列表;基于全局数据掩码列表进行批次划分,确定当前批次的交换数据。
本方案中的有效效果参见上文不在赘述。
在一种可能的实现方式中,基于混洗后的列表,对自身存储的数据集进行查询,得到混洗后的列表对应的全局数据掩码列表,包括:对混洗后的列表中,在自身存储的数据集的索引范围之外的索引值进行掩码处理,得到全局索引掩码列表;基于全局索引掩码列表,对自 身存储的数据集进行数据查询,得到全局索引掩码列表对应的全局数据掩码列表。
本方案中的有效效果参见上文不在赘述。
在一种可能的实现方式中,全局索引列表包括训练设备部署的训练节点对应的至少一个批次索引值,批次索引值指示了训练设备存储的数据集中的一个批次的增强批次数据;当前批次对应目标索引值,目标索引值为至少一个批次索引值中的任一个或多个;命中数据为目标索引值对应的增强批次数据;方法还包括:以批次为单位对自身存储的数据集进行数据增强,得到自身部署的训练节点对应的至少一个批次索引值各自的增强批次数据。
本方案中的有效效果参见上文不在赘述。
在一种可能的实现方式中,该训练节点的批次索引值有多个;训练设备存储部署的训练节点对应的数据集的局部数据索引列表;方法还包括:对自身存储的局部数据索引列表进行混洗后进行划分,确定自身部署的训练节点的多个批次索引值各自的数据索引列表;对于多个批次索引值中的任一索引值,基于该批次索引值的数据索引列表,对自身存储的数据集进行数据查询,对查询到的数据进行数据增强,得到增强批次数据。
本方案中的有效效果参见上文不在赘述。
第三方面,本发明实施例提供了一种模型训练方法,应用于第一训练节点,第一训练节点为M个训练节点中的任一个,M个训练节点位于n个训练设备中,n台训练设备各自存储全局索引列表和自身部署的训练节点对应的数据集;其中,全局索引列表至少指示第一训练节点对应的数据集中数据的索引,n为大于等于1的正整数、M为大于等于n的正整数;方法包括:
接收第一训练节点所在训练设备的处理器发送的交换数据;其中,交换数据为处理器采用随机数种子对全局索引列表进行混洗,通过混洗后的列表对第一训练节点对应的数据集进行数据查询得到;交换数据至少包括数据查询的命中数据;获取M个训练节点中其他训练节点各自的交换数据后融合,以得到共享数据;其中,共享数据由M个训练节点各自的命中数据相互补充而成;基于共享数据,得到自身的训练数据进行模型训练。
本方案中的有效效果参见上文不在赘述。
在一种可能的实现方式中,交换数据为一个轮次下批次迭代过程中当前批次的归属于第一训练接节点的数据。
本方案中的有效效果参见上文不在赘述。
在一种可能的实现方式中,命中数据指示了当前批次的交换索引列表进行数据查询所命中的数据;其中,交换索引列表指示了对混洗后的列表进行批次划分得到的当前批次的数据索引;M个训练节点各自的当前批次的交换索引列表相同;共享数据指示了消除交换索引列表未命中数据后的数据。
本方案中的有效效果参见上文不在赘述。
在一种可能的实现方式中,全局索引列表包括第一训练节点对应的至少一个批次索引值,批次索引值指示了数据集中的一个批次的增强批次数据,增强批次数据为处理器以批次为单位对第一训练节点对应的数据集进行数据增强得到;当前批次对应目标索引值,目标索引值为至少一个批次索引值中的任一个或多个;命中数据为目标索引值对应的增强批次数据。
本方案中的有效效果参见上文不在赘述。
第四方面,本发明实施例提供了一种训练设备,包括:至少一个存储器,用于存储程序; 至少一个处理器,用于执行存储器存储的程序,当存储器存储的程序被执行时,处理器用于执行第二方面中所提供的方法。
第五方面,本发明实施例提供了一种训练设备,训练设备用于运行计算机程序,以执行第二方面中所提供的方法。
第六方面,本发明实施例提供了一种训练节点,包括:至少一个处理器,用于运行计算机程序,以执行第三方面中所提供的方法。
第七方面,本发明实施例提供了一种模型训练装置,其特征在于,装置运行计算机程序指令,以执行第二方面中所提供的方法,或者执行第三方面中所提供的方法。示例性的,该装置可以为芯片,或处理器。
在一个例子中,该装置可以包括处理器,该处理器可以与存储器耦合,读取存储器中的指令并根据该指令执行第二方面中所提供的方法,或者执行第三方面中所提供的方法。其中,该存储器可以集成在芯片或处理器中,也可以独立于芯片或处理器之外。
第八方面,本发明实施例提供了一种模型训练装置,用于运行计算机程序,以执行第二方面中所提供的方法,或者执行第二方面中所提供的方法。
第九方面,本发明实施例提供了一种计算机存储介质,计算机存储介质中存储有指令,当指令在计算机上运行时,使得计算机执行第二方面中所提供的方法,或者执行第三方面中所提供的方法。
第十方面,本发明实施例提供了一种包含指令的计算机程序产品,当指令在计算机上运行时,使得计算机执行第二方面中所提供的方法,或者执行第三方面中所提供的方法。
图1是本发明实施例提供的一种分布式模型训练的示例图;
图2是本发明实施例提供的一种模型训练系统的架构图;
图3是本发明实施例提供的一种训练设备的结构示意图;
图4是本发明实施例提供的一种模型训练方案的示意图;
图5a是图4提供的一种模型训练方案的流程示意图一;
图5b是图4提供的一种模型训练方案的流程示意图二;
图6是本发明实施例提供的另一种模型训练方案的示意图;
图7a是图6提供的另一种模型训练方案的流程示意图一;
图7b是图6提供的另一种模型训练方案的流程示意图二;
图8是本发明实施例提供的一种模型训练方法的流程示意图;
图9是本发明实施例提供的另一种模型训练方法的流程示意图。
为了使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图,对本发明实施例中的技术方案进行描述。
在本发明实施例的描述中,“示例性的”、“例如”或者“举例来说”等词用于表示作例子、例证或说明。本发明实施例中被描述为“示例性的”、“例如”或者“举例来说”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”、“例如”或者“举例来说”等词旨在以具体方式呈现相关概念。
在本发明实施例的描述中,术语“和/或”,仅仅是一种描述关联对象的关联关系,表示 可以存在三种关系,例如,A和/或B,可以表示:单独存在A,单独存在B,同时存在A和B这三种情况。另外,除非另有说明,术语“多个”的含义是指两个或两个以上。例如,多个系统是指两个或两个以上的系统,多个终端是指两个或两个以上的终端。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
在模型的分布式训练时,涉及到多个训练节点共同训练,多个训练节点所在的训练设备的磁盘上均会存放一份数据集的拷贝以及数据集的数据索引。在分布式训练启动时,数据处理线程会负责将数据集从磁盘加载至内存中,并执行一系列用户定义的数据处理操作,如混洗、分片等操作。如图1所示,训练节点不断执行训练,每次训练会按照数据索引依次向数据集获取当前训练需要的数据,在获取到当前训练需要的数据后,对该数据进行数据处理。
在数据集非常巨大,超过训练设备本身存储空间时,在分布式训练的场景下,依赖全量完整数据集的数据处理方法变得不可行,为了解决超大数据集的训练问题,业界已经存在一些解决方案。下面对业界存在的2种解决方案进行描述。
首先描述第1种解决方案。
数据中心存储数据集,分布式内存文件系统访问数据中心的数据集,数据存储与计算分离,训练设备可以访问分布式存储文件系统以访问数据集。上述技术方案将数据集存储于数据中心而非训练设备本地,解决了超大数据集的存储问题,数据处理部分不做任何改变,每台训练设备的逻辑视角仍旧看到完整的数据集。
但是上述方案由于需要将数据存储于数据中心,引入而外的存储开销。在数据集很大时,缓存的数据命中率低,一旦需要的数据不在缓存中,则要不断的向数据中心访问数据,造成数据处理耗时过大,成为模型训练的性能瓶颈。
接下来描述第2种解决方案。
将数据集存储在AWS S3(Amazon Web Services Simple Storage Service)中,训练设备通过亚马逊公司提供的一种高性能的Pytorch数据集库,可以有效地访问存储在AWS S3上的数据集,而不需要先在本地存储中下载,提供流式数据访问任何大小的数据,以解决训练训练设备存储空间不足的限制。
但是,上述技术方案一方面需要增加与数据库之间的网络传输,数据集流式下载依赖于通信带宽。另一方面,所有的训练节点高并发下载,但是训练设备之间未做下载信息同步,一个训练节点的下载异常将导致整个训练任务异常。
上述解决方案1和解决方案2均需要从远端(训练设备之外的数据中心或数据库)访问数据集,读取效率较低。
综上,现有技术缺少一种超大规模数据集在分布式训练下存储空间开销与读取效率的兼顾的方案。
基于此,本发明实施例提供了如下技术构思。
第1方面,以训练节点为单位对超大规模的全局数据集进行划分,将全局数据集划分到所有训练节点,以分布式的形式存储于所有训练节点所在的所有训练设备上。
第2方面,所有训练节点各自掌握全局数据集的全局索引列表,用于命中所有训练节点 各自掌握的数据集中的数据,管理分布式存储的数据集,使得所有训练节点掌握的自身的数据集在全局的位置。
第3方面,训练设备基于全局索引列表以全局视角对自身存储的数据集进行数据管理后发送至对应的训练节点。
第4方面,所有训练节点的数据交换,保证补全每个训练节点在一个批次所缺数据,得到一个批次的全局数据;之后,基于该批次的全局数据管理并共享所有训练节点的训练数据。比如,所有训练节点各自将一个批次的全局数据作为训练数据进行模型训练;再比如,对于任一训练节点,该训练节点基于该批次的全局数据进行划分,得到所有训练节点各自的训练数据,基于归属于该训练节点的训练数据进行模型训练;或者,训练节点所在的训练设备的处理器基于该批次的全局数据进行划分,得到所有训练节点各自的训练数据,将训练设备部署的训练节点的训练数据发送到对应的训练节点。在一些可能的情况,所有训练节点各自的训练数据互补整体形成一个批次的全局数据;另外,将一个批次的全局数据重新划分到所有训练节点,可以满足所有训练节点对训练数据的需求,确保模型训练效果。
需要说明的是,将超大规模的数据集以分布式的形式存储于分布式训练的所有训练设备上,从而降低从远端读取的数据量,在一定程度上提高了读取效率。
值得注意的是,本发明实施例提供的全局索引列表可以反映出全局数据集的数据顺序,所有训练节点共享全局索引列表,对应的,所有训练节点了解的全局数据集的数据顺序是相同。
综上,本发明实施例以训练节点为单位对全局数据集进行划分,将全局数据集划分到所有训练节点所在的多台训练设备上,同时,所有训练节点掌握全局数据集的全局索引列表,在基于全局索引列表对分布式的训练节点对应的数据集进行数据管理后配合数据交换,基于一个批次的全局数据得到所有训练节点各自的训练数据。
本发明实施例提供了一种实现上述技术构思的模型训练系统。图1是本发明实施例提供的一种模型训练系统的系统架构图。如图1所示,该系统100包括:多个训练设备;其中,图1中示意示出训练设备C1、C2、…、Cn;多个训练设备总共部署有多个训练节点,多个训练节点之间可以通信;其中,图1中示意示出训练设备C1的训练节点t11、t12、…、t1m,C2的训练节点t21、t22、…、t2m…、t2m,其他训练设备类同,不再赘述;图1共示出了n*m个训练节点。在一个例子中,多个训练节点之间互连建立了高速通信网络,可以降低通信时间,在一定程度上提高了读取效率。图1示出了n*m个训练节点互连。在实际应用中,多个训练节点之间通过可以高速通信的线缆连接,比如,该线缆可以为光缆,从而确保数据传输效率。需要指出,图1中模型训练系统的训练节点的连接方式仅为示例,因此不应将图1理解为对本发明保护范围的限制;在实际应用中,训练节点的连接方式可以为中心发散形,即一个训练节点作为中心训练节点,其他的所有训练节点和该中心训练节点连接。这里,训练节点之间的连接为有线连接。
另外,在一些可能的实现方式中,多个训练设备之间的通信可以间接实现所有训练节点之间的通信。其中,多个训练设备之间通过网络通信,该网络可以为有线网络或无线网络。示例地,有线网络可以为电缆网络、光纤网络、数字数据网(Digital Data Network,DDN)等,无线网络可以为电信网络、内部网络、互联网、局域网络(Local Area Network,LAN)、广域网络(Wide Area Network,WAN)、无线局域网络(Wireless Local Area Network,WLAN)、城域网(Metropolitan Area Network,MAN)、公共交换电话网络(Public Service Telephone Network,PSTN)、蓝牙网络、紫蜂网络(ZigBee)、移动电话(Global System for Mobile Communications,GSM)、CDMA(Code Division Multiple Access)网络、CPRS(General Packet Radio Service)网络等或其任意组合。可以理解的是,网络1可使用任何已知的网络通信协议来实现不同客户端层和网关之间的通信,上述网络通信协议可以是各种有线或无线通信协议,诸如以太网、通用串行总线(universal serial bus,USB)、火线(firewire)、全球移动通讯系统(global system for mobile communications,GSM)、通用分组无线服务(general packet radio service,GPRS)、码分多址接入(code division multiple access,CDMA)、宽带码分多址(wideband code division multiple access,WCDMA),时分码分多址(time-division code division multiple access,TD-SCDMA)、长期演进(long term evolution,LTE)、新空口(new radio,NR)、蓝牙(bluetooth)、无线保真(wireless fidelity,Wi-Fi)等通信协议。
本发明实施例中按照训练节点的数目对全局数据集进行划分得到数据集,并将数据集存储在对应的训练节点所在的训练设备;换言之,训练设备存储有其中的各训练节点对应的数据集。举例来说,以图1示出的n台训练设备总共设置有n*m个训练节点为例进行说明,将全局数据集划分为n*m份数据集,对于每台训练设备,实际持有m份数据集,也即1/n大小的全局数据集。值得注意的是,在实际应用中,n*m份数据集的数据量可以不同。本发明实施例对全局数据集如何划分不作具体限定,具体可结合实际需求进行设置,比如计算力较强的训练节点分配更多的数据,计算力较弱的训练节点分配更少的数据。
本发明实施例中的所有训练设备共享全局数据集的全局索引列表,从而通过全局索引列表以轮次为单位进行数据迭代;在每个轮次,针对任一训练节点,该训练节点所在的训练设备基于全局索引列表对该训练节点对应的数据集进行数据查询、批次划分,得到该轮次的批次迭代中当前批次下归属于该训练节点的用于交换的数据(为了便于描述和区别,称为交换数据)。所有训练节点的交换数据互补整体形成当前批次的全局数据。这里,轮次表示遍历数据集中所有数据的次数,批次表示在一个轮次中数据集需要划分的份数。本发明实施例中的批次划分可以理解为以批次为单位对数据集进行划分,得到不同批次下的数据,每个批次的数据不同或部分相同,整体形成数据集;在完成一个轮次后,即对数据集中的所有数据迭代一次后,重新对数据集等分,得到下一轮次的不同批次的数据,不断循环实现模型训练。示例地,如批次数目为8,则将数据集划分为8个批次的数据。这里,当前批次是说明当前时刻的批次。
之后,对于任一训练设备融合所有训练节点的交换数据,也即补全该训练节点在当前批次所缺数据,得到当前批次的全局数据(所有训练节点各自的交换数据融合后的数据),基于当前批次的全局数据得到自身部署的训练节点的训练数据,从而使得自身部署的训练节点基于对应的训练数据进行模型训练。
在一个例子中,所有批次节点各自将当前批次的全局数据作为训练数据进行模型训练,使得所有训练节点实现按照相同的训练数据进行模型训练;在另一个例子中,所有训练节点各自基于当前批次的全局数据进行划分,得到所有训练节点各自的训练数据,每个训练节点基于归属于自身的训练数据进行模型训练。值得注意的是,当前批次的全局数据需要划分为所有训练节点的训练数据时,当前批次的全局数据通常通过列表表示,且所有训练节点共享该列表,从而通过该列表可以管理并共享所有训练节点各自的训练数据。
下面详细描述在采用对当前批次的全局数据划分得到所有训练节点各自的训练数据的场景下,所有训练节点如何获取自身的训练数据。
具体地,训练设备存储有所有训练节点各自的排序编号,训练设备的处理器或训练节点按照训练节点的数目对表示当前批次的全局数据的数据列表进行切片,得到不同编号各自对应的片段,并将片段作为编号对应的训练节点的训练数据。另外,部分训练节点的训练数据可以部分重叠。在一个例子中,对于任一训练节点,该训练节点或所在训练设备的处理器可以按照一维窗口在表示当前批次的全局数据的数据列表上按照一定的步长滑动,得到所有训练节点各自的训练数据;在一个例子中,对于任一训练节点,该训练节点或所在训练设备的处理器可以基于所有训练节点的数目对当前批次的全局数据进行有重叠的划分,得到所有训练节点各自的训练数据。
在一个例子中,训练设备的处理器得到交换数据,将交换数据发送到对应的训练节点。则对于训练设备部署的任一训练节点,该训练节点获取其他训练节点各自的交换数据后融合所有训练节点的交换数据,得到当前批次的全局数据;基于全局数据得到所有训练节点各自的训练数据,基于自身的训练数据进行模型训练。
当存在中心训练节点,且该训练节点不是中心训练节点时,该训练节点将交换数据发送到对应的中心训练节点,接收训练中心节点发送的全局数据或训练数据;当接收全局数据时,基于全局数据得到所有训练节点各自的训练数据,基于自身的训练数据进行模型训练。
当该训练节点为中心训练节点时,还可以将自身之外的训练数据发送到对应的训练节点,由训练节点基于训练数据进行模型训练。在一些可能的实现方式,也可以将当前批次的全局数据发送到其他的各训练节点。需要说明的是,发送全局数据不仅会增加训练节点的计算开销,也会增加通信开销,因此,优选发送训练数据。
需要说明的是,当共享数据为训练数据时,则训练节点得到共享数据后将共享数据作为训练数据进行模型训练即可。
这里,节点间通信可确保数据获取效率。
在一个例子中,对于任一训练设备,该训练设备的处理器融合所有训练节点的交换数据,得到当前批次的全局数据。
需要指出,假设只有一个训练设备,则训练设备的处理器可以直接得到所有训练节点各自的交换数据后融合,得到当前批次的全局数据;假设有多个训练设备,则多个训练设备之间可以通信,每个训练设备的处理器得到当前批次的全局数据。
进一步的,处理器可以将全局数据发送到训练节点,由训练节点基于全局数据得到所有训练节点各自的训练数据,基于自身的训练数据进行模型训练。
或者,处理器也可以基于该批次的全局数据,得到所有训练节点各自的训练数据,并将归属于自身的训练数据发送到对应的训练节点,由训练节点直接基于训练数据进行模型训练。
这里,考虑到处理器得到训练数据会增加计算开销,因此,优选向训练节点发送交换数据。
当存在中心训练设备,且该训练设备不是中心训练设备时,该训练设备的处理器将交换数据发送到对应的中心训练设备,接收训练中心节点发送的全局数据或训练数据;当接收全局数据时,基于全局数据得到所有训练节点各自的训练数据,并将归属于自身的训练数据发送到对应的训练节点;当接收训练数据时,将训练数据发送到对应的训练接点。
当该训练设备为中心训练设备时,处理器还可以将自身之外的训练数据发送到对应的训练节点。在一些可能的实现方式,处理器也可以将当前批次的全局数据发送到其他的各训练设备的处理器。这里,发送全局数据不仅会增加处理器的计算开销,也会增加通信开销,因此,优选发送训练数据。
需要说明的是,当共享数据为训练数据时,则训练设备的处理器得到共享数据后将共享数据作为训练数据发送到训练设备自身部署的各训练节点即可。
需要说明的是,上述数据通信方式仅仅作为示例,并不构成具体限定,具体可结合实际需求确定。
其中,交换数据可以仅仅为命中数据,在一些可能的实现方式,交换数据可以由命中数据和掩码数据组成。在实际应用中,交换数据以列表的方式表现。
这里,针对任一训练节点,该训练节点在当前批次下的命中数据用于描述当前批次下,针对该训练节点对应的数据集所查询到的所有数据。另外,所有训练节点的命中数据不同且互补,整体形成一个批次的全局数据。该训练节点的交换数据中的掩码数据,用于说明对当前批次的全局数据中归属于该训练节点的命中数据之外的其他数据进行掩码处理后的数据。
需要说明的是,对于任一训练节点,在得到交换数据的过程中,需要一个索引列表(为了便于描述和区别,称为交换索引列表,按照批次数目对全局索引列表进行批次划分得到,为位于全局索引列表中的连续的序列,也即一个片段)进行数据查询,得到该训练节点的交换数据。则对于任一训练节点,该训练节点的交换数据可以理解为基于交换索引列表,对该训练节点对应的数据集进行数据查询,将查询到的数据作为命中数据,对于没有未查询到数据的索引值,认为该索引值在该训练节点下的数据是缺失的,对缺失的数据掩码处理即可得到掩码数据。这里,命中数据为交换索引列表中各索引值命中的数据;掩码数据为交换索引列表中未命中的各索引值的padding_data(即掩码值)。这里,命中可以理解为查询到数据。
值得注意的是,在实际应用中,训练设备可能并不会得到交换索引列表,仅仅是与交换数据存在映射关系,这里,交换索引列表仅仅是为了便于描述和说明技术方案实现的本质所引入的。
本发明实施例通过训练节点在一个批次的交换索引列表,控制该训练节点在一个批次的交换数据中的命中数据的数据量和数据内容;由于一个批次的全局数据由M个训练节点在一个批次的命中数据相互补充而成,因此,M个训练节点的交换索引列表可以控制一个批次的全局数据的数据量。若需要保证一个批次的全局数据的数据量,则M个训练节点的交换数据对应的一个批次的交换索引列表相同,在实际应用中,每个训练节点基于该交换索引列表进行数据查询时仅仅得到部分索引值命中的数据,所有训练节点各自对应的交换数据融合后可以得到交换索引列表全部索引值所命中的数据;若还需要保证不同批次的全局数据的数据量相同,则不同批次的交换索引列表的长度相同。这里,不同的交换索引列表所表示的批次的全局数据不同。需要说明的是,若部分训练节点在一个批次采用的交换索引列表不同的话,很难保证一个批次的全局数据的数据量,可能会出现数据过少或数据过多的情况。因此,优选所有训练节点在一个批次采用相同的交换索引列表确定自身对应的交换数据。
当交换数据为命中数据,或者,部分或全部训练节点在一个批次采用的交换索引列表不同时,若需要将当前批次的全局数据划分为所有训练节点各自的训练数据;则训练节点在获取到其他的各训练节点的交换数据后,按照预设设置的节点顺序,对所有训练节点的命中数据进行拼接,得到的数据列表作为当前批次的全局数据。这里,所有训练节点共享该数据列表。之后,所有训练节点各自基于当前批次的全局数据可以管理并共享所有训练节点各自的训练数据,每个训练节点各自基于归属于自身的训练数据进行模型训练。
下面以所有训练节点各自在一个批次的交换索引列表相同为例进行描述。
在实际应用中,所有训练节点各自在当前批次的交换索引列表相同,该交换索引列表指示了当前批次的全局数据的索引,则所有训练节点各自在当前批次的命中数据对应的索引值 不同,整体形成交换索引列表。那么本发明实施例中所有训练节点各自的交换数据中的命中数据互补整体形成当前批次的全局数据。因此,若交换数据包括掩码数据,则对于任一训练节点,该训练节点对应的一个批次的全局数据可以理解为消除该训练节点的交换数据中的掩码数据后的数据。综上,每个训练节点可以拿到交换索引列表下自身的命中数据,在完成所有训练节点的交换数据的融合后,所有训练节点均可以掌握交换索引列表中各索引值命中的数据,将这些数据作为一个批次的全局数据,保证所有训练节点以相同的全局数据管理共享所有训练节点各自的训练数据。
另外,基于全局索引列表,可以确定不同的交换索引列表,每个交换索引列表可以对应一个批次,不同交换索引列表对应的批次不同。批次的全局数据为对应的交换索引列表中每个索引值命中的数据,也即查询到的数据。由于批次对应的交换索引列表中每个索引值命中的数据以分布式的方式分布于不同训练节点,因此通过交换训练节点的交换数据,可以补全各训练节点在一个批次所缺数据。在实际应用中,若每个批次的数据完全不同,则可按照批次数目对全局索引列表进行划分得到多个交换索引列表;若不同批次的数据出现部分重叠,则可通过一维窗口以一定的步长在全局索引列表上滑动,得到多个交换索引列表。
对于交换数据的得到方式,具体可通过如下3种实现方式得到交换数据。
实现方式1,对于任一训练设备,训练设备的处理器通过全局索引列表进行批次划分,确定当前批次下所有训练节点共享的交换索引列表;对于任一训练节点,基于交换索引列表,对该训练节点对应的数据集进行数据查询,得到交换数据。
在实际应用中,基于交换索引列表,对该训练节点对应的数据集进行数据查询,将查询到的所有数据作为命中数据。若交换数据包括掩码数据,对命中数据之外的数据掩码处理,得到交换索引列表的局部掩码列表,该列表为交换数据。
本发明实施例并不意图限制交换索引列表的确定方式,可以按照一维窗口在全局索引列表按照一定步长滑动确定,也可以按照批次数目对全局索引列表进行等分,得到多个交换索引列表。具体可结合实际需求确定,本发明实施例对此不做具体限定。
该实现方式本质上是由训练设备的处理器执行。
实现方式2,对于任一训练节点,该训练节点所在训练设备的处理器基于全局索引列表,对该训练节点对应的数据集进行数据查询,得到归属于该训练节点的全局数据掩码列表,对全局数据掩码列表进行批次划分,确定交换数据。
在实际应用中,可以按照一维窗口在全局数据掩码列表按照一定步长滑动,也可以按照批次的大小对全局数据掩码列表进行等分,得到当前批次下的列表(为了便于描述和区别,称为局部掩码列表),将局部掩码列表作为交换数据,或者将局部掩码列表中的有效数据(也即上述命中数据)作为交换数据。
这里,全局数据掩码列表和全局索引列表是对应关系,因此,对全局数据掩码列表的处理,本质上反映出了对全局索引列表的处理,因此可以得到交换索引列表进行数据查询得到的交换数据。
实现方式3,对于任一训练设备,训练设备的处理器通过全局索引列表进行批次划分,确定当前批次下所有训练节点共享的交换索引列表;对于任一训练节点,基于全局索引列表,对该训练节点对应的数据集进行数据查询,得到归属于该训练节点的全局数据掩码列表;基于交换索引列表对应在全局数据掩码列表中的列表,确定交换数据。
在实际应用中,确定交换索引列表对应在全局数据掩码列表中的列表(为了便于描述和区别,称为局部掩码列表),将局部掩码列表作为交换数据,或者将局部掩码列表中的有效数 据(也即上述命中数据)作为交换数据。
需要说明的是,所有训练节点的当前批次的交换索引列表相同,交换数据为局部掩码列表,若需要将当前批次的全局数据划分为所有训练节点各自的训练数据;则当前批次的全局数据为消除任一训练节点对应的局部掩码列表中的掩码数据,得到的交换索引列表的数据列表(由交换索引列表中每个索引值命中的数据形成)。这里,所有训练节点共享交换索引列表的数据列表。基于交换索引列表的数据列表管理并共享所有训练节点各自的训练数据,每个训练节点各自基于归属于自身的训练数据进行模型训练。
在一种可行的情况,全局数据集中的数据之间相互独立,其中数据之间相互独立,指的是数据之间不需要做任何相互影响的数据增强操作。则全局索引列表中的任一索引值用于查询全局数据集中的一条数据,一条数据可以理解为一个样本。在实际应用中,采用键值对key-value的方式存储一条数据;在一个例子中,索引值可以理解为key。考虑到全局数据集较大的情况下,key会占用大量的存储空间;则在一个例子中,索引值还可以为对key进行映射得到用于数据查询的值,比如哈希值,从而降低全局索引列表占用的存储空间。需要说明的是,本发明实施例可能需要对一条数据进行数据处理,比如,数据增强、数据清洗、数据选取、图像解码、图像抠图、图像缩放、图像归一化、图像变换通道、文本转字典序、文本掩码、文本补齐等。示例地,一条数据可以为图像、文本、语音数据等;但是由于索引值没有发生改变,则在进行数据查询的过程中,可以查询到数据集中的一条数据,以及该条数据进行数据处理后的数据;这里,具体选择什么样的数据作为交换数据,需要结合实际需求确定,本发明实施例对此不做具体限定。示例地,对于任一节点,该训练节点的命中数据为基于交换索引列表,对该训练节点对应的数据集进行数据查询,查询到的所有数据作为命中数据。
在一个例子中,全局数据掩码列表具体可通过如下方式实现。
对于任一训练节点,该训练节点所在的训练设备的处理器对于全局索引列表中的每个索引值,基于该索引值对该训练节点对应的数据集进行查询,若未命中数据,产生padding_data;将全局数据掩码列表中的各索引值替换为查询到的数据或padding_data,得到全局数据掩码列表。其中,padding_data为掩码数据,用于说明数据集中不存在的数据,可以为0,-1等值。
举例来说,以两个训练节点为例,假设全局索引列表为[4,6,1,3,0,2,5,7],[4,6,1,3,0,2,5,7]对应的数据列表为[data4,data6,data1,data3,data0,data2,data5,data7],也即全局数据集。训练节点0持有的数据为[data0,data1,data2,data3],那么训练节点0最终产生的全局数据掩码列表为[padding_data,padding_data,data1,data3,data0,data2,padding_data,padding_data];训练节点1持有的数据为[data4,data5,data6,data7],那么训练节点1最终产生的全局数据掩码列表为[data4,data6,padding_data,padding_data,padding_data,padding_data,data5,data7]。假设交换索引列表为[4,6,1,3],则训练节点0的交换数据为[padding_data,padding_data,data1,data3],有效数据(也即上述命中数据)为data1,data3;则训练节点1的交换数据为[data4,data6,padding_data,padding_data],有效数据(也即上述命中数据)为data4,data6。训练节点0和训练节点1进行数据交换后,各自基于[data4,data6,data1,data3]进行模型训练。
在另一种可行的情况,全局数据集中的数据之间不相互独立,其中数据之间不相互独立,指的是数据之间存在以批次为单位的相互影响的数据增强操作(例如需要对一个批次内的数据1和数据2做加权平均操作,则说明样本之间不是相互独立的)。则全局索引列表中的索引 值用于查询数据集的一个批次的数据。在实际应用中,采用键值对key-value的方式存储一个批次的数据,则索引值可以理解为key,在一些可行的方式,索引值还可以为对key进行映射得到用于数据查询的值,比如哈希值。需要说明的是,本发明实施例可能需要对一个批次的数据进行数据处理,比如,数据增强等融合处理;示例地,一个批次的数据为多个图像,则数据处理可以为图片融合等操作。但是由于索引值没有发生改变,则在进行数据查询的过程中,可以查询到数据集中的一个批次的数据,以及该批次的数据进行数据处理后的数据;这里,具体选择什么样的数据作为交换数据,需要结合实际需求确定,本发明实施例对此不做具体限定。示例地,则对于任一训练节点,该训练节点所在的训练设备存储有该训练节点的多个批次索引值各自对应的批次的数据,对每个批次的数据进行数据增强,得到每个批次的增强数据(为了便于描述和区别,称为增强批次数据);对应的,该训练节点的命中数据为,基于交换索引列表,针对该训练节点的增强批次数据进行批次查询,将查询到的所有增强批次数据作为命中数据。
需要说明的是,全局索引列表由所有训练节点各自的每个批次索引值形成,全局索引列表的索引值的数目为
其中,M表示训练节点的总数目,N
i表示第i个训练节点的索引值的数目。其中,对于任一训练节点,该训练节点的所有索引索引值查询到的批次的数据形成该训练节点对应的数据集。在实际应用中,所有训练节点的批次索引值的数目可以相同,也可以不同,还可以部分相同,具体可结合实际需求确定,本发明实施例对此不做具体限定,比如计算力较强的训练节点的批次索引值的数目较多,计算力较弱的训练节点的批次索引值的数目较少。在一个例子中,全局数据掩码列表具体可通过如下方式实现。
对于任一训练节点,该训练节点所在的训练设备的处理器对于全局索引列表中的每个索引值,基于该索引值对该训练节点对应的数据集进行批次的数据查询,若未命中则产生padding_Batch_data;将全局数据掩码列表中的各索引值替换为查询到的增强批次数据或掩码批次数据,得到全局数据掩码列表。其中,padding_Batch_data用于说明数据集中不存在该批次的数据,由多个padding_data组成,padding_data的数目和增强批次数据中数据的条数相同。
如果先构建全局掩码数据列表,即将该索引值替换为查询到的一个批次的数据,后续在对掩码数据列表进行批次划分后进行批次增强会受到padding_data的影响,可能导致数据增强后的数据出现信息缺失、信息不全面,降低了训练数据的参考价值。基于此,本发明实施例以批次为单位进行数据增强,不会受到padding_data的影响。
举例来说,以两个训练节点为例,假设全局索引列表为[4,6,1,3,0,2,5,7],[4,6,1,3,0,2,5,7]对应的批次数据列表为[Batchdata4,Batchdata6,Batchdata1,Batchdata3,Batchdata0,Batchdata2,Batchdata5,Batchdata7],也即全局数据集,其中,Batchdatai表示一个批次的数据,可以多条数据,记为datai1、datai2、…,i=0、1、2、…。训练节点0持有的批次数据列表为[Batchdata0,Batchdata1,Batchdata2,Batchdata3],对应批次索引列表[0,1,2,3],假设[0,1,2,3]对应的增强批次数据列表为[eBatchdata0,eBatchdata1,eBatchdata2,eBatchdata3],那么训练节点0最终产生的全局数据掩码列表为[padding_Batch_data,padding_Batchdata,eBatchdata1,eBatchdata3,eBatchdata0,eBatchdata2,padding_Batch_data,padding_Batch_data];训练节点1持有的批次数据列表为[Batchdata4,Batchdata5,Batchdata6,Batchdata7]对应批次索引列表[4,5,6,7],假设[4,5,6,7]对应的增强批次数据列表为[eBatchdata4,eBatchdata5,eBatchdata6,eBatchdata7],那么训练节点1最终产生的全局数据掩码列表为[eBatchdata4,eBatchdata6,padding_Batch_d ata,padding_Batch_data,padding_Batch_data,padding_Batch_data,eBatchdata 5,eBatchdata 7]。这里,padding_Batch_data中的padding_data的数目与增强批次数据的数据量是相同的,举例来说,假设eBatchdata4包括10条数据,则padding_Batch_data包括10个padding_data。假设交换索引列表为[4,6,1,3],则训练节点0的交换数据为[[padding_Batch_data,padding_Batchdata,eBatchdata1,eBatchdata3],有效数据(即命中数据)为eBatchdata1,eBatchdata3;则训练节点1的交换数据为[eBatchdata4,eBatchdata6,padding_Batch_data,padding_Batch_data],有效数据(即命中数据)为eBatchdata4,eBatchdata6。训练节点0和训练节点1进行数据交换后,各自基于[eBatchdata4,eBatchdata6,eBatchdata1,eBatchdata3]进行模型训练。
在实际应用中,本发明实施例提供的模型训练系统需要进行多轮迭代,每轮迭代,全局索引列表可以混洗,所有训练节点共享混洗后的列表,训练设备基于混洗后的列表实现数据集的管理,实现批次迭代;另外,不同轮次的混洗后的列表不同,从而使得交换索引列表不同,进而改变交换数据,但是每个轮次所有训练节点共享混洗后的列表。混洗的好处在于打乱数据的顺序,改变数据的分布,提高数据的参考价值。另外,全局数据集中的数据之间不相互独立,还可以对训练节点对应的数据集进行混洗,得到混洗后的数据,对混洗后的数据进行批次打包后以批次为单位进行数据增强,这样,全局索引列表和批次的数据均进行混洗,通过两级混洗,充分打乱数据的顺序,改变数据的分布,提高数据的参考价值。另外,在按照批次完成对全局数据集的遍历后,需要重新对全局索引列表进行混洗,构建新的数据的顺序,从而构造不同的批次,确保数据的参考价值。
在一个例子中,训练设备可以用于提供云服务,其可以为一种可以与电子设备建立通信连接、且能为电子设备提供运算功能和/或存储功能的硬件服务器。其中,电子设备可以为手机、电脑、可穿戴设备、音箱等用户使用的设备。
在一个例子中,本发明实施例中涉及的训练设备可以为服务器等高性能计算设备。另外,训练节点可以为加速器芯片(用于模型训练的计算芯片),比如,NPU(Neural-networkProcessing Unit,嵌入式神经网络处理器),GPU(graphics processing unit,图形处理器);示例地,典型的如一台服务器可以插入1/2/4/8个加速器芯片,加速器是用于模型训练的计算设备,一个加速器芯片为一个训练节点。训练节点可以进行任何模型的训练,本发明实施例并不意图限制模型的类型和结构。
以上即是对本方案中涉及的模型训练系统的介绍。接下来对上述模型训练系统中的训练设备进行介绍。
图3示出了本发明实施例中的训练设备C1的结构示例图。如图3所示,训练设备C1包括中央处理器301,存储器302、加速器303、网络接口304。其中,处理器301,存储器302、加速器303、网络接口304可通过总线或其他方式连接。
其中,存储器302(memory)用于存放程序和数据。例如存放训练节点对应的数据集、全局数据集的全局索引列表和迭代器(用于基于全局索引列表从全局视角管理训练节点对应的数据集)的程序,同时,还用于存储操作系统,操作系统包括但不限于:YindoYs系统(一种操作系统),Linux系统(一种操作系统),鸿蒙系统(一种操作系统)等等,在此不做限定。存储器303包括主存储器和辅助存储器,主存储器又称内存储器(简称内存),辅助存储器又称外存储器(简称外存)。外存可以长期保存信息并且不依赖于电来保存信息,但是由机械部件带动,速度与中央处理器301相比就显得慢的多,通常为非易失性存储器 (non-volatile memory),例如至少1个硬盘,软盘,磁带,CD等,用于存储数据集、全局索引列表、迭代器的程序和操作系统。内存指的就是主板上的存储部件,直接与中央处理器301直接与之沟通,并用其存储数据的部件,存放当前正在使用的(即执行中)的数据和程序,它的物理实质就是一组或多组具备数据输入输出和数据存储功能的集成电路,内存只用于暂时存放程序和数据,一旦关闭电源或发生断电,其中的程序和数据就会丢失。内存通常为易失性存储器,例如高速随机存取存储器(Random-Access Memory,RAM)。在实际应用中,本发明实施例将硬盘存储的数据集、全局索引列表和迭代器的程序加载到内存中,中央处理器301从内存中读取迭代器的程序、数据集和全局索引列表。
其中,中央处理器301是计算机110的计算核心及控制核心。例如,中央处理器301可以从内存读取全局索引列表、数据集和迭代器的程序,执行迭代器的程序,以全局索引列表从全局视角管理数据集,得到上述交换数据、当前批次的全局数据或者训练节点的训练数据,并将其发送至训练节点;另外,在数据集有m个时,中央处理器301可以建立训练设备C1的迭代器的m个进程,通过迭代器ij表示第Ci个训练设备的第tij个训练节点的数据处理进程,则训练设备C1的m个训练节点的数据处理进程称为迭代器11、…、迭代器1m,m个进程并行执行。
其中,加速器303为模型训练的核心,包括训练节点11、…、训练节点1m,对于任一训练节点,用于接收处理器301的一个进程执行过程中发送的当前批次的交换数据、全局数据或训练数据;在接收交换数据时,还用于与其他训练设备的训练节点进行通信,融合所有训练节点的交换数据,得到当前批次的全局数据,并基于当前批次的全局数据得到自身的训练数据进行模型训练;在接收全局数据时,还用于基于当前批次的全局数据得到自身的训练数据进行模型训练;在接收到训练数据时,直接基于训练数据进行模型训练;加速器303可以为包括多个加速器芯片,比如GPU(Graphic Processing Unit,图形处理器),MIC(Many Integrated Core,众核协处理器)、NPU(Neural-network Processing Unit,嵌入式神经网络处理器);在一个例子中,本发明实施例中一个加速器芯片作为一个训练节点。
其中,网络接口304用于收发数据,例如,将处理器301处理后的数据发送至其他的电子设备,或者,接收其他的电子设备发送的数据等;网络接口304可以包括标准的有线接口和无线接口(如YI-FI,移动通信接口等),具体需要结合实际需求确定。
另外,训练设备1还可以包括USB接口305,USB接口305用于与外部存储设备进行交互,例如,接受外部存储设备发送的数据集。
进一步地,本发明实施例中的训练设备C1还可以包括其他的处理单元,比如其他通用处理器、数字信号处理器(digital signal processor,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现场可编程门阵列(field programmable gate array,FPGA)或者其他可编程逻辑器件、晶体管逻辑器件,硬件部件或者其任意组合。通用处理器可以是微处理器,也可以是任何常规的处理器。这里,不同的处理单元可以是独立的器件,也可以集成在一个器件中。
需要说明的是,训练设备C1的中央处理器301进行数据集的处理得到上述交换数据,训练节点进行节点间通信和模型训练,中央处理器301和训练节点各自的处理可以并行,提高处理效率。另外,训练节点301也可以并行实现节点间通信和模型训练。
另外,训练设备C2、…、训练设备Cn的结构参见训练设备C1,此处不再赘述。需要说明的是,在实际应用中,n个训练设备的中央处理器301的m个进程并行执行。另外,m个训练设备存储的迭代器的程序相同,区别仅仅在于处理的数据不同,但是数据处理的方式完全 相同。
为了便于描述和区别,下文中以图1示出的训练设备C1、…、Cn,以及n*m个训练节点t11、t12、…、t1m、…、tnm为例进行描述;假设n*m个训练节点各自对应的数据处理进程为图3示出的迭代器11、迭代器12、…、迭代器1m、…、迭代器nm,其中,训练设备Ci包括迭代器i1、迭代器i2、…、迭代器im。迭代器11、…、迭代器nm并行执行,由于每个数据处理进程的数据处理方式相同,下文主要以迭代器11为例进行数据处理过程的描述。
以上即是对本方案中涉及的模型训练系统,以及该模型训练系统中训练设备的介绍。接下来基于上述图1中描述的模型训练系统和图4所示的本发明实施例提供的一种模型训练方案的示意图,对本方案中涉及的训练设备的模型训练方案进行详细介绍。需说明的是,该模型训练方案主要应用的场景为:全局数据集中的数据之间相互独立,全局索引列表中的索引值用于查询全局数据集中的一条数据;这里,为了便于描述和区别,将全局索引列表称为全局数据索引列表,索引值称为数据索引值。详见下文描述。
步骤11.对于n台训练设备的每台,存储部署的m个训练节点各自对应的数据集和全局数据索引列表;其中,全局数据索引列表用于命中n*m个训练节点各自对应的数据集;n*m个训练节点各自对应的数据集由一个全局数据集进行n*m等分而成。
步骤12.对于n*m个训练节点的任一节点,该训练节点所在的训练设备对全局数据索引列表按照n*m个训练节点共享的随机数种子执行混洗,确定混洗后的全局数据索引列表。
需要说明的是,在本步骤中,每台训练设备持有全局数据索引列表而非仅仅对应到训练节点持有的数据集的局部数据索引列表,同时,n*m个训练节点共享随机数种子,说明不同训练设备针对部署的所有训练节点,均以相同的随机数种子进行混洗,保证混洗后的全局数据索引列表的结果是一致的。
图5a是图4提供的一种模型训练方案的流程示意图一。如图5a所示,迭代器11对全局数据索引列表oIndexList进行混洗shuffle,得到混洗后的全局数据索引列表sIndexList。迭代器11、…、迭代器nm得到的sIndexList相同,也即训练设备C1、…、Cn得到的sIndexList相同。
值得注意的是,全局数据索引列表表示了固定的数据顺序,为了使得数据的顺序发生改变,以充分学习不同数据之间的关系,因此,需要对全局数据索引列表进行混洗。
需要指出,在一个轮次中,基于混洗后的全局数据索引列表实现批次迭代;另外,在下一个轮次,随机数种子改变,所有训练节点改变后的随机数种子相同,从而再次共享混洗后的全局索引列表。
步骤13.对于n*m个训练节点的任一节点,该训练节点所在的训练设备基于混洗后的全局数据索引列表,对该训练节点对应的数据集进行数据查询,得到全局数据掩码列表。
根据一种可行的实现方式,迭代器11对混洗后的全局数据索引列表sIndexList中的数据索引值进行遍历,对于任一数据索引值,若未命中数据集dp11,产生padding_data,否则查询到一条数据;在遍历数据索引值后,将混洗后的全局数据索引列表sIndexList中的各数据索引值替换为查询到的数据或padding_data,即可得到全局数据掩码列表。但是本发明实施例需要应用到超大数据集,训练节点也是大量的,每个训练节点所对应的数据集的数据量并不多,如果全量查询,会增加算力,因此该实现方式适合数据集不是特别大的场景。
根据另一种可行的实现方式,迭代器11对混洗后的全局数据索引列表sIndexList中的索引值进行遍历,对于任一数据索引值,当该索引值落在数据集dp11的数据索引范围内,则 以该索引值去获取到真实的数据作为查询到的数据,否则产生padding_data;将混洗后的全局数据索引列表sIndexList中的数据各索引值替换为查询到的数据或padding_data,,即可得到全局数据掩码列表。
如图5a所示,对于迭代器11,对混洗后的全局数据索引列表sIndexList中的数据索引值进行遍历,当该索引值落在数据集dp11的数据索引范围内,认为该索引值没有越界,产生有效值1,否则产生掩码值0,遍历完成后,按照混洗后的全局数据索引列表sIndexList中的各索引值的顺序,对有效值1或掩码值0排列,得到掩码列表MaskList;然后,对掩码列表MaskList和混洗后的全局数据索引列表sIndexList相乘,即可得到掩码全局数据索引列表MasksIndexList;然后,基于掩码全局数据索引列表MasksIndexList查数据集dataset(数据集dp11),当索引值为0时,查询到的数据为“空”,否则,可以查询到数据集dp11中的一条数据,得到掩码全局数据索引列表MasksIndexList对应的全局数据列表dataList;之后,全局数据列表dataList和掩码列表MaskList相乘,得到全局数据掩码列表MaskdataList。
需要说明的是,迭代器11、…、迭代器nm得到的全局数据掩码列表MaskdataList表示相同的数据顺序,换言之,迭代器11、…、迭代器nm得到的全局数据掩码列表MaskdataList中相同位置对应的有效数据是相同。
图5b是图4提供的一种模型训练方案的流程示意图二。如图5b所示,假设有两个训练节点t11和t21,t11部署在训练设备C1,t21部署在训练设备C2。假设全局数据索引列表oIndexList为[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16],训练节点t11的局部数据列表dataset为[A1,A2,A3,A4,A5,A6,A7,A8],索引范围为1-8;训练节点t21的局部数据列表dataset为[A9,A10,A11,A12,A13,A14,A15,A16],索引范围为9-16,这两个训练节点均对应全量的长度为16的索引列表,尽管它们各自仅持有8条数据。假设经过混洗后得到的全局数据索引列表sIndexList为[13,15,2,7,4,3,10,9,11,6,12,16,1,8,5,14]。
则对于训练节点t11,依据sIndexList中的数据索引值是否超出本节点对应的数据集dataset的数据索引范围1-8,产生的掩码列表MaskList[0,0,1,1,1,1,0,0,0,1,0,0,1,1,1,0];对掩码列表MaskList和混洗后的全局数据索引列表sIndexList相乘,得到掩码全局数据索引列表MasksIndexList[0,0,2,7,4,3,0,0,0,6,0,0,0,8,5,0];使用掩码全局数据索引列表MasksIndexList对局部数据列表dataset[A1,A2,A3,A4,A5,A6,A7,A8]进行查表,得到全局数据列表dataList[X,X,A2,A7,A4,A3,X,X,X,A6,X,X,A1,A8,A5,X](其中X为索引值为0时查询到的值),而后与掩码列表MaskList[0,0,1,1,1,1,0,0,0,1,0,0,1,1,1,0]相乘,得到的全局数据掩码列表MaskdataList[0,0,A2,A7,A4,A3,0,0,0,A6,0,0,A1,A8,A5,0]。
对于训练节点t21,依据sIndexList中的数据索引值是否超出本节点对应的数据集dataset的数据索引范围9-16,产生掩码列表MaskList[1,1,0,0,0,0,1,1,1,0,1,1,0,0,0,1];对掩码列表MaskList和混洗后的全局数据索引列表sIndexList相乘,得到掩码全局数据索引列表MasksIndexList[13,15,0,0,0,0,10,9,11,0,12,16,0,0,0,14];使用掩码全局数据索引列表MasksIndexList对局部数据列表dataset[A9,A10,A11,A12,A13,A14,A15,A16]进行查表,得到全局数据列表dataList[A13,A15,X,X,X,X,A10,A9,A11,X,A12,A16,X,X,X,A14](其中X为索引值为0时查询到的值),而后与掩码列表MaskList[1,1,0,0,0,0,1,1,1,0,1,1,0,0,0,1]相乘,得到全局数据掩码列表MaskdataList[A13,A15,0,0,0,0,A10,A9,A11,0,A12,A16,0,0,0,A14]。
步骤14.对于n*m个训练节点的任一节点,该训练节点所在的训练设备对该训练节点对 应的全局数据掩码列表进行批次划分,确定该训练节点对应的当前批次的交换数据。
得到了全局数据掩码列表后,构造批次迭代器,该批次迭代器接入训练节点中。批次迭代器以批次大小为依据构造批次,得到不同批次,按照批次迭代器输出的批次的先后顺序,得到第1个批次的交换数据、第2个批次的交换数据、…,在实际应用中,批次迭代器当前输出的数据为当前批次的交换数据。这里,第i个批次中的i为批次编号。
如图5b所示,,对于训练节点t11,训练节点t11的全局数据掩码列表MaskdataList为[0,0,A2,A7,A4,A3,0,0,0,A6,0,0,A1,A8,A5,0],输入批次迭代器,产生的第1个批次的交换数据为交换索引列表[13,15,2,7]下的数据列表[0,0,A2,A7],对应的,第2个批次的交换数据为交换索引列表[4,3,10,9]下的数据列表[A4,A3,0,0],第3个批次的交换数据为交换索引列表[11,6,12,16]下的数据列表[0,A6,0,0],第4个批次的交换数据为交换索引列表[1,8,5,14]下的数据列表[A1,A8,A5,0]。
对于训练节点t21,训练节点t21的全局数据掩码列表MaskdataList为[A13,A15,0,0,0,0,A10,A9,A11,0,A12,A16,0,0,0,A14],输入批次迭代器,产生的第1个批次的交换数据为交换索引列表[13,15,2,7]下的数据列表[A13,A15,0,0],第2个批次的交换数据为交换索引列表[4,3,10,9]下的数据列表[0,0,A10,A9],第3个批次的交换数据为交换索引列表[11,6,12,16]下的数据列表[A11,0,A12,A16],第4个批次的交换数据为交换索引列表[1,8,5,14]下的数据列表[0,0,0,A14]。
显然,对于相同编号的批次,训练节点t11和训练节点t21对应的交换索引列表是相同,训练节点t11在该批次中掩码的数据,为训练节点t21在批次中未掩码的数据;训练节点t11在该批次中未掩码的数据,为训练节点t21在该批次中掩码的数据。在实际应用中,所有训练节点在相同时刻接收相同编号的批次的交换数据。
步骤15.对于n*m个训练节点的任一节点,该训练节点获取其他训练节点各自的当前批次的交换数据后融合,得到当前批次的全局数据,基于全局数据得到自身的训练数据进行模型训练。
根据一种可行的实现方式,如图5a所示,训练节点t11接收t12、…、t1m、…、tnm各自发送的当前批次的交换数据MaskdBatchData;对n*m个训练节点t11、t12、…、t1m、…、tnm各自的当前批次的交换数据MaskdBatchData进行有效的数据的融合,得到训练数据Tradata。其他的训练节点类同,不再赘述。需要理解的是,训练节点t11、t12、…、t1m、…、tnm各自的当前批次的交换数据MaskdBatchData是互补的,从而使得每个训练节点补全当前批次所缺数据,得到自身的训练数据实现模型训练。在实际应用中,n*m个训练节点各自具有节点通信模块。其中,节点通信模块用于实现ReduceScatter,其中,ReduceScatter指的是一种集合通信操作,ReduceScatter操作会将每张卡的输入先进行求和,然后在第0维度按卡数切分,将数据分发到对应的卡上。
如图5b所示,假设当前批次的交换数据为第1个批次的交换数据,则对于训练节点t11,当前批次的交换数据MaskdBatchData为[0,0,A2,A7];对于训练节点t21当前批次的交换数据MaskdBatchData为[A13,A15,0,0];之后训练节点t11和训练节点t21进行ReduceScatter通信以交换有效的数据,则训练节点t11通过ReduceScatter操作得到训练节点t21未掩码的数据[A13,A15],基于训练数据Tradata[A13,A15]进行模型训练;训练节点t21通过ReduceScatter操作得到训练节点t11未掩码的数据[A2,A7],基于训练数据Tradata[A2,A7]进行模型训练。在一些可能的实现方式,训练节点t11和训练节点t21通过相同的训练数据进行模型训练,比如,各自基于训练数据Tradata[A13,A15,A2,A7]进行模型训练。
根据一种可行的实现方式,训练节点t11将当前批次的交换数据发送到指定的训练节点,假设为训练节点t12,训练节点t12基于n*m个训练节点t11、t12、…、t1m、…、tnm各自的当前批次的交换数据MaskdBatchData进行有效数据的融合,得到训练数据Tradata,将训练数据Tradata发送至除训练节点t12之外的其他的训练节点,使得n*m个训练节点t11、t12、…、t1m、…、tnm各自基于接收到的训练数据Tradata进行模型训练。
对于上述技术方案,本发明实施例将全局数据集视作一张分布于所有训练节点的全局数据索引列表,以分布式查表的方式,对查表越界部分掩码,在最后执行通信消除掩码数据,实现每个训练节点最终拿到一个批次的全局数据时相同的,基于该全局数据得到每个训练节点各自的用于模型训练的数据。换言之,本发明实施例中通过所有训练节点对于交换数据中命中数据的交换,使得每个训练节点消除自身的交换数据中掩码数据,基于此得到自身的训练数据进行模型训练,实现部分存储全局数据训练。
以上即是对本方案中提供的一种模型训练方案的介绍。接下来基于上文所描述的部分或全部内容和图6所示的本发明实施例提供的另一种模型训练方案的示意图,介绍本方案中提供的另一种模型训练方案进行介绍。需说明的是,该模型训练方案主要应用的场景为:全局数据集中的数据之间不相互独立,全局索引列表中的索引值用于查询全局数据集中的一个批次;这里,为了便于描述和区别,将全局索引列表称为全局批次索引列表,索引值称为批次索引值。详见下文描述。
步骤21.对于n台训练设备的每台,存储部署的多个训练节点各自对应的数据集和全局批次索引列表;其中,全局数据索引列表用于命中n*m个训练节点各自对应的数据集;n*m个训练节点各自对应的数据集由一个全局数据集进行n*m等分而成。
步骤22.对于n*m个训练节点的任一节点,该训练节点所在的训练设备对全局批次索引列表按照n*m个训练节点共享的随机数种子执行混洗,确定混洗后的全局批次索引列表。
需要说明的是,在本步骤中,每台训练设备持有全局批次索引列表而非仅仅对应到训练节点持有的数据集的批次索引列表,同时,不同训练设备针对部署的所有训练节点,均以相同的随机数种子进行混洗,保证混洗后的全局批次索引列表的结果是一致的。
假设批次大小为N,n*m个训练节点t11、t12、…、t1m、…、tnm各自具有N个批次索引值,不同训练节点的批次索引值不同;则全局批次索引列表中的批次索引值的数目为N*n*m。
图7b是图6提供的另一种模型训练方案的流程示意图二。如图7b所示,假设有两个训练节点t11和t21,t11部署在训练设备C1,t21部署在训练设备C2。每个训练节点具有16条数据,批次大小为4,则全局批次索引列表为[1,2,3,4,5,6,7,8]。训练节点t11的局部批次索引列表为[1,2,3,4],批次索引范围为1-4;训练节点t11的局部批次索引列表为[5,6,7,8],批次索引范围为5-8。
需要指出,在一个轮次中,基于混洗后的全局批次索引列表实现批次迭代;另外,在下一个轮次,随机数种子改变,所有训练节点改变后的随机数种子相同,从而再次共享混洗后的全局批次索引列表。
步骤23.对于n*m个训练节点的任一节点,该训练节点所在的训练设备对混洗后的全局批次索引列表中,该训练节点对应的数据集的批次索引值之外的批次索引值进行掩码,得到掩码全局批次索引列表。
根据一种可行的实现方式,对混洗后的全局批次索引列表sBatchIndexList中的批次索引值进行遍历,对于任一批次索引值,当批次索引值落在训练节点对应的数据集的批次索引 范围内,保留批次索引值,否则产生padding_data;在处理完混洗后的全局批次索引列表sBatchIndexList中的各批次索引值后,得到掩码全局批次索引列表MaskedsBatchIndexList。
图7a是图6提供的另一种模型训练方案的流程示意图一。如图7a所示,在实际应用中,对混洗后的全局批次索引列表sBatchIndexList中的批次索引值进行遍历,遍历完成后得到批次掩码列表BatchMaskList;其中,当该批次索引值落在训练节点对应的数据集的批次索引范围内,认为该索引值没有越界,产生有效值1,否则产生掩码值0;然后,对批次掩码列表BatchMaskList和混洗后的全局批次索引列表sBatchIndexList相乘,即可得到掩码全局批次索引列表MaskedsBatchIndexList。
如图7b所示,假设混洗后的全局批次索引列表sBatchIndexList为[3,2,4,7,5,6,8,1]。
对于训练节点t11,依据批次索引值是否超出本节点的批次索引范围1-4,产生批次掩码列表BatchMaskList[1,1,1,0,0,0,1],与混洗后的全局批次索引列表sBatchIndexList相乘,得到掩码全局批次索引列表MaskedsBatchIndexList[3,2,4,0,0,0,0,1]。
对于训练节点t21,依据批次索引值是否超出本节点的批次索引范围5-8,产生批次掩码列表BatchMaskList[0,0,0,1,1,1,1,0],与混洗后的全局批次索引列表sBatchIndexList相乘,得到掩码全局批次索引列表MaskedsBatchIndexList[0,0,0,7,5,6,8,0]。
步骤24.对于n*m个训练节点的任一节点,该训练节点所在的训练设备对该训练节点对应的数据集进行混洗、批次划分,以批次为单位进行数据增强,得到该训练节点的多个批次索引值各自对应的增强批次数据。
本发明实施例以批次为单位产生增强批次数据或者padding_Batch_data(掩码批次数据),从而使得批次内的数据增强效果不受掩码的影响。需要说明的是,本发明实施例执行本地存储的数据集的混洗,这样,全局批次索引列表和局部数据即均进行混洗,通过两级混洗,充分打乱数据的顺序,改变数据的分布,提高数据的参考价值。
如图7a所示,对于迭代器11,根据一种可行的实现方式,提取掩码全局批次索引列表MaskedsBatchIndexList中的有效值,得到有效批次索引列表ValidsBatchIndexList;然后,对数据集dp11的局部数据索引列表LocalDataindexList进行混洗,对混洗后的局部数据索引列表进行批次划分,得到多个批次索引值各自的混洗批次数据索引列表;然后,将有效批次索引列表ValidsBatchIndexList中的批次索引值替换为对应的混洗批次数据索引列表,得到有效数据索引列表ValidDataIndexList;然后,基于有效数据索引列表ValidDataIndexList对数据集dp11进行数据查询,得到有效数据列表ValidDataList;之后,对有效数据列表ValidDataList进行批次打包后以批次为单元进行数据增强,得到增强有效批次数据eValidBatchData。
如图7b所示,假设训练节点t11持有数据列表dataset[A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13,A14,A15,A16]、全局批次索引列表sBatchIndexList[1,2,3,4,5,6,7,8]、局部批次索引列表[1,2,3,4],以及,批次数据索引列表[[K1,K2,K3,K4],[K5,K6,K7,K8],[K9,K10,K11,K12],[K13,K14,K15,K16]],这里,Ki可查询到Ai,i=1、2、…、16。
对于训练节点t11,局部数据列表dataset[A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13,A14,A15,A16],可产生局部数据索引列表LocalDataindexList[K1,K2,K3,K4,K5,K6,K7,K8,K9,K10,K11,K12,K13,K14,K15,K16],对其执行混洗,得到混洗后的局部数据索引列表sLocalDataindexList[K3,K4,K12,K14,K2,K16,K5,K13,K8,K10,K7,K6,K11,K15,K1,K9],这里批次索引值1对应的混洗批次数据索引列表为[K3,K4,K12,K14],批次索引值2对应的混洗批次 数据索引列表为[K2,K16,K5,K13],批次索引值3对应的混洗批次数据索引列表为[K2,K8,K10,K7,K6],批次索引值4对应的混洗批次数据索引列表[K3,K11,K15,K1,K9]。
掩码全局批次索引列表MaskedsBatchIndexList[3,2,4,0,0,0,0,1],得到有效批次索引列表ValidsBatchIndexList[3,2,4,1];基于ValidsBatchIndexList进行对[1,2,3,4]对应的混洗批次数据索引列表进行查表,得到有效数据索引列表ValidDatalndexList[K8,K10,K7,K6,K2,K16,K5,K13,K11,K15,K1,K9,K3,K4,K12,K14];基于有效数据索引列表ValidDatalndexList对数据集dataset进行查表,得到有效数据列表ValidDataList[A8,A10,A7,A6,A2,A16,A5,A13,A11,A15,A1,A9,A3,A4,A12,A14]。
之后,对有效数据列表ValidDataList进行批次打包以批次为单位进行数据增强,得到增强有效批次数据eValidBatchData[[A8,A10,A7,A6,e11,e12],[A2,A16,A5,A13,e21,e22],[A11,A15,A1,A9,e31,e32],[A3,A4,A12,A14,e41,e42]],对应ValidsBatchIndexList[3,2,4,1]。则批次索引值3的增强批次数据为[A8,A10,A7,A6,e11,e12],批次索引值2的增强批次数据为[A2,A16,A5,A13,e21,e22],其他类推不再赘述。
对于训练节点t21,对应局部数据列表dataset[A17,A18,A19,A20,A21,A22,A23,A24,A25,A26,A27,A28,A29,A30,A31,A32]、全局批次索引列表sBatchIndexList[1,2,3,4,5,6,7,8]、局部批次索引列表[5,6,7,8],以及,局部批次索引列表[5,6,7,8],所对应的批次数据索引列表为[[K17,K18,K19,K20],[K21,K22,K23,K24],[K25,K26,K27,K28],[K29,K30,K31,K32]],这里,Ki可查询到Ai,i=17、18、…、32。
对于训练节点t21,局部数据列表dataset[A17,A18,A19,A20,A21,A22,A23,A24,A25,A26,A27,A28,A29,A30,A31,A32],可产生局部数据索引列表LocalDataindexList[K17,K18,K19,K20,K21,K22,K23,K24,K25,K26,K27,K28,K29,K30,K31,K32],对其执行混洗,得到混洗后的局部数据索引列表sLocalDataindexList[K21,K25,K27,K20,K18,K22,K31,K28,K32,K26,K17,K30,K24,K23,K19,K29],批次索引值5对应的混洗批次数据索引列表为[K21,K25,K27,K20],批次索引值6对应的混洗批次数据索引列表[K18,K22,K31,K28],批次索引值6对应的混洗批次数据索引列表为[K32,K26,K17,K30],批次索引值8对应的混洗批次数据索引列表为[K24,K23,K19,K29]。
掩码全局批次索引列表MaskedsBatchIndexList[0,0,0,7,5,6,8,0],得到有效批次索引列表ValidsBatchIndexList[7,5,6,8];基于ValidsBatchIndexList进行对[7,5,6,8]对应的混洗批次数据索引列表进行查表,得到有效数据索引列表ValidDatalndexList[K32,K26,K17,K30,K21,K25,K27,K20,K18,K22,K31,K28,K24,K23,K19,K29];基于有效数据索引列表ValidDatalndexList对数据集dataset进行查表,得到有效数据列表ValidDataList[A32,A26,A17,A30,A21,A25,A27,A20,A18,A22,A31,A28,A24,A23,A19,A29]。
之后,对有效数据列表ValidDataList进行批次打包后以批次为单位进行数据增强,得到增强有效批次数据eValidBatchData[[A32,A26,A17,A30,e13,e14],[A21,A25,A27,A20,e23,e24],[A18,A22,A31,A28,e33,e34],[A24,A23,A19,A29,e43,e44]],对应有效批次索引列表ValidsBatchIndexList[7,5,6,8]。则批次索引值7的增强批次数据为[A32,A26,A17,A30,e13,e14],其他类推,不再赘述。
步骤25.对于n*m个训练节点的任一节点,该训练节点所在的训练设备将该训练节点对应的掩码全局批次索引列表中的批次索引值替换为对应的增强批次数据或掩码批次数据,得到该训练节点对应的全局数据掩码列表。
将掩码全局批次索引列表MaskedsBatchIndexList中的未掩码的批次索引值替换为对应 的增强批次数据,掩码的批次索引值替换为对应的掩码批次数据,确定全局数据掩码列表MaskdataList。这里,掩码批次数据中掩码值的数目和增强批次数据中的数据的条数相同。
对于训练节点t11,掩码全局批次索引列表MaskedsBatchIndexList为[3,2,4,0,0,0,1],增强有效批次数据eValidBatchData为[[A8,A10,A7,A6,e11,e12],[A2,A16,A5,A13,e21,e22],[A11,A15,A1,A9,e31,e32],[A3,A4,A12,A14,e41,e42]],对应[3,2,4,1];掩码批次数据为[0,0,0,0,0,0],则产生的最终的全局数据掩码列表MaskdataList为[[A8,A10,A7,A6,e11,e12],[A2,A16,A5,A13,e21,e22],[A11,A15,A1,A9,e31,e32],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[A3,A4,A12,A14,e41,e42]]。
对于训练节点t21,掩码全局批次索引列表MaskedsBatchIndexList为[0,0,0,7,5,6,8,0],增强有效批次数据eValidBatchData为[[A32,A26,A17,A30,e13,e14],[A21,A25,A27,A20,e23,e24],[A18,A22,A31,A28,e33,e34],[A24,A23,A19,A29,e43,e44]],对应[7,5,6,8];掩码批次数据为[0,0,0,0,0,0],则产生的最终的全局数据掩码列表MaskdataList为[[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[A32,A26,A17,A30,e13,e14],[A21,A25,A27,A20,e23,e24],[A18,A22,A31,A28,e33,e34],[A24,A23,A19,A29,e43,e44],[0,0,0,0,0,0]]。
步骤26.对于n*m个训练节点的任一节点,该训练节点所在的训练设备对该训练节点对应的全局数据掩码列表进行批次划分,确定该训练节点对应的当前批次的交换数据。
在得到了全局数据掩码列表后,构造批次迭代器,该批次迭代器接入训练节点中。批次迭代器以批次大小为依据构造批次,得到不同批次,按照批次迭代器输出的批次的先后顺序,得到第1个批次的交换数据、第2个批次的交换数据、…,在实际应用中,批次迭代器当前输出的数据为当前批次的交换数据。这里,第i个批次中的i为批次编号。
如图7b所示,对于训练节点t11,训练节点t11产生的第1个批次的交换数据为交换索引列表[3,2]的数据列表[A8,A10,A7,A6,e11,e12,A2,A16,A5,A13,e21,e22]、第2个批次的交换数据为交换索引列表[4,7]的数据列表[A11,A15,A1,A9,e31,e32,0,0,0,0,0,0]、第3个批次的交换数据为交换索引列表[5,6]的数据列表[0,0,0,0,0,0,0,0,0,0,0,0]、第4个批次的交换数据为交换索引列表[8,1]的数据列表[0,0,0,0,0,0,A3,A4,A12,A14,e41,e42]。
对于训练节点t21,训练节点t21产生的第1个批次的交换数据为交换索引列表[3,2]的数据列表[0,0,0,0,0,0,0,0,0,0,0,0]、第2个批次的交换数据为交换索引列表[4,7]的数据列表[0,0,0,0,0,0,A32,A26,A17,A30,e13,e14]、第3个批次的交换数据为交换索引列表[5,6]的数据列表[A21,A25,A27,A20,e23,e24,A18,A22,A31,A28,e33,e34]、第4个批次的交换数据为交换索引列表[8,1]的数据列表[A24,A23,A19,A29,e43,e44,0,0,0,0,0,0]。
显然,对于相同编号的批次,训练节点t11和训练节点t21对应的交换索引列表是相同,,训练节点t11在该批次中掩码的一个批次的数据,为训练节点t21在该批次中未掩码的一个批次的数据;训练节点t11在该批次中未掩码的一个批次的数据,为训练节点t21在该批次中掩码的一个批次的数据。在实际应用中,所有训练节点在相同时刻接收相同编号的批次的交换数据。
步骤27.对于n*m个训练节点的任一节点,该训练节点获取其他训练节点各自的当前批次的交换数据后融合,得到当前批次的全局数据,基于全局数据得到自身的训练数据进行模型训练。
根据一种可行的实现方式,如图7a所示,训练节点t11接收t12、…、t1m、…、tnm各自发送的当前批次的交换数据MaskdBatchData;对n*m个训练节点t11、t12、…、t1m、…、 tnm各自的当前批次的交换数据MaskdBatchData进行有效的数据的融合,得到训练数据Tradata。其他的训练节点类同,不再赘述。需要理解的是,训练节点t11、t12、…、t1m、…、tnm各自的当前批次的交换数据MaskdBatchData是互补的,从而使得每个训练节点补全当前批次所缺数据,得到自身的训练数据实现模型训练。在实际应用中,n*m个训练节点各自具有节点通信模块。节点通信模块的内容参见上文,不再赘述。
如图7b所示,假设当前批次为第4批次,则对于训练节点t11,当前批次的交换数据为[0,0,0,0,0,0,A3,A4,A12,A14,e41,e42];对于训练节点t21,当前批次的交换数据为[A24,A23,A19,A29,e43,e44,0,0,0,0,0,0];之后训练节点t11和训练节点t21进行ReduceScatter通信以交换数据,各自消除掩码的数据,则训练节点t11通过ReduceScatter操作得到训练节点t21未掩码的数据[A24,A23,A19,A29,e43,e44],基于训练数据Tradata[A24,A23,A19,A29,e43,e44]进行模型训练;训练节点t21通过ReduceScatter操作得到训练节点t11未掩码的数据[A3,A4,A12,A14,e41,e42],基于训练数据Tradata[A3,A4,A12,A14,e41,e42]进行模型训练。在一些可能的实现方式,训练节点t11和训练节点t21通过相同的训练数据进行模型训练,比如,各自基于训练数据Tradata[A24,A23,A19,A29,e43,e44,A13,A15,A3,A4,A12,A14,e41,e42]进行模型训练。
本发明实施例以批次为单位产生增强批次数据和掩码批次数据,从而使得批次内的数据增强效果不受掩码影响。需要说明的是,本发明实施例对分布式存储的数据集,执行本地数据集混洗以及批次混洗,实现数据集的两级混洗,以达到充分混洗效果,从而改变数据分布,确保模型可以充分学习不同数据之间的关系。
接下来,基于上文所描述的模型训练方案,对本发明实施例提供的一种模型训练方法进行介绍。可以理解的是,该方法是上文所描述的模型训练方案的另一种表达方式,两者是相结合的。该方法是基于上文所描述的模型训练方案提出,该方法中的部分或全部内容可以参见上文对模型训练方案的描述。
图8是本发明实施例提供的一种模型训练方法的流程示意图。可以理解,该方法可通过单个训练设备来执行。该训练设备为n台训练设备中的任意一台,n台训练设备总共部署M个训练节点,训练设备存储有全局索引列表和自身部署的训练节点对应的数据集;其中,全局索引列表至少指示部署的训练节点对应的数据集中数据的索引,n为大于等于1的正整数、M为大于等于n的正整数。
本方案中,以训练节点为单位对全局数据集进行划分,将全局数据集划分到所有训练节点,以分布式的形式存储于所有训练节点所在的所有训练设备上。同时所有训练节点共享全局数据集的全局索引列表,并将该全局索引列表存储于所有训练节点所在的所有训练设备上,从而从全局视角处理分布式的数据集。这里,全局数据集中的每条数据可以理解为一个样本,数据的条数说明了样本的数目。这里,对超大规模的数据集进行划分,每个训练节点持有一部分,以分布式存储超大规模的数据集,同时对训练设备存储的数据集执行全局视角的数据处理操作,可保证与训练节点操作全量数据集一样的效果。
根据一种可行的实现方式,全局索引列表指示了M个训练节点各自对应的数据集中数据的索引。
在一个例子中,全局索引列表为全局数据索引列表,列表中的每个索引值用于查询任一个训练节点对应的数据集中的一条数据,也即一个样本。这样,全局索引列表中的索引值的数目为M个训练节点各自对应的数据集的数据条数,也即样本的数目。
在一个例子中,全局索引列表为全局批次索引列表,列表中的每个索引值用于查询任一个训练节点对应的数据集中的一个批次的数据。这里,全局索引列表中的索引值由M个训练节点各自的若干个批次索引值形成,索引值的数目为M个训练节点各自的批次索引值的数目总和。
需要说明的是,若需要对数据集进行数据处理,改变数据内容和数据量;则基于全局索引列表中的索引值可以查询到数据处理后的数据。
根据一种可行的实现方式,若数据集中的每条数据彼此独立,全局索引列表可以为全局数据索引列表。在需要进行数据处理改变数据内容和/或数据量时,全局索引列表中的每个索引值用于查询任一个训练节点对应的数据集中的一条数据和该条数据的数据处理后的数据。
根据一种可行的实现方式,若数据集中的数据彼此相关需要进行数据增强等融合处理,则全局索引列表可以为全局批次索引列表,列表中的每个索引值用于查询任一个训练节点对应的数据集中的一个批次的数据和该批次的数据进行数据处理后的数据,比如,上述增强批次数据。
这里,n个训练设备形成上述模型训练系统100。详细内容参见上文,不再赘述。
如图8所示,该模型训练方法包括:
步骤801、采用随机数种子对全局索引列表进行混洗,通过混洗后的列表对自身存储的数据集进行数据查询,得到自身部署的训练节点对应的交换数据;其中,交换数据为数据查询的命中数据。
根据一种可行的实现方式,在多个轮次迭代过程中的当前轮次,通过随机数种子对全局索引列表进行混洗,通过混洗后的列表对自身存储的数据集进行数据查询和批次划分,以得到自身部署的训练节点在批次迭代过程中当前批次的交换数据。
其中,多个轮次各自的混洗后的列表不同,以充分对数据集中的数据进行混洗,改变数据的分布,确保数据参考价值,使得模型可以充分学习不同数据之间的关系。这里,当前批次为当前轮次的多个批次中的任一批次,用于表示当前时段的批次。
本方案中,考虑到全局索引列表表示的数据顺序是固定的,通过打乱数据的关系,改变一个轮次的数据分布,使得不同轮次的数据分布不同,提高数据的参考价值,确保模型训练的效果;而为了确保所有训练节点掌握相同的数据顺序,需要采用统一随机数种子(即所有训练节点共享的随机数种子)对全局索引列表进行混洗,使得所有训练节点共享混洗后的全局索引列表。
其中,批次划分依据混洗后的列表指示的索引的顺序,索引的顺序指示了数据的顺序;在实际应用中,批次划分的本质可以理解为:对混洗后的列表进行切片,可以得到当前批次的交换索引列表,基于交换索引列表针对存储的数据集进行数据查询,得到部署的训练节点的交换数据。交换数据本质上反映出了交换索引列表针对数据集的查询情况。
对应的,交换数据包括数据查询的命中数据,还可以包括掩码数据。其中,掩码数据用于说明当前批次的训练数据中命中数据之外的数据;命中数据为当前批次的交换索引列表进行数据查询所命中的数据。在一个例子中,所有训练节点在当前批次的交换索引列表相同;则所有训练节点各自的命中数据对应的索引值形成交换索引列表。
在具体实现时,对于任一训练节点,可基于混洗后的列表,针对该训练节点对应的数据集进行查询,得到混洗后的列表对应的全局数据掩码列表(对应上述MaskdataList);基于全局数据掩码列表进行批次划分,确定当前批次的交换数据。
需要说明的是,全局数据掩码列表相当于对混洗后的列表中的索引值替换形成的,因此, M个训练节点各自的全局数据掩码列表中的数据排序和混洗后的全局索引列表的数据排序相同,且M个训练节点各自的全局数据掩码列表互补,整体形成模型训练所需的所有数据;这里,训练所需的数据可以为M个训练节点的数据集中的数据,也可以为M个训练节点的数据集数据处理后的数据。
在一些可能的情况,对全局掩码数据列表进行批次划分可以得到多个批次对应的片段(全局掩码数据列表中连续的一个序列);将多个批次依次作为当前批次,将批次对应的片段中的有效数据作为命中数据。这里,批次划分可以理解为列表切片。若所有训练节点在当前批次的交换索引列表相同,则所有训练节点的当前批次对应的片段在全局掩码列表中的位置相同。
这里,考虑到全局数据集的数据量很大,不进行掩码处理直接进行全量查询会耗费大量的算力,因此优选掩码后进行数据查询。具体实现如下:
对混洗后的列表中,该训练节点对应的数据集的索引范围之外的索引值进行掩码处理,得到全局索引掩码列表(对应上述MasksIndexList或者MaskedsBatchIndexList);然后,基于全局索引掩码列表,对该训练节点对应的数据集进行数据查询,将全局索引掩码列表中的未掩码的索引值替换为查询到的数据,得到全局数据掩码列表(对应上述MaskdataList)。
需要说明的是,全局索引掩码列表是对混洗后的列表中的索引值替换形成的,因此M个训练节点各自的全局索引掩码列表互补,整体形成混洗后的列表。
在一些可能的实现方式中,可对混洗后的列表进行批次划分,得到当前批次下的交换索引列表(混洗后的列表中的连续的序列,也即一个片段),若不存在全局数据掩码列表,则基于该交换索引列表,对该训练节点对应的数据集进行数据查询,得到交换数据;若存在全局数据掩码列表,选取该交换索引列表对应在全局数据掩码列表中的数据,得到交换数据。
另外,对于任一训练节点,还可以对全局索引掩码列表进行批次划分,得到全局索引掩码列表在当前批次的节点掩码索引列表(全局索引掩码列表中的连续的序列,也即一个片段)。这里,该训练节点掩码索引列表可以理解为上述交换索引列表的掩码列表,其中有效的索引值可以查询到该训练节点对应的数据集中的数据和该数据进行数据处理后的数据,无效的索引值查询不到数据。这里,节点掩码索引列表中的无效的索引值的查询结果为预设结果,也可以直接跳过不做查询,比如,无效的索引值为0,则仅仅对大于0的索引值进行查询,从而在一定程度上提高查询效率。若所有训练节点在当前批次的交换索引列表相同,则所有训练节点的当前批次对应的节点掩码索引列表在全局掩码列表中的位置相同。
根据一种可行的实现方式,若数据集中的每条数据彼此独立,且进行数据处理改变数据内容和/或数据量,则命中数据可以为数据处理后的数据,当然,还可以为数据处理前和数据处理后的数据,确保数据的参考价值。本发明实施例对命中数据不做限定,具体可结合实际需求确定。
根据一种可行的实现方式,若数据集中的数据彼此相关需要进行数据增强等融合处理,对应的,命中数据可以为批次的数据处理后的数据,比如,上述增强批次数据,当然,还可以为数据处理前和数据处理后的数据,确保数据的参考价值。本发明实施例对命中数据不做限定,具体可结合实际需求确定。
步骤802、获取共享数据,基于共享数据,得到自身部署的训练节点对应的训练数据;其中,共享数据由M个训练节点各自的命中数据相互补充而成。
本发明实施例通过训练节点在当前批次的交换索引列表,控制该训练节点在当前批次的交换数据中的命中数据的数据量和数据内容;如需要保证一个批次的共享数据的数据量,M个训练节点的交换数据对应的当前批次的交换索引列表相同,保证共享数据为交换索引列表 中每个索引值命中的数据。若还需要保证不同批次的训练数据的数据量相同,则不同批次的交换索引列表的长度相同。当然,若所有训练节点在当前批次的部分或全部的交换索引列表是不同的,则无法保障最终的共享数据的数据量。详细内容参见上文,不再赘述。
其中,共享数据(上述当前批次的全局数据)可以管理所有训练节点各自的训练数据,在得到共享数据后,不再关注所有训练节点对应的数据集,直接基于共享数据实现全部训练节点的训练数据的管理。需要说明的是,所有训练节点的共享数据相同。
根据一种可行的实现方式,共享数据作为训练数据;则所有训练节点各自基于共享数据进行模型训练。
根据另一种可行的实现方式,基于训练节点的数目M对共享数据进行划分,得到所有训练节点各自的训练数据。这里,每个训练节点共享所有训练节点各自的训练数据。在一些可能的实现方式,共享数据以列表的方式表现时,交换数据也以列表的方式表现,包括命中数据和掩码数据,在当前批次的交换索引列表相同时,共享数据为消除交换数据中的掩码数据后的列表。这里,所有训练节点的训练数据可以完全不同,也可以部分不同,具体需要结合实际需求确定,本发明实施例对此不作具体限定。
根据另一种可行的实现方式,步骤802可以通过训练设备的处理器来执行。处理器在得到训练数据后会将训练数据发送到对应的训练节点。
当训练设备只有一台,n=1时,由于训练设备的处理器会为每个训练节点建立进程,该进程用于确定交换数据,因此通过进程间通信实现数据交换,得到训练数据。
当训练设备有多台,n大于等于2时,多个训练设备之间通信且训练设备内的进程间通信,实现数据交换,得到训练数据。
训练设备的处理器可以获取共享数据。
当不存在中心训练设备,或者,为中心训练设备时,该训练设备的处理器可以接收其他训练设备发送的交换数据后融合,得到共享数据。在训练设备为中心训练设备时,还需要将共享数据发送到其他训练设备的处理器。
当存在中心训练设备时,该训练设备不是中心训练设备,则训练设备的处理器将自身部署的训练节点的交换数据发送到中心训练设备,接收中心训练设备发送的共享数据。
在共享数据作为训练数据的场景下,训练设备的处理器将共享数据作为训练数据发送到自身部署的各训练节点。
在基于训练节点的数目M对共享数据进行划分的场景下,训练设备的处理器基于共享数据得到所有训练节点各自的训练数据,将归属于自身的训练数据发送到对应的训练节点。
在一个例子中,步骤802可以通过训练设备自身部署的训练节点来执行。这里,M个训练节点之间通过高速网络通信实现数据交换,确保通信效率和数据处理效率。
训练设备部署的训练节点可以获取共享数据。
当不存在中心训练节点,或者,为中心训练节点时,训练节点可以接收其他训练节点发送的交换数据后融合,得到共享数据。在训练节点为中心训练设备时,还需要将共享数据发送到其他训练节点。
当存在中心训练节点时,该训练节点不是中心训练节点,则该训练节点接收训练设备的处理器发送的交换数据,将交换数据发送到中心训练节点,接收中心训练节点发送的共享数据。
进一步地,在共享数据作为训练数据的场景下,训练节点将共享数据作为训练数据进行模型训练。
在基于训练节点的数目M对共享数据进行划分的场景下,该训练节点将基于共享数据得到所有训练节点各自的训练数据,通过归属于自身的训练数据进行模型训练。
根据另一种可行的实现方式,训练设备的处理器可以执行获取共享数据。自身部署的训练节点可以执行基于共享数据,得到训练设备部署的各训练节点的训练数据。详细内容参见上文,不再赘述。
步骤803、自身部署的训练节点基于对应的训练数据进行模型训练。
由此,本方案中,采用分布式存储和训练节点的数据交换,补全每个训练节点所缺数据,在不增加额外的存储成本的前提下,一方面可以提高读取效率,另一方面可以保证每个训练节点得到相同的共享数据,基于共享数据得到自身的训练数据进行模型训练,实现局部存储全局管理。
接下来,基于上文所描述的模型训练方案,对本发明实施例提供的另一种模型训练方法进行介绍。可以理解的是,该方法是上文所描述的模型训练方案的另一种表达方式,两者是相结合的。该方法是基于上文所描述的模型训练方案提出,该方法中的部分或全部内容可以参见上文对模型训练方案的描述。
图9是本发明实施例提供的另一种模型训练方法的流程示意图。可以理解,该方法可通过第一训练节点来执行。第一训练节点为M个训练节点中任一训练节点,M个训练节点部署在n台训练设备,n台训练设备各自存储M个训练节点共享的全局索引列表和该训练设备中部署的各训练节点对应的数据集;其中,全局索引列表至少指示第一训练节点对应的数据集中数据的索引,n为大于等于1的正整数、M为大于等于2的正整数。如图9所示,该模型训练方法包括:
步骤901、接收第一训练节点所在训练设备的处理器发送的交换数据;其中,交换数据为处理器采用随机数种子对全局索引列表进行混洗,通过混洗后的列表对第一训练节点对应的数据集进行数据查询得到;交换数据为数据查询的命中数据。
交换数据的详细内容参见上文,不再赘述。
这里,n个训练设备形成上述模型训练系统100。
步骤902、获取M个训练节点中其他训练节点各自的交换数据后融合,以得到共享数据;其中,共享数据由M个训练节点各自的命中数据相互补充而成。
在一种可行的实现方式中,该第一训练节点将自身的交换数据发送至M个训练节点中自身之外的各节点,接收M个训练节点中自身之外的各节点发送的交换数据,对所有的交换数据融合后得到共享数据。
在一种可行的实现方式中,该第一训练节点作为指定节点(也即上述中心训练节点),接收M个训练节点中自身之外的各节点发送的交换数据后,对所有的交换数据融合后得到共享数据,并将共享数据发送至M个训练节点中自身之外的各节点。
在一种可行的实现方式中,该第一训练节点将自身的交换数据发送至M个训练节点中自身之外的指定节点((也即上述中心训练节点)),指定节点发送的共享数据。
步骤903、基于共享数据,得到自身的训练数据进行模型训练。
根据一种可行的实现方式,训练数据为共享数据。
根据一种可行的实现方式,该第一训练节点的训练数据为共享数据划分为M个训练节点各自的训练数据中归属于该第一训练节点的训练数据。
进一步地,该第一训练节点基于共享数据,得到M个训练节点各自的训练数据,并将自 身之外的训练数据发送到对应的训练节点,以使其基于此进行模型训练。
由此,本方案中,采用分布式存储和训练节点的数据交换,补全每个训练节点在每次批次所缺数据,在不增加额外的存储成本的前提下,一方面可以提高读取效率,另一方面可以保证每个训练节点得到相同的共享数据,基于共享数据得到自身的训练数据进行模型训练,实现局部存储全局管理。
可以理解的是,本申请的实施例中的处理器可以是中央处理单元(central processing unit,CPU),还可以是其他通用处理器、数字信号处理器(digital signal processor,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现场可编程门阵列(field programmable gate array,FPGA)或者其他可编程逻辑器件、晶体管逻辑器件,硬件部件或者其任意组合。通用处理器可以是微处理器,也可以是任何常规的处理器。
本申请的实施例中的方法步骤可以通过硬件的方式来实现,也可以由处理器执行软件指令的方式来实现。软件指令可以由相应的软件模块组成,软件模块可以被存放于随机存取存储器(random access memory,RAM)、闪存、只读存储器(read-only memory,ROM)、可编程只读存储器(programmable rom,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)、寄存器、硬盘、移动硬盘、CD-ROM或者本领域熟知的任何其它形式的存储介质中。一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于ASIC中。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者通过所述计算机可读存储介质进行传输。所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘(solid state disk,SSD))等。
可以理解的是,在本申请的实施例中涉及的各种数字编号仅为描述方便进行的区分,并不用来限制本申请的实施例的范围。
Claims (25)
- 一种模型训练系统,其特征在于,包括:n台训练设备,总共部署M个训练节点,每台所述训练设备存储全局索引列表和该训练设备中部署的训练节点对应的数据集;其中,所述全局索引列表指示所述M个训练节点各自对应的数据集中数据的索引,所述n为大于等于1的正整数、M为大于等于n的正整数,所述n台设备中的每一台都满足下述对第一设备的描述;所述第一设备,用于通过随机数种子对所述全局索引列表进行混洗,通过混洗后的列表对所述每台训练设备存储的数据集进行查询,以得到所述每台训练设备部署的训练节点的交换数据;其中,所述交换数据为所述数据查询命中数据;所述第一设备,还用于获取共享数据,基于所述共享数据,得到所述每台训练设备部署的训练节点对应的训练数据;其中,所述共享数据由所述M个训练节点各自的命中数据相互补充而成;所述M个训练节点用于基于对应的训练数据进行模型训练。
- 根据权利要求1所述的模型训练系统,其特征在于,对于所述M个训练节点中的任一训练节点,所述训练节点用于获取所述M个训练节点中其他训练节点各自的交换数据,得到所述共享数据,基于所述共享数据,得到自身的训练数据进行模型训练。
- 根据权利要求1所述的模型训练系统,其特征在于,所述第一设备用于在轮次迭代过程中的当前轮次,通过随机数种子对所述全局索引列表进行混洗,通过混洗后的列表对自身存储的数据集进行数据查询和批次划分,以得到自身部署的训练节点在批次迭代过程中当前批次的交换数据;其中,所述批次划分依据所述混洗后的列表指示的索引的顺序,所述索引的顺序指示了数据的顺序,所述当前批次为所述当前轮次的多个批次中的任一批次,所述多个轮次的混洗后的列表不同。
- 根据权利要求3所述的模型训练系统,其特征在于,所述命中数据指示了所述当前批次的交换索引列表进行所述数据查询所命中的数据;其中,所述交换索引列表指示了对所述混洗后的列表进行所述批次划分得到的当前批次的数据索引;所述M个训练节点各自的所述当前批次的交换索引列表相同;所述共享数据指示了消除自身部署的训练节点的所述交换索引列表未命中数据后的数据。
- 根据权利要求3所述的模型训练系统,其特征在于,所述第一设备用于基于混洗后的列表,针对自身存储的数据集进行查询,得到所述混洗后的列表对应的全局数据掩码列表;基于所述全局数据掩码列表进行所述批次划分,确定自身部署的训练节点在当前批次的交换数据。
- 根据权利要求5所述的模型训练系统,其特征在于,所述第一设备用于对混洗后的全局索引列表中,在自身存储的数据集的索引范围之外的索引值进行掩码处理,得到全局索引掩码列表;基于所述全局索引掩码列表,针对自身存储的数据集进行数据查询,得到所述全局索引掩码列表对应的全局数据掩码列表。
- 根据权利要求3所述的模型训练系统,其特征在于,所述全局索引列表包括所述M个训练节点各自对应的至少一个批次索引值,所述批次索引值指示了对应训练节点的数据集中的一个批次的增强批次数据;所述第一设备用于以批次为单位对自身存储的数据集进行数据增强,得到自身部署的训 练节点对应的至少一个批次索引值各自的增强批次数据;所述当前批次对应目标索引值,所述目标索引值为所述至少一个批次索引值中的任一个或多个,所述命中数据为所述目标索引值对应的增强批次数据。
- 根据权利要求7所述的模型训练系统,其特征在于,所述第一设备自身部署的训练节点对应的批次索引值有多个,存储自身部署的训练节点对应的数据集的局部数据索引列表;所述第一设备用于对自身存储的局部数据索引列表进行混洗后进行划分,确定自身部署的训练节点对应的多个批次索引值各自的数据索引列表;对于所述多个批次索引值中的任一批次索引值,基于该批次索引值的数据索引列表,对自身存储的数据集进行数据查询,对查询到的数据进行数据增强,得到所述增强批次数据。
- 一种模型训练方法,其特征在于,应用于训练设备,所述训练设备为n台训练设备中的任一台训练设备,n台训练设备总共部署M个训练节点,所述训练设备存储有全局索引列表和所述训练设备中部署的训练节点对应的数据集;其中,所述全局索引列表至少指示部署的训练节点对应的数据集中数据的索引,所述n为大于等于1的正整数、M为大于等于n的正整数;所述方法包括:采用随机数种子对所述全局索引列表进行混洗,通过混洗后的列表对自身存储的数据集进行数据查询,得到自身部署的训练节点对应的交换数据;其中,所述交换数据为所述数据查询的命中数据;获取共享数据,基于所述共享数据,得到自身部署的训练节点对应的训练数据;其中,所述共享数据由所述M个训练节点各自的命中数据相互补充而成;自身部署的训练节点基于对应的训练数据进行模型训练。
- 根据权利要求9所述的方法,其特征在于,所述获取共享数据,基于所述共享数据,得到自身部署的训练节点对应的训练数据,包括:自身部署的训练节点获取所述M个训练节点中其他训练节点的交换数据后融合,以得到所述共享数据,基于所述共享数据,得到自身的训练数据。
- 根据权利要求9所述的方法,其特征在于,所述采用随机数种子对所述全局索引列表进行混洗,通过混洗后的列表对自身存储的数据集进行数据查询,得到自身部署的训练节点对应的交换数据,包括:在轮次迭代过程中的当前轮次,通过随机数种子对所述全局索引列表进行混洗,通过混洗后的列表对自身存储的数据集进行数据查询和批次划分,以得到自身部署的训练节点在批次迭代过程中当前批次的交换数据;其中,所述批次划分依据所述混洗后的列表指示的索引的顺序,所述索引的顺序指示了数据的顺序,所述当前批次为所述当前轮次的多个批次中的任一批次,所述多个轮次的混洗后的列表不同。
- 根据权利要求11所述的方法,其特征在于,所述命中数据指示了所述当前批次的交换索引列表进行所述数据查询所命中的数据;其中,所述交换索引列表指示了对所述混洗后的列表进行所述批次划分得到的当前批次的数据索引;所述M个训练节点各自的所述当前批次的交换索引列表相同;所述共享数据指示了消除自身部署的训练节点的所述交换索引列表未命中数据后的数据。
- 根据权利要求11所述的方法,其特征在于,所述通过随机数种子对所述全局索引列表进行混洗,通过混洗后的列表对自身存储的数据集进行数据查询和批次划分,以得到自身部署的训练节点在批次迭代过程中当前批次的交换数据,包括:基于混洗后的列表,针对自身存储的数据集进行查询,得到所述混洗后的列表对应的全局数据掩码列表;基于所述全局数据掩码列表进行所述批次划分,确定当前批次的交换数据。
- 根据权利要求13所述的方法,其特征在于,所述基于混洗后的列表,针对自身存储的数据集进行查询,得到所述混洗后的列表对应的全局数据掩码列表,包括:对混洗后的列表中,在自身存储的数据集的索引范围之外的索引值进行掩码处理,得到全局索引掩码列表;基于所述全局索引掩码列表,针对自身存储的数据集进行数据查询,得到所述全局索引掩码列表对应的全局数据掩码列表。
- 根据权利要求11所述的方法,其特征在于,所述全局索引列表包括所述训练设备自身部署的训练节点对应的至少一个批次索引值,所述批次索引值指示了所述训练设备存储的数据集中的一个批次的增强批次数据;所述当前批次对应目标索引值,所述目标索引值为所述至少一个批次索引值中的任一个或多个;所述命中数据为所述目标索引值对应的增强批次数据;所述方法还包括:以批次为单位对自身存储的数据集进行数据增强,得到自身部署的训练节点对应的至少一个批次索引值各自的所述增强批次数据。
- 根据权利要求15所述的方法,其特征在于,该训练节点的批次索引值有多个;所述训练设备存储部署的训练节点对应的数据集的局部数据索引列表;所述方法还包括:对自身存储的局部数据索引列表进行混洗后进行划分,确定自身部署的训练节点的多个批次索引值各自的数据索引列表;对于所述多个批次索引值中的任一索引值,基于该批次索引值的数据索引列表,对自身存储的数据集进行数据查询,对查询到的数据进行数据增强,得到所述增强批次数据。
- 一种模型训练方法,其特征在于,应用于第一训练节点,所述第一训练节点为M个训练节点中的任一个,M个训练节点位于n个训练设备中,n台训练设备各自存储全局索引列表和自身部署的训练节点对应的数据集;其中,所述全局索引列表至少指示第一训练节点对应的数据集中数据的索引,所述n为大于等于1的正整数、M为大于等于n的正整数;所述方法包括:接收所述第一训练节点所在训练设备的处理器发送的交换数据;其中,所述交换数据为所述处理器采用随机数种子对所述全局索引列表进行混洗,通过混洗后的列表对所述第一训练节点对应的数据集进行数据查询得到;所述交换数据为所述数据查询的命中数据;获取所述M个训练节点中其他训练节点各自的交换数据后融合,以得到共享数据;其中,所述共享数据由所述M个训练节点各自的命中数据相互补充而成;基于所述共享数据,得到自身的训练数据进行模型训练。
- 根据权利要求17所述的方法,其特征在于,所述交换数据为一个轮次下批次迭代过程中当前批次的归属于第一训练接节点的数据。
- 根据权利要求18所述的方法,其特征在于,所述命中数据指示了所述当前批次的交换索引列表进行所述数据查询所命中的数据;其中,所述交换索引列表指示了对所述混洗后 的列表进行所述批次划分得到的当前批次的数据索引;所述M个训练节点各自的所述当前批次的交换索引列表相同;所述共享数据指示了消除所述交换索引列表未命中数据后的数据。
- 根据权利要求18所述的方法,其特征在于,所述全局索引列表包括所述第一训练节点对应的至少一个批次索引值,所述批次索引值指示了所述数据集中的一个批次的增强批次数据,所述增强批次数据为所述处理器以批次为单位对所述第一训练节点对应的数据集进行数据增强得到;所述当前批次对应目标索引值,所述目标索引值为所述至少一个批次索引值中的任一个或多个;所述命中数据为所述目标索引值对应的增强批次数据。
- 一种训练设备,其特征在于,包括:至少一个存储器,用于存储程序;至少一个处理器,包括所述训练节点,用于执行所述存储器存储的程序,当所述存储器存储的程序被执行时,所述处理器用于执行如权利要求9-16任一所述的方法。
- 一种训练设备,其特征在于,所述训练设备用于运行计算机程序,以执行如权利要求9-16任一所述的方法。
- 一种训练节点,其特征在于,包括:至少一个处理器,用于运行计算机程序,以执行如权利要求17至20任一项所述的方法。
- 一种计算机存储介质,所述计算机存储介质中存储有指令,当所述指令在计算机上运行时,使得计算机执行如权利要求9-16任一所述的方法,或者执行如权利要求17至20任一项所述的方法。
- 一种包含指令的计算机程序产品,当所述指令在计算机上运行时,使得所述计算机执行如权利要求9-16任一所述的方法,或者执行如权利要求17至20任一项所述的方法。
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| PCT/CN2022/095998 WO2023230767A1 (zh) | 2022-05-30 | 2022-05-30 | 模型训练系统、模型训练方法、训练设备和训练节点 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| CN118984998A true CN118984998A (zh) | 2024-11-19 |
Family
ID=89026483
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN202280094724.XA Pending CN118984998A (zh) | 2022-05-30 | 2022-05-30 | 模型训练系统、模型训练方法、训练设备和训练节点 |
Country Status (4)
| Country | Link |
|---|---|
| US (1) | US20250094397A1 (zh) |
| EP (1) | EP4524830A4 (zh) |
| CN (1) | CN118984998A (zh) |
| WO (1) | WO2023230767A1 (zh) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN120407502A (zh) * | 2025-04-21 | 2025-08-01 | 摩尔线程智能科技(北京)股份有限公司 | 分布式训练中的检查点加载方法、装置、存储介质和程序产品 |
Family Cites Families (18)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20150324690A1 (en) * | 2014-05-08 | 2015-11-12 | Microsoft Corporation | Deep Learning Training System |
| US10289962B2 (en) * | 2014-06-06 | 2019-05-14 | Google Llc | Training distilled machine learning models |
| US11087234B2 (en) * | 2016-01-29 | 2021-08-10 | Verizon Media Inc. | Method and system for distributed deep machine learning |
| CN117709426B (zh) * | 2017-02-24 | 2024-11-15 | 渊慧科技有限公司 | 训练机器学习模型的方法、系统和计算机存储介质 |
| US11397887B2 (en) * | 2017-09-26 | 2022-07-26 | Amazon Technologies, Inc. | Dynamic tuning of training parameters for machine learning algorithms |
| CN109948632B (zh) * | 2017-12-19 | 2021-03-26 | 杭州海康威视数字技术股份有限公司 | 数据训练方法、装置及系统、计算机设备 |
| US11853401B1 (en) * | 2018-06-05 | 2023-12-26 | Amazon Technologies, Inc. | Machine learning model creation via user-configured model building blocks |
| US20190378050A1 (en) * | 2018-06-12 | 2019-12-12 | Bank Of America Corporation | Machine learning system to identify and optimize features based on historical data, known patterns, or emerging patterns |
| US11573803B2 (en) * | 2019-05-07 | 2023-02-07 | International Business Machines Corporation | Parallel training of machine learning models |
| EP4073714A1 (en) * | 2019-12-13 | 2022-10-19 | Qualcomm Technologies, Inc. | Federated mixture models |
| US12205022B2 (en) * | 2020-07-31 | 2025-01-21 | Splunk Inc. | Data field extraction by a data intake and query system |
| US12050998B2 (en) * | 2020-09-02 | 2024-07-30 | Hewlett Packard Enterprise Development Lp | Systems and methods for intelligent data shuffling for high-performance distributed machine learning training |
| US11216273B1 (en) * | 2020-09-08 | 2022-01-04 | Stripe, Inc. | Model training using build artifacts |
| CN113065663B (zh) * | 2021-01-22 | 2025-03-28 | 腾讯科技(深圳)有限公司 | 一种数据访问方法、装置、设备和存储介质 |
| US12117917B2 (en) * | 2021-04-29 | 2024-10-15 | International Business Machines Corporation | Fair simultaneous comparison of parallel machine learning models |
| CN116151316A (zh) * | 2021-11-15 | 2023-05-23 | 平头哥(上海)半导体技术有限公司 | 适用于类神经网络模型的计算系统及实现类神经网络模型的方法 |
| CN114417982A (zh) * | 2021-12-29 | 2022-04-29 | 深圳市巨鼎医疗股份有限公司 | 一种模型训练方法、终端设备及计算机可读存储介质 |
| US20230316041A1 (en) * | 2022-03-29 | 2023-10-05 | International Business Machines Corporation | Modified deep learning models with decision tree layers |
-
2022
- 2022-05-30 WO PCT/CN2022/095998 patent/WO2023230767A1/zh not_active Ceased
- 2022-05-30 EP EP22944109.2A patent/EP4524830A4/en active Pending
- 2022-05-30 CN CN202280094724.XA patent/CN118984998A/zh active Pending
-
2024
- 2024-11-27 US US18/962,302 patent/US20250094397A1/en active Pending
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN120407502A (zh) * | 2025-04-21 | 2025-08-01 | 摩尔线程智能科技(北京)股份有限公司 | 分布式训练中的检查点加载方法、装置、存储介质和程序产品 |
Also Published As
| Publication number | Publication date |
|---|---|
| WO2023230767A1 (zh) | 2023-12-07 |
| US20250094397A1 (en) | 2025-03-20 |
| EP4524830A4 (en) | 2025-07-16 |
| EP4524830A1 (en) | 2025-03-19 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US9251272B2 (en) | Reconfigurable hardware structures for functional pipelining of on-chip special purpose functions | |
| US9497117B2 (en) | Lookup front end packet output processor | |
| US11102322B2 (en) | Data processing method and apparatus, server, and controller | |
| CN113905097B (zh) | 一种数据传输方法和装置 | |
| CN111147403A (zh) | 报文的处理方法及装置、存储介质和电子装置 | |
| US11416435B2 (en) | Flexible datapath offload chaining | |
| CN118984998A (zh) | 模型训练系统、模型训练方法、训练设备和训练节点 | |
| CN114401262A (zh) | 基于rdma的大数据传输系统、方法、装置、设备及存储介质 | |
| Hu et al. | DPDPU: data processing with dpus | |
| CN112636949B (zh) | 一种电磁暂态实时并行仿真数据的通信方法及装置 | |
| CN115202573A (zh) | 数据存储系统以及方法 | |
| CN111262589B (zh) | 一种dfa空间压缩方法及装置 | |
| CN112148453A (zh) | 用于隐私计算的计算芯片及网络计算系统 | |
| CN111813711B (zh) | 训练样本数据的读取方法和装置、存储介质及电子设备 | |
| CN114253956B (zh) | 一种边缘缓存的方法、装置及电子设备 | |
| CN117234681A (zh) | 数据处理方法、装置、设备、存储介质及程序产品 | |
| CN116896586A (zh) | 数据通信优化方法、装置以及系统 | |
| CN112231405B (zh) | 数据存储装置 | |
| CN114496312A (zh) | 基于在线问诊的数据处理方法、装置和计算机设备 | |
| US20150254100A1 (en) | Software Enabled Network Storage Accelerator (SENSA) - Storage Virtualization Offload Engine (SVOE) | |
| US20150256645A1 (en) | Software Enabled Network Storage Accelerator (SENSA) - Network Server With Dedicated Co-processor Hardware Implementation of Storage Target Application | |
| US20150254196A1 (en) | Software Enabled Network Storage Accelerator (SENSA) - network - disk DMA (NDDMA) | |
| US20250211657A1 (en) | Key-value-based queue pair interface and data exchange | |
| US11853814B2 (en) | Automatically generating events | |
| US20230409967A1 (en) | Training large dl models via serverless architecture using cloud storage services-based communication channel |
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 |