CN108537341A - 非标量数据的大数据集的约简和广播操作的并行处理 - Google Patents
非标量数据的大数据集的约简和广播操作的并行处理 Download PDFInfo
- Publication number
- CN108537341A CN108537341A CN201810153965.2A CN201810153965A CN108537341A CN 108537341 A CN108537341 A CN 108537341A CN 201810153965 A CN201810153965 A CN 201810153965A CN 108537341 A CN108537341 A CN 108537341A
- Authority
- CN
- China
- Prior art keywords
- node
- row
- yojan
- data
- gradient vector
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/02—Knowledge representation; Symbolic representation
- G06N5/022—Knowledge engineering; Knowledge acquisition
- G06N5/025—Extracting rules from data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17356—Indirect interconnection networks
- G06F15/17368—Indirect interconnection networks non hierarchical topologies
- G06F15/17381—Two dimensional, e.g. mesh, torus
-
- 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
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
- G06N20/10—Machine learning using kernel methods, e.g. support vector machines [SVM]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- General Physics & Mathematics (AREA)
- Artificial Intelligence (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Computer Hardware Design (AREA)
- Medical Informatics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Computational Linguistics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Neurology (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Multi Processors (AREA)
- Signal Processing For Digital Recording And Reproducing (AREA)
- Cable Transmission Systems, Equalization Of Radio And Reduction Of Echo (AREA)
Abstract
本申请涉及非标量数据的大数据集的约简和广播操作的并行处理的方法、***和装置,包括编码在存储介质上的指令,用于执行梯度向量和类似结构化数据的约简,所述梯度向量和类似结构化数据例如在以由节点之间的至少两个维度上的连接定义的网格或环面拓扑组织的节点上并行生成。所述方法提供了拓扑中的节点之间的并行计算和通信。
Description
技术领域
本说明书涉及并行处理非标量数据的大数据集。
背景技术
机器学习模型接收输入并基于接收到的输入和模型参数的值而生成输出。这些模型通常需要使用接收到的输入来训练,所述输入是非常大的数据集。
发明内容
本说明书描述了大体涉及大数据集的并行处理,并且具体涉及用于更快地约简、映射、和广播操作的各种拓扑中的大数据集的并行处理的技术。
一般而言,本说明书中描述的主题的一个创新方面可以实施在用于处理训练数据的方法中。所述方法包括在以包括节点的行和列的环面(torus)拓扑组织的多个节点中的每个节点上训练机器学习模型的相应副本,其中,每个节点是在相应训练数据批次上并行训练的,由此在训练之后每个节点保持由训练产生的相应梯度向量。节点中的各个梯度向量可以通过执行操作来组合以生成最终梯度向量,所述操作包括:通过在节点上执行的代码,对环面的行并行地执行改进的旋转钳式算法而不进行广播,以在每一行中生成梯度向量的每个相应不相交场的组合数据,由此当该行处理完成时,每一列包含梯度向量数据的相应相同不相交场的所有组合数据;并且然后通过在节点上执行的代码,在环面中的列中的每一列中执行第二环形算法,包括向每一列中的所有节点广播该列中的相应最终列结果;并且然后跨环面的每一行复制最终列结果,由此环面的每个节点保持最终梯度向量。
这些和其它实施例可以可选地包括以下特征中的一个或多个。第二环形算法可以是改进的旋转钳式算法。多个节点可以在单个模块上实现。每个节点可以在单独的集成电路上实现。模块可以是集成电路。执行改进的旋转钳式算法可以包括执行改进的旋转钳式算法以生成梯度向量的每个相应不相交场的求和数据。环面可以由节点的行和列组成。环面拓扑还可以包括节点层,每一层由节点的相应行和列组成。对每一行执行改进的旋转钳式算法可以包括:对于每一行中的每个节点,使用所述节点作为改进的钳式算法的实例化的开始节点,所述改进的钳式算法将所述节点的不相交场的一半发送到该行的环中的两个相邻节点中的每一个;以及从该节点开始执行改进的钳式算法。
对于该行中的每个起始节点,与起始节点相对的每个结束节点可以向该行中的其它节点广播由该结束节点确定的最终场梯度向量。所述组合可以与沿着环面的行进行的组合并行地沿着列执行,其中每一行中的每个节点是该行中的起始节点,并且每一列中的每个节点是该列中的起始节点,并且每个起始节点处理该梯度向量的不同的相应不相交场。
在一些实施方式中,一种用于处理训练数据的方法可以包括:在以包括节点的行和列的环面拓扑组织的多个节点中的每个节点上训练机器学习模型的相应副本,其中,每个节点是在相应训练数据批次上并行训练的,由此在所述训练之后每个节点保持由所述训练得到的相应梯度向量;通过执行操作来组合节点中的相应梯度向量以生成最终梯度向量,所述操作包括:通过在节点上执行的代码沿着环面的每一行来执行相应环形约简,使得每一行中的每一节点对于最初在该行的节点中的每一梯度向量具有约简的向量;以及通过在节点上执行的代码,沿着环面的每一列执行相应的环形约简,在所述环形约简结束时每个节点保持相同的最终梯度向量。
这些和其它实施例可任选地包括以下特征中的一个或多个。所述环形约简可以使用旋转钳式算法来执行。
在一些实施方式中,用于处理训练数据的方法可以包括:在节点模块上的每个节点上训练机器学习模型的相应副本,所述节点模块是以由具有环绕链路的环形行和没有环绕链路的节点的非环形列组成的拓扑组织的,其中,每个节点是在相应训练数据批次上并行训练的,由此在所述训练之后每个节点保持由所述训练得到的相应梯度向量;通过执行操作来组合节点中的相应梯度向量以生成最终梯度向量,所述操作包括:通过在节点上执行的代码,沿着拓扑的每一行执行相应的环形约简,使得每一行中的每个节点对于最初在该行的节点中的每个梯度向量具有约简的向量;以及通过在节点上执行的代码,沿着环面的每一列执行相应的线形约简,在所述线形约简结束时每个节点保持相同的最终梯度向量。
在一些实施方式中,一种用于处理训练数据的方法包括:在以包括节点的行和列的环面拓扑组织的多个节点中的每个节点上存储不同数据批次;通过执行操作来组合节点中的相应数据批次以生成最终数据批次,所述操作包括:通过在节点上执行的代码,沿着环面的每一行执行相应的环形约简,使得每一行中的每个节点对于最初在该行的节点中的每一数据批次具有组合数据批次向量;以及通过在节点上执行的代码,沿着环面的每一列执行相应的环形约简,在所述环形约简结束时每个节点保持相同的最终组合数据批次。
这些和其它实施例可任选地包括以下特征中的一个或多个。沿着环面的行和列的每一环形约简可以通过实现改进的旋转钳式算法的代码来执行。所述组合可以是对数据批次的约简。
本发明的一个或多个实施例的细节在附图和下面的描述中阐述,附图仅作为说明给出。根据说明书、附图、和权利要求书,本发明的其它特征、方面和优点将变得显而易见。在各个附图中相似的附图标记和名称指示相似的元素。
本公开的另一实施方式包括一种用于执行梯度向量和类似结构化数据的约简的方法,所述梯度向量和类似结构化数据例如在以由节点之间的至少两个维度上的连接定义的网格(mesh)或环面拓扑组织的节点上并行生成。所述方法提供了拓扑中的节点之间的并行计算和通信。
在一些实施例中,机器可读存储介质——例如非暂时性机器可读存储介质——存储指令,所述指令在被执行时使得处理设备执行包括根据本文描述的任何实施例或方面的方法的操作。
在一些实施例中,一种***包括:存储器;以及处理设备,其可操作地与存储器耦合以执行包括根据本文描述的任何实施例或方面的方法的操作。
上述实施例形成用于通过基于其中组织多个节点的拓扑以相应方式处理训练数据来改进机器学习模型的训练的替选解决方案。
附图说明
图1图示了机器学习模型副本的示例***。
图2图示了在示例模块上以环形拓扑连接的处理单元的示例。
图3图示副本和处理单元的环面拓扑。
图4A是图示由中间处理单元执行的处理的流程图。
图4B是图示由最终处理单元执行的处理的流程图。
图5A是图示由二维(2D)网格或环面拓扑中的处理单元执行的处理的流程图。
图5B是图示由三维(3D)网格或环面中的处理单元执行的处理的流程图。
在各个附图中相似的附图标记和名称指示相似的元素。
具体实施方式
用于训练机器学习模型的一种常见策略是在多个处理单元上并行处理成批的训练数据。图1图示了机器学习模型副本A-D的示例***100,所述副本中的每一个在对应的处理单元110上训练。为了方便起见,在附图中,副本和其所在的处理单元二者都可以用相同的名称来引用。
训练时,机器学习模型由模型参数的值定义。模型参数通常被组织为非标量数据,例如作为向量、二维(2D)矩阵、三维(3D)矩阵、或更高级的矩阵,其元素通常是标量值,例如整数或浮点数。
在***中,每个副本是在独特训练数据批次上进行训练的。在图1中,副本A-D分别在批次1-4 105上训练。当副本处理完它的训练数据批次时,此副本具有一组模型参数值的梯度。每个副本中的梯度值的结构是相同的,并且总体上对应于参数值的结构。为了方便起见,这两者都称为向量。
因为副本是在不同的数据上训练的,所以副本的梯度向量被组合以生成最终梯度向量,所述最终梯度向量用于更新模型的参数值,即参数向量。组合梯度向量的一种方式是生成逐元素(element-wise)平均值。通常在预期处理一批训练数据并将每个副本的梯度向量组合—即约简为约简—即最终梯度向量并更新模型的参数值的另一迭代时,将更新的参数值传送到所有机器学习模型副本。
一些机器学习***具有中央参数计算子***,所述中央参数计算子***从每个副本接收梯度向量并在中央位置处组合它们。本说明书描述了可以在机器学习***中使用的技术,所述机器学习***不具有中央参数计算子***,而是在副本中以分布式方式约简梯度向量和更新参数值。
图2图示了连接以环形拓扑连接的处理单元A-H(202a-202h)的示例聚合的高速连接的拓扑。有利地,所有处理单元都在单个模块200上。此图中所示的处理单元之间的线表示高速数据通信链路。所述处理单元有利地在一个集成电路(“芯片”)上制造,但是它们也可以在多个芯片上制造。跨芯片边界的链路是芯片间网络链路;同一芯片上的处理单元通过芯片内接口链路通信。链路可以是一次只有一个处理单元可以在上面传输数据的半双工链路,或者可以是可以同时在两个方向上在上面传输数据的全双工链路。
现在将参考处理单元A-H描述用于执行此拓扑中的约简的方法。所述约简具有求和步骤、计算步骤和广播步骤。
单路径算法
单路径算法使处理单元之一——例如单元A将数据发送到一个邻近单元,例如单元B。B将来自A的数据与其自己的数据相加,并将总和发送到C,以此类推。数据的这种发送和处理有利地以流送的方式进行,使得例如B可以在其已经从A接收到所有数据之前开始相加。最终组合发生在单元H中。然后将最终梯度向量传送到其它单元。这可以通过反转流送数据路径来实现。替选地,如果广播功能对于允许一个单元向多个单元广播的处理单元可用,则可以使用广播功能来完成最终梯度向量的传送。为了方便起见,进程的此部分将被称为广播,即使每个处理单元可以仅将最终输出传送到一个其它处理单元。
钳式算法
为了实现比单路径算法更低的时延,钳式算法在环上跨相反方向的两条路径发送数据。因此,例如,单元A和单元B同时开始通信,使得F和E分别最终具有跨从A和B通向它们的路径的和。如果单元的数目是偶数,则数据必须从F传输到E,或者反之亦然,并且在被广播到所有单元之前在那里被组合。
旋转钳式算法
下面描述的旋转钳式算法进一步减少了时延。
在旋转钳式算法中,钳式算法的独立实例化从每对相邻处理单元开始同时执行。因此,当钳式算法从单元A和B开始运行时,相同的算法从单元B和C以及从C和D开始运行,以此类推。
梯度向量被分割成在有可能的情况下大小相等或基本相等的不相交子集,并且算法的每个实例化处理这些子集之一。这可能改变流送的工作方式,因为例如现在在C在向D发送一个数据子集的同时,B将向C发送另一个数据子集。因此C直到发送完自己的数据之前不会转发来自B的数据。为此,从B传输到C的数据暂时存储在C上。替选地,从B和D到达C的数据的处理可以交错。
改进的旋转钳式算法
如果节点的数目为偶数,则下面描述的改进的旋转钳式算法进一步减少了时延。
在改进的旋转钳式算法中,单元A首先将其数据的一半发送到单元H,并且将另一半发送到B,并且然后钳式算法继续照常工作。这使数据路径在两个方向上对称。对于此算法中的广播,例如,如果单元E想要向所有其它节点广播,则它在相反方向上发送数据,并且作为最后步骤,单元B和H将数据的不相交的一半发送到A,使得A仍然接收所有数据。
环面上的梯度约简
图3图示副本和处理单元的环面拓扑。为了方便起见,图示了16个副本和处理单元A1至D4,其中每一个是四个单元的两个环——水平环和垂直环的一部分,并且其中每一个具有到四个其它单元的直接链路。用于处理大型机器学习模型——例如具有1000、2500或5000万参数值的模型——的拓扑,合适的处理单元数目将更大,例如,每个环中有16个单元,并且总共256个单元。更多或更少的数目会适用于更大或更小的模型。
迭代约简算法
环面上的迭代约简算法将环面上的约简简化为环上的一系列约简。第一步是沿每一行进行环形约简,对A行仅使用链路A1-A2、A2-A3、A3-A4和A4-A1。
首先,在每一行中执行上述的任何环形约简算法,使得一行中的每个单元对于最初在行的单元中的每个梯度向量具有总和向量。
然后,沿着每一列执行环形约简,在所述环形约简结束时相同的最终梯度向量在每个单元中。
如上所公开,约简具有求和步骤、计算步骤和广播步骤。初始行-环形约简不应执行完整的计算步骤,因为即使环上的计算已经完成,梯度实际上仍未完成在环面上的求和。
旋转迭代约简算法
迭代约简算法的一个改进是旋转迭代约简算法,其中相同的算法被实例化两次,在一半数据上并行旋转90度。一个实例化处理行并且然后处理列,经旋转的实例化处理列并且然后处理行。这两个实例化从不同时使用相同的通信链路,因此这使环面的链路的带宽利用率加倍。
递归约简算法
在递归约简算法中实现了进一步的改进。在此算法中,首先在环面的行上执行改进的旋转钳式算法,而不进行广播,其中更新求和的数据并将其发送到所述行中的其它单元。这样,每个单元已经对梯度向量的不相交子集的数据求和。因此,当行处理完成时,每一列包含梯度向量数据的相同子集的所有数据。
然后,沿着列执行第二环形约简,包括更新权重并将结果广播给该列中的所有单元。为了完成约简,递归约简算法进程跨每一行复制数据。这提供了行-环上的最佳广播。
就数据量N和环面的一行中的处理单元的数目C而言,与迭代算法的N个数据上的列约简相比,递归约简算法实际上对N个数据运行行约简和对N/C个数据运行列约简。
旋转递归约简算法
递归约简算法可以以与如上针对旋转迭代约简算法所述的相同的方式旋转和复制,以将链路带宽的使用加倍成理论上最优的量。这是因为所述算法仅发送需要发送的数据,并且它在两个方向上使所有链路饱和直到算法完成为止。
替选拓扑
本说明书中描述的算法也基本上可以用于其它拓扑,例如,在16x4拓扑中,其中在具有16个单元的维度中存在环绕(wrap-around link)链路,而在具有4个单元的维度中不存在环绕链路。所述算法将被修改为在具有环绕链路的维度中使用环形约简,并且在没有环绕链路的维度中使用某种形式的线形约简,例如上述的单路径算法。类似地,可以修改算法以在没有环绕链路的网格拓扑上工作。
算法的实现
每个算法可以通过在处理单元上运行的进程或线程以分布式方式实现。
所述进程可以通过控制消息来配置,例如,所述控制消息针对每个约简实例化指示:所述进程要处理梯度向量的哪个子集、它是约简中的起始单元、最终单元还是中间单元、以及数据或组合数据和广播应当在哪个方向上发送,如上所述。
梯度约简进程操作的编程
图4A是图示由每个中间处理单元执行的进程的流程图。每个中间处理单元将它的梯度向量或它的梯度向量的一部分与它在从前一处理单元接收到输入梯度向量的一部分时接收到的输入梯度向量组合(410)。由每个处理单元执行的组合操作可以是简单求和或组合梯度向量的某种其它计算。然后,中间处理单元在所述方向上将组合的梯度向量发送到下一处理单元(425)。
图4B是图示由每个最终处理单元执行的进程的流程图。最终处理单元将它的梯度向量与它在从数据路径方向上的前一处理单元接收到输入梯度向量时接收到的输入梯度向量组合,并生成最终约简的梯度向量(430)。
最终处理单元总体上将约简的梯度向量与机器学习模型参数的值组合以产生参数值的更新集合(432)。假设参数向量为x并且梯度为dx,简单更新具有如下形式:x+=-learning_rate*dx,其中learning_rate是标量项。更新规则可以是任意复杂的,例如,它们可以取决于先前的梯度。在计算更新的参数之后,最终处理单元发起广播操作,所述广播操作通过使数据流反向而通过处理单元沿一路返回根处理单元的方向发送最终输出,将更新的参数值提供给所有其它处理单元(435)。结果,每个处理单元将具有更新的参数以用于处理下一批机器学习训练数据。
所述进程将被称为广播进程,即使每个处理单元仅将最终输出传送到一个其他处理单元。
图5A是图示由二维(2D)网格或环面拓扑中的处理单元执行的处理的流程图。这些处理单元在多个第一维度数据路径中同时执行梯度约简进程(510)。然后2D网格或环面的处理单元使用来自第一维度的梯度约简进程的结果在第二维度数据路径中执行至少一个梯度约简进程(525)。
图5B是图示由三维(3D)网格或环面拓扑中的处理单元执行的处理的流程图。这些处理单元在多个第一维度数据路径中同时执行梯度约简进程(530)。然后3D网格或环面的处理单元使用来自第一维度的梯度约简进程的结果在第二维度数据路径中执行多个梯度约简进程(540)。最后,3D网格或环面的处理单元使用第二维度的梯度约简进程的结果在第三维度数据路径中执行至少一个梯度约简进程(1050)。
计算机程序——其也可以称为或描述为程序、软件、软件应用、应用、模块、软件模块、脚本、或代码,可以以任何形式的编程语言编写,包括编译或解释语言、或声明性或过程性语言;并且它可以以任何形式部署,包括作为独立程序或作为模块、组件、子例程或适合于在计算环境中使用的其它单元。计算机程序可以被部署成在一台计算机上执行,或者在位于一个站点或跨多个站点分布并且通过数据通信网络互连的多台计算机上执行。
本说明书中描述的进程和逻辑流程可以由一个或多个可编程计算机执行,所述一个或多个可编程计算机执行一个或多个计算机程序以通过对实例数据进行操作并生成输出来执行功能。尽管本说明书具体涉及处理单元处理梯度向量,但是处理单元可以对任何非标量实例数据——即张量、矩阵、数组、或可以保持可以并行分割和处理的数据的任何其它数据结构——执行约简处理。所述进程和逻辑流程还可以由专用逻辑电路——例如FPGA或ASIC——执行,或者由专用逻辑电路和一个或多个编程计算机的组合执行。
适合于执行计算机程序的计算机可以基于通用或专用微处理器或两者,或任何其它类型的中央处理单元。通常,中央处理单元将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是用于实施或执行指令的中央处理单元和用于存储指令和数据的一个或多个存储器设备。中央处理单元和存储器可由专用逻辑电路补充或并入专用逻辑电路中。一般而言,计算机还将包括用于存储数据的一个或多个大容量存储设备——例如磁盘、磁光盘或光盘,或者可操作地耦合以从其接收数据或向其传送数据,或者两者兼有。然而,计算机不需要具有这样的设备。此外,计算机可以嵌入到另一设备中,例如移动电话、个人数字助理(PDA)、移动音频或视频播放器、游戏控制台、全球定位***(GPS)接收器或便携式存储设备,例如通用串行总线(USB)闪存驱动器,仅举几个例子。
实施例1是一种处理训练数据的方法,包括:
在以包括节点的行和列的环面拓扑组织的多个节点中的每个节点上训练机器学习模型的相应副本,其中,每个节点在相应训练数据批次上并行训练,由此在所述训练之后每个节点保持由所述训练得到的相应梯度向量;
通过执行操作来组合所述节点中的相应梯度向量以生成最终梯度向量,所述操作包括:
通过在节点上执行的代码,对环面的行并行地执行改进的旋转钳式算法,而不进行广播,以在每一行中生成梯度向量的每个相应不相交场的组合数据,由此当该行处理完成时,每一列包含该梯度向量数据的相应相同不相交场的所有组合数据;
通过在节点上执行的代码,在环面的列中的每一列中执行第二环形算法,包括向每一列中的所有节点广播该列中的相应最终列结果;并且然后
跨环面的每一行复制最终列结果,由此环面的每个节点保持最终梯度向量。
实施例2是根据实施例1所述的方法,其中,第二环形算法是改进的旋转钳式算法。
实施例3是根据实施例1-2中任一实施例所述的方法,其中,所述多个节点是在单个模块上实现的。
实施例4是根据实施例1-3中任一实施例所述的方法,其中,每个节点是在单独的集成电路上实现的。
实施例5是根据实施例1-4中任一实施例所述的方法,其中,模块是集成电路。
实施例6是根据实施例1-5中任一实施例所述的方法,其中,执行改进的旋转钳式算法包括执行改进的旋转钳式算法以生成梯度向量的每个相应不相交场的求和数据。
实施例7是根据实施例1-6中任一实施例所述的方法,其中,环面由节点的行和列组成。
实施例8是根据实施例1-7中任一实施例所述的方法,其中,环面拓扑进一步包括节点层,每一层由相应的节点行和列组成。
实施例9是根据实施例1-8中任一实施例所述的方法,其中,对每一行执行改进的旋转钳式算法包括:
对于每一行中的每个节点:
使用该节点作为改进钳式算法的实例化的起始节点,所述改进钳式算法将所述节点的不相交场的一半发送到该行的环中的两个相邻节点中的每一个;以及
在该节点处开始执行改进的钳式算法。
实施例10是根据实施例1-9中任一实施例所述的方法,进一步包括:
对于该行中的每个起始节点,由与该起始节点相对的每个结束节点向该行中的其它节点广播由该结束节点确定的最终场梯度向量。
实施例11是根据实施例1-10中任一实施例所述的方法,进一步包括:
与沿着环面的行执行组合并行地沿着列执行所述组合,其中每一行中的每个节点是该行中的起始节点,并且每一列中的每个节点是该列中的起始节点,并且每个起始节点处理该梯度向量的不同的相应不相交场。
实施例12是用于处理训练数据的方法,所述方法包括:
在以包括节点的行和列的环面拓扑组织的多个节点中的每个节点上训练机器学习模型的相应副本,其中,每个节点是在相应训练数据批次上并行训练的,由此在所述训练之后每个节点保持由训练得到的相应梯度向量;
通过执行操作来组合节点中的相应梯度向量以生成最终梯度向量,所述操作包括:
通过在节点上执行的代码,沿着环面的每一行执行相应的环形约简,使得每一行中的每一节点对于最初在该行的节点中的每一梯度向量具有约简的向量;以及
通过在节点上执行的代码,沿着环面的每一列执行相应的环形约简,在环形约简结束时每个节点保持相同的最终梯度向量。
实施例13是根据实施例12所述的方法,其中,所述环形约简是使用旋转钳式算法来执行的。
实施例14是一种处理训练数据的方法,所述方法包括:
在节点模块上的每个节点上训练机器学习模型的相应副本,所述节点模块是以由具有环绕链路的环形行和没有环绕链路的节点的非环形列组成的拓扑组织的,其中,每个节点是在相应训练数据批次上并行训练的,由此在所述训练之后每个节点保持由训练得到的相应梯度向量;
通过执行操作来组合节点中的相应梯度向量以生成最终梯度向量,所述操作包括:
通过在节点上执行的代码,沿着拓扑的每一行执行相应的环形约简,使得每一行中的每个节点对于最初在该行的节点中的每个梯度向量具有约简的向量;以及
通过在节点上执行的代码,沿着环面的每一列执行相应的线形约简,在所述线形约简结束时每个节点保持相同的最终梯度向量。
实施例15是一种处理训练数据的方法,所述方法包括:
在以包括节点的行和列的环面拓扑组织的多个节点中的每个节点上存储不同数据批次;
通过执行操作组合节点中的相应数据批次以生成最终数据批次,所述操作包括:
通过在节点上执行的代码,沿着环面的每一行执行相应的环形约简,使得每一行中的每个节点对于最初在该行的节点中的每一数据批次具有组合数据批次向量;以及
通过在节点上执行的代码,沿着环面的每一列执行相应的环形约简,在所述环形约简结束时每个节点保持相同的最终的组合数据批次。
实施例16是根据实施例15所述的方法,其中,通过实现改进的旋转钳式算法的代码,沿着环面的行和列执行每一环形约简。
实施例17是根据实施例15或16中任一实施例所述的方法,其中,所述组合是对数据批次的约简。
实施例18是一种***,包括:
组织成行和列的拓扑的多个节点以及上面存储指令的一个或多个存储设备,所述指令在由节点执行时可操作以使得节点执行实施例1-17中任一实施例所述的方法。
实施例19是根据实施例18中所述的***,其中,节点被组织成环面拓扑。
实施例20是根据实施例18或19中任一实施例所述的***,其中,节点是在模块上以环面拓扑组织的。
实施例21是用指令编码的存储介质,所述指令在由以行和列的拓扑组织的节点执行时,可操作以使得节点执行实施例1-17中任一实施例所述的方法。
实施例22是根据实施例21所述的存储介质,其中,存储介质是一个或多个非暂时性存储设备。
实施例23是根据实施例21或22中任一实施例所述的存储介质,其中,节点是以环面拓扑组织的。
虽然本说明书包含许多具体实施方式细节,但这些不应被解释为对任何发明的范围或可以要求保护的内容的范围的限制,而应被解释为可以对特定发明的特定实施例所特有的特征的描述。在本说明书中,术语“向量”、“向量数据”、和“向量元素”广泛地用于指代任何非标量数据。除了向量之外,非标量数据的示例是字符串、阵列、结构、矩阵、和张量。
本说明书中描述的约简和更新功能仅仅是示例,并且完全独立于本发明本身。此外,本发明被描述为用于机器学习,但是可以用于涉及约简跨网络分布的数据的任何目的。
在本说明书中在单独实施例的场境(context)中描述的某些特征也可以在单个实施例中组合实现。相反,在单个实施例的场境中描述的各个特征也可以单独地或以任何合适的子组合在多个实施例中实现。此外,尽管特征可以在上文中被描述为以某些组合起作用,并且甚至最初被这样要求保护,但是在一些情况下,来自所要求保护的组合的一个或多个特征可以从所述组合中去除,并且所要求保护的组合可以涉及子组合或子组合的变型。
类似地,尽管附图中以特定顺序描绘了操作,但这不应理解为要求以所示的特定顺序或以依次顺序执行这样的操作或者执行所有示出的操作才能获得期望的结果。在某些情况下,多任务和并行处理可能是有利的。此外,上述实施例中的各种***模块和组件的分离不应被理解为在所有实施例中都需要这样的分离,并且应当理解,所描述的程序组件和***通常可以共同集成在单个软件产品中或者封装在多个软件产品中。
已经描述了主题的特定实施例。其它实施例也在所附权利要求书的范围内。例如,权利要求书中所记载的动作可以以不同的顺序执行并且仍然获得期望的结果。作为一个示例,附图中描述的过程不一定需要所示的特定顺序或依次顺序来实现期望的结果。在某些情况下,多任务和并行处理可能是有利的。
Claims (23)
1.一种用于处理训练数据的方法,所述方法包括:
在以包括节点的行和列的环面拓扑组织的多个节点中的每个节点上训练机器学习模型的相应副本,其中,每个节点在相应训练数据批次上并行训练,由此在所述训练之后每个节点保持由所述训练得到的相应梯度向量;
通过执行操作来组合所述节点中的相应梯度向量以生成最终梯度向量,所述操作包括:
通过在所述节点上执行的代码,对所述环面的行并行执行第一环形算法而不进行广播,以在每一行中生成该梯度向量的每个相应不相交场的组合数据,由此当该行处理完成时,每一列包含该梯度向量数据的相应相同不相交场的所有组合数据,所述第一环形算法是改进的旋转钳式算法;并且然后
通过在所述节点上执行的代码,在所述环面的列中的每一列中执行第二环形算法,包括向每一列中的所有节点广播该列中的相应最终列结果;并且然后
跨所述环面的每一行复制所述最终列结果,由此所述环面的每个节点保持所述最终梯度向量。
2.根据权利要求1所述的方法,其中,所述第二环形算法是改进的旋转钳式算法。
3.根据权利要求1所述的方法,其中,所述多个节点是在单个模块上实现的。
4.根据权利要求1所述的方法,其中,每个节点是在单独的集成电路上实现的。
5.根据权利要求3所述的方法,其中,所述模块是集成电路。
6.根据权利要求1所述的方法,其中,执行所述改进的旋转钳式算法包括:执行所述改进的旋转钳式算法以生成该梯度向量的每个相应不相交场的求和数据。
7.根据权利要求1所述的方法,其中,所述环面由节点的行和列组成。
8.根据权利要求1所述的方法,其中,所述环面拓扑进一步包括节点层,每一层由节点的相应行和列组成。
9.根据权利要求1所述的方法,其中,对每一行执行所述改进的旋转钳式算法包括:
对于每一行中的每个节点:
使用所述节点作为所述改进的钳式算法的实例化的开始节点,所述改进的钳式算法将所述节点的所述不相交场的一半发送到该行的环中的两个相邻节点中的每一个;以及
在该节点处开始执行所述改进的钳式算法。
10.根据权利要求9所述的方法,进一步包括:
对于该行中的每个起始节点,由与该起始节点相对的每个结束节点向该行中的其它节点广播由该结束节点确定的最终场梯度向量。
11.根据权利要求1所述的方法,进一步包括:
与沿着所述环面的行执行所述组合并行地沿着列执行所述组合,其中每一行中的每个节点是该行中的起始节点,并且每一列中的每个节点是该列中的起始节点,并且每个起始节点处理该梯度向量的不同的相应不相交场。
12.一种用于处理训练数据的方法,所述方法包括:
在以包括节点的行和列的环面拓扑组织的多个节点中的每个节点上训练机器学习模型的相应副本,其中,每个节点是在相应训练数据批次上并行训练的,由此在所述训练之后每个节点保持由所述训练得到的相应梯度向量;
通过执行操作来组合所述节点中的相应梯度向量以生成最终梯度向量,所述操作包括:
通过在所述节点上执行的代码,沿着所述环面的每一行执行相应的环形约简,使得每一行中的每个节点对于最初在该行的节点中的每个梯度向量具有约简的向量;以及
通过在所述节点上执行的代码,沿着所述环面的每一列执行相应的环形约简,在所述环形约简结束时每个节点保持相同的最终梯度向量。
13.根据权利要求12所述的方法,其中,所述环形约简所使用旋转钳式算法来执行的。
14.一种用于处理训练数据的方法,所述方法包括:
在节点模块上的每个节点上训练机器学习模型的相应副本,所述节点模块是以具有环绕链路的环形行和不具有环绕链路的节点的非环形列组成的拓扑组织的,其中,每个节点在相应训练数据批次上并行训练,由此在所述训练之后每个节点保持由所述训练得到的相应梯度向量;
通过执行操作来组合所述节点中的相应梯度向量以生成最终梯度向量,所述操作包括:
通过在所述节点上执行的代码,沿着所述拓扑的每一行执行相应的环形约简,使得每一行中的每个节点对于最初在该行的节点中的每个梯度向量具有约简的向量;以及
通过在所述节点上执行的代码,沿着所述环面的每一列执行相应的线形约简,在所述线形约简结束时每个节点保持相同的最终梯度向量。
15.一种用于处理训练数据的方法,所述方法包括:
在以包括节点的行和列的环面拓扑组织的多个节点中的每个节点上存储不同数据批次;
通过执行操作来组合所述节点中的相应数据批次以生成最终数据批次,所述操作包括:
通过在所述节点上执行的代码,沿着所述环面的每一行执行相应的环形约简,使得每一行中的每个节点对于最初在该行的节点中的每一数据批次具有组合数据批次向量;以及
通过在所述节点上执行的代码,沿着所述环面的每一列执行相应的环形约简,在所述环形约简结束时每个节点保持相同的最终的组合数据批次。
16.根据权利要求15所述的方法,其中,通过实现改进的旋转钳式算法的代码,来沿着所述环面的行和列执行每一环形约简。
17.根据权利要求15所述的方法,其中,所述组合是对所述数据批次的约简。
18.一种***,包括:
组织成行和列的拓扑的多个节点以及上面存储指令的一个或多个存储设备,所述指令在由所述节点执行时能操作以使得所述节点执行根据权利要求1所述的方法。
19.根据权利要求18所述的***,其中,所述节点是以环面拓扑组织的。
20.根据权利要求18所述的***,其中,所述节点是在模块上以环面拓扑组织的。
21.一种用指令编码的存储介质,所述指令在由以行和列的拓扑组织的节点执行时能操作以使得所述节点执行根据权利要求1所述的方法。
22.根据权利要求21所述的存储介质,其中,所述存储介质是一个或多个存储设备。
23.根据权利要求21所述的存储介质,其中,所述节点是以环面拓扑组织的。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011112250.6A CN112288095A (zh) | 2017-02-21 | 2018-02-22 | 非标量数据的大数据集的约简和广播操作的并行处理 |
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201762461758P | 2017-02-21 | 2017-02-21 | |
US62/461,758 | 2017-02-21 | ||
US15/707,104 | 2017-09-18 | ||
US15/707,104 US10055692B1 (en) | 2017-02-21 | 2017-09-18 | Parallel processing of reduction and broadcast operations on large datasets of non-scalar data |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011112250.6A Division CN112288095A (zh) | 2017-02-21 | 2018-02-22 | 非标量数据的大数据集的约简和广播操作的并行处理 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108537341A true CN108537341A (zh) | 2018-09-14 |
CN108537341B CN108537341B (zh) | 2020-11-06 |
Family
ID=61563107
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810153965.2A Active CN108537341B (zh) | 2017-02-21 | 2018-02-22 | 非标量数据的大数据集的约简和广播操作的并行处理 |
CN202011112250.6A Pending CN112288095A (zh) | 2017-02-21 | 2018-02-22 | 非标量数据的大数据集的约简和广播操作的并行处理 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011112250.6A Pending CN112288095A (zh) | 2017-02-21 | 2018-02-22 | 非标量数据的大数据集的约简和广播操作的并行处理 |
Country Status (8)
Country | Link |
---|---|
US (2) | US10055692B1 (zh) |
EP (2) | EP3859543A1 (zh) |
CN (2) | CN108537341B (zh) |
DE (2) | DE202018100938U1 (zh) |
DK (1) | DK3364306T3 (zh) |
GB (1) | GB2563309B (zh) |
TW (2) | TWI807349B (zh) |
WO (1) | WO2018156358A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113678115A (zh) * | 2019-03-27 | 2021-11-19 | 图核有限公司 | 具有嵌入的环的联网计算机领域 |
CN113785280A (zh) * | 2019-03-27 | 2021-12-10 | 图核有限公司 | 环形计算机网络上的嵌入环 |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10055692B1 (en) | 2017-02-21 | 2018-08-21 | Google Llc | Parallel processing of reduction and broadcast operations on large datasets of non-scalar data |
US11907825B2 (en) | 2018-10-19 | 2024-02-20 | Google Llc | Training neural networks using distributed batch normalization |
CN110033091B (zh) | 2018-12-13 | 2020-09-01 | 阿里巴巴集团控股有限公司 | 一种基于模型进行预测的方法和装置 |
GB201904263D0 (en) * | 2019-03-27 | 2019-05-08 | Graphcore Ltd | A networked computer |
US11704270B2 (en) | 2019-03-27 | 2023-07-18 | Graphcore Limited | Networked computer with multiple embedded rings |
CN112308233B (zh) * | 2019-08-02 | 2024-07-19 | 伊姆西Ip控股有限责任公司 | 用于处理数据的方法、设备和计算机程序产品 |
US11715010B2 (en) | 2019-08-16 | 2023-08-01 | Google Llc | Cross replica reduction on networks having degraded nodes |
US20220292399A1 (en) * | 2019-09-06 | 2022-09-15 | Google Llc | Processing of reduction and broadcast operations on large datasets with mutli-dimensional hardware accelerators |
JP2022543814A (ja) | 2020-03-26 | 2022-10-14 | グラフコアー リミテッド | 2つの組み込みリングを有するネットワークコンピュータ |
GB2593757B (en) | 2020-04-02 | 2022-04-06 | Graphcore Ltd | Control of processing node operations |
GB2593756B (en) | 2020-04-02 | 2022-03-30 | Graphcore Ltd | Control of data transfer between processing nodes |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130290223A1 (en) * | 2012-04-27 | 2013-10-31 | Yahoo! Inc. | Method and system for distributed machine learning |
US20130339499A1 (en) * | 2012-06-13 | 2013-12-19 | International Business Machines Corporation | Performing synchronized collective operations over multiple process groups |
CN104281853A (zh) * | 2014-09-02 | 2015-01-14 | 电子科技大学 | 一种基于3d卷积神经网络的行为识别方法 |
CN105051693A (zh) * | 2013-03-15 | 2015-11-11 | 思杰***有限公司 | 管理计算机服务器能力 |
CN105550374A (zh) * | 2016-01-29 | 2016-05-04 | 湖南大学 | Spark云服务环境下面向大数据的随机森林并行机器学习方法 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6442694B1 (en) | 1998-02-27 | 2002-08-27 | Massachusetts Institute Of Technology | Fault isolation for communication networks for isolating the source of faults comprising attacks, failures, and other network propagating errors |
US6278997B1 (en) * | 1999-02-05 | 2001-08-21 | International Business Machines Corporation | System and method for constraint-based rule mining in large, dense data-sets |
CA2437629A1 (en) | 2001-02-24 | 2002-09-06 | International Business Machines Corporation | Arithmetic functions in torus and tree networks |
US8065503B2 (en) | 2006-12-15 | 2011-11-22 | International Business Machines Corporation | Iteratively processing data segments by concurrently transmitting to, processing by, and receiving from partnered process |
US10032091B2 (en) * | 2013-06-05 | 2018-07-24 | Emotient, Inc. | Spatial organization of images based on emotion face clouds |
WO2016096309A1 (en) | 2014-12-15 | 2016-06-23 | Asml Netherlands B.V. | Optimization based on machine learning |
US10490094B2 (en) * | 2015-09-25 | 2019-11-26 | International Business Machines Corporation | Techniques for transforming questions of a question set to facilitate answer aggregation and display |
US10621219B2 (en) * | 2017-02-10 | 2020-04-14 | International Business Machines Corporation | Techniques for determining a semantic distance between subjects |
US10055692B1 (en) | 2017-02-21 | 2018-08-21 | Google Llc | Parallel processing of reduction and broadcast operations on large datasets of non-scalar data |
-
2017
- 2017-09-18 US US15/707,104 patent/US10055692B1/en active Active
-
2018
- 2018-02-08 US US16/495,815 patent/US11551138B2/en active Active
- 2018-02-08 WO PCT/US2018/017406 patent/WO2018156358A1/en active Application Filing
- 2018-02-14 TW TW110122727A patent/TWI807349B/zh active
- 2018-02-14 TW TW107105429A patent/TWI730222B/zh active
- 2018-02-20 EP EP21157216.9A patent/EP3859543A1/en active Pending
- 2018-02-20 EP EP18157584.6A patent/EP3364306B1/en active Active
- 2018-02-20 DE DE202018100938.9U patent/DE202018100938U1/de active Active
- 2018-02-20 DE DE102018103751.1A patent/DE102018103751A1/de not_active Withdrawn
- 2018-02-20 DK DK18157584.6T patent/DK3364306T3/da active
- 2018-02-21 GB GB1802758.1A patent/GB2563309B/en active Active
- 2018-02-22 CN CN201810153965.2A patent/CN108537341B/zh active Active
- 2018-02-22 CN CN202011112250.6A patent/CN112288095A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130290223A1 (en) * | 2012-04-27 | 2013-10-31 | Yahoo! Inc. | Method and system for distributed machine learning |
US20130339499A1 (en) * | 2012-06-13 | 2013-12-19 | International Business Machines Corporation | Performing synchronized collective operations over multiple process groups |
CN105051693A (zh) * | 2013-03-15 | 2015-11-11 | 思杰***有限公司 | 管理计算机服务器能力 |
CN104281853A (zh) * | 2014-09-02 | 2015-01-14 | 电子科技大学 | 一种基于3d卷积神经网络的行为识别方法 |
CN105550374A (zh) * | 2016-01-29 | 2016-05-04 | 湖南大学 | Spark云服务环境下面向大数据的随机森林并行机器学习方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113678115A (zh) * | 2019-03-27 | 2021-11-19 | 图核有限公司 | 具有嵌入的环的联网计算机领域 |
CN113785280A (zh) * | 2019-03-27 | 2021-12-10 | 图核有限公司 | 环形计算机网络上的嵌入环 |
Also Published As
Publication number | Publication date |
---|---|
GB2563309B (en) | 2021-07-28 |
WO2018156358A1 (en) | 2018-08-30 |
TW202137077A (zh) | 2021-10-01 |
GB2563309A (en) | 2018-12-12 |
GB201802758D0 (en) | 2018-04-04 |
DE102018103751A1 (de) | 2018-08-23 |
EP3859543A1 (en) | 2021-08-04 |
EP3364306B1 (en) | 2021-04-07 |
US20180240039A1 (en) | 2018-08-23 |
DE202018100938U1 (de) | 2018-05-22 |
CN108537341B (zh) | 2020-11-06 |
EP3364306A1 (en) | 2018-08-22 |
US11551138B2 (en) | 2023-01-10 |
CN112288095A (zh) | 2021-01-29 |
US10055692B1 (en) | 2018-08-21 |
TW201841132A (zh) | 2018-11-16 |
TWI730222B (zh) | 2021-06-11 |
DK3364306T3 (da) | 2021-07-05 |
TWI807349B (zh) | 2023-07-01 |
US20200042895A1 (en) | 2020-02-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108537341A (zh) | 非标量数据的大数据集的约简和广播操作的并行处理 | |
Pace | BSP vs MapReduce | |
CN105930902B (zh) | 一种神经网络的处理方法、*** | |
CN101925877A (zh) | 对数据执行排列运算的装置与方法 | |
CN104866904A (zh) | 一种基于spark的遗传算法优化的BP神经网络并行化方法 | |
Klamser et al. | Zealotry effects on opinion dynamics in the adaptive voter model | |
CA2078912A1 (en) | Hierarchical interconnection networks for parallel processing | |
CN111461335B (zh) | 基于mpi多进程的含噪声单量子逻辑门实现方法及装置 | |
KR102360452B1 (ko) | 뉴럴 네트워크 프로세서의 컨벌루션 연산 처리 방법 및 장치 | |
CN104573369A (zh) | 一种基于混洗蛙跳的软硬件划分方法 | |
Guo et al. | Parallel genetic algorithms on multiple FPGAs | |
US10922606B2 (en) | Multi-directional reduction in large scale deep-learning | |
Guo et al. | A dynamic allocation bare bones particle swarm optimization algorithm and its application | |
CN106846236A (zh) | 一种可扩展的分布式gpu加速方法及装置 | |
CN110720095A (zh) | 通用并行计算架构 | |
Posthoff et al. | The Solution of Discrete Constraint Problems Using Boolean Models-The Use of Ternary Vectors for Parallel SAT-Solving | |
US11297127B2 (en) | Information processing system and control method of information processing system | |
US11886934B2 (en) | Control of data transfer between processing nodes | |
CN117112145B (zh) | 训练模型分配方法、装置、计算机设备和存储介质 | |
US11886982B2 (en) | Control of processing node operations | |
Lee et al. | A Group Order-Preserving Encryption Scheme Based on Periodic Functions for Efficient Query Processing on Encrypted Data | |
Rajasekaran et al. | Packet routing and selection on the POPS network | |
Russell et al. | Distributed computation meets design theory: local scheduling for disconnected cooperation | |
Alqurashi et al. | Finding and Displaying the Shortest Paths in Hyper-Rings | |
CN116095012A (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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 1261095 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |