CN116049084A - 一种模型训练系统和方法 - Google Patents
一种模型训练系统和方法 Download PDFInfo
- Publication number
- CN116049084A CN116049084A CN202111617115.1A CN202111617115A CN116049084A CN 116049084 A CN116049084 A CN 116049084A CN 202111617115 A CN202111617115 A CN 202111617115A CN 116049084 A CN116049084 A CN 116049084A
- Authority
- CN
- China
- Prior art keywords
- node
- data
- processor
- port
- wss
- 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
- 238000012549 training Methods 0.000 title claims abstract description 174
- 238000000034 method Methods 0.000 title claims abstract description 109
- 230000005540 biological transmission Effects 0.000 claims abstract description 114
- 230000003287 optical effect Effects 0.000 claims abstract description 91
- 238000004891 communication Methods 0.000 claims description 50
- 230000015654 memory Effects 0.000 claims description 26
- 238000013507 mapping Methods 0.000 claims description 22
- 238000004590 computer program Methods 0.000 claims description 8
- 238000012546 transfer Methods 0.000 abstract description 13
- 208000010119 wrinkly skin syndrome Diseases 0.000 description 238
- 230000002776 aggregation Effects 0.000 description 122
- 238000004220 aggregation Methods 0.000 description 122
- 239000011159 matrix material Substances 0.000 description 45
- 238000010586 diagram Methods 0.000 description 32
- 238000013528 artificial neural network Methods 0.000 description 26
- 238000012545 processing Methods 0.000 description 24
- 230000006870 function Effects 0.000 description 18
- 230000008569 process Effects 0.000 description 12
- 239000000306 component Substances 0.000 description 10
- 101100103009 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) WSS1 gene Proteins 0.000 description 8
- 230000017105 transposition Effects 0.000 description 8
- 238000006116 polymerization reaction Methods 0.000 description 7
- 101100103010 Schizosaccharomyces pombe (strain 972 / ATCC 24843) wss2 gene Proteins 0.000 description 6
- 239000000969 carrier Substances 0.000 description 6
- 230000001360 synchronised effect Effects 0.000 description 5
- 238000013473 artificial intelligence Methods 0.000 description 3
- 239000008358 core component Substances 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000009825 accumulation Methods 0.000 description 2
- 230000004931 aggregating effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 2
- 239000000872 buffer Substances 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 230000001186 cumulative effect Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 238000011144 upstream manufacturing Methods 0.000 description 2
- 230000004913 activation Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000003542 behavioural effect Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000013178 mathematical model Methods 0.000 description 1
- 230000003278 mimic effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- 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/17306—Intercommunication techniques
-
- 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/08—Learning methods
-
- 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
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/39—Circuit design at the physical level
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
- G06N20/20—Ensemble learning
-
- 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/04—Architecture, e.g. interconnection topology
- G06N3/0464—Convolutional networks [CNN, ConvNet]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2115/00—Details relating to the type of the circuit
- G06F2115/04—Micro electro-mechanical systems [MEMS]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Evolutionary Computation (AREA)
- Computing Systems (AREA)
- Artificial Intelligence (AREA)
- Data Mining & Analysis (AREA)
- Biomedical Technology (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- Biophysics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Geometry (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Medical Informatics (AREA)
- Multi Processors (AREA)
Abstract
本申请提供一种模型训练系统和方法,用于在大量处理器之间实现数据的高效传递。其中系统中包括:第一群组,第一群组中包括MEMS和S×C个处理器,其中,S为第一群组中的节点个数,C为一个节点中处理器的个数,S、C均为正整数;MEMS,用于在S个节点中的任两个节点之间构建光传输通道;S×C个处理器,用于联合训练模型。在联合训练模型的一次迭代中,S×C个处理器用于运行各自处理器中的模型训练,以得到各自对应的数据,S×C个处理器中的至少两个处理器通过光传输通道传输目标数据,其中接收目标数据的处理器可用于根据该目标数据调整该处理器中的模型训练的参数。
Description
本申请要求在2021年10月28日提交中华人民共和国知识产权局、申请号为202111265110.7、发明名称为“一种全光AI训练参数平面的构建方法”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。
技术领域
本申请涉及人工智能领域,尤其涉及一种模型训练系统和方法。
背景技术
人工智能(artificial intelligence,AI)模型训练指的是,给机器提供大量的训练数据, 以使得机器找到一个合适的神经网络架构,以及其中每个参数的赋值。从而机器可通过神 经网络较为准确地识别或区分对象。
为了更高效准确地进行AI模型训练,可将大量处理器组成模型训练的机器,其中处 理器比如是图形处理器(graphics processing unit,GPU)、中央处理器(centralprocessing unit, CPU)、神经网络加速器(neural-network processing unit,NPU)。该大量处理器可分别输入 不同的训练数据,或还可以运行AI模型中的不同子模型。该大量处理器可在每次迭代之 后得到各自的中间数据,然后将各自中间数据进行传递,从而得到本轮迭代中所有中间数 据的聚合结果,随后各处理器可将聚合结果作为下一次迭代的输入。如此,经过多轮迭代 运算之后,机器就能习得更多关键的特征细节,从而显得更加智能。
随着神经网络规模和数据集规模急剧增长,处理器之间传递数据变得更加频繁。如此, 大量处理器之间如何实现数据的高效传递,成为目前亟需解决的问题。
发明内容
本申请提供一种模型训练系统和方法,用于在大量处理器之间实现数据的高效传递。
第一方面,本申请提供一种模型训练系统,包括:
第一群组,其中,第一群组由微机电系统(micro-electro-mechanical system,MEMS) 和S×C个处理器组成,S为第一群组中的节点个数,C为一个节点中处理器的个数,S、C 均为正整数;MEMS,用于在S个节点中的任两个节点之间构建光传输通道;S×C个处理器,用于联合训练模型;在联合训练模型的一次迭代中,S×C个处理器中的至少两个处理器通过光传输通道传输目标数据,其中接收目标数据的处理器用于根据目标数据调整该处理器中的模型训练的参数。如此,通过MEMS实现S个节点中任两个节点的通信连接, 即任一个节点可通过该MEMS构建的光传输通道向另外一个节点发送数据,进一步的,S 个节点中一个处理器执行模型训练得到的数据可通过该MEMS构建的光传输通道被传输 至其他节点的处理器中,从而实现模型训练中数据的高效传递。
在一种可能的实现方式中,第一群组中包括第一节点和第二节点,第一节点中包括第 一处理器,第二节点中包括第二处理器;第一处理器,用于执行第一处理器中模型训练, 得到第一处理器的中间数据,根据第一处理器的中间数据得到第一目标数据,其中,第一 目标数据可以是第一处理器的中间数据的全部或部分;第一处理器,还用于将第一目标数 据通过第一MEMS构建的光传输通道发送至第二处理器中;第二处理器,用于根据第一目标数据调整第二处理器中模型训练的参数,其中第一MEMS位于第一节点与第二节点之间。
在一种可能的实现方式中,第一处理器可用于将第一目标数据通过第一MEMS构建的 光传输通道,以及节点内通道,发送至第二处理器中;其中节点内通道中包括第一节点内、 第一处理器与第一MEMS之间的通道,和/或,第二节点内、第二处理器与第一MEMS之 间的通道。如此,在第一处理器中端口未与第一MEMS的端口直接连接时,第一处理器可 以通过第一节点内通道将第一目标数据发送至第一节点中的、与第一MEMS的端口直接连 接的处理器中,该处理器可将第一目标数据通过第一MEMS构建的光传输通道发送至第二 节点中。相应的,在第二处理器中端口未与第一MEMS的端口直接连接时,第二节点中的、 与第一MEMS的端口直接连接的处理器可接收来自第一节点的第一目标数据,然后将该第 一目标数据通过第二节点内通道发送至第二处理器中。
在一种可能的实现方式中,系统还包括:波长选择开关(wavelength selectiveswitch, WSS)和(W-1)个扩展群组,W为大于或等于2的整数,第一群组和(W-1)个扩展群 组组成W个群组;WSS与W个群组中每个群组连接。如此,MEMS在任两个节点之间构 建固定光传输通道的前提下,可通过WSS的特性,即一个输入端口和不同的波长可对应 于不同的输出端口,从而可将模型训练的训练规模扩展至原来的W倍,如此可进一步运行 更大规模的模型训练。
在一种可能的实现方式中,WSS包括W个第一WSS端口和W个第二WSS端口;W 个第一WSS端口分别与W个节点端口连接,其中,W个节点端口分别属于W个群组中, W个节点端口在各自群组中的位置是相对应的;W个节点端口在各自群组中对应于各自的 MEMS端口,W个节点端口对应的MEMS端口分别与W个第二WSS端口连接。如此, WSS和W个群组中的MEMS可将W个群组中任两个群组之间的节点连接起来,以实现 任两个群组中的处理器之间可相互传输数据,有助于扩展训练规模。
在一种可能的实现方式中,第一处理器,还用于将第一目标数据依次通过WSS和第二MEMS分别构建的光传输通道,发送至第二处理器中;其中,第二节点是第一群组中除 第一节点以外的其他节点,或者是(W-1)个扩展群组中任一个扩展群组中节点;WSS、 第二MEMS依次位于第一节点与第二节点之间,第二MEMS与第二节点属于同一个群组。 如此,通过WSS和第二MEMS可实现第一处理器将第一目标数据发送至本群组中的其他 节点中处理器,还可以将第一目标数据发送至其他群组中的处理器,有助于扩展训练规模。
在一种可能的实现方式中,第一处理器,具体用于将第一目标数据调制到载波中,载 波的波长是第二节点所属群组对应的预设波长;WSS,用于根据载波的波长与第二节点所 属群组的映射关系,将承载有第一目标数据的载波,发送至第二MEMS中。如此,第一处理器可基于第二处理器所在群组的预设波长,调整用于承载第一目标数据的载波的波长,以将不同目标数据发送至不同群组中,且第一处理器可快速调整载波的波长,有助于提高第一处理器向其他处理器传输数据的速率。
在一种可能的实现方式中,W个群组中每个群组对应于2个预设波长,即第一处理器 在通过WSS向目标群组发送目标数据时,WSS可以将目标数据传输至目标群组对应的两个WSS端口中,其中一个WSS端口是目标群组中MEMS对应的WSS端口,相应的,第 一处理器可以将第一目标数据依次经过WSS和MEMS对应的光传输通道发送至第二处理 器中;另一个WSS端口可以是目标群组中节点对应的WSS端口,相应的,第一处理器可 将第一目标数据直接经过WSS对应的光传输通道发送至第二处理器中,如此,可有助于 提高模型训练中数据传输的灵活性,以及减少不必要的带宽消耗。在这种情况中,若WSS 中可用波长总数有限,比如WSS中可用波长总数小于WSS的端口总数时,则可设置群组 总数W是WSS中可用波长总数的1/2。
在一种可能的实现方式中,S×C个处理器中任两个处理器中的训练数据和训练模型均 不同,S×C个处理器之间的聚合通信方式为alltoall;或,S×C个处理器中任两个处理器中 的训练数据不同,S×C个处理器之间的聚合通信方式为allreduce。
在一种可能的实现方式中,目标数据包括用于模型迭代的梯度、特征、模型参数中的 一个或多个,通过处理器之间交互多个维度的目标数据,有助于提高模型训练的效率,以 及提高训练出的模型的准确率。
第二方面,本申请提供一种模型训练方法,包括:
第一节点的第一处理器执行第一处理器中模型训练,得到第一目标数据;第一处理器 通过MEMS构建的光传输通道,向第二节点的第二处理器发送第一目标数据,其中,MEMS 位于第一节点与第二节点之间,第一目标数据用于第二处理器调整第二处理器中模型训练 的参数。
在一种可能的实现方式中,第一处理器通过MEMS构建的光传输通道,向第二节点的 第二处理器发送第一目标数据,包括:第一处理器通过MEMS构建的光传输通道,以及节点内通道,向第二处理器发送第一目标数据;其中,节点内通道包括第一节点内、第一处 理器与MEMS之间的通道,和/或,第二节点内、第二处理器与MEMS之间的通道。
在一种可能的实现方式中,第一处理器通过MEMS构建的光传输通道,向第二节点的 第二处理器发送第一目标数据,包括:第一处理器依次通过WSS构建的光传输通道,以及MEMS构建的光传输通道,向第二处理器发送第一目标数据;其中,第二节点和MEMS 属于同一个群组;WSS位于MEMS与第一节点之间。
在一种可能的实现方式中,WSS中包括载波的波长和群组的映射关系,其中一个映射 关系中、载波的波长是对应群组的预设波长;第一处理器依次通过WSS构建的光传输通道,以及MEMS构建的光传输通道,向第二处理器发送第一目标数据,包括:第一处理器 将第一目标数据调制到载波中,载波的波长是第二节点所属群组对应的预设波长;第一处 理器将承载有第一目标数据的载波发送至WSS中,以使得WSS将承载有第一目标数据的 载波发送至MEMS中。
在一种可能的实现方式中,第一处理器执行第一处理器中模型训练,得到第一目标数 据,包括:第一处理器执行第一处理器中模型训练,得到第一处理器的中间数据;第一处 理器基于聚合通信方式和第一处理器的中间数据,确定第一目标数据,第一目标数据是第 一处理器的中间数据的全部或部分;其中,第一处理器和第二处理器中的训练数据和训练 模型均不同,聚合通信方式为alltoall;或,第一处理器和第二处理器中的训练数据不同, 聚合通信方式为allreduce。
在一种可能的实现方式中,第一处理器基于聚合通信方式和第一处理器的中间数据, 确定第一目标数据,包括:第一处理器基于alltoall,以及alltoall对应的处理器总数,将第 一处理器的中间数据进行划分;其中,alltoall对应的处理器中包括第一处理器和第二处理 器;划分之后的数据份数等于处理器总数,且划分之后的数据中包括与第二处理器对应的 第一目标数据。
在一种可能的实现方式中,alltoall对应于S个节点,第一节点是S个节点中的第s1个,第二节点是S个节点中的第s2个,其中,s1、s2取遍[0,S]中的整数,且s1小于s2; 第二处理器是第二节点中包括的C个处理器;第一目标数据是划分之后的S×C个数据中、 第(s2×C)个至第(s2×C+C-1)个数据。
在一种可能的实现方式中,alltoall对应于W个群组,第一节点是W个群组中第w1个群组的第s1个节点,第二节点是W个群组中第w2个群组的第s2个节点;其中,w1取遍 [0,W-1]中的整数,w2=w1+offset,其中offset=((s2%W)-(s1%W))%W。
在一种可能的实现方式中,第一处理器基于聚合通信方式和第一处理器的中间数据, 确定第一目标数据,包括:第一处理器基于allreduce,以及第一节点中处理器总数C,将 第一处理器的中间数据进行划分,以得到C个数据;第一处理器通过第一节点的节点内通 道,获取第一节点中其他(C-1)个处理器的第i个数据;第一处理器将C个数据中的第i个数据,以及第一节点中其他(C-1)个处理器的第i个数据进行加和之后,得到第一目标 数据;其中,第一处理器是第一节点中的第i个处理器,第二处理器是第二节点中的第i 个处理器。如此,第一处理器与第二处理器属于不同节点时,第一处理器可先通过节点内 通信获取到第一节点中各处理器的第i个数据之间的聚合结果,即第一节点内数据聚合的 结果。同样的,第二处理器也可获取到第二节点内数据聚合的结果。随后第一处理器和第 二处理器执行节点间数据聚合,具体的,第一处理器可向第二处理器发送第一节点内的聚 合结果(即第一目标数据),第二处理器可将第一节点内的聚合结果,以及第二节点内的 聚合结果再执行聚合,以得到节点间数据聚合的结果。
在一种可能的实现方式中,allreduce对应于W个群组,一个群组中包括S个节点,一 个节点中包括C个处理器;第一处理器是所属群组中的第i个处理器;第二处理器是所属群组中的第i个处理器;第一处理器基于聚合通信方式和第一处理器的中间数据,确定第一目标数据,包括:第一处理器基于allreduce,以及群组中处理器总数S×C,将第一处理器的中间数据进行划分,以得到S×C个数据;第一处理器通过第一节点的节点内通道,和 /或,第一节点与所属群组中其他(S-1)个节点之间的、MEMS构建的光传输通道,获取 所属群组中其他(S×C-1)个处理器的第i个数据;第一处理器将S×C个数据中的第i个数 据,以及所属群组中其他(S×C-1)个处理器的第i个数据进行加和之后,得到第一目标数 据。如此,第一处理器与第二处理器属于不同群组时,第一处理器可先通过群组内通信获 取到所属群组中各处理器的第i个数据之间的聚合结果,即群组内数据聚合的结果。同样 的,第二处理器也可获取到其所属群组内数据聚合的结果。随后第一处理器和第二处理器 执行群组间数据聚合,具体的,第一处理器可向第二处理器发送第一处理器获取到的群组 内的聚合结果(即第一目标数据),第二处理器可将该群组内数据聚合的结果,以及第二 处理器对应的群组内数据聚合的结果再执行聚合,以得到群组间数据聚合的结果。
在一种可能的实现方式中,还包括:第一处理器获取第二目标数据,第二目标数据是 第二处理器执行第二处理器中模型训练得到的、待传输至第一处理器中的数据;第一处理 器根据第二目标数据,调整第一处理器中模型训练的参数。如此,第一处理器可基于第二 目标数据确定出聚合数据,并基于聚合数据调整第一处理器中模型训练的参数。
在一种可能的实现方式中,第一处理器执行第一处理器中模型训练,得到第一目标数 据之前,还包括:第一处理器根据用于联合训练模型的多个节点的节点总数、WSS的端口 总数以及WSS中可用波长总数,将多个节点划分为W组;其中,当WSS中可用波长总 数小于WSS的端口总数,且W个群组中一个群组对应于2个预设波长时,W等于WSS 中可用波长总数的1/2。
第三方面,本申请还提供了一种计算设备,计算设备包括处理器和存储器,还可以包 括通信接口,处理器执行存储器中的程序指令执行上述第二方面或第二方面任一可能的实 现方式提供的方法。存储器与处理器耦合,其保存有执行数据处理过程中必要的程序指令 和数据。通信接口,用于与其他设备进行通信,如将第一目标数据发送至第二节点中。
第四方面,本申请提供了一种计算机可读存储介质,计算机可读存储介质被计算设备 执行时,计算设备执行前述第二方面或第二方面的任意可能的实现方式中提供的方法。该 存储介质中存储了程序。该存储介质包括但不限于易失性存储器,例如随机访问存储器, 非易失性存储器,例如快闪存储器、硬盘(hard disk drive,HDD)、固态硬盘(solidstate drive,SSD)。
第五方面,本申请提供了一种计算设备程序产品,计算设备程序产品包括计算机指令, 在被计算设备执行时,计算设备执行前述第二方面或第二方面的任意可能的实现方式中提 供的方法。
第六方面,本申请还提供一种芯片,芯片与存储器相连,芯片用于读取并执行存储器 中存储的软件程序,执行上述第二方面或第二方面的各个可能的实现方式中的方法。
附图说明
图1为一种神经网络的结构示意图;
图2为一种神经网络中随机梯度下降方法的示意图;
图3为一种数据并行训练方法的示意图;
图4为一种模型并行训练方法的示意图;
图5为第一种allreduce聚合的方法示意图;
图6为第二种allreduce聚合的方法示意图;
图7为第三种allreduce聚合的方法示意图;
图8为一种alltoall聚合的方法示意图;
图9为一种MEMS的结构示意图;
图10为一种WSS的结构示意图;
图11为再一种WSS的结构示意图;
图12为一种模型训练方法的场景示意图;
图13为一种胖树电交换网络的连接示意图;
图14为本申请提供的一种模型训练系统的架构示意图;
图15为本申请提供的第一种模型训练系统中节点连接的示意图;
图16为本申请提供的第二种模型训练系统中节点连接的示意图;
图17为本申请提供的第三种模型训练系统中节点连接的示意图;
图18为本申请提供的第四种模型训练系统中节点连接的示意图;
图19为本申请提供的一种节点中各NPU包含数据的示意图;
图20为本申请提供的一种alltoall聚合的方法示意图;
图21为本申请提供的第一种allreduce聚合的方法示意图;
图22为本申请提供的第二种allreduce聚合的方法示意图;
图23为本申请提供的再一种模型训练系统的架构示意图;
图24为本申请提供的又一种模型训练系统的架构示意图;
图25为本申请提供一种NPU中数据通过alltoall聚合的方法示意图;
图26为本申请提供一种NPU中数据通过allreduce聚合的方法示意图;
图27为本申请提供再一种NPU中数据通过allreduce聚合的方法示意图;
图28为本申请提供一种模型训练方法的流程示意图;
图29为本申请提供一种模型训练方法中目标数据的流动示意图;
图30为本申请提供一种模型训练装置的结构示意图;
图31为本申请提供再一种模型训练装置的结构示意图。
具体实施方式
为了更好的解释本申请实施例,先对本申请中的相关术语或技术解释:
一、神经网络
神经网络(neural networks,NN)是一种模仿动物神经网络行为特征,进行分布式并 行信息处理的算法数学模型。可通过调整神经网络内部大量节点之间相互连接的关系,从 而达到处理信息的目的,神经网络具有自学习和自适应的能力。
具体的,神经网络通常可包含多个首尾相连的层,比如是卷积层、全连接层(fullyconnected layers,FC)、激活层或池化层等。每一个层可以表达为函数y=fw(x),其中f为函数的功能,其中函数f是可求导数的,w为权重(或称为权重张量),x为输入(或称为输 入张量),y为输出(或称为输出张量)。
图1为一种神经网络的结构示意图,该神经网络中可包括有首尾相连的m层,m为大于或等于2的整数。神经网络的第0层可表达为函数f0,f0的输入是x,输出是y0,权重是w0;神经网络的第1层可表达为函数f1,f1的输入是y0,输出是y1,权重是w1等。
二、模型训练
假设存在数据集合{(x0,l0),...,(xn-1,ln-1)},其中x0,...,xn-1是n个输入,而对应的l0,...,ln-1分别是这n个输入的期望输出,通常也称为标签(label)。每个(xj,lj)称为一个样本数据。
模型训练的目标是,求解w0,...,wm-1,以使得在损失函数L下,yj m-1和lj最为接近。
进一步的,求解过程可使用图2示例性示出的随机梯度下降(stochastjcgradjent descent, SGD)方法。如图2的SGD方法中可包括前向传播方法和后向传播方法:
前向传播方法:将数据集中的任一个输入(可表示为xj)输入至函数f0,从而函数f0输 出随后再将输入至函数f1,从而函数f1输出以此类推,得到函数f0至fm-1分别对应输出,即进而结合xj对应的lj,以及损失函数L算出损失(loss)。
后向传播:使用链式法则,依次算出每一层yj的梯度Δyj,wj的梯度Δwj。具体的,比如通过loss和ym-1确定第m-1层的梯度Δym-1;然后根据Δym-1和wm-1确定第m-1层梯 度Δwm-1;以此类推,得到每一层Δy和Δw,即得到Δy0、Δw0,......,Δym-1、Δwm-1。
三、数据并行
在模型训练中,K个NPU可用于共同训练模型(或者说联合训练模型),其中K为大于或等于2的整数。本申请中,可将K个NPU表示为NPU0、NPU1、......、NPU(K-1),或者表 示为第0个NPU、第1个NPU、......、第K-1个NPU,该说明同样适用于其他示例中。
为了发挥每个NPU内部的并行计算能力,通常会把数据集合分切为多个子集,每个子 集的大小称为批尺寸(batch size),可将一个子集记作bs。
数据集合可参照如下表达式二:
其中,在bs0中可包括bs个样本数据,可表示为(x0,l0),...,(xbs-1,lbs-1);在bs1中同样 可包括bs个样本数据,可表示为(xbs,lbs),...,(x2×bs-1,l2×bs-1)等。
在每次模型训练时,可将一个bs输入至神经网络中,即基于该一个bs执行如图2所示的 运算,以得到该bs对应的神经网络中每层的Δy和Δw。
为了利用多个NPU来提升训练速度,在数据集合进一步增大的情况下,还可进一步在 上述表达式二中增加一个层次:minibatch size,记为mbs。那么可将一个子集进一步划分 为多个mbs。数据集合可参照如下表达式三:
其中,mbs0中的mbs个样本数据可表示为(x0,l0),...,(xmbs-1,lmbs-1);mbs1中的mbs个 样本数据,可表示为(xmbs,lmbs),...,(x2mbs-1,l2mbs-1)等。
相应的,在模型训练的每次训练迭代中,可以将K个bs或K个mbs分别输入至该K个NPU 中,从而完成如图3所示的数据并行训练。其中NPU0至NPU(K-1)中运行的神经网络(即模 型训练过程)相同,而每个NPU中输入的样本数据均不同。
对于K个NPU中的任一个NPU(可表示为NPU k),其神经网络的第m-1层对应的权重可表示为wm-1 k,权重梯度可表示为Δwm-1 k。
相应的,K个NPU分别计算得到各自的Δwm-1之后,K个NPU可将各自的Δwm-1进行数据 聚合,以得到下一轮模型训练中的输入。示例性的,每个NPU可取其他(K-1)个NPU的 Δwm-1,进而该各NPU根据K个Δwm-1求解平均值,具体可参见如下表达式四:
四、模型并行和混合并行
随着模型规模的进一步增大,比如模型层数的进一步增多,单个NPU的处理能力无法 完成整个模型的运算,那么需要将该单个模型切分到K个NPU中,K为大于或等于2的整数。 该计算方式可称为是模型并行。进一步的,在模型并行的同时,还可将数据集合划分为K 个bs或K个mbs,从而将模型并行和数据并行结合起来,该计算方式可称为是混合并行。
如图4为本申请示例性提供的一种混合并行的训练流程图,每个NPU中运行的前馈神经网络(feed-forward networks,FFN)是整个模型的不同部分,而其他层则是同一个模型的多个拷贝。K个NPU得到各自的Δwm-1之后,K个NPU可基于各自的Δwm-1进行数据 聚合,以得到聚合数据,该聚合数据可用于各NPU在下一轮迭代中调整各自模型中参数。
五、聚合通信(collective communication)
在数据并行、模型并行或混合并行的训练过程中,均需要将K个NPU的中间数据进行聚 合,每个NPU的中间数据可包括各自模型训练得到的特征(feature或activation)、梯度和 模型参数中的一项或多项,其中特征比如是经模型学习到的训练数据的特征,模型参数比 如是神经网络中函数f的参数w等,梯度比如是后向传播中产生的wj的差值Δwj等。如下 为方便描述,可将中间数据均简称为数据。
具体的,可通过聚合通信的方式,完成K个NPU之间的数据聚合,以得到聚合数据。其 中,该聚合通信方式(或称为聚合算法)具体可包括allreduce、alltoall中的一项或多项。
1、allreduce
allreduce可用于数据并行情况下的数据聚合,常见的allreduce可包括ringallreduce、 recursive halving and doubling、butterfly和层次化allreduce四种:
(1)ring allreduce
ring allreduce是将K个NPU组成一个逻辑环(当然,物理拓扑不一定是环形),每个NPU 可将自己的数据划分为K个。然后通过图5所示的流程,完成每个NPU获取到其他(K-1) 个NPU的数据。
结合图5解释,其中共计有3个NPU,即K=3,3个NPU分别表示为NPU0、NPU1、NPU2。NPU0可将数据划分为a0、a1、a2;NPU1可将数据划分为b0、b1、b2;NPU2可将数据划分为 c0、c1、c2。
参照图5中(a)示出的第一步,NPU0将a0传递至NPU1,NPU1得到a0+b0;NPU1将b1传递至NPU2,NPU2得到b1+c1;NPU2将c2传递至NPU0,NPU0得到c2+a2;
参照图5中(b)示出的第二步,NPU1将a0+b0传递至NPU2,NPU2得到a0+b0+c0;NPU2 将b1+c1传递至NPU0,NPU0得到b1+c1+a1;NPU0将c2+a2传递至NPU1,NPU1得到a2+b2+c2。
以此类推,如图5中(c)所示,每个NPU均可包括有如下相同的3份数据:NPU0的数据,即a0+a1+a2;NPU1的数据,即b0+b1+b2;以及NPU2的数据,即c0+c1+c2。
(2)recursive halving and doubling
recursive halving and doubling相比于ring allreduce,可减少各NPU之间的传输次数,仍 以K个NPU为例,每个NPU中可包括有自己的数据,比如NPU k中包括有自己的数据k。
recursive halving and doubling的原理如下:
第1步,NPU k1将数据k1发送至NPU k1-1中,相应的,NPU k1-1将本地的数据k1-1,以及来自NPU k1的数据k1的加和(表示为数据k1+k1-1)作为本地的数据,从而得到K个NPU 中相邻两个NPU的数据的加和。其中k1大于或等于1,且小于或等于K。
具体可参见图6中第一步:NPU1将数据1发送至NPU0中,NPU0将本地的数据0与来自NPU1的数据1的加和(表示为数据0+1)作为本地的数据;NPU3将数据3发送至NPU2中, NPU2将本地的数据2与来自NPU3的数据3的加和(表示为数据2+3)作为本地的数据等。
第2步,NPU k2将数据k2发送至NPU k2-2中,相应的,NPU k2-2将本地的数据k2-2,以及来自NPU k2的数据k2的加和(表示为数据k2+k2-2)作为本地的数据。其中NPU k2为第1 步中接收其他NPU的数据的多个NPU中的任一个。从而得到K个NPU中相邻四个NPU的数 据的加和。
具体可参见图6中第二步:NPU2将数据2+3发送至NPU0中,NPU0可将本地数据0+1和来自NPU2的数据2+3的加和(表示为数据0+1+2+3)作为本地的数据;NPU6将数据6+7发 送至NPU4中,NPU4可将本地数据4+5和来自NPU6的数据6+7的加和(表示为数据4+5+6+7) 作为本地的数据等。
依照上述第1步至第2步类似的方式,依次将相邻NPU的数据做加和,最终将NPU0至NPU(K-1)的数据均累加至NPU0上,即NPU0上包括NPU0至NPU(K-1)的数据的累加结果, 该累加结果可理解为K个NPU的聚合结果,或者K个NPU的聚合数据。
随后,各NPU再基于上述相反的数据传输顺序,将该累加结果分发回各NPU,至此完成全部的recursive halving and doubling。
(3)butterfly
相比于上述recursive halving and doubling的单向传输,butterfly中可实现双向的数据交 换。比如上述图6的第1步中,不再是NPU1向NPU0发送数据1,而是NPU1与NPU0交换数 据,也即NPU0和NPU1中均可获取到数据0+1。同样的,不再是NPU3向NPU2发送数据3,而是NPU3与NPU2交换数据,也即NPU3和NPU2中均可获取到数据2+3。
在butterfly中可包括如下步骤:
第1步,NPU k1与NPU k1-1交换本地数据,以得到K个NPU中相邻两个NPU的数据的加和。其中k1大于或等于1,且小于或等于K。
第2步,NPU k2与NPU k2-2交换本地数据,以得到K个NPU中相邻四个NPU的数据的加和,其中k2大于或等于2,且小于或等于K。
依照上述第1步至第2步类似的方式,依次将相邻NPU的数据做加和,最终实现NPU0至NPU(K-1)中每个NPU都有K个数据的累加结果。
(4)层次化allreduce
多个NPU可被组装至同一个节点中,同一个节点中的多个NPU之间的带宽,高于不同 节点之间NPU的带宽,其中节点可理解成计算节点,或者计算服务器等。
在多个NPU进行数据聚合时,该多个NPU可依次执行第一次节点内数据聚合、节点间 数据聚合,以及第二次节点内数据聚合。
参照图7所示的层次化allreduce的聚合通信方式解释:
其中节点数为4,4个节点可分别表示为节点0至节点3,每个节点中包括4个NPU,各节 点中4个NPU可均表示为NPU0至NPU3,并基于所属节点区分。
在第一次节点内数据聚合中:
针对于任一个节点,其中每个NPU将自己的数据切分为4个。第i个NPU获取本节点中、 其他NPU中的第i个数据,并将获取到的其他NPU中的第i个数据,与自己的第i个数据累加。
比如对于节点0,节点0NPU0将数据划分成4个,分别表示为a00、a01、a02、a03,节点0NPU1 将数据划分成4个,分别表示为b00、b01、b02、b03,节点0NPU2将数据划分成4个,分别表示为c00、c01、c02、c03,以及节点0NPU3将数据划分成4个,分别表示为d00、d01、d02、d03。
节点0NPU0分别获取节点0中NPU1、NPU2、NPU3中的第0个数据,从而获得节点0中各NPU的第0个数据的加和,即a00+b00+c00+d00;节点0NPU1分别获取节点0中NPU0、NPU2、 NPU3中的第1个数据,从而获得节点0中各NPU的第1个数据的加和,即a01+b01+c01+d01等。
在节点间数据聚合中:
各节点的第i个NPU通过节点间带宽进行数据聚合,其中聚合通信方式可使用上述的 ring allreduce、recursive halving and doubling或buttefly中的一个来实现。
比如图7中,阴影部分表示各节点的NPU0在上述第一次节点内数据聚合之后得到的数 据,示例性的,节点0NPU0获取节点1NPU0上的a10+b10+c10+d10,节点2NPU0上的 a20+b20+c20+d20,以及节点3NPU0上的a30+b30+c30+d30,并与本地的a00+b00+c00+d00做加和, 以得到4个节点中NPU0上数据的加和,比如表示为A。相应的,节点1NPU0,节点2NPU0, 节点3NPU0上也可得到该数据A,即各节点中NPU0的该数据是相等的。其他类似,从而得 到各节点的NPU1上的数据B,各节点的NPU2上的数据C,以及各节点的NPU3上的数据D。
随后,在第二次节点内数据聚合中:
每个节点中第i个NPU将上述节点间数据聚合得到的第i个数据,分发到本节点内部其他 NPU。比如图7中,节点0NPU0将数据A分发至节点0的其他NPU上,相应的,节点0NPU0也可获取本节点内其他NPU上的数据,并将获取到的数据与本地数据A加和,以得到聚合 数据,即A+B+C+D。同理,其他NPU均可获取到该数据A+B+C+D。
此处,节点内NPU将节点间数据聚合得到的数据分发至本节点中的其他NPU中,也可 以理解,该过程为节点内数据分发,该说明也可适用于其他示例中。
2、alltoall
alltoall可用于混合并行或者模型并行情况下的数据聚合。
示例性的,4个NPU进行alltoall,每个NPU包括有4个数据,该4个NPU分别对应的4个 数据可组成4×4数据矩阵,具体可参见图8中(a)所示。alltoall可理解是将数据矩阵进行了 转置。具体的,对图8中(a)的数据矩阵进行转置之后可如图8中(b)所示,其中,NPU0中的数据可表示为a00、a01、a02、a03,经过alltoall之后,a00仍在NPU0中,a01被传递至NPU1中,a02被传递至NPU2中,a03被传递至NPU3中等。
六、微机电系统(micro-electro-mechanical system,MEMS)
MEMS是光交叉器件(optical cross-connect,OXC)的一种,可用于实现光信号的偏转。 参见图9示出的一种MEMS的结构示意图,其中包括MEMS微镜、输入端口、输出端口。光信号由输入端口输入,经由两次MEMS微镜的反射,从输出端口输出。
MEMS可通过调整MEMS微镜的角度,实现光信号的偏转,从而使得光信号从不同的输出端口输出,以实现光路切换。
七、波长选择开关(wavelength selective switch,WSS)
WSS也是OXC的一种,WSS可将任意波长配置到任意端口。
如图10为一种WSS的连接示意图,其中包括有调制器、光源池、输入端口和输出端口,WSS中配置有输入端口和波长共同对应的输出端口。光源池可发射不同波长的光信号,该 光信号可作为载波以承载数据。调制器可将数据调制至不同波长的载波上,并经输入端口 输入。进一步的,该载波可经输入端口和波长共同对应的输出端口输出。
结合图10中例子,WSS的最右侧输入端口可输入三种波长的载波,三种波长分别用不 同粗细的箭头表示,比如三个箭头中最细的箭头代表第一个波长,粗细居中的箭头代表第 二个波长,最粗的箭头代表第三个波长。进一步的,WSS可设置有最右侧输入端口、与不同波长共同对应的不同输出端口。比如WSS中设置最右侧输入端口与第一个波长共同对应于最右侧输出端口;最右侧输入端口与第二个波长共同对应于中间输出端口;最右侧输入端口与第三个波长共同对应于最左侧输出端口。
那么,调制器将数据调制到第一个波长对应的载波时,该载波经由最右侧输入端口输 入,并由最右侧输出端口输出;调制器将数据调制到第二个波长对应的载波时,该载波经 由最右侧输入端口输入,并由中间输出端口输出;调制器将数据调制到第三个波长对应的 载波时,该载波经由最右侧输入端口输入,并由最左侧输出端口输出。
在数字通讯协议中,通常一个有效的通讯端口会包含8路同步的有效数据,该8路同步 的有效数据会输入至8lane WSS中,随后再从8lane WSS中输出。其中,8lane WSS指的是 包含有8个lane(链路)的WSS,该8lane WSS可以是由8个1lane WSS组成,可参见图11中(a)示例性示出的一种WSS的结构示意图。
结合图11中(a),发送端将8路同步数据经通讯端口输入至8lane WSS中,每路同步数 据被输入至其中的1个1lane WSS中。随后每路同步数据再从每个1lane WSS中输出,从而8 个1lane WSS输出的8路同步数据在输出端进行重新拼接。
进一步的,每个1lane可对应于一个W入W出的WSS,W为正整数,其中每个1lane可用于根据载波的波长和输入端口,确定将数据传输至哪个输出端口。具体可参见图11中(b),比如W=16,即16入16出的WSS可与16个输入端口连接,以及与16个输出端口连接。对于 其中任一个输入端口,该输入端口与载波的波长可共同对应于一个输出端口,比如输入端 口0与波长0共同对应于输出端口0,输入端口1与波长1共同对应于输出端口2,输入端口15 与波长2共同对应于输出端口1等。上述是其中一个lane根据载波的波长和输入端口,确定 将数据传输至哪个输出端口,即实现一个16入16出的1lane WSS。进一步的,结合图11中 (a)中例子,将8个1lane WSS组成1个8lane WSS,即可实现一个16入16出的8lane WSS。
如图12为一种模型应用的场景示意图,其中数据源用于存储训练数据和推理数据。模 型训练节点通过对数据源提供的训练数据进行分析或训练,得到模型,且将模型部署在模 型推理节点中。其中,模型表征了模型的输入和输出之间的映射关系。通过模型训练节点 学习得到模型,相当于由模型训练节点利用训练数据学习得到模型的输入和输出之间的映 射关系。模型推理节点使用模型,对数据源提供的推理数据进行推理,得到推理结果。该 方法还可以描述为:模型推理节点将推理数据输入到模型,通过模型得到输出,该输出即 为推理结果。该推理结果可以指示:由执行对象使用(执行)的配置参数、和/或由执行对 象执行的操作。推理结果可以由执行实体统一规划,并发送给一个或多个执行对象执行。 进一步的,执行对象可将模型对应的表现反馈给数据源,数据源可进一步向模型训练节点 中输入训练数据,以对模型进一步更新。
在上述模型训练中,模型训练节点中可包括多个NPU,每个NPU中可运行有不同的数 据(即数据并行),或者运行有不同的模型(即模型并行或混合并行),该多个NPU可共 同训练模型。进一步的,在模型训练的每一轮迭代中,NPU需要将执行本地模型得到的数 据,与其他NPU对应的数据进行数据聚合,以用于下一次迭代中的模型参数更新。
可通过胖树(fat-tree)电交换网络,实现多个NPU之间的数据聚合。具体的,胖树电 交换网络可参见图13所示,其中树形结构的最底层是多个用于模型训练的NPU,该多个NPU由其上方的交换机连接。示例性的,一个交换机可以有四个端口,其中两个端口向下 连接两个NPU,另两个端口向上连接两个交换机。从而该树形结构中的多个交换机可将其 中一个NPU中数据传输至另外一个NPU中。
但是随着模型训练规模的逐渐增大,以及NPU算力的持续增长,交换机需要转发的数 据量急剧增大,导致交换机在转发数据时可能存在线路拥塞的问题,如此,模型训练中各 NPU之间可能无法高效的传输数据。
为此,本申请提供一种模型训练系统及方法,用于实现更大规模的模型训练,且可在 大量处理器之间实现数据的高效传递。其中,处理器可以是NPU、GPU、CPU或者其他具 有处理功能的器件。如下,以处理器是NPU为例说明,其他类似。
先对本申请中的模型训练系统(如下简称为系统)解释:
系统可包括有S个节点,一个节点可包括C个NPU,一个NPU又可进一步包括P个端口。 相应的,系统可包括S×C个NPU,每个节点可包括C×P个端口,该端口可以是输入端口,也可以是输出端口。其中S、C、P均为正整数。
如图14为本申请示例性提供的可能的系统结构示意图:
一个示例中,系统可包括有4个节点,每个节点中包括2个NPU(如下可简称为4节点2NPU),每个NPU中包括2个端口。
再一个示例中,系统可包括有4个节点,每个节点中包括4个NPU(如下可简称为4节点 4NPU),每个NPU中包括1个端口。
S个节点可分别对应于各自的节点号,每个节点中的C×P个端口可分别对应于各自的端 口号。如下可将S个节点依次称为是节点0、节点1、节点2、……、节点S-1,每个节点中的 C×P个端口依次称为是端口0、端口1、端口2、……、端口C×P-1。
可以理解,S个节点包含的所有端口可组成一个端口矩阵,比如图14的系统可对应于4×4 的端口矩阵,其中该端口矩阵的横坐标是节点号,纵坐标是端口号。进一步的,每个端口 可以通过节点号和端口号来标识,比如端口(x,y)可表示节点x中的端口y,其中0≤x≤S-1, 0≤y≤C×P-1。结合上述图14,端口(0,1)可表示节点0中的端口1。
进一步的,该系统中还可包括MEMS,该MEMS可用于在S个节点中的任两个节点之间构建光传输通道,也可以理解,MEMS实现任两个节点之间的连接,该两个节点中的NPU 可通过光传输通道进行数据聚合。
如下以图14中的节点0和节点1举例说明:
节点0中包括端口(0,0),节点1中包括端口(1,0),端口(0,0)与端口(1,0)可通过MEMS连接。 具体的,MEMS中包括相互对应的端口M1和端口M2,其中从端口M1输入的光信号可经端 口M2输出,或者,从端口M2输入的光信号可经端口M1输出。端口(0,0)与端口M1相连接, 端口(1,0)与端口M2相连接。如此,节点0可通过该MEMS对应的光传输通道(即端口M1与端口M2之间的光传输通道)与节点1进行通信。
进一步的,本申请提供如下两种MEMS构建光传输通道的方式:
方式一,端口(x1,y)与端口(x2,y)通过MEMS进行连接。其中,x1和x2对应于不同节点, 且x1和x2均取遍[0,S-1]中的所有整数,y可取遍[0,C×P-1]中的所有整数。
方式二,端口(x,y)与端口(y,x)通过MEMS进行连接。
结合图14所示的4×4端口矩阵,如下解释如何通过上述方式一或方式二,实现任两个节 点通过MEMS连接。
方式一的连接方式可参见图15所示:
端口(0,0)与端口(1,0),端口(2,0)与端口(3,0),端口(0,1)与端口(3,1),端口(1,1)与端口(2,1), 端口(0,2)与端口(2,2),端口(1,2)与端口(3,2),端口(0,3)与端口(1,3),端口(2,3)与端口(3,3), 上述这些端口对均可通过MEMS实现连接。
可选的,上述多个端口对中,相同端口号对应的端口对可通过同一个MEMS进行连接, 比如端口号0对应于两个端口对,分别是端口(0,0)与端口(1,0),和端口(2,0)与端口(3,0),该 两个端口对均可通过同一个MEMS连接,换言之,该MEMS可以实现端口(0,0)与端口(1,0) 之间的联通,还可实现端口(2,0)与端口(3,0)之间的联通。如此可充分利用MEMS中端口, 从而有助于节省系统中MEMS的数量。
方式二的连接方式可参见图16所示:
端口(0,1)与端口(1,0),端口(0,2)与端口(2,0),端口(0,3)、端口(3,0),端口(1,2)、端口(2,1), 端口(1,3)与端口(3,1),端口(2,3)与端口(3,2),这些端口对可分别通过MEMS进行连接。
可选的,多个端口对可通过同一个MEMS进行连接,比如端口(0,3)、端口(3,0),和端 口(1,2)、端口(2,1)可通过同一个MEMS进行连接,即该MEMS可以实现端口(0,3)与端口(3,0) 之间的联通,还可实现端口(1,2)与端口(2,1)之间的联通。如此可充分利用MEMS中端口, 从而有助于节省系统中MEMS的数量。
当然,还可以有其他MEMS构建光传输通道的连接方式,本申请不再一一举例。只要通过MEMS在多个节点中的任两个节点之间构建光传输通道,即在本申请的保护范围之内。
如下解释说明,在更大节点规模情况下如何通过上述方式一或方式二,实现任两个节 点通过MEMS连接。以8节点8NPU为例,其中,每个节点中包括8个NPU,每个NPU中包括 1个端口,即每个节点中包括8个端口,该8节点8NPU可对应于8×8端口矩阵。
方式一的连接方式可参见图17所示:
本申请中,8节点8NPU的连接方式,可基于图15中4×4端口矩阵的连接方式得到。也可 以理解,4×4端口矩阵对应的连接方式可作为基本连接,系统可基于该基本连接完成扩展。
示例性的,4×4端口矩阵的连接方式可作为8节点8NPU的连接方式的第一个端口矩阵, 然后将该第一个端口矩阵进行水平方向的平移,得到第二个端口矩阵,如此可创建8个节 点中端口0至端口3之间的连接。
进一步的,参照如下步骤创建8个节点中端口4至端口7之间的连接,从而得到完整的8 节点8NPU的连接方式:
第一步:创建端口(x,4)和端口(x+4,4)之间的连接,即通过MEMS连接端口(x,4)和端口 (x+4,4)组成的端口对,其中0≤x≤3。比如x=1,MEMS连接端口(1,4)和端口(5,4)组成的端口 对,或者,MEMS连接端口(2,4)和(6,4)组成的端口对。
第二步:根据端口(y-4)在各节点之间的连接关系,创建各节点中端口y在各节点之间的 连接关系,并通过MEMS进行连接,其中y取遍5至7中正整数。从而在端口(y-4)对应的8个 节点中,均可实现任两个节点之间的连接。
比如,可基于各节点的端口1之间的连接关系,来创建各节点的端口5之间的连接关系, 比如对于端口1来说,其中节点0与节点3连接,节点4与节点7连接,那么在连接端口5时, 可设置节点0与节点7连接,节点3与节点4连接;进一步的,节点1与节点2连接,节点5与节点6连接,那么在连接端口5时,可设置节点1与节点5连接,节点2与节点6连接。
此外,本申请方法还适用于其他节点数以及NPU数的互联。其中,各节点的下半边端 口之间的连接,可以是跨越左半边和右半边的。
如下以S×M端口矩阵的连接方式作为基础连接,解释说明如何基于该基础连接,将端 口矩阵扩展为2S×2M,其中S为节点数,M为节点中端口数,其中M=C×P。
首先,将S×M端口矩阵作为第一个端口矩阵,然后将该第一个端口矩阵进行水平方向 的平移,得到第二个端口矩阵,如此可创建2S个节点中端口0至端口M-1之间的连接。
其次,创建端口(x,M)和端口(x+S,M)之间的连接,即通过MEMS连接端口(x,M)和端口 (x+S,M)组成的端口对,其中0≤x≤M-1。
再次,根据端口(y-M)在各节点之间的连接关系,创建各节点中端口y在各节点中之间 的连接关系,并通过MEMS进行连接,其中y取遍(M+1)至(2M-1)中正整数。
具体的,在节点x1的端口(y-M)与节点x2的端口(y-M)相连接,以及在节点(x1+N)的端口 (y-M)与节点(x2+N)的端口(y-M)相连接时,可以将节点x1的端口y与节点(x2+N)的端口y相连 接,以及将节点(x1+N)的端口y与节点x2的端口y相连接。从而在端口(y-M)对应的2S个节点 中,均可实现任两个节点之间的连接。
方式二的连接方式可参见图18所示:
节点x1中包括端口(x1,y1),节点x2中包括端口(x2,y2),其中x1=y2且x2=y1,MEMS用于连 接端口(x1,y1)和端口(x2,y2)。具体连接方式与图18类似。
此外,为节省MEMS的个数,还可以将多个端口对连接至同一个MEMS中,比如图16中例子,可将端口(0,1)与端口(1,0),以及端口(1,3)与端口(3,1),共同连接至一个MEMS中。 又或者,可将端口(0,1)与端口(1,0),以及端口(1,3)与端口(3,1),端口(2,3)与端口(3,2),共 同连接至一个MEMS中。甚至在MEMS端口足够多的情况下,可将多有端口对均连接至同 一个MEMS中,本申请不做限定。
如上说明了如何通过MEMS实现多个节点中任两个节点之间建立光传输通道,随后, 任两个节点中的NPU可通过MEMS对应的光传输通道实现多个NPU之间的数据聚合。
在一个可能的方式中,系统中每个NPU均可运行自己的模型训练,得到各自对应的数 据。随后,每个NPU可基于当前的聚合通信方式,以及自己模型训练得到的数据,与其他NPU进行数据聚合。如下基于不同的聚合通信方式,分情况说明:
一、alltoall
为实现多个NPU通过alltoall进行数据聚合,NPU可将自己经模型训练得到的数据划分 多份,该划分得到的数据份数可与NPU数相同。其中,系统中包括S个节点,每个节点中包括C个NPU,每个NPU可将自己的数据划分为S×C份。
结合图14中的系统架构,系统中包括节点0至节点3,比如,节点0中包括NPU00和NPU01, 节点1中包括NPU10和NPU11,节点2中包括NPU20和NPU21,节点3中包括NPU30和NPU31。 进一步的,每个NPU可将自己的数据划分为8份,比如NPU00将数据划分为000至007,NPU01将数据划分为010至017,各NPU中数据可具体参见图19中例子。
可以理解,各NPU对应于自己的8份数据,8个NPU中的数据可组成8×8的数据矩阵,在 进行alltoall时,可以是对该8×8的数据矩阵进行转置操作。
在S个节点中,第s1个节点中第i个NPU的第(s2×C)个数据至第(s2×C+C-1)个数据, 与第s2个节点中各NPU的第(s1×C+i)个数据进行交换;其中,s1取遍[0,S-1]中的整数,s2取遍[0,S-1]中的整数,且s1小于s2,i取遍[0,C-1]中的整数。
结合图19中例子,比如i=1,C=2,s1=2,s2=3,节点2中第1个NPU(即NPU21)中的第 6个数据(即216)至第7个数据(即217),与节点3的各个NPU(即NPU30和NPU31)的 第s1×C+i个(即305和315)数据进行交换。
也可以理解,系统对应于数据矩阵,该数据矩阵中对角线上的C2个数据仅限于节点内 转置或者不发生转置,而非对角线上的C2个数据可通过节点间转置被传输至其他节点中。 仍结合上述例子,C2=4,节点0的对角线上的4个数据分别是000,001,010,011,其中,000 和011不发生转置,001与010发生转置之后仍在本节点内(即001与010二者发生节点内转 置)。节点0的非对角线上的4个数据,比如分别是002,003,012,013,其中,002经节点间转 置之后被传输至节点1的100处,003经节点间转置之后被传输至节点1的110处,012经节点 间转置之后被传输至节点1的101处,013经节点间转置之后被传输至节点1的111处。
一个具体实现中,节点中包括C2×P×C个数据,节点按照每份中包括C2个数据进行划分, 并确定每份数据如何进行转置。结合图19中例子,每个节点可将自己节点中的16个数据划 分为4份,每份中包括有4个数据,并确定每份数据如何进行转置。
以节点0中的一份数据为例说明,该一份数据包括002,003,012,013。该份数据位于数据 矩阵的非对角线上,节点0执行节点间转置,具体可参见图20所示:
第一步中:节点0可将该份数据中左上角数据即002,与节点1中的100进行交换,从而 实现002由节点0交换至节点1中,同理的,100由节点1交换至节点0中。
第二步中:节点0可将该份数据中左下角数据即003,与节点1中的110进行交换,从而 实现003由节点0交换至节点1中,同理的,110由节点1交换至节点0中。
第三步中:节点0可将该份数据中右上角数据即012,与节点1中的101进行交换,从而 实现012由节点0交换至节点1中,同理的,101由节点1交换至节点0中。
第四步中:节点0可将该份数据中右下角数据即013,与节点1中的111进行交换,从而 实现013由节点0交换至节点1中,同理的,111由节点1被交换至节点0中。
以节点0中的另一份数据为例说明,该一份数据中比如包括000,001,010,011。该份数据 位于数据矩阵的对角线上,执行节点内转置,具体可参见图20所示的第五步:
将001与010在节点内转置;而000与011不转置。
再一个具体实现中,每个NPU可将各自的数据分别划分成C2×P(即S×C)份,其中每 份包括C个数据,各NPU可确定将每份数据与哪个NPU中数据进行交换。比如图19中,NPU00将数据划分为000至007,NPU00可确定000位置保持不变,将001与同节点内NPU01 进行数据交换,将002与节点1中的NPU10进行数据交换等。
二、allreduce
NPU可按照图7所示的层次化allreduce实现数据聚合。具体的,可依次执行第一次节点 内数据聚合,节点间数据聚合,以及第二次节点内数据聚合。
其中第一次节点内数据聚合可参见图7所示,在节点中,一个NPU将数据划分为多份, 其中得到的份数与节点中包含的NPU数相同。随后节点中的第i个NPU可获取本节点中其他 NPU的第i个数据,以得到第一次节点内数据聚合的结果。
在执行完第一次节点内数据聚合之后,需要执行节点间数据聚合。在本申请实施例中, 节点间数据聚合需通过节点间通道,或者通过节点间通道和节点内通道,实现数据聚合。
在一种可能的实现方式中,NPU对应的端口数P大于或等于2。如图21的第一步所示, NPU将自己的数据划分为P份,该P份数据分别对应于该NPU包括的P个端口,即每个NPU可在自己包括的每个端口上完成一份数据的聚合。
如此,多个NPU之间通过节点间通道,或者通过节点间通道和节点内通道进行数据传 输,以实现在端口矩阵(或者说数据矩阵)中,各节点中第i个端口对应的数据,可被累加至第i个节点中该第i个端口对应的NPU中。
随后,包括有该累加数据的NPU可再次基于节点间通道和/或节点内通道,将该累加数 据传递至本节点的其他NPU中,或者传递到其他节点的NPU中。
在4节点2NPU情况下,一个NPU中包括2个端口,4×4端口矩阵的连接关系如图15所示。 其中,对于节点0:NPU00的数据A0、A1可分别对应于端口0和端口1;NPU01的数据A2、 A3可分别对应于端口2和端口3;对于节点1:NPU10的数据B0、B1可分别对应于端口0和 端口1;NPU11的数据B2、B3可分别对应于端口2和端口3;对于节点2:NPU20的数据C0、 C1可分别对应于端口0和端口1;NPU21的数据C2、C3可分别对应于端口2和端口3;对于 节点3:NPU30的数据D0、D1可分别对应于端口0和端口1;NPU31的数据D2、D3可分别对 应于端口2和端口3。各节点中数据组成的数据矩阵可参见图21中的第一步。
为方便描述,如下以节点之间传输数据为例说明allreduce。其中,节点在传输数据时均 可进一步对应于节点中NPU传输数据,比如节点0在传输数据A1时,具体是NPU00传输数 据A1;再比如节点1在传输数据B2时,具体是NPU11传输数据B2等。
第一步:基于节点之间的已有光传输通道,进行数据传输。
图21中的箭头方向代表了数据传递和累加操作。
通过节点中端口0对应的光传输通道实现:节点1将数据B0传输至节点0,节点0将数据 B0与本地数据A0相加得到数据A0+B0。节点3将数据D0传输至节点2,节点2将数据D0与本 地数据C0相加得到数据C0+D0。
通过节点中端口1对应的光传输通道实现:节点3将数据D1传输至节点0,节点0将数据 D1与本地数据A1相加得到数据A1+D1。节点2将数据C1传输至节点1,节点1将数据C1与本 地数据B1相加得到数据C1+B1。
同理的,可通过节点中端口2对应的光传输通道实现:节点2中包含数据A2+C2,节点3 中的包含数据B2+D2;通过各节点中端口3对应的光传输通道实现:节点0中包含数据A3+B3, 节点3中的包含数据C3+D3。
第二步:结合节点的内部传输和已有光传输通道,进行数据传输。
图21中的纵向箭头代表单个节点内的数据传输。横向箭头仍代表光传输通道上的数据 传输。此时通过纵向的绕路,来完成光传输通道未直接连接的两个NPU之间的数据传输。
通过节点中端口2对应的光传输通道实现:节点2将数据C0+D0传输至节点0,节点0将 数据C0+D0与本地数据A0+B0相加,得到数据A0+B0+C0+D0。
值得注意的是,该数据传输实际上是节点2中NPU20将数据C0+D0传输至节点0中NPU00,其中,NPU20对应于节点2的端口0和端口1,NPU00对应于节点0的端口0和端口1。 结合图15中连接关系,NPU20与NPU00之间并不未通过MEMS直接连接。为实现NPU20将 数据C0+D0传输至NPU00,NPU20可先通过节点内通道,将数据C0+D0传递给同节点的 NPU21,NPU21对应于端口2和端口3,NPU21可通过节点2的端口2与节点0的端口2之间的 MEMS,将数据C0+D0传输至节点0中。同样的,在节点0中,NPU01通过端口2接收该数据 C0+D0,并将数据C0+D0传递给NPU00。节点内传输的说明也可适用于本申请中其他步骤。
通过节点中端口3对应的光传输通道实现:节点0将数据A1+D1传输至节点1,节点1将 数据A1+D1与本地数据C1+B1相加,得到数据A1+B1+C1+D1。
同理的,通过节点中端口3对应的光传输通道实现:节点2中包含数据A2+B2+C2+D2, 通过节点中端口1对应的光传输通道实现:节点3中包含数据A3+B3+C3+D3。
通过上述方式,可实现各节点的端口0对应的数据均被累加到节点0中,各节点的端口1 对应的数据均被累加到节点1中,各节点的端口2对应的数据均被累加到节点2中,各节点 的端口3对应的数据均被累加到节点3中。
具体的,NPU00中包括数据A0+B0+C0+D0,NPU10中包括数据A1+B1+C1+D1,NPU21 中包括数据A2+B2+C2+D2,NPU31中包括数据A3+B3+C3+D3,上述各NPU可基于之前的 传输路线,将各自的数据传递给本节点中其他NPU,以及其它节点中NPU。
在另一种可能的实现方式中,NPU中包括一个端口,NPU可直接进行上述节点间数据 聚合。举例来说,在4节点4NPU情况下,4×4端口矩阵的连接关系如图15所示。其中,对于节点0,NPU00至NPU03可分别对应于数据A0至A3,以及分别对应于节点0的端口0至端 口3;对于节点1,NPU10至NPU13可分别对应于数据B0至B3,以及分别对应于节点1的端 口0至端口3,等等。仍可参见图21中的数据流动,区别在于数据在节点间或者节点内流动 时,数据对应的NPU可能不同。
进一步的,层次化allreduce还可适用于更大规模的数据聚合,以8节点8NPU对应于8×8 端口矩阵为例,其中8×8端口矩阵的连接关系如图17所示。其中,对于节点0,NPU00至 NPU07可分别对应于数据A0至A7,以及分别对应于节点0的端口0至端口7;对于节点1,NPU10至NPU17可分别对应于数据B0至B7,以及分别对应于节点1的端口0至端口7,等等。
各节点之间的数据流动可参见图22所示。
第一步:节点0至节点7共同确定第一数据矩阵。
节点4通过节点4与节点0之间的光传输通道、节点4的内部通道,以及节点0的内部通道, 将节点4中数据E0传输至节点0中,从而节点0获得数据A0+E0。在该步骤中,节点4的内部 通道可以是NPU44至NPU04,其中NPU44的端口4与NPU04的端口4之间存在光传输通道,即NPU40将数据E0传输至NPU44中,NPU44再经过该光传输通道将数据E0传输至NPU04中。 进一步的,节点0的内部通道可以是NPU04至NPU00,即NPU04可通过光传输通道接收来 自NPU44的数据E0,然后将该数据E0经过节点0的内部通道传输至NPU00中。
节点5通过节点5与节点1之间的光传输通道、节点5的内部通道,以及节点1的内部通道, 将节点5中数据F0,传输至节点1中,从而节点1获得数据B0+F0。其中节点5的内部通道, 以及节点1的内部通道,具体可参见上述节点4的内部通道,以及节点0的内部通道的说明。
以此类推,可得到第一数据矩阵,其中,NPU00中包括A0+E0,NPU01中包括A1+H1;NPU02中包括A2+G2,NPU03中包括A3+F3;NPU10中包括B0+F0,NPU11中包括B1+G1, NPU12中包括B2+H2,NPU13中包括B3+E3,其它类似。
第二步:节点0至节点7共同确定第二数据矩阵。
节点0通过节点0与节点4之间的光传输通道,将节点0的数据A4发送至节点4中,从而节 点4可获取到A4+E4;
节点1通过节点1与节点5之间的光传输通道,将节点1的数据B4发送至节点5中,从而节 点5可获取到B4+F4;
以此类推,可得到第二数据矩阵,其中,NPU44中包括A4+E4,NPU45中包括D5+E5;NPU46中包括C6+E6,NPU47中包括B7+E7,其它类似。
第三步,再基于如图21中类似步骤,完成第一数据矩阵中各对角线上的加和,即实现 第一数据矩阵中各节点的第i个端口对应的数据,可被累加至第i个节点的第i个端口对应的 NPU中,比如实现各节点的端口0中数据被累加至节点0的端口0对应的NPU中,即NPU00中包括数据A0+B0+C0+D0+E0+F0+G0+H0;再比如实现各节点的端口1中数据被累加至节 点1的端口1对应的NPU中,即NPU11中包括数据A1+B1+C1+D1+E1+F1+G1+H1。再将第一 数据矩阵的对角线上各NPU中数据,按照原来路线,逆向传递给其它节点的NPU中。
以及再基于如图21中类似步骤,完成第二数据矩阵中各对角线上的加和,即实现第二 数据矩阵中各节点的第i个端口对应的数据,可被累加至第i个节点的第i个端口对应的NPU 中,比如实现各节点的端口4中数据被累加至节点4的端口4对应的NPU中,即NPU44中包 括数据A4+B4+C4+D4+E4+F4+G4+H4;再比如实现各节点的端口5中数据被累加至节点5的端口5对应的NPU中,即NPU55中包括数据A5+B5+C5+D5+E5+F5+G5+H5。再将第二数 据矩阵的对角线上各NPU中数据,按照原来路线,逆向传递给其它节点的NPU中。
需要补充的是,上述均以图15或者图17中的端口连接关系为例说明NPU之间的数据聚 合方式,本申请实施例同样适用于图16或者图18示出的连接方式中,或者还适用于其他的 连接方式中。只要是在节点间数据聚合时,两个节点(或者说两个节点中NPU)在进行数 据传输时,通过两个节点之间的MEMS构建的光传输通道进行传输,即在本申请的保护范围内。进一步的,两个节点(或者说两个节点中NPU)在进行数据传输时,还可涉及到节 点内部通道的数据传输,具体也可参见上述实施例中描述。
上述技术方案中,MEMS构建任两个节点之间的光传输通道,从而使得任两个节点可 基于二者之间的光传输通道进行数据传输。
但值得注意的是,MEMS微镜的角度调整需要较长时间,比如需要几百ms才能实现由 原来的输出端口输出切换为由其它输出端口输出,所以通常是在模型训练之前配置节点与 MEMS的连接关系,而在模型训练中则使用该预先配置好的连接关系进行数据聚合,也即 在模型训练中MEMS对应的光传输通路是固定的。
示例性的,节点中包括8个NPU,每个NPU中包括4个端口,那么一个节点中有32个端口,该32个端口对应于32个节点,则组成的系统中可包括有32个节点×8个NPU,即256个NPU,也即在该情况下,可通过MEMS实现256个NPU之间的互联。
为了进一步扩大模型训练中NPU之间的互联规模,本申请进一步引入WSS,WSS可实现节点规模(或NPU规模)扩展至原来的W倍。具体的,可将原来的S个节点和MEMS组成 一个群组(称为是第一群组),那么在引入WSS之后,系统可在该第一群组的基础上新增 (W-1)个扩展群组,每个扩展群组中可包括相同数量的节点,以及相同数量的MEMS。
或者也可以理解,一个系统中可包括有W×S个节点,每个节点有自己的节点号,可以 基于节点号对W取模,从而将W×S个节点分别划分至W个群组中。
为区分节点(或NPU)中端口、WSS中端口、MEMS中端口,如下将节点(或NPU) 中端口称为节点端口,WSS中端口称为WSS端口,MEMS中端口称为MEMS端口。
WSS可用于实现该W个群组中任两个群组之间的连接。在一个可能的实现方式中,系 统中包括的WSS数与每个群组中包括的节点端口总数相同。
在一个可能的实现方式中,在W个群组的每个群组中、位于相对应位置上的节点端口 连接至同一个WSS中,其中节点端口位置可通过节点端口在群组中的第几个节点,以及位 于节点中的第几个节点端口来确定。
示例性的,该W个群组中位于相对应位置上的节点端口,可连接至该同一个WSS的同 一端的W个WSS端口中,而WSS另一端的W个WSS端口与W个群组中每个群组中的一个 MEMS相连接。如此,WSS可将W个群组中任两个群组进行连接。
示例性的,对于一个WSS,其中包括W个第一WSS端口和W个第二WSS端口,该W个 第一WSS端口分别与W个节点端口连接,其中,W个节点端口分别属于W个群组中,且该 W个节点端口在各自群组中的位置是相对应的;W个节点端口在各自群组中对应于各自的 MEMS端口,W个节点端口对应的MEMS端口分别与W个第二WSS端口连接。
如下以W=2为例,解释说明WSS连接2个群组的实现方式:
WSS中可包括2个第一WSS端口和2个第二WSS端口,该WSS可实现节点规模扩展至原来的2倍。比如原来的节点规模是4节点,那么在引入WSS之后节点规模可扩展到8节点。 示例性的,8个节点可分别表示为节点0、节点1、节点2、……、节点7,可基于各节点的 节点号对W=2取模,从而将8个节点划分至两个群组中。两个群组可分别表示为群组0和群 组1,群组0包括节点0、节点2、节点4、节点6,群组1包括节点1、节点3、节点5、节点7。
进一步的,结合图23示出的一种连接关系解释WSS如何将群组0和群组1连接在一起, 其中,每个群组包括有16个节点端口,系统中包括的WSS数与群组中节点数相同,即系统 中包括16个WSS。每个群组中位于相对应位置上的节点端口可连接至同一个WSS中。示例性的,节点端口(6,0)与节点端口(7,0)位于两个群组中的相对应位置,即位于各自群 组中的第3个节点中的第0个端口,二者可连接至同一个WSS中;示例性的,节点端口(6,1) 与节点端口(7,1)位于两个群组中的相对应位置,即位于各自群组中的第3个节点中的第1 个端口,二者可连接至同一个WSS中。
以节点端口(6,0)与节点端口(7,0)之间的WSS为例,解释说明WSS分别与群组0、群组1之间的连接关系,可参见图24所示。其中,可将该WSS表示为WSS1,该WSS1 的下方有两个WSS端口,可分别表示为WSS端口d0和WSS端口d1;该WSS1的上方同 样有两个WSS端口,可分别表示为WSS端口u0和WSS端口u1。进一步的,WSS端口 d0和WSS端口d1分别与节点端口(6,0)、节点端口(7,0)连接;WSS端口u0和WSS 端口u1分别与两个MEMS端口(可分别表示为MEMS端口0和MEMS端口1)连接,其 中该两个MEMS端口分别是群组0中的MEMS0,以及群组1中的MEMS1。
进一步的,WSS可实现任两个群组之间的数据传输(或群组间数据传输,或群组间数 据聚合),或者还可实现任一个群组中不同节点之间的数据传输(或群组内数据传输,或群组内数据聚合,或节点间数据传输,或节点间数据聚合)。
如下先对其中的一个WSS解释:
WSS中可包括有W个WSS输入端口和W个WSS输出端口,对于其中的一个WSS输入端口,该WSS输入端口中可输入W个不同波长的载波,基于WSS输入端口以及载波的波长共 同对应的输出端口,该W个不同波长的载波可经W个不同的WSS输出端口输出。
具体的,在WSS中可预先设置有多个映射关系,其中每个映射关系可包括WSS输入端 口、波长,以及WSS输入端口和波长共同对应的WSS输出端口。也可以理解,一个WSS输 入端口可分别与W个波长组合,得到的W个组合可分别与W个WSS输出端口对应。
在一个可能的实现方式中,每个WSS输入端口可对应于一个群组(可称为是源群组), 每个WSS输出端口也可对应于一个群组(可称为是目标群组)。进一步的,每个群组可对 应于自己的预设波长,WSS的一个映射关系中的波长具体可以是目标群组对应的预设波长。 也即,WSS的一个映射关系具体可以是,源群组对应的WSS输入端口、目标群组对应波长、 以及目标群组对应的WSS输出端口三者之间的映射关系。
结合图23和图24中例子,比如群组0对应于预设波长0,群组1对应于预设波长1,其中, WSS端口d0是群组0对应的WSS输入端口,WSS端口d1是群组1对应的WSS输入端口,WSS 端口u0是群组0对应的WSS输出端口,WSS端口u1是群组1对应的WSS输出端口。
WSS1中的映射关系可参见表1中:
表1
WSS输入端口 | 波长 | WSS输出端口 |
WSS端口d0 | 预设波长0 | WSS端口u0 |
WSS端口d0 | 预设波长1 | WSS端口u1 |
WSS端口d1 | 预设波长0 | WSS端口u0 |
WSS端口d1 | 预设波长1 | WSS端口u1 |
值得注意的是,WSS端口对应于群组,具体是对应于群组中某个节点的某个NPU,比如上述WSS端口d0对应于群组0中节点6的一个NPU(可表示为NPU60),WSS端口d1对应 于群组1中节点7的一个NPU(可表示为NPU70)。
相应的,在群组内数据传输时,具体可以是源群组中NPU将数据调制到源群组对应的 预设波长的载波上;在群组间数据传输时,具体可以是源群组中NPU将数据调制到目标群 组对应的预设波长的载波上。结合表1中例子,当NPU60需要将数据传输至本组内其他节点的NPU中时,可以将数据调制到预设波长0对应的载波上,当NPU60需要将数据传输至 群组1内的NPU中时,可以将数据调制到预设波长1对应的载波上。
如上即可通过WSS实现群组内的数据传输和/或群组间的数据传输。
在一种可能的实现方式中,WSS将该承载有数据的载波经WSS输出端口输出之后,该 载波可被传递到目标群组对应的MEMS中。进一步的,在该目标群组中,MEMS可将该承 载有数据的载波基于预设光通道传输至目标节点中。结合图23和图24中例子,NPU60将数 据调制到预设波长1对应的载波上,该载波由WSS1的WSS端口d0输入并由WSS端口u1输出, 随后经MEMS端口1输入至MEMS1中。其中MEMS1属于群组1,且该MEMS1可用于构建该 WSS1与群组1中目标节点之间的光传输通道,比如MEMS1用于连接WSS1与节点3,那么 该承载有数据的载波可经MEMS1对应的光传输通道被传输至节点3中。
在一种可能的实现方式中,WSS端口即可以是输入端口,又可以是输出端口,其中目 标群组的MEMS可将承载有数据的载波通过与MEMS端口连接的WSS端口传输至对应的WSS(可称为是WSS2)中。其中,该WSS2可设置下行通道为直通通道,其中下行通道可 理解为MEMS端口至节点端口的通道,直通通道可理解是输入端口与输出端口的位置是相 对应的,比如图24中,WSS端口u0至WSS端口d0为直通通道,WSS端口u1至WSS端口d1也 为直通通道。进一步的,在上述例子,比如MEMS1的输出端口与WSS2的WSS端口u3连接, WSS2的WSS端口u3与WSS2的WSS端口d3直通,WSS端口d3与节点3中节点端口连接,则 MEMS1通过WSS端口u3将承载有数据的载波传输至WSS2中,WSS2再将承载有数据的载波 通过WSS端口d3传输至节点3中。
进一步的,还可以设置一个群组对应于两个预设波长,其中一个预设波长对应的载波 仍被传输至对应群组的MEMS中,而另一个预设波长对应的载波可被直接传输至目标群组 的节点中。如此,在载波无需经过MEMS时,可以直接被传输至目标群组的节点中。
结合图23和图24中例子,比如群组0对应于预设波长00和预设波长01,群组1对应于预 设波长10和预设波长11。其中,WSS端口d0是群组0对应的WSS输入端口,WSS端口d1、WSS端口u0、WSS端口u1均是群组0对应的WSS输出端口;WSS端口d1是群组1对应的WSS 输入端口,WSS端口d0、WSS端口u0、WSS端口u1均是群组1对应的WSS输出端口。WSS1 中的映射关系可参见表2中:
表2
WSS输入端口 | 波长 | WSS输出端口 |
WSS端口d0 | 预设波长00 | WSS端口u0 |
WSS端口d0 | 预设波长10 | WSS端口u1 |
WSS端口d0 | 预设波长11 | WSS端口d1 |
WSS端口d1 | 预设波长00 | WSS端口u0 |
WSS端口d1 | 预设波长10 | WSS端口u1 |
WSS端口d1 | 预设波长01 | WSS端口d0 |
示例性的,节点6的NPU60将数据调制到预设波长00对应的载波上,该载波由WSS端口 d0输入并由WSS端口u0输出,随后输入至MEMS0中。节点6的NPU60将数据调制到预设波 长10对应的载波上,该载波由WSS端口d0输入并由WSS端口u1输出,随后输入至MEMS1中。 节点6的NPU0将数据调制到预设波长11对应的载波上,该载波由WSS端口d0输入并由WSS 端口d1输出,随后直接输入至节点7。
表2中一个群组可对应于两个预设波长。示例性的,在WSS中可用波长总数受限的情况 下,或者可以理解,在WSS中可用波长总数小于WSS的端口总数的情况下,群组数可以是 可用波长总数的1/2;在WSS中可用波长总数充足的情况下,或者可以理解,在WSS中可用波长总数大于WSS的端口总数的情况下,群组数可以是WSS的端口总数的1/2,从而有助于实现任一NPU中数据可被发送至同群组内的其他节点中NPU,或者被发送至其他群组内的NPU,且有助于避免不必要的信息传输。
需要补充的是,上述WSS的上行通道设置WSS输入端口以及波长共同对应的输出端口, 或者说设置波长和群组的映射关系,而下行通道设置为直通通道,其中上行通道可理解为 节点端口至MEMS端口的通道。当然在其他实施例中,还可以是设置WSS的上行通道是直 通通道,而下行通道设置WSS输入端口以及波长共同对应的输出端口;或者还可能是WSS的上行通道,以及WSS的下行通道均设置WSS输入端口以及波长共同对应的输出端口,以 实现群组间数据传输或群组内数据传输,本申请不限定。
如下仍基于alltoall和allreduce两种不同的聚合通信方式,分情况说明多个NPU之间进行 数据聚合的实现方式:
一、alltoall
为实现多个NPU通过alltoall进行数据聚合,NPU可将自己经模型训练得到数据划分多 份,该划分得到的数据份数可与系统中NPU数相同。其中,系统中包括S×W个节点,每个 节点中包括C个NPU,每个NPU可将自己的数据划分为S×W×C份。
需要说明的是,在本申请实施例中仍然是多个NPU中数据组成的数据矩阵进行转置操 作。结合图23中的系统架构,系统中包括8个节点,可分别表示为节点0至节点8。每个节 点中包括2个NPU,其中节点0包括NPU00和NPU01,节点1包括NPU10和NPU11,节点2包 括NPU20和NPU21,……,节点7包括NPU70和NPU71,相应的,系统中包括16个NPU。 每个NPU可将自己的数据划分为16份,该16个NPU中数据组成的16×16的数据矩阵可参见 图25中(a),在经alltoall聚合之后数据矩阵可参见图25中(b)。
举例来说,NPU00中的16份数据可分别表示为000、001、002、003、004、005、006、007、008、009、00A、00B、00C、00D、00E、00F,具体的,NPU00可将该001至00F分 别发送至NPU01至NPU71中(000仍在NPU00中),其他类似。
在alltoall聚合操作中,针对于源群组中的一个NPU,该NPU在向其他NPU传输数据时, 可基于上述WSS中的映射关系,将数据承载于目标群组对应的预设波长上,从而实现将数 据发送至目标群组中,具体可参见上述实施例中描述。
进一步的,在alltoall聚合操作中,源群组与目标群组的组号之间可存在如下关系:
可将W个群组中的第w1个群组作为源群组,第w2个群组作为目标群组,那么两个群组 之间的偏移offset(即w2-w1)可基于各NPU所属节点的节点号和群组总数确定。在一个可 能的方式中,(w2-w1)可表示为((s2%W)-(s1%W))%W,其中,s1是第w1个群组中NPU 所属节点的节点号,s2是第w2个群组中NPU所属节点的节点号。
结合图25中例子,对于群组0中节点0的数据00E,节点0可确定将该数据00E传输至节点7中,相应的,节点7位于群组1中,群组1与群组0二者之间偏移offset =((s2%W)-(s1%W))%W=((7%2)-(0%2))%2=1。
二、allreduce
在allreduce情况下,每个节点中NPU可按照层次化allreduce,实现数据聚合。
在一个实现方式中,可先执行第一次群组内数据聚合,再执行群组间数据聚合,最后 执行第二次群组内数据聚合。
其中,第一次群组内数据聚合具体是群组内的多个NPU之间执行数据聚合,示例性的, 本群组中的每个NPU可将自己的数据进行划分,划分得到的份数与群组中NPU总数相同。 进一步的,群组中的第i个NPU可获取到本群组内其他NPU的第i个数据,并得到群组内所 有NPU中第i个数据的累加和,从而得到群组内的累加结果(即群组内聚合结果)。
以图23中的群组0为例说明,群组0中包括4个节点,分别是节点0、节点2、节点4、节点6,其中节点0中包括NPU00和NPU01,节点2中包括NPU20和NPU21,节点4中包括NPU40 和NPU41,节点6中包括NPU60和NPU61。群组0中每个NPU可将自己的数据划分为8份, 比如NPU00可将自己的数据划分为000至007,NPU01可将自己的数据划分为010至017等。
参见图26中(a)示出的第一次群组内数据聚合,第0个NPU为NPU00,NPU00可获取到群组0中其他NPU的第0份数据,比如NPU00从NPU01中获取数据010,从NPU20中获取 数据200,从NPU21中获取数据210,从NPU40中获取数据400,从NPU41中获取数据410, 从NPU60中获取数据600,从NPU61中获取数据610,从而得到群组0中各NPU中的第0个数 据的加和,可表示为000+010+……+600+610。
同样的,第1个NPU为NPU01,NPU1可获取到群组0中其他NPU的第1份数据,并得到加和001+011+……+601+611;第2个NPU为NPU20,NPU20可获取到群组0中其他NPU的第 2份数据,并得到加和002+012+……+602+612。
第3个NPU至第7个NPU与上述类似,具体可参见图26中(a)的箭头方向,不再赘述。
基于上述相类似的步骤,在群组1中,第i个NPU同样可获取到本群组中各NPU的第i个 数据并得到加和,比如第0个NPU为NPU10,NPU10可获取到本群组中各NPU的第0个数据并得到加和,表示为100+110+……+700+710;比如第1个NPU为NPU11,NPU11可获取到 本群组中各NPU的第1个数据并得到加和,表示为101+111+……+701+711等。
在执行完第一次群组内数据聚合之后,即可执行群组间数据聚合,其中群组间数据聚 合即多个群组之间,通过群组间通信实现各群组中的第i个NPU的数据进行加和,以得到聚 合结果。其中群组间数据聚合可使用ring allreduce、recursive halving anddoubling或者 buttefly实现。
可参见图26中(b)示出群组间数据聚合,图案1对应的方块可表示各群组中的第0个NPU 在上述图26中(a)步骤之后得到的数据,示例性的,群组0中的第0个NPU(即NPU00)获取群组1中第0个NPU(即NPU10)上的数据(即100+110+……+700+710),并与本地的 000+010+……+600+610做加和,以得到2个群组中第0个NPU上数据的加和,比如表示为A。
相应的,图案2对应的方块可表示各群组中的第1个NPU在上述图26中(a)步骤之后得 到的数据,群组0中的第1个NPU(即NPU01)可获取群组1中第1个NPU(即NPU11)上的 数据(即101+111+……+701+711),并与本地的001+011+……+601+611做加和,以得到2 个群组中第1个NPU上数据的加和,比如表示为B。其他类似,从而得到各群组在相对应位 置上的NPU中数据的加和,得到的数据可参见图26中(c)所示。
随后各NPU可将得到的数据在群组内分发至本群组中的各个NPU中,比如NPU0可将数 据A分发至群组0的其他NPU中,NPU1可将数据B分发至群组0的其他NPU中等,具体可参见图26中(c)示出的第二次群组内数据聚合/分发。
在另一个实现方式中,可依次执行节点内数据聚合、第一群组内数据聚合、群组间数 据聚合,以及第二群组内数据聚合/分发。其中,节点内数据聚合即一个节点中的多个NPU 之间执行数据聚合,具体可参见图7中(a)所示。
群组内数据聚合又可认为是节点间数据聚合,即群组内的多个节点之间执行数据聚合。 示例性的,群组内的一个节点可将数据划分为多份,其中划分得到的份数与群组内的节点 数相同。随后,群组内的第i个节点可获取群组内其他节点中的第i个数据,从而第i个节点 可获取到群组内所有节点的第i个数据的累加结果,即第一次群组内的聚合数据。
具体可参见图27中例子,该图27中仍然是以群组0中的节点0、节点2、节点4、节点6为例说明,其中任一个节点可将数据划分为4份,比如节点0中包括数据00、01、02、03; 节点2中包括数据20、21、22、23;节点4中包括数据40、41、42、43;节点6中包括数据 60、61、62、63;其中,群组0中的第0个节点即节点0,可从节点2中获取20,从节点4中 获取40,以及从节点6中获取60。其他类似,具体可参见图27所示。
如此,即完成各群组内的第一次数据聚合,随后再执行群组间数据聚合,即多个群组 之间通过群组间通信来执行数据聚合,具体实现过程可参见图26中(b)所示。随后再执行各群组内的第二次数据聚合/分发,具体实现过程可参见图26中(c)所示,不再赘述。
基于上述相同的发明构思,如下提供一种模型训练方法,该方法中多个NPU可进行联 合训练,以得到最终的模型。其中,多个NPU中的某两个NPU进行数据聚合时,若该两个NPU属于不同节点,则该两个NPU可基于两个NPU所属的两个节点之间的MEMS构建的光 传输通道进行通信。也可以理解,在该多个NPU对应的多个节点中,任两个节点可通过二 者之间的MEMS构建的光传输通道进行通信。
基于联合训练中是否存在分组,如下有两种可能方式:
可能方式1,该联合训练中包括一个群组(可称为第一群组)。第一群组中包括S个节 点,一个节点可包括C个NPU,即S×C个NPU可联合进行模型训练,以得到最终的模型。
可能方式2,该联合训练中包括W个群组,W为大于或等于2的整数。
其中,一个群组中可包括S个节点,一个节点中包括C个NPU,即S×C×W个NPU可联合 进行模型训练,以得到最终的模型。进一步的,任一个节点可基于该S×W个节点的节点号, 将该S×W个节点划分至W组中,群组的划分方式可参见图23相关实施例中说明。
该联合训练中可包括多次迭代,如下针对其中一次迭代解释:一个NPU中可执行自己 的模型训练,以得到本次迭代过程中、自己模型训练对应的中间数据,该中间数据可以是 特征、梯度或模型参数中的一个或多个。该NPU可基于聚合通信方式与其他NPU实现数据聚合,从而得到本次迭代的聚合数据,该聚合数据可用于下一次迭代中各NPU调整各自模型中的参数。
如下,以第一NPU和第二NPU为例说明,其中,第一NPU位于第一节点中,第二NPU 位于第二节点中,第一节点和第二节点是上述联合训练中的不同节点。
参照图28示出的一种模型训练方法的流程解释:
步骤2801,第一NPU执行第一模型训练,得到第一目标数据。
在一种可能的实现方式中,第一NPU中运行有第一模型训练,在一次迭代中,第一NPU 运行第一模型训练得到第一中间数据,然后根据第一中间数据和聚合通信方式,确定出第 一目标数据。其中,聚合通信方式具体可包括alltoall、allreduce中的一项或多项。该第一目 标数据可以是第一中间数据,或者是第一中间数据中的一部分。
该第一目标数据可以由第一NPU发送至第二NPU,以用于第二NPU更新第二NPU中第二模型训练中的参数。
其中,在联合训练是否分组的情况下,不同聚合通信方式中第一NPU与第二NPU之间 的通信方式不同,如下分两种可能方式说明:
可能方式1,该联合训练中包括一个群组。
在alltoall情况下,第一NPU可将第一中间数据划分为S×C份,然后将该S×C份数据中、 与第二NPU对应的数据作为第一目标数据。结合上述图19中例子,比如第一NPU是NPU00, 第二NPU是NPU11,NPU00将第一中间数据划分为000、001、002、003、004、005、006、007,然后确定数据003是第一目标数据。
示例性的,第一节点可以是该S个节点中的第s1个,第二节点是该S个节点中的第s2个,其中,s1、s2取遍[0,S]中的整数,且s1小于s2;第二NPU是第二节点中包括的C个 NPU,第一目标数据是第一NPU将第一中间数据划分得到的S×C个数据中、第(s2×C) 个至第(s2×C+C-1)个数据。此处,也可以理解,第一NPU与第二NPU交换数据,示例 性的,第一NPU是第一节点中的第c个NPU,当第一NPU向C个第二NPU分别发送划 分得到的S×C个数据中、第(s2×C)个至第(s2×C+C-1)个数据时,第一NPU还可从C 个第二NPU中分别获取数据。具体的,每个第二NPU也会将自己的第二中间数据划分为 S×C份,第一NPU可从C个第二NPU中分别获取各第二NPU中的第s1×C+c片数据。
在allreduce情况下,第一NPU是第一节点中的第i个NPU,第二NPU是第二节点中的第i 个NPU,即两个NPU在不同节点中位于相对应位置,第一NPU与第二NPU执行节点间数据聚合(或者说,第一NPU与第二NPU执行第一群组对应的群组内数据聚合)。
一个示例中,第一NPU将第一中间数据进行划分,以得到C份数据;第一NPU通过第一 节点的节点内通道,获取第一节点中其他(C-1)个NPU的第i个数据;随后,第一NPU将C个数据中的第i个数据,以及第一节点中其他(C-1)个NPU的第i个数据进行加和之后,得 到第一目标数据。比如图7中,第一NPU是节点0NPU0,第二NPU是节点1NPU0,那么节 点0NPU0可将第一次节点内数据聚合时,获取到的节点0中所有NPU中的第0个数据的加和, 即a00+b00+c00+d00,作为第一目标数据,该第一目标数据可由节点0NPU0发送至节点1NPU0。
可能方式2,该联合训练中包括W个群组。
预先说明的是,第一NPU(或者说第一节点)作为数据发送方,其所属的群组可称为是源群组;第二NPU(或者说第二节点)作为数据接收方,其所属的群组可称为是目标群 组。源群组和目标群组可以是同一个群组,也可以是两个不同群组。
在alltoall情况下,第一NPU可将第一中间数据划分为S×C×W份,然后将该S×C×W份数 据中、与第二NPU对应的数据作为第一目标数据。结合上述图25中例子,比如第一NPU是 NPU00,第二NPU是NPU11,NPU00将第一中间数据划分为000至00F,其中数据003对应于NPU11,则NPU00可确定数据003是第一目标数据。
可按照节点号将S×W个节点划分至W个群组中,可以理解,第一NPU所属的第一 节点可以是该S×W个节点中的第s1个,第二节点是S×W个节点中的第s2个,同样的,第 一NPU与第二NPU之间也可传输数据,具体与上述可能方式1类似。区别在于第一NPU 与第二NPU传输数据的通道是不同的,前者是一个群组内的数据传输,第一NPU可经过 节点间通道(即MEMS构建的光传输通道),或者经过节点间通道以及节点内通道,向第 二NPU发送第一目标数据,而后者涉及到群组间的数据传输,第一NPU不仅需要经过上 述节点间通道,或者经过节点间通道和节点内通道,还需要经过WSS构建的光传输通道 向目标群组中的第二NPU发送第一目标数据。
示例性的,源群组是W个群组中的第w1个群组,目标群组是W个群组中的第w2个 群组,其中w1可取遍[0,W-1]中的整数,w2与w1之间的偏移可表示为 offset=w2-w1=((s2%W)-(s1%W))%W。
在allreduce情况下,第一NPU是源群组中的第i个NPU,第二NPU是目标群组中的第i个NPU,即两个NPU在不同群组中位于相对应位置。
在源群组与目标群组为不同群组的情况下,第一NPU和第二NPU需要执行群组间数据 聚合,至少有如下两种示例:
一个示例中,第一NPU在执行第一模型训练得到第一中间数据之后,可先将第一中间 数据进行划分,以得到C份数据;第一NPU通过第一节点的节点内通道,获取第一节点中其他(C-1)个NPU的第i个数据;随后,第一NPU将C个数据中的第i个数据,以及第一节 点中其他(C-1)个NPU的第i个数据进行加和之后,得到源群组中第一节点内的聚合结果。 同理的,第二NPU可基于相类似的方式获取到目标群组中第二节点内的聚合结果。随后, 第一NPU与第二NPU进行群组间数据聚合,具体可以是第一NPU向第二NPU发送第一节点 内的聚合结果,该第一节点内的聚合结果即第一目标数据,相应的,第二NPU可以根据第 一节点内的聚合结果,和第二节点内的聚合结果进行群组间数据聚合。
结合上述图27中例子,比如第一节点是节点0,第一NPU是NPU00,其中NPU00可获取到节点0中其他NPU中数据以得到节点0的聚合结果(即第一目标数据),同理的,比如第 二节点是节点2,第二NPU是NPU20,NPU20也可获取到节点2的聚合结果。那么NPU00可 将节点0的聚合结果发送至NPU20中,相应的,NPU20可基于该节点0的聚合结果和节点2 的聚合结果进行群组间聚合。
再一个示例中,第一NPU在执行第一模型训练得到第一中间数据之后,可将第一中间 数据进行划分,以得到C×S份数据,即划分得到的份数与一个群组内的NPU数相同,第一NPU先与所在的源群组中的其他NPU执行群组内数据聚合,实现方式可参见上述可能方式 1中相关实施例,随后第一NPU可将群组内数据聚合对应的聚合结果,作为第一目标数据。
比如图26中(b),第一NPU是群组0中的第0个NPU(即NPU00),第二NPU是群组1 中的第0个NPU(即NPU10),NPU00先执行图26中(a)的第一次群组内数据聚合,从而 NPU00获取到000+010+……+600+610。NPU00再执行图26中(b)的群组间数据聚合,其 中,NPU00将该000+010+……+600+610作为第一目标数据发送至NPU10中。
在源群组与目标群组属于同一个群组的情况下,第一NPU与第二NPU仍然是执行节点 间数据聚合(或者说,第一NPU与第二NPU执行当前群组对应的群组内数据聚合),可参见上述可能方式1中相关实施例。
步骤2802,第一NPU通过MEMS构建的光传输通道,向第二NPU发送第一目标数据。
该联合训练中包括一个群组(即第一群组)的情况下:
可将位于第一节点与第二节点之间的、用于第一节点与第二节点连接的MEMS称为是 第一MEMS。参照图29中(a)的例子,第一节点的节点端口(可称为节点端口A)与第一MEMS的MEMS端口A连接,第二节点的节点端口(可称为节点端口B)与第一MEMS的 MEMS端口B连接。如此,第一节点与第二节点之间存在连接通道,第一节点与第二节点 可以通过该连接通道进行通信。
第一NPU向第二NPU发送第一目标数据可参见如下三个示例:
示例1,节点端口A是第一NPU中端口,节点端口B是第二NPU中端口,则第一NPU在向第二NPU发送第一目标数据时,具体可以是,第一NPU将第一目标数据依次通过节点端 口A、MEMS端口A、MEMS端口B以及节点端口B,发送至第二NPU中。
结合图21中例子,比如端口(0,0)与端口(1,0)之间通过MEMS连接,其中端口(0,0)属于节 点0中的NPU00,端口(1,0)属于节点1中的NPU10,进一步的,第一NPU是NPU10,第二NPU 是NPU00,第一目标数据是数据B0。NPU10将数据B0发送给NPU00时,具体可以是,NPU10可将数据B0依次通过端口(1,0)、MEMS端口A、MEMS端口B和端口(0,0),向NPU00发送。
示例2,节点端口A是第一节点中除第一NPU以外的其他NPU(可称为是第三NPU)中端口,节点端口B是第二节点中除第二NPU以外的其他NPU(可称为是第四NPU)中端口, 则第一NPU在向第二NPU发送第一目标数据时,具体可以是,第一NPU先经过第一节点的 内部通道,将第一目标数据发送至第三NPU,然后第三NPU将第一目标数据依次通过节点 端口A、MEMS端口A、MEMS端口B以及节点端口B,发送至第四NPU中。第四NPU通过 第二节点的内部通道,将第一目标数据发送至第二NPU中。
结合图21中例子,比如第一NPU是NPU01,第二NPU是NPU11,第一目标数据是数据A1+D1,其中,端口(0,3)与端口(1,3)之间通过MEMS连接,端口(0,3)属于节点0中的NPU03,端口(1,3)属于节点1中的NPU13,即NPU03是第三NPU,NPU04是第四NPU。NPU01将数据 A1+D1发送给NPU11时,具体可以是,则NPU01可将数据A1+D1先发送给NPU03,随后 NPU03再依次通过端口(0,3)、MEMS端口A、MEMS端口B和端口(1,3)向NPU13发送,NPU13 再将数据A1+D1发送至NPU11中。
示例3,节点端口A是第一节点中第三NPU中端口,节点端口B是第二节点中第二NPU中端口;或者,节点端口A是第一节点中第一NPU中端口,节点端口B是第二节点中第四 NPU中端口,具体实现可参见上述示例1和/或示例2中描述。
该联合训练中包括W个群组的情况下:
可将位于第一节点与第二节点之间的、用于第一节点与第二节点连接的MEMS称为是 第二MEMS,其中该第二MEMS与第二节点均属于目标群组。
如图29中(b)的例子,第一节点中包括节点端口a,WSS中包括WSS端口a和WSS端口b,第二MEMS中包括MEMS端口a和MEMS端口b,第二节点中包括节点端口b。
其中,节点端口a与WSS端口a连接,WSS端口b与MEMS端口a连接,MEMS端口b与节 点端口b连接,如此,第一节点与第二节点之间存在连接通道,第一节点与第二节点可以 通过该连接通道进行通信。
第一NPU向第二NPU发送第一目标数据,具体可以是,第一NPU将第一目标数据,依次经过WSS构建的光传输通道、第二MEMS构建的光传输通道,发送至第二NPU中。
其中,节点端口a可以是第一NPU中端口,第一NPU可通过第一NPU中端口向WSS发送第一目标数据;或者,节点端口a不是第一NPU中端口,第一NPU可先经过第一节点的节点 内通道,将第一目标数据发送至该节点端口a对应的NPU中,随后该NPU再通过第一NPU 中端口向WSS发送第一目标数据。
节点端口b可以是第二NPU中端口,第二NPU可通过节点端口b接收来自第二MEMS的第一目标数据;或者,节点端口b不是第二NPU中端口,第二节点中该节点端口b对应的NPU可接收来自第二MEMS的第一目标数据,随后第二NPU可通过第二节点的节点内通道,接 收来自节点端口b对应的NPU的该第一目标数据。
进一步的,在WSS中,WSS端口a还可对应于其他的WSS端口,具体可参见上述表1和表2相关实施例中描述。第一NPU在向WSS发送第一目标数据时,可以将第一目标数据调 制到目标群组对应的预设波长(可称为目标预设波长)的载波上,如此,WSS可基于目标 预设波长与目标群组的映射关系,向目标群组发送该承载有第一目标数据的载波。
也可以理解,WSS中包括有源群组对应的WSS输入端口、目标预设波长、目标群组对应的WSS输出端口的映射关系。WSS通过源群组对应的WSS输入端口,接收来自源群组中 第一NPU发送的承载有第一目标数据的载波之后,可基于该映射关系通过目标群组对应的WSS输出端口向目标群组发送该承载有第一目标数据的载波。
结合图23和图29中例子,比如第一NPU和第二NPU均是群组0中NPU,群组0对应于预设波长0,第一NPU可将第一目标数据调制到预设波长0对应的载波上,经由WSS端口a输 入至WSS中,WSS通过该预设波长0和WSS端口a共同对应的WSS端口b,向第二MEMS发 送该承载有第一目标数据的载波。其中,第二MEMS同样属于群组0,第二MEMS将接收到 的该承载有第一目标数据的载波发送至第二NPU中。
再比如第一NPU属于群组0,第二NPU属于群组1,其中群组1对应于预设波长1,第一NPU可将第一目标数据调制到预设波长1对应的载波上,经由WSS端口a输入至WSS中, WSS通过该预设波长1和WSS端口a共同对应的WSS端口b,向第二MEMS发送该承载有第 一目标数据的载波。其中,第二MEMS同样属于群组1,第二MEMS将接收到的该承载有第 一目标数据的载波发送至第二NPU中。
还需要说明的是,上述仅是以两个群组为例说明WSS如何实现群组间通信,在包括有 多个群组情况下,第一NPU可通过改变载波波长实现将不同数据发送至不同群组的NPU中, 比如第一NPU属于群组0,第一NPU需要将5份目标数据分别发送至5个目标群组的对应NPU中,其中5个目标群组分别是群组1、群组2、群组3、群组4和群组5,5个目标群组分 别对应于预设波长1、预设波长2、预设波长3、预设波长4、预设波长5。第一NPU在向群 组1发送群组1对应的目标数据时,可将该目标数据承载于预设波长1对应的载波中,从而 WSS可将该目标数据发送至群组1;第一NPU在向群组2发送群组2对应的目标数据时,可 将该目标数据承载于预设波长2对应的载波中,从而WSS可将该目标数据发送至群组2;如 此,第一NPU可通过调整载波波长实现将不同的目标数据发送至不同的目标群组中。
步骤2803,第二NPU根据第一目标数据得到聚合数据,并根据聚合数据调整第二模型 训练的参数。
在一种可能方式中,第二NPU执行第二模型训练得到第二中间数据,然后根据第二中 间数据和聚合通信方式,确定出第二目标数据,该第二目标数据可以是第二中间数据,或 者包含于第二中间数据中。其中,第二NPU确定第二目标数据的实现方式与上述步骤2801 中,第一NPU确定第一目标数据的实现方式类似。第二NPU还可向第一NPU发送第二目标 数据,相应的,第一NPU也可接收来自第二NPU中的第二目标数据,并根据第二目标数据确定出聚合数据,根据聚合数据调整第一模型训练的参数。
在一种可能方式中,第二NPU不仅可以接收来自第一NPU的第一目标数据,还可接收 来自其他NPU的目标数据,并基于其他NPU的目标数据、第一目标数据以及第二中间数据中的一项或多项,确定出聚合数据。随后第二NPU根据聚合数据调整第二模型训练的参数。
需要补充的是,第一NPU与第二NPU还可以属于相同节点,此时二者可执行节点内数 据聚合。可参见图7示出的第一次节点内数据聚合,具体的,第一NPU将第一中间数据划分成C份,将C份数据中与第二NPU对应的第一目标数据发送至第二NPU中,比如第一NPU 是NPU0,第二NPU是NPU1,NPU0可将数据划分为a00至a03,其中NPU1对应于数据a01,则 第一目标数据是数据a01,该第一目标数据可由NPU0发送至NPU1中。
如上,即完成多个NPU共同训练模型,有助于扩大模型训练的训练规模,且可快速的 聚合各NPU模型训练的中间数据。从而更高效的实现多个NPU共同训练模型。
需要补充的是,本申请中模型训练方法中未详细描述的实现方式均可参照图14至图27 相关系统实施例中的描述。本申请均是以NPU为例说明,上述实施例还可替换成CPU、GPU 或者其他具有处理功能的器件,或者还可以将上述实施例中NPU替换成处理器。
基于与方法实施例同一发明构思,本申请实施例还提供了一种模型训练装置,该模型 训练装置可以部署在节点上,用于执行上述如图28所示的方法实施例中处理器执行的方法。
模型训练装置3000的结构示意图可参见图30所示,在一种可能的实现方式中,模型训 练装置3000中包括处理单元3001和接口单元3002,其中处理单元3001用于执行装置中模型 训练,得到第一目标数据;接口单元3002用于通过MEMS构建的光传输通道,向第二节点 的第二处理器发送第一目标数据,其中,MEMS位于装置所属的第一节点与第二节点之间, 第一目标数据用于第二处理器调整第二处理器中模型训练的参数。
在一种可能的实现方式中,接口单元3002具体用于:通过MEMS构建的光传输通道,以及节点内通道,向第二处理器发送第一目标数据;其中,节点内通道包括第一节点内、 装置3000与MEMS之间的通道,和/或,第二节点内、第二处理器与MEMS之间的通道。
在一种可能的实现方式中,接口单元3002具体用于:依次通过波长选择开关WSS构建 的光传输通道,以及MEMS构建的光传输通道,向第二处理器发送第一目标数据;其中,第二节点和MEMS属于同一个群组;WSS位于MEMS与第一节点之间。
在一种可能的实现方式中,WSS中包括载波波长和群组的映射关系,其中一个映射关 系中、载波波长是对应群组的预设波长;接口单元3002具体用于:将第一目标数据调制到 载波中,载波的波长是第二节点所属群组对应的预设波长;将承载有第一目标数据的载波 发送至WSS中,以使得WSS将承载有第一目标数据的载波发送至MEMS中。
在一种可能的实现方式中,处理单元3001具体用于:执行装置3000中模型训练,得到 装置3000的中间数据;基于聚合通信方式和装置3000的中间数据,确定第一目标数据,第 一目标数据是装置3000的中间数据的全部或部分;其中,装置3000和第二处理器中的训练 数据和训练模型均不同,聚合通信方式为alltoall;或,装置3000和第二处理器中的训练数 据不同,聚合通信方式为allreduce。
在一种可能的实现方式中,处理单元3001具体用于:基于alltoall,以及alltoall对应的处 理器总数,将装置3000的中间数据进行划分;其中,alltoall对应的处理器中包括装置3000 和第二处理器;划分之后的数据份数等于处理器总数,且划分之后的数据中包括与第二处 理器对应的第一目标数据。
在一种可能的实现方式中,alltoall对应于S个节点,第一节点是S个节点中的第s1个,第二节点是S个节点中的第s2个,其中,s1、s2取遍[0,S]中的整数,且s1小于s2; 第二处理器是第二节点中包括的C个处理器;第一目标数据是划分之后的S×C个数据中、 第(s2×C)个至第(s2×C+C-1)个数据。
在一种可能的实现方式中,alltoall对应于W个群组,第一节点是W个群组中第w1个群组的第s1个节点,第二节点是W个群组中第w2个群组的第s2个节点;其中,w1取遍[0,W-1]中的整数,w2=w1+offset,其中offset=((s2%W)-(s1%W))%W。
在一种可能的实现方式中,处理单元3001具体用于:基于allreduce,以及第一节点中 处理器总数C,将装置3000的中间数据进行划分,以得到C个数据;通过第一节点的节点内通道,获取第一节点中其他(C-1)个处理器的第i个数据;将C个数据中的第i个数 据,以及第一节点中其他(C-1)个处理器的第i个数据进行加和之后,得到第一目标数据; 其中,装置3000是第一节点中的第i个处理器,第二处理器是第二节点中的第i个处理器。
在一种可能的实现方式中,allreduce对应于W个群组,一个群组中包括S个节点,一 个节点中包括C个处理器;装置3000是所属群组中的第i个处理器;第二处理器是所属群组中的第i个处理器;处理单元3001具体用于:基于allreduce,以及群组中处理器总数S×C, 将装置3000的中间数据进行划分,以得到S×C个数据;通过第一节点的节点内通道,和/或,第一节点与所属群组中其他(S-1)个节点之间的、MEMS构建的光传输通道,获取 所属群组中其他(S×C-1)个处理器的第i个数据;将S×C个数据中的第i个数据,以及所 属群组中其他(S×C-1)个处理器的第i个数据进行加和之后,得到第一目标数据。
在一种可能的实现方式中,处理单元3001还用于:获取第二目标数据,第二目标数据是第二处理器执行第二处理器中模型训练得到的、待传输至装置3000中的数据;根据 第二目标数据,调整装置3000中模型训练的参数。
在一种可能的实现方式中,处理单元3001还用于:在执行装置中模型训练,得到第一目标数据之前,根据用于联合训练模型的多个节点的节点总数、WSS的端口总数以及 WSS中可用波长总数,将多个节点划分为W组;其中,当WSS中可用波长总数小于WSS 的端口总数,且W个群组中一个群组对应于2个预设波长时,W等于WSS中可用波长总 数的1/2。
基于上述内容和相同构思,图31示例性示出本申请实施例提供的一种处理器的结构示 意图。如图31所示,该处理器100中可以包括至少一个处理器核心,例如处理器核心101、 处理器核心102、处理器核心103、……、处理器核心10J,J为正整数。且,还可以包括非核心部件,例如外部缓存器、内部存储器、通用单元(包括计数器、译码器和信号发生器等)、加速器单元、输入/输出控制单元和接口单元等。其中,至少一个处理器核心作为处 理器100的核心部件,用于实现处理器100的处理功能。而非核心部件和各个处理器核心之 间可以通过总线进行连接,以实现数据的传输操作。
应理解,上述处理器100可以是一种集成电路芯片,具有信号的处理能力。例如,上述 处理器100可以是通用处理器,可以是现场可编程门阵列(field programmable gatearray, FPGA),还可以是专用集成芯片(application specific integrated circuit,ASIC),还可以 是系统芯片(system on chip,SoC),还可以是网络处理器(networkprocessor,NP),还 可以是数字信号处理电路(digital signal processor,DSP),还可以是微控制器(micro controller unit,MCU),还可以是可编程控制器(programmable logicdevice,PLD),或 者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件及其他集成芯片。
其中,该处理器100中可以包括中央处理单元(central processor unit,CPU)、神经网 络处理单元(neural-network processing unit,NPU)和图形处理单元(graphicsprocessing unit, GPU),还可以包括应用处理器(application processor,AP),调制解调处理器,图像信号处 理器(image signal processor,ISP),视频编解码器,数字信号处理器(digital signal processor, DSP),和/或基带处理器等。这些器件可以分散部署在不同的芯片上,也可以集成在一个芯 片上,具体不作限定。该处理器100可执行上述方法实施例中第一处理器中方法,或者用 于执行上述系统实施例中任一个处理器中方法。
可以理解,本申请实施例中的存储器(例如外部缓存器和内部存储器)可以是易失性 存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储 器可以是只读存储器(read-only memory,ROM)、可编程只读存储器(programmableROM, PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读 存储器(electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明, 许多形式的RAM可用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取 存储器(dynamic RAM,DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、 双倍数据速率同步动态随机存取存储器(double data rate SDRAM,DDR SDRAM)、增强 型同步动态随机存取存储器(enhanced SDRAM,ESDRAM)、同步连接动态随机存取存 储器(synchlinkDRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambus RAM, DR RAM)。应注意,本文描述的方法的存储器旨在包括但不限于这些和任意其它适合类 型的存储器。
根据本申请实施例提供的方法,本申请还提供一种计算机程序产品,该计算机程序产 品包括:计算机程序代码,当该计算机程序代码在计算机上运行时,使得该计算机执行图 28所示方法实施例中任意一个实施例的方法。
根据本申请实施例提供的方法,本申请还提供一种计算机可读存储介质,该计算机可 读介质存储有程序代码,当该程序代码在计算机上运行时,使得该计算机执行图28所示方 法实施例中任意一个实施例的方法。
根据本申请实施例提供的方法,本申请还提供一种计算设备,该计算设备包括处理器, 处理器与存储器连接,处理器用于执行存储器中存储的计算机程序,以使得该计算设备执 行图28所示方法实施例中任意一个实施例的方法。
在本说明书中使用的术语“部件”、“模块”、“系统”等用于表示计算机相关的实体、硬件、固件、硬件和软件的组合、软件、或执行中的软件。例如,部件可以是但不限 于,在处理器上运行的进程、处理器、对象、可执行文件、执行线程、程序和/或计算机。 通过图示,在计算设备上运行的应用和计算设备都可以是部件。一个或多个部件可驻留在 进程和/或执行线程中,部件可位于一个计算机上和/或分布在两个或更多个计算机之间。 此外,这些部件可从在上面存储有各种数据结构的各种计算机可读介质执行。部件可例如 根据具有一个或多个数据分组(例如来自与本地系统、分布式系统和/或网络间的另一部件 交互的二个部件的数据,例如通过信号与其它系统交互的互联网)的信号通过本地和/或远 程进程来通信。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各种说明性逻辑 块(illustrative logical block)和步骤(step),能够以电子硬件、或者计算机软件和电子硬 件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用 和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功 能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装 置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通 过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分, 仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以 结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨 论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合 或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件 可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元 上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各 个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一 个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技 术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件 产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机, 服务器,或者网络设备等)执行本申请各个实施例方法的全部或部分步骤。而前述的存储 介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟 悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖 在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (25)
1.一种模型训练系统,其特征在于,包括:
由微机电系统MEMS和S×C个处理器组成的第一群组,其中,S为所述第一群组中的节点个数,C为一个节点中处理器的个数,S、C均为正整数;
所述MEMS,用于在S个节点中的任两个节点之间构建光传输通道;
所述S×C个处理器,用于联合训练模型;其中,所述S×C个处理器中的至少两个处理器通过所述光传输通道传输目标数据,其中接收所述目标数据的处理器用于根据所述目标数据调整所述处理器中的模型训练的参数。
2.如权利要求1所述的系统,其特征在于,所述第一群组中包括第一节点和第二节点,所述第一节点中包括第一处理器,所述第二节点中包括第二处理器;
所述第一处理器,用于执行所述第一处理器中模型训练,得到所述第一处理器的中间数据,根据所述第一处理器的中间数据得到第一目标数据,所述第一目标数据是所述第一处理器的中间数据的全部或部分;
所述第一处理器,还用于将所述第一目标数据通过第一MEMS构建的光传输通道,以及节点内通道,发送至所述第二处理器中;
所述第二处理器,用于根据所述第一目标数据调整所述第二处理器中模型训练的参数;
其中,所述第一MEMS位于所述第一节点与所述第二节点之间;
所述节点内通道中包括所述第一节点内、所述第一处理器与所述第一MEMS之间的通道,和/或,所述第二节点内、所述第二处理器与所述第一MEMS之间的通道。
3.如权利要求1所述的系统,其特征在于,还包括:
波长选择开关WSS和(W-1)个扩展群组,W为大于或等于2的整数,所述第一群组和所述(W-1)个扩展群组组成W个群组;
所述WSS与所述W个群组中每个群组连接。
4.如权利要求3所述的系统,其特征在于,
所述WSS包括W个第一WSS端口和W个第二WSS端口;
所述W个第一WSS端口分别与W个节点端口连接,其中,所述W个节点端口分别属于所述W个群组中,所述W个节点端口在各自群组中的位置是相对应的;
所述W个节点端口在各自群组中对应于各自的MEMS端口,所述W个节点端口对应的MEMS端口分别与所述W个第二WSS端口连接。
5.如权利要求3或4所述的系统,其特征在于,所述第一群组中包括第一节点,所述第一节点中包括第一处理器;
所述第一处理器,用于执行所述第一处理器的模型训练,得到所述第一处理器的中间数据,以及根据所述第一处理器的中间数据得到第一目标数据,所述第一目标数据是所述第一处理器的中间数据的全部或部分;
所述第一处理器,还用于将所述第一目标数据依次通过所述WSS和第二MEMS分别构建的光传输通道,发送至第二处理器中;
所述第二处理器,用于根据所述第一目标数据调整所述第二处理器中模型训练的参数;
其中,所述第二处理器位于第二节点中,所述第二节点是所述第一群组中除所述第一节点以外的其他节点,或者是所述(W-1)个扩展群组中任一个扩展群组中节点;
所述WSS、所述第二MEMS依次位于所述第一节点与所述第二节点之间,所述第二MEMS与所述第二节点属于同一个群组。
6.如权利要求5所述的系统,其特征在于,所述第一处理器,具体用于将所述第一目标数据调制到载波中,所述载波的波长是所述第二节点所属群组对应的预设波长;
所述WSS,用于根据所述载波的波长与所述第二节点所属群组的映射关系,将所述承载有所述第一目标数据的载波,发送至所述第二MEMS中。
7.如权利要求3至6中任一项所述的系统,其特征在于,当所述W个群组中每个群组对应于2个预设波长时,所述W等于所述WSS中可用波长总数的1/2。
8.如权利要求1至7中任一项所述的系统,其特征在于,所述S×C个处理器中任两个处理器中的训练数据和训练模型均不同,所述S×C个处理器之间的聚合通信方式为alltoall;
或,所述S×C个处理器中任两个处理器中的训练数据不同,所述S×C个处理器之间的聚合通信方式为allreduce。
9.如权利要求1至8中任一项所述的系统,其特征在于,目标数据包括用于模型迭代的梯度、特征、模型参数中的一个或多个。
10.一种模型训练方法,其特征在于,包括:
第一节点的第一处理器执行所述第一处理器中模型训练,得到第一目标数据;
所述第一处理器通过微机电系统MEMS构建的光传输通道,向第二节点的第二处理器发送所述第一目标数据,其中,所述MEMS位于所述第一节点与所述第二节点之间,所述第一目标数据用于所述第二处理器调整所述第二处理器中模型训练的参数。
11.如权利要求10所述的方法,其特征在于,所述第一处理器通过MEMS构建的光传输通道,向第二节点的第二处理器发送所述第一目标数据,包括:
所述第一处理器通过所述MEMS构建的光传输通道,以及节点内通道,向所述第二处理器发送所述第一目标数据;
其中,所述节点内通道包括所述第一节点内、所述第一处理器与所述MEMS之间的通道,和/或,所述第二节点内、所述第二处理器与所述MEMS之间的通道。
12.如权利要求10或11所述的方法,其特征在于,所述第一处理器通过MEMS构建的光传输通道,向第二节点的第二处理器发送所述第一目标数据,包括:
所述第一处理器依次通过波长选择开关WSS构建的光传输通道,以及所述MEMS构建的光传输通道,向所述第二处理器发送所述第一目标数据;
其中,所述第二节点和所述MEMS属于同一个群组;
所述WSS位于所述MEMS与所述第一节点之间。
13.如权利要求12所述的方法,其特征在于,所述WSS中包括载波的波长和群组的映射关系,其中一个映射关系中、载波的波长是对应群组的预设波长;
所述第一处理器依次通过WSS构建的光传输通道,以及所述MEMS构建的光传输通道,向所述第二处理器发送所述第一目标数据,包括:
所述第一处理器将所述第一目标数据调制到载波中,所述载波的波长是所述第二节点所属群组对应的预设波长;
所述第一处理器将所述承载有所述第一目标数据的载波发送至所述WSS中,以使得所述WSS将所述承载有所述第一目标数据的载波发送至所述MEMS中。
14.如权利要求10至13中任一项所述的方法,其特征在于,所述第一处理器执行所述第一处理器中模型训练,得到第一目标数据,包括:
所述第一处理器执行所述第一处理器中模型训练,得到所述第一处理器的中间数据;
所述第一处理器基于聚合通信方式和所述第一处理器的中间数据,确定所述第一目标数据,所述第一目标数据是所述第一处理器的中间数据的全部或部分;
其中,所述第一处理器和所述第二处理器中的训练数据和训练模型均不同,所述聚合通信方式为alltoall;或,
所述第一处理器和所述第二处理器中的训练数据不同,所述聚合通信方式为allreduce。
15.如权利要求14所述的方法,其特征在于,所述第一处理器基于聚合通信方式和所述第一处理器的中间数据,确定所述第一目标数据,包括:
所述第一处理器基于所述alltoall,以及所述alltoall对应的处理器总数,将所述第一处理器的中间数据进行划分;
其中,所述alltoall对应的处理器中包括所述第一处理器和所述第二处理器;
所述划分之后的数据份数等于所述处理器总数,且所述划分之后的数据中包括与所述第二处理器对应的所述第一目标数据。
16.如权利要求15所述的方法,其特征在于,所述alltoall对应于S个节点,所述第一节点是所述S个节点中的第s1个,所述第二节点是所述S个节点中的第s2个,其中,s1、s2取遍[0,S]中的整数,且s1小于s2;
所述第二处理器是所述第二节点中包括的C个处理器;所述第一目标数据是所述划分之后的S×C个数据中、第(s2×C)个至第(s2×C+C-1)个数据。
17.如权利要求14至16中任一项所述的方法,其特征在于,所述alltoall对应于W个群组,所述第一节点是所述W个群组中第w1个群组的第s1个节点,所述第二节点是所述W个群组中第w2个群组的第s2个节点;
其中,w1取遍[0,W-1]中的整数,w2=w1+offset,其中offset=((s2%W)-(s1%W))%W。
18.如权利要求14所述的方法,其特征在于,所述第一处理器基于聚合通信方式和所述第一处理器的中间数据,确定所述第一目标数据,包括:
所述第一处理器基于所述allreduce,以及所述第一节点中处理器总数C,将所述第一处理器的中间数据进行划分,以得到C个数据;
所述第一处理器通过所述第一节点的节点内通道,获取所述第一节点中其他(C-1)个处理器的第i个数据;
所述第一处理器将所述C个数据中的第i个数据,以及所述第一节点中其他(C-1)个处理器的第i个数据进行加和之后,得到所述第一目标数据;
其中,所述第一处理器是所述第一节点中的第i个处理器,所述第二处理器是所述第二节点中的第i个处理器。
19.如权利要求14所述的方法,其特征在于,所述allreduce对应于W个群组,一个群组中包括S个节点,一个节点中包括C个处理器;所述第一处理器是所属群组中的第i个处理器;所述第二处理器是所属群组中的第i个处理器;
所述第一处理器基于聚合通信方式和所述第一处理器的中间数据,确定所述第一目标数据,包括:
所述第一处理器基于所述allreduce,以及群组中处理器总数S×C,将所述第一处理器的中间数据进行划分,以得到S×C个数据;
所述第一处理器通过所述第一节点的节点内通道,和/或,所述第一节点与所属群组中其他(S-1)个节点之间的、MEMS构建的光传输通道,获取所属群组中其他(S×C-1)个处理器的第i个数据;
所述第一处理器将所述S×C个数据中的第i个数据,以及所属群组中其他(S×C-1)个处理器的第i个数据进行加和之后,得到所述第一目标数据。
20.如权利要求10至19中任一项所述的方法,其特征在于,还包括:
所述第一处理器获取第二目标数据,所述第二目标数据是所述第二处理器执行所述第二处理器中模型训练得到的、待传输至所述第一处理器中的数据;
所述第一处理器根据所述第二目标数据,调整所述第一处理器中模型训练的参数。
21.如权利要求10至20中任一项所述的方法,其特征在于,所述第一处理器执行所述第一处理器中模型训练,得到第一目标数据之前,还包括:
所述第一处理器根据用于联合训练模型的多个节点的节点总数、WSS的端口总数以及所述WSS中可用波长总数,将所述多个节点划分为W组;
其中,当所述WSS中可用波长总数小于所述WSS的端口总数,且所述W个群组中一个群组对应于2个预设波长时,所述W等于所述WSS中可用波长总数的1/2。
22.一种芯片,其特征在于,包括至少一个处理器和接口;
所述接口,用于为所述至少一个处理器提供程序指令或者数据;
所述至少一个处理器用于执行所述程序行指令,以实现如权利要求10至21中任一项所述的方法。
23.一种计算设备,其特征在于,包括处理器,所述处理器与存储器相连,所述存储器用于存储计算机程序,所述处理器用于执行所述存储器中存储的计算机程序,以实现如权利要求10至21中任一项所述的方法。
24.一种计算机程序产品,其特征在于,所述计算机程序产品包括计算机程序或指令,当所述计算机程序或指令被执行时,实现如权利要求10至21中任一项所述的方法。
25.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序或指令,当所述计算机程序或指令被执行时,实现如权利要求10至21中任一项所述的方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2022/096842 WO2023071193A1 (zh) | 2021-10-28 | 2022-06-02 | 一种模型训练系统和方法 |
EP22885103.6A EP4414904A1 (en) | 2021-10-28 | 2022-06-02 | Model training system and method |
US18/646,489 US20240296327A1 (en) | 2021-10-28 | 2024-04-25 | Model training system and method |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111265110 | 2021-10-28 | ||
CN2021112651107 | 2021-10-28 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116049084A true CN116049084A (zh) | 2023-05-02 |
Family
ID=86120530
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111617115.1A Pending CN116049084A (zh) | 2021-10-28 | 2021-12-27 | 一种模型训练系统和方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20240296327A1 (zh) |
EP (1) | EP4414904A1 (zh) |
CN (1) | CN116049084A (zh) |
WO (1) | WO2023071193A1 (zh) |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10521283B2 (en) * | 2016-03-07 | 2019-12-31 | Mellanox Technologies, Ltd. | In-node aggregation and disaggregation of MPI alltoall and alltoallv collectives |
WO2019211089A1 (en) * | 2018-04-30 | 2019-11-07 | Koninklijke Philips N.V. | Adapting a machine learning model based on a second set of training data |
CN111612167B (zh) * | 2019-02-26 | 2024-04-16 | 京东科技控股股份有限公司 | 机器学习模型的联合训练方法、装置、设备及存储介质 |
WO2020199143A1 (zh) * | 2019-04-03 | 2020-10-08 | 华为技术有限公司 | Ai训练网络及方法 |
CN110908799A (zh) * | 2019-11-08 | 2020-03-24 | 浪潮电子信息产业股份有限公司 | 一种分布式训练中的通信方法、装置、设备、介质 |
CN112270711B (zh) * | 2020-11-17 | 2023-08-04 | 北京百度网讯科技有限公司 | 模型训练以及姿态预测方法、装置、设备以及存储介质 |
CN113033828B (zh) * | 2021-04-29 | 2022-03-22 | 江苏超流信息技术有限公司 | 模型训练方法、使用方法、系统、可信节点及设备 |
-
2021
- 2021-12-27 CN CN202111617115.1A patent/CN116049084A/zh active Pending
-
2022
- 2022-06-02 WO PCT/CN2022/096842 patent/WO2023071193A1/zh active Application Filing
- 2022-06-02 EP EP22885103.6A patent/EP4414904A1/en active Pending
-
2024
- 2024-04-25 US US18/646,489 patent/US20240296327A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US20240296327A1 (en) | 2024-09-05 |
EP4414904A1 (en) | 2024-08-14 |
WO2023071193A1 (zh) | 2023-05-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Mao et al. | Routing or computing? The paradigm shift towards intelligent computer network packet transmission based on deep learning | |
Wang et al. | Neural network meets DCN: Traffic-driven topology adaptation with deep learning | |
WO2022073320A1 (en) | Methods and systems for decentralized federated learning | |
Salehisadaghiani et al. | Distributed Nash equilibrium seeking via the alternating direction method of multipliers | |
JP2016197389A (ja) | 学習システム、学習プログラムおよび学習方法 | |
JP7447241B2 (ja) | 円環コンピュータネットワークへのリングの組み込み | |
CN118214718B (zh) | 拥塞控制方法、电子设备、存储介质和程序产品 | |
US20190349318A1 (en) | Methods and apparatus for serialized routing within a fractal node array | |
Wu et al. | Peta-scale embedded photonics architecture for distributed deep learning applications | |
CN116049084A (zh) | 一种模型训练系统和方法 | |
CN117135059B (zh) | 一种网络拓扑结构、构造方法、路由算法、设备及介质 | |
CN112529148B (zh) | 一种基于图神经网络的智能QoS推理方法 | |
Ottino et al. | RAMP: a flat nanosecond optical network and MPI operations for distributed deep learning systems | |
CN112073983B (zh) | 基于流量预测的无线数据中心网络拓扑优化方法及系统 | |
Cheng et al. | Routing and spectrum assignment employing long short-term memory technique for elastic optical networks | |
US11863231B2 (en) | Optical network optimizer and optical network optimization method thereof | |
Zhang et al. | Accelerate deep learning in IoT: Human-interaction co-inference networking system for edge | |
CN101834690B (zh) | 一种波长分配的计算方法及装置 | |
De Magalhães et al. | Hyco: A low-latency hybrid control plane for optical interconnection networks | |
Chen et al. | Wavelength assignment for realizing parallel FFT on regular optical networks | |
Yang et al. | Virtual network function placement based on differentiated weight graph convolutional neural network and maximal weight matching | |
Ding et al. | GROM: A generalized routing optimization method with graph neural network and deep reinforcement learning | |
WO2024183460A1 (zh) | 一种人工智能计算系统及方法 | |
Wang et al. | NeuralMon: Graph neural network for flow measurement allocation | |
EP4446881A1 (en) | Aggregation communication method and device |
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 |