CN114254757A - 一种分布式深度学习方法、装置、终端设备及存储介质 - Google Patents
一种分布式深度学习方法、装置、终端设备及存储介质 Download PDFInfo
- Publication number
- CN114254757A CN114254757A CN202011018776.8A CN202011018776A CN114254757A CN 114254757 A CN114254757 A CN 114254757A CN 202011018776 A CN202011018776 A CN 202011018776A CN 114254757 A CN114254757 A CN 114254757A
- Authority
- CN
- China
- Prior art keywords
- gradient
- gradients
- target
- working node
- data blocks
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/23—Updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/21—Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
- G06F18/214—Generating training patterns; Bootstrap methods, e.g. bagging or boosting
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
Abstract
本申请适用于计算机技术领域,提供了一种分布式深度学习方法、装置、终端设备及存储介质,该方法包括:获取相同的至少两个样本集,每个样本集中包括多个的数据块;将各个数据块按照预设规则与工作节点关联,以保证任意预设目标数量的工作节点关联的数据块能够组成至少一个所述样本集,工作节点基于关联的各个数据块进行模型训练得到数据块对应的梯度,并向参数服务器发送所述梯度;参数服务器接收工作节点发送的所述数据块对应的梯度,并在接收到至少一个样本集中所有数据块对应的梯度后,基于接收到的梯度计算目标梯度,并向工作节点发送目标梯度;本申请不会影响模型训练,提高了训练速度,保证了模型训练的完整性,进而提高了模型的准确度。
Description
技术领域
本申请属于计算机技术领域,尤其涉及一种分布式深度学习方法、装置、终端设备及存储介质。
背景技术
深度学习方法是计算机利用已有的数据,通过对初始模型进行训练,得到训练后的模型,并利用训练后的模型预测需要的数据。在对模型进行训练时,为了提高模型训练的速度,目前多采用分布式深度学习系统对模型进行训练。
采用分布式深度学习系统训练模型的具体方法为:将训练样本分别输入并行的多台子服务器中,利用多台子服务器同时对模型进行训练,然后将训练得到的梯度发送至参数服务器,参数服务器对梯度进行处理,并将处理后的梯度返回至各个子服务器中,子服务器利用参数服务器返回的梯度进行参数更新,并进行下一次训练,依此循环直到训练结束。采用上述方法可以提高模型训练的速度。但是,利用分布式深度学习系统训练模型时,如果子服务器与参数服务器之间发生断路,则该子服务器中的梯度将不会传输至参数服务器,影响训练得到的模型准确度。
发明内容
本申请实施例提供了一种分布式深度学习方法、装置、终端设备及存储介质,可以解决模型训练准确低的问题。
第一方面,本申请实施例提供了一种分布式深度学习方法,应用于分布式深度学习系统,所述分布式深度学习系统包括参数服务器和至少两个用于对模型进行训练的工作节点,工作节点与所述参数服务器之间通过链路连接,其特征在于,该方法包括:
获取相同的至少两个样本集,其中,每个样本集中包括预设个数的数据块;
将所述至少两个样本集中的各个数据块按照预设规则与所述工作节点关联,其中,所述预设规则为任意预设目标数量的工作节点关联的数据块能够组成至少一个所述样本集,所述预设目标数量基于所述工作节点的个数和所述分布式深度学习系统的容错数确定,所述容错数表征允许滞后传输和/或断路的所述链路的个数,所述工作节点基于关联的各个数据块进行模型训练得到数据块对应的梯度,并向所述参数服务器发送所述梯度;
接收所述工作节点发送的所述数据块对应的梯度,并在接收到至少一个样本集中所有数据块对应的梯度后,基于接收到的所述梯度计算目标梯度;
向所述工作节点发送所述目标梯度,其中,所述目标梯度用于所述工作节点更新模型的参数,更新后的参数用于所述工作节点进行下一次模型训练。
第二方面,本申请实施例提供了一种分布式深度学习系统,包括:参数服务器和至少两个用于对模型进行训练的工作节点,工作节点与所述参数服务器之间通过链路连接;
其中,所述参数服务器包括:
样本获取模块,用于获取相同的至少两个样本集,其中,每个样本集中包括预设个数的数据块;
数据划分模块,用于将所述至少两个样本集中的各个数据块按照预设规则与所述工作节点关联,其中,所述预设规则为任意预设目标数量的工作节点关联的数据块能够组成至少一个所述样本集,所述预设目标数量基于所述工作节点的个数和所述分布式深度学习系统的容错数确定,所述容错数表征允许滞后传输和/或断路的所述链路的个数,所述工作节点基于关联的各个数据块进行模型训练得到数据块对应的梯度,并向所述参数服务器发送所述梯度;
数据接收模块,用于接收所述工作节点发送的所述数据块对应的梯度,并在接收到至少一个样本集中所有数据块对应的梯度后,基于接收到的所述梯度计算目标梯度;
数据发送模块,用于向所述工作节点发送所述目标梯度,其中,所述目标梯度用于所述工作节点更新模型的参数,更新后的参数用于所述工作节点进行下一次模型训练。
第三方面,本申请实施例提供了一种终端设备,包括:存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现上述第一方面中任一项所述的分布式深度学习方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现上述第一方面中任一项所述的分布式深度学习方法。
第五方面,本申请实施例提供了一种计算机程序产品,当计算机程序产品在终端设备上运行时,使得终端设备执行上述第一方面中任一项所述的分布式深度学习方法。
可以理解的是,上述第二方面至第五方面的有益效果可以参见上述第一方面中的相关描述,在此不再赘述。
本申请实施例与现有技术相比存在的有益效果是:本申请首先获取相同的至少两个样本集,每个样本集包括预设个数的数据块,将至少两个样本集中的各个数据块按照预设规则与工作节点关联,预设规则为任意预设目标数量的工作节点关联的数据块能够组成至少一个样本集,接收工作节点发送的数据块对应的梯度,并在接收到至少一个样本集中所有数据块对应的梯度后,基于接收到的梯度计算目标梯度,最后向工作节点发送目标梯度;本申请通过将相同的至少两个样本集中的数据块分配至工作节点,使任意预设目标数量的工作节点关联的数据块能组成至少一个样本集,使用本申请即使在有容错数个数的工作节点发生断路或滞后时,仍可以接收到一个样本集中所有数据块的梯度,不会影响模型训练,提高了训练速度,保证了模型训练的完整性,进而提高了模型的准确度。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本申请一实施例提供的现有技术中分布式深度学习方法的应用场景示意图;
图2是本申请一实施例提供的分布式深度学习方法的流程示意图;
图3是本申请一实施例提供的目标梯度的获得方法的流程示意图;
图4是本申请一实施例提供的本申请中分布式深度学习方法的应用场景示意图;
图5是本申请一实施例提供的参数服务器的结构示意图;
图6是本申请一实施例提供的终端设备的结构示意图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本申请实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本申请。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。
应当理解,当在本申请说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本申请说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
另外,在本申请说明书和所附权利要求书的描述中,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
在本申请说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本申请的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
如图1所示,分布式深度学习系统包括参数服务器和4个用于对模型进行训练的工作节点,工作节点与所述参数服务器之间通过链路连接。
将样本集分成4份,分别为数据块D1、数据块D2、数据块D3和数据块D4,将数据块D1分配至工作节点W1,数据块D2分配至工作节点W2,将数据块D3分配至工作节点W3,将数据块D4分配至工作节点W4。4个工作节点分别计算与之对应的数据块的梯度,并将计算的梯度发送至参数服务器。参数服务器接收到4个工作节点传输的梯度后,对接收到的梯度进行处理,得到处理后的梯度,并将处理后的梯度发送至各个工作节点,各个工作节点利用接收到的梯度对模型进行参数更新,并利用更新后的参数进行下一次模型训练。
在分布式深度学习系统中每个工作节点均可能发生链路失效和/或滞后传输,如果发生链路失效,则失效的链路上的工作节点的梯度将不会传输至参数服务器,参数服务器接收不到失效链路的梯度,将不会进行计算梯度计算,导致模型不能继续训练;或者参数服务器丢弃失效链路的梯度继续计算,导致模型训练不准确。如果链路发生滞后,滞后的链路需要较长时间才可以将梯度传输至参数服务器,参数服务器必须在接收到滞后链路传输的梯度后才可以进行梯度计算,使模型训练的时间更长,速度更慢。
因此,由于现有的训练方法无法容错,导致模型训练不完整,影响模型训练的精确度。本申请提供的分布式深度学习方法,可以容忍链路的失效和滞后,提高模型训练的速度,保证模型训练的准确度。
图2示出了本申请提供的分布式深度学习方法的示意性流程图,参照图2,对该方法的详述如下:
S101,获取相同的至少两个样本集,其中,每个样本集中包括预设个数的数据块。
在本实施例中,样本集可以从外部存储有训练数据的存储设备中获取,也可以是人为输入。样本集中存储多个训练数据,可以使用各个训练数据训练模型,例如,在图像识别中,样本集可以是一张一张的图片。将样本集中的训练数据分成预设个数的份数,每一份均是一个数据块,一个数据块中至少包括一个训练数据,同一样本集中的各个数据块中训练数据的个数可以相同,也可以不同。具体的,至少两个样本集中训练数据相同,划分的数据块也必须相同,才是相同的样本集。
作为举例,样本集A中可以包括数据块1、数据块2和数据块3。数据块1中包括训练数据a和训练数据b,数据块2中包括训练数据c和训练数据d,数据块3中包括训练数据e和训练数据f。
在本实施例中,各训练集中数据块的总和必须大于或等于工作节点的数量,以便于每个工作节点均可以被分配到数据块。
S102,将所述至少两个样本集中的各个数据块按照预设规则与所述工作节点关联,其中,所述预设规则为任意预设目标数量的工作节点关联的数据块能够组成至少一个所述样本集,所述预设目标数量基于所述工作节点的个数和所述分布式深度学习系统的容错数确定,所述容错数表征允许滞后传输和/或断路的所述链路的个数,所述工作节点基于关联的各个数据块进行模型训练得到数据块对应的梯度,并向所述参数服务器发送所述梯度。
在本实施例中,容错数表征允许滞后传输和/或断路的链路的个数,例如,分布式深度学习系统中包括4个工作节点,容错数为1,也就是4个工作节点中允许一个工作节点发生断路或滞后传输,在1个工作节点发生断路或滞后传输时仍可以再保证训练模型的完整性和训练速度的前提下继续训练模型。
在本实施例中,预设目标数量可以根据需要设置,但是预设目标数量需要小于或等于工作节点的总数与容错数的差值,例如,工作节点的总数为6,容错数为2,则预设目标数量应该小于或等于4。也就是即使在有两个工作节点断路或滞后传输时,也可以通过其余的4个工作节点获得一个样本集中所有数据块。一个工作节点关联至少一个数据块。
作为举例,如果工作节点为3个,分别为W1、W2和W3,容错数为1,有两个相同的样本集,样本集中包括数据块A和数据块B,预设目标数量为2。则将一个数据块A和一个数据块B与工作节点W1关联,将另一个数据块A和工作节点W2关联,将另一个数据块B与工作节点W3关联。任意两个工作节点对应的数据块均可以组成至少一个样本集。
在本实施例中,工作节点通过关联的数据块进行模型训练,每次训练可以选取数据块中的一个训练数据。如果与工作节点关联的数据块为多个,则工作节点需要分别为与之关联的所有数据块计算梯度。在工作节点对模型进行训练得到梯度时,可以对梯度进行标记,不同数据块、不同的工作节点对应的标记不同,通过标记可以确定各个梯度对应的数据块和工作节点。
作为举例,如果工作节点W2关联的数据块包括数据块A和数据块B。则工作节点W2在计算时,需要分别对数据块A和数据块B计算梯度,也就是从数据块A中选取一个训练数据对模型训练一次得到一个梯度g1,g1为数据块A对应的梯度,从数据块B中选取一个训练数据对模型训练一次得到一个梯度g2,g2为数据块B对应的梯度。然后将梯度g1和梯度g2均发送至参数服务器。
在本实施例中,工作节点计算的各个数据块的梯度可以一个个传输至参数服务器,还可以以集合等形式传输至参数服务器,在此不做限制。
需要说明的是,在对数据块进行工作节点分配时,可以根据各个工作节点的处理能力进行分配,处理能力大的工作节点关联的数据块多,处理能力小的工作节点关联的数据块少。
S103,接收所述工作节点发送的所述数据块对应的梯度,并在接收到至少一个样本集中所有数据块对应的梯度后,基于接收到的所述梯度计算目标梯度。
在本实施例中,由于参数服务器计算目标梯度需要根据所有数据块对应的梯度,因此,在获取到的梯度对应的数据块可以组成至少一个样本集时,可以基于接收到的梯度计算目标梯度。
具体的,计算所述梯度的平均值,并将所述平均值作为所述目标梯度。
在本实施例中,可以计算接收到的所有的梯度的平均值,将平均值作为目标梯度。
可选的,在计算目标梯度时,如果接收到的梯度中存在重复的数据块的梯度,也就是存在两个梯度为相同的数据块的梯度,则可以从接收到的梯度中选取一个样本集中所有数据块分别对应的一个梯度计算目标梯度。例如,梯度g1和梯度g2均是数据块A对应的梯度,但是梯度g1是工作节点W1计算的,梯度g2是工作节点W2计算的,则可以选取梯度g1或梯度g2计算目标梯度。
还可以根据接收到的所有梯度计算目标梯度,如果存在相同数据块的多个梯度,则可以根据相同数据块的梯度的个数选取权重,例如,数据块A对应梯度g1和梯度g2,则可以选取权重1/2与梯度g1和梯度g2的和相乘得到平均梯度,然后将平均梯度与其他数据块的梯度计算目标梯度。
可选的,目标梯度还可以是接收到的梯度的和,在此不做限制。
在本实施例中,参数服务器接收到工作节点发送编码梯度后,可以将编码梯度先缓存到缓冲队列中,在使用时可以从缓存队列中选取编码梯度计算目标梯度。上述方法可以将滞后的工作节点发送的编码梯度缓存到缓冲队列中,在以后的计算中使用,不会浪费滞后的工作节点的梯度。
作为举例,如果工作节点为W1、W2和W3,W1关联的数据块为A和B,W2关联的数据块为A,W3关联的数据块为B。工作节点W1发送的编码梯度为R1,R1中包括数据块A对应的梯度g1和数据块B对应的梯度g2;工作节点W2发送的编码梯度为R2,R2中包括数据块A对应的梯度g1;工作节点W3发送的编码梯度为R3,R3中包括数据块B对应的梯度g2。
参数服务器接收到工作节点发送的编码梯度后,可以将编码梯度R1、R2和R3均缓存到缓存队列中,如果本次计算目标梯度时只用到了R1和R2,R3没有使用,则R3可以之后的计算中继续使用。
S104,向所述工作节点发送所述目标梯度,其中,所述目标梯度用于所述工作节点更新模型的参数,更新后的参数用于所述工作节点进行下一次模型训练。
在本实施例中,参数服务器计算得到目标梯度后,将目标梯度发送至各个工作节点,各个工作节点根据目标梯度进行参数更新,目标工作节点基于对应的数据块,对更新参数后的模型继续进行训练,直到完成模型的训练。具体的,可以采用梯度下降法更新模型的参数。
需要说明的,如果存在计算梯度的时间较长的工作节点,且该工作节点已经接收到参数服务器发送的多个梯度,则在该工作节点进行参数更新时可以选择参数服务器最后传输过来的梯度更新模型的参数。
本申请实施例中,在已知分布式深度学习系统的容错数时,本申请通过将相同的至少两个样本集中的数据块分配至工作节点,使任意预设目标数量的工作节点关联的数据块能组成至少一个样本集,预设目标数量小于工作节点的数量减去容错数。使用本申请即使在有容错数个数的工作节点发生断路或滞后时,仍可以通过接收预设目标数量的工作节点发送的梯度,接收到一个样本集中所有数据块的梯度,不会影响模型训练,提高了训练速度,保证了模型训练的完整性,进而提高了模型的准确度。
在一种可能的实现方式中,步骤S101的实现过程可以包括:
S1011,获取初始样本集,并将所述初始样本集分成预设个数的数据块。
在本实施例中,初始样本集可以由没有分组的训练数据组成,例如,初始样本集可以为{a,b,c,d},a、b、c和d分别表示一个训练数据。初始样本集可以是人为输入的训练数据,还可以是从外部存储设备中获取的。
获取到初始样本集后,对初始样本集中的各个训练数据进行分组,可以是平均分组,得到分组后的训练数据。每一组训练数据组成一个数据块。
S1012,将划分数据块后的初始样本集复制至少一份,得到相同的至少两个样本集。
在本实施例中,相同的至少两个样本集中所述数据块的总数大于工作节点的个数。复制初始样本集,可以得到与初始样本集完全相同的样本集。具体的,应该复制多少份,可以根据容错数和工作节点的数量进行确定。最终得到的数据块在分配至各个工作节点后,任意目标数量的工作节点关联的数据块能够组成至少一个样本集。如果复制的较少,不能达到上述要求。如果复制的较多,可以将多余的样本集舍弃,也可以将全部样本集均分配至工作节点。
作为举例,如果有3个工作节点,初始样本集中包括2个数据块,容错数为1,预设目标数量为2。则只需要复制一份,得到4个数据块,将4个数据块分别分配至3个工作节点,可以得到任意两个工作节点关联的数据块均可以组成一个样本集。
如果有3个工作节点,初始样本集中包括2个数据块,容错数为2,则需要复制2份,得到6个数据块,将6个数据块分别分配至3个工作节点,可以得到每个工作节点关联的数据块均可以组成一个样本集。
在一种可能的实现方式中,步骤S103的实现过程可以包括:
S1031,接收所述工作节点发送的梯度集合,其中,所述梯度集合是由所述工作节点基于关联的所有数据块的梯度生成的。
在本实施例中,工作节点对关联的每个数据块计算梯度后,将工作节点关联的所有数据块的梯度组成一个梯度集合,并将梯度集合传输至参数服务器。一个梯度集合中包括关联的每个数据块的一个梯度。
S1032,在接收到的梯度集合满足预设条件后,从所述梯度集合中选取目标梯度集合,并基于所述目标梯度集合计算目标梯度,其中,所述预设条件为所述梯度集合中包含的梯度对应的数据块组成至少一个样本集。
在本实施例中,在接收到的所有梯度集合中的梯度对应的数据块可以组成至少一个样本集后,可以从中选取目标梯度集合,选取的目标梯度集合中包括的梯度对应的数据块可以组成一个样本集,基于选取的目标梯度集合中的梯度计算目标梯度。
作为举例,样本集为{A、B},如果工作节点分别为W1、W2和W3,W1关联的数据块为A和B,W2关联的数据块为A,W3关联的数据块为B。工作节点W1基于各个数据块A和B对模型进行训练,得到的梯度集合为Q1={g1、g2};工作节点W2基于数据块A对模型进行训练,得到的梯度集合为Q2={g1};工作节点W3基于数据块B对模型进行训练,得到的梯度集合为Q3={g2}。
参数服务器在接收到梯度集合Q1和Q2后,Q1和Q2中的梯度分别对应A、B和A,可以组成一个样本集,则可以选取Q1和Q2作为目标梯度集合,根据Q1和Q2计算目标梯度。具体的,可以计算A和B的和,将A和B的和作为目标梯度,还可以计算A和B的均值,将A和B的均值作为目标梯度。还可以通过公式1/2(A+A)+B或1/2[1/2(A+A)+B]计算目标梯度。
参数服务器在接收到梯度集合Q1、Q2和Q3后,Q1、Q2和Q3中的梯度分别对应A、B、A和B,可以组成两个样本集,则可以选取Q1和Q2作为目标梯度集合,或选取Q1和Q3作为目标梯度集合,或选取Q2和Q3作为目标梯度集合,或将Q1、2和Q3均作为目标梯度集合。
本申请实施例中,将各个工作节点得到梯度以梯度集合的方式传输至参数服务器,可以减少数据传输的次数。
如图3所示,在一种可能的实现方式中,步骤S103的实现过程可以包括:
S1033,接收所述工作节点发送的编码梯度,其中,所述编码梯度是由所述工作节点基于对应的所有数据块的梯度生成梯度集合后,对所述梯度集合进行编码生成的。
在本实施例中,工作节点计算数据块对应的梯度后,可以将工作节点关联的所有数据块对应的梯度组成一个集合,并对该集合进行编码,得到一个编码梯度。
S1034,在接收到预设目标数量的工作节点发送的编码梯度后,对接收到的编码梯度进行解码,得到编码梯度中的梯度,其中,所述预设目标数量的工作节点为不相同的工作节点。
在本实施例中,因为编码梯度是将梯度进行编码后得到的,因此,在参数服务器接收到编码梯度后,只能确定该编码梯度是哪个工作节点发送的,至于编码梯度中存储的是哪些数据块对应的梯度是不知道。因为预设目标数量的工作节点发送的编码梯度中的梯度对应的数据块一定可以组成至少一个样本集。因此,需要接收到预设目标数量的工作节点发送的编码梯度后,才能解码并计算目标梯度。
S1035,基于解码得到的梯度计算目标梯度。
在本实施例中,可以从解码得到的梯度中选取一个样本集中各个数据块对应的一个梯度计算目标梯度,也可以计算解码后得到的梯度的平均值得到目标梯度。
在一种可能的实现方式中,如果存在滞后传输的工作节点,滞后传输的工作节点可能在其他工作节点已经对参数更新过多次之后才计算完对应数据块的梯度,因此,可以设置一个阈值,如果工作节点滞后的次数大于阈值,则可以将该工作节点计算的梯度集合舍弃。具体的方法如下所述。
在一种可能的实现方式中,在步骤S1033之后,上述方法还可以包括:
S201,判断所述编码梯度是否为滞后编码梯度。
在一种可能的实现方式中,步骤S201的实现过程可以包括:
如果第m个目标梯度是基于第i个工作节点的发送的第j个编码梯度计算得到的,在进行第m+n个目标梯度计算后接收到第i个工作节点的发送的第j+1个编码梯度,则将所述第j+1个编码梯度作为所述滞后编码梯度,其中,m≥1,n≥1,i≥1,j≥1;
如果第m个目标梯度是基于第i个工作节点的发送的第j个编码梯度计算得到的,且在第m+n个目标梯度计算之前接收到第i个工作节点的发送的第j+1个编码梯度,则所述第j+1个编码梯度不是所述滞后编码梯度。
在本实施例中,n为预设阈值,预设阈值可以根据需要选取。如果在使用一个工作节点发送的编码梯度计算目标梯度后,使用其他工作节点计算了n次目标梯度后才接收到该工作节点再次发送的编码梯度,则说明该编码梯度滞后严重,可以将其作为滞后编码梯度。
作为举例,在n为4时,如果第3次的目标梯度是基于第2个工作节点的发送的第4个编码梯度计算得到的,经过第7次的目标梯度的计算后接收到第2个工作节点的发送的第5个编码梯度,则将第5个编码梯度作为滞后编码梯度。
如果第3次的目标梯度是基于第2个工作节点的发送的第4个编码梯度计算得到的,在第7次的目标梯度的计算之前接收到第2个工作节点的发送的第5个编码梯度,则第5个编码梯度不是滞后编码梯度。
S202,如果所述编码梯度是滞后编码梯度,则删除所述编码梯度。
S203,如果所述编码梯度不是滞后编码梯度,则存储所述编码梯度。
本申请实施例中,删除滞后时间较长的编码梯度,可以减少数据的数量,提高数据处理的速度。
如图4所示,作为本申请的另一个实施例,如果分布式深度学习系统中更包括4个工作节点,4个工作节点分别为W1、W2、W3和W4,容错数为1.
S301,获取初始样本1,并将初始样本1分成5个数据块,分别为数据块D1、D2、D3、D4和D5。
S302,将初始样本1复制一份,得到两个相同的样本集,分别为样本集A合样本集B,每个样本集中均包括数据块D1、D2、D3、D4和D5。
S303,将数据块D1、D2、D3、D4与工作节点W1相关联,将数据块D1、D2、D5与工作节点W2相关联,数据块D3、D4与工作节点W3相关联,数据块D5与工作节点W4相关联。
S304,工作节点W1基于数据块D1、D2、D3、D4得到编码梯度H1,H1中包括梯度g1、g2、g3和g4。工作节点W2基于数据块D1、D2、D5得到编码梯度H2,H2中包括梯度g1、g2和g5。工作节点W3基于数据块D3、D4得到编码梯度H3,H3中包括梯度g3和g4。工作节点W4基于数据块D5得到编码梯度H4,H4中包括梯度g3和g4。
S305,如果工作节点W4发生断路,则参数服务器只能接收到H1、H2和H3,参数服务器基于接收到H1、H2和H3计算目标梯度。
S306,如果工作节点W4发生滞后传输,则参数服务器只能接收到H1、H2和H3,参数服务器基于接收到H1、H2和H3计算目标梯度。在接收到W4传输的H4后将H4存储。在下次计算目标梯度时,可以根据下一次接收到的H1、H2和H4计算目标梯度。
S307,参数服务器向各个工作节点发送目标梯度。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
对应于上文实施例所述的分布式深度学习方法,本申请实施例提供了分布式深度学习系统,包括:参数服务器和至少两个用于对模型进行训练的工作节点,工作节点与所述参数服务器之间通过链路连接。
图5示出了本申请实施例提供的参数服务器结构框图,为了便于说明,仅示出了与本申请实施例相关的部分。
参照图5,该参数服务器400可以包括:样本获取模块410、数据划分模块420、数据接收模块430和数据发送模块440。
其中,样本获取模块410,用于获取相同的至少两个样本集,其中,每个样本集中包括预设个数的数据块;
数据划分模块420,用于将所述至少两个样本集中的各个数据块按照预设规则与所述工作节点关联,其中,所述预设规则为任意预设目标数量的工作节点关联的数据块能够组成至少一个所述样本集,所述预设目标数量基于所述工作节点的个数和所述分布式深度学习系统的容错数确定,所述容错数表征允许滞后传输和/或断路的所述链路的个数,所述工作节点基于关联的各个数据块进行模型训练得到数据块对应的梯度,并向所述参数服务器发送所述梯度;
数据接收模块430,用于接收所述工作节点发送的所述数据块对应的梯度,并在接收到至少一个样本集中所有数据块对应的梯度后,基于接收到的所述梯度计算目标梯度;
数据发送模块440,用于向所述工作节点发送所述目标梯度,其中,所述目标梯度用于所述工作节点更新模型的参数,更新后的参数用于所述工作节点进行下一次模型训练。
在一种可能的实现方式中,数据接收模块430具体可以用于:
接收所述工作节点发送的梯度集合,其中,所述梯度集合是由所述工作节点基于关联的所有数据块的梯度生成的;
在接收到的梯度集合满足预设条件后,从所述梯度集合中选取目标梯度集合,并基于所述目标梯度集合计算目标梯度,其中,所述预设条件为所述梯度集合中包含的梯度对应的数据块组成至少一个样本集。
在一种可能的实现方式中,数据接收模块430具体还可以包括:
数据接收单元,用于接收所述工作节点发送的编码梯度,其中,所述编码梯度是由所述工作节点基于对应的所有数据块的梯度生成梯度集合后,对所述梯度集合进行编码生成的;
解码单元,用于在接收到预设目标数量的工作节点发送的编码梯度后,对接收到的编码梯度进行解码,得到编码梯度中的梯度,其中,所述预设目标数量的工作节点为不相同的工作节点;
计算单元,用于基于解码得到的梯度计算目标梯度。
在一种可能的实现方式中,与数据接收单元相连的还包括:
判断单元,用于判断所述编码梯度是否为滞后编码梯度;
第一结果输出单元,用于如果所述编码梯度是滞后编码梯度,则删除所述编码梯度;
第二结果输出单元,用于如果所述编码梯度不是滞后编码梯度,则存储所述编码梯度。
在一种可能的实现方式中,判断单元具体可以用于:
如果第m个目标梯度是基于第i个工作节点的发送的第j个编码梯度计算得到的,在进行第m+n个目标梯度计算后接收到第i个工作节点的发送的第j+1个编码梯度,则将所述第j+1个编码梯度作为所述滞后编码梯度,其中,m≥1,n≥1,i≥1,j≥1;
如果第m个目标梯度是基于第i个工作节点的发送的第j个编码梯度计算得到的,且在第m+n个目标梯度计算之前接收到第i个工作节点的发送的第j+1个编码梯度,则所述第j+1个编码梯度不是所述滞后编码梯度。
在一种可能的实现方式中,样本获取模块410具体可以用于:
获取初始样本集,并将所述初始样本集分成预设个数的数据块;
将划分数据块后的初始样本集复制至少一份,得到相同的至少两个样本集。
在一种可能的实现方式中,所述基于接收到的所述梯度计算目标梯度,包括:
计算所述梯度的平均值,并将所述平均值作为所述目标梯度。
需要说明的是,上述装置/单元之间的信息交互、执行过程等内容,由于与本申请方法实施例基于同一构思,其具体功能及带来的技术效果,具体可参见方法实施例部分,此处不再赘述。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本申请实施例还提供了一种终端设备,参见图6,该终端设备600可以包括:至少一个处理器610、存储器620以及存储在所述存储器620中并可在所述至少一个处理器610上运行的计算机程序,所述处理器610执行所述计算机程序时实现上述任意各个方法实施例中的步骤,例如图2所示实施例中的步骤S101至步骤S104。或者,处理器610执行所述计算机程序时实现上述各装置实施例中各模块/单元的功能,例如图5所示模块410至440的功能。
示例性的,计算机程序可以被分割成一个或多个模块/单元,一个或者多个模块/单元被存储在存储器620中,并由处理器610执行,以完成本申请。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序段,该程序段用于描述计算机程序在终端设备600中的执行过程。
本领域技术人员可以理解,图6仅仅是终端设备的示例,并不构成对终端设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如输入输出设备、网络接入设备、总线等。
处理器610可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
存储器620可以是终端设备的内部存储单元,也可以是终端设备的外部存储设备,例如插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。所述存储器620用于存储所述计算机程序以及终端设备所需的其他程序和数据。所述存储器620还可以用于暂时地存储已经输出或者将要输出的数据。
总线可以是工业标准体系结构(Industry Standard Architecture,ISA)总线、外部设备互连(Peripheral Component,PCI)总线或扩展工业标准体系结构(ExtendedIndustry Standard Architecture,EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,本申请附图中的总线并不限定仅有一根总线或一种类型的总线。
本申请实施例提供的分布式深度学习方法可以应用于计算机、平板电脑、笔记本电脑、上网本、个人数字助理(personal digital assistant,PDA)等终端设备上,本申请实施例对终端设备的具体类型不作任何限制。
本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现可实现上述分布式深度学习方法各个实施例中的步骤。
本申请实施例提供了一种计算机程序产品,当计算机程序产品在移动终端上运行时,使得移动终端执行时实现可实现上述分布式深度学习方法各个实施例中的步骤。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质至少可以包括:能够将计算机程序代码携带到拍照装置/终端设备的任何实体或装置、记录介质、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、电载波信号、电信信号以及软件分发介质。例如U盘、移动硬盘、磁碟或者光盘等。在某些司法管辖区,根据立法和专利实践,计算机可读介质不可以是电载波信号和电信信号。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的实施例中,应该理解到,所揭露的装置/网络设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/网络设备实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
以上所述实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。
Claims (10)
1.一种分布式深度学习方法,应用于分布式深度学习系统,所述分布式深度学习系统包括参数服务器和至少两个用于对模型进行训练的工作节点,工作节点与所述参数服务器之间通过链路连接,其特征在于,该方法包括:
获取相同的至少两个样本集,其中,每个样本集中包括预设个数的数据块;
将所述至少两个样本集中的各个数据块按照预设规则与所述工作节点关联,其中,所述预设规则为任意预设目标数量的工作节点关联的数据块能够组成至少一个所述样本集,所述预设目标数量基于所述工作节点的个数和所述分布式深度学习系统的容错数确定,所述容错数表征允许滞后传输和/或断路的所述链路的个数,所述工作节点基于关联的各个数据块进行模型训练得到数据块对应的梯度,并向所述参数服务器发送所述梯度;
接收所述工作节点发送的所述数据块对应的梯度,并在接收到至少一个样本集中所有数据块对应的梯度后,基于接收到的所述梯度计算目标梯度;
向所述工作节点发送所述目标梯度,其中,所述目标梯度用于所述工作节点更新模型的参数,更新后的参数用于所述工作节点进行下一次模型训练。
2.如权利要求1所述的分布式深度学习方法,其特征在于,所述接收所述工作节点发送的所述数据块对应的梯度,并在接收到至少一个样本集中所有数据块对应的梯度后,基于接收到的所述梯度计算目标梯度,包括:
接收所述工作节点发送的梯度集合,其中,所述梯度集合是由所述工作节点基于关联的所有数据块的梯度生成的;
在接收到的梯度集合满足预设条件后,从所述梯度集合中选取目标梯度集合,并基于所述目标梯度集合计算目标梯度,其中,所述预设条件为所述梯度集合中包含的梯度对应的数据块组成至少一个样本集。
3.如权利要求1所述的分布式深度学习方法,其特征在于,所述接收所述工作节点发送的所述数据块对应的梯度,并在接收到至少一个样本集中所有数据块对应的梯度后,基于接收到的所述梯度计算目标梯度,包括:
接收所述工作节点发送的编码梯度,其中,所述编码梯度是由所述工作节点基于对应的所有数据块的梯度生成梯度集合后,对所述梯度集合进行编码生成的;
在接收到预设目标数量的工作节点发送的编码梯度后,对接收到的编码梯度进行解码,得到编码梯度中的梯度,其中,所述预设目标数量的工作节点为不相同的工作节点;
基于解码得到的梯度计算目标梯度。
4.如权利要求3所述的分布式深度学习方法,其特征在于,在所述接收所述工作节点发送的编码梯度之后,还包括:
判断所述编码梯度是否为滞后编码梯度;
如果所述编码梯度是滞后编码梯度,则删除所述编码梯度;
如果所述编码梯度不是滞后编码梯度,则存储所述编码梯度。
5.如权利要求4所述的分布式深度学习方法,其特征在于,所述判断所述编码梯度是否为滞后编码梯度,包括:
如果第m个目标梯度是基于第i个工作节点的发送的第j个编码梯度计算得到的,在进行第m+n个目标梯度计算后接收到第i个工作节点的发送的第j+1个编码梯度,则将所述第j+1个编码梯度作为所述滞后编码梯度,其中,m≥1,n≥1,i≥1,j≥1;
如果第m个目标梯度是基于第i个工作节点的发送的第j个编码梯度计算得到的,且在第m+n个目标梯度计算之前接收到第i个工作节点的发送的第j+1个编码梯度,则所述第j+1个编码梯度不是所述滞后编码梯度。
6.如权利要求1所述的分布式深度学习方法,其特征在于,所述获取相同的至少两个样本集,包括:
获取初始样本集,并将所述初始样本集分成预设个数的数据块;
将划分数据块后的初始样本集复制至少一份,得到相同的至少两个样本集。
7.如权利要求1所述的分布式深度学习方法,其特征在于,所述基于接收到的所述梯度计算目标梯度,包括:
计算所述梯度的平均值,并将所述平均值作为所述目标梯度。
8.一种分布式深度学习系统,其特征在于,包括:参数服务器和至少两个用于对模型进行训练的工作节点,工作节点与所述参数服务器之间通过链路连接;
其中,所述参数服务器包括:
样本获取模块,用于获取相同的至少两个样本集,其中,每个样本集中包括预设个数的数据块;
数据划分模块,用于将所述至少两个样本集中的各个数据块按照预设规则与所述工作节点关联,其中,所述预设规则为任意预设目标数量的工作节点关联的数据块能够组成至少一个所述样本集,所述预设目标数量基于所述工作节点的个数和所述分布式深度学习系统的容错数确定,所述容错数表征允许滞后传输和/或断路的所述链路的个数,所述工作节点基于关联的各个数据块进行模型训练得到数据块对应的梯度,并向所述参数服务器发送所述梯度;
数据接收模块,用于接收所述工作节点发送的所述数据块对应的梯度,并在接收到至少一个样本集中所有数据块对应的梯度后,基于接收到的所述梯度计算目标梯度;
数据发送模块,用于向所述工作节点发送所述目标梯度,其中,所述目标梯度用于所述工作节点更新模型的参数,更新后的参数用于所述工作节点进行下一次模型训练。
9.一种终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至7任一项所述的分布式深度学习方法。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的分布式深度学习方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011018776.8A CN114254757A (zh) | 2020-09-24 | 2020-09-24 | 一种分布式深度学习方法、装置、终端设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011018776.8A CN114254757A (zh) | 2020-09-24 | 2020-09-24 | 一种分布式深度学习方法、装置、终端设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114254757A true CN114254757A (zh) | 2022-03-29 |
Family
ID=80790119
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011018776.8A Pending CN114254757A (zh) | 2020-09-24 | 2020-09-24 | 一种分布式深度学习方法、装置、终端设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114254757A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116702885A (zh) * | 2023-08-02 | 2023-09-05 | 浪潮电子信息产业股份有限公司 | 同步数据并行训练控制方法、系统、装置、设备及介质 |
-
2020
- 2020-09-24 CN CN202011018776.8A patent/CN114254757A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116702885A (zh) * | 2023-08-02 | 2023-09-05 | 浪潮电子信息产业股份有限公司 | 同步数据并行训练控制方法、系统、装置、设备及介质 |
CN116702885B (zh) * | 2023-08-02 | 2023-11-07 | 浪潮电子信息产业股份有限公司 | 同步数据并行训练控制方法、系统、装置、设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8904149B2 (en) | Parallelization of online learning algorithms | |
CN109543455B (zh) | 一种区块链的数据归档方法及装置 | |
CN103020024B (zh) | 一种文件格式转换方法 | |
CN111369009A (zh) | 一种能容忍不可信节点的分布式机器学习方法 | |
CN115237802A (zh) | 基于人工智能的模拟测试方法及相关设备 | |
CN112256886A (zh) | 图谱中的概率计算方法、装置、计算机设备及存储介质 | |
CN110598993B (zh) | 数据加工方法及装置 | |
CN114254757A (zh) | 一种分布式深度学习方法、装置、终端设备及存储介质 | |
CN116562263A (zh) | 一种文档衔接连贯性的评测方法、装置、设备及存储介质 | |
CN113516065B (zh) | 基于区块链的资料权重测算方法、装置、服务器及存储介质 | |
WO2023071566A1 (zh) | 数据处理方法、装置、计算机设备、计算机可读存储介质及计算机程序产品 | |
CN113449062B (zh) | 轨迹处理方法、装置、电子设备和存储介质 | |
CN111382557B (zh) | 非定长输入数据的批量处理方法、装置、终端及存储介质 | |
CN113312169B (zh) | 一种计算资源的分配方法及装置 | |
CN114238106A (zh) | 测试时间预测方法及装置、电子设备、存储介质 | |
CN112242959B (zh) | 微服务限流控制方法、装置、设备及计算机存储介质 | |
CN113780666A (zh) | 一种缺失值的预测方法及装置、可读存储介质 | |
CN112330041A (zh) | 信息预测方法、装置、电子设备及存储介质 | |
CN111105144A (zh) | 数据处理方法、装置和目标对象风险监控方法 | |
CN111950225B (zh) | 一种芯片布局方法、装置、存储介质和电子设备 | |
CN109815047A (zh) | 一种数据处理的方法和相关装置 | |
CN117112449B (zh) | 数据治理工具的成熟度评估方法、装置、设备及介质 | |
CN113093702B (zh) | 故障数据的预测方法和装置、电子设备和存储介质 | |
CN113691757B (zh) | 一种数据传输方法、装置、设备及介质 | |
CN112463194B (zh) | 一种文件数据的兼容方法、装置、终端设备及存储介质 |
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 |