CN110033078A - 一种基于树状拓扑的计算系统及方法 - Google Patents
一种基于树状拓扑的计算系统及方法 Download PDFInfo
- Publication number
- CN110033078A CN110033078A CN201810033391.5A CN201810033391A CN110033078A CN 110033078 A CN110033078 A CN 110033078A CN 201810033391 A CN201810033391 A CN 201810033391A CN 110033078 A CN110033078 A CN 110033078A
- Authority
- CN
- China
- Prior art keywords
- node
- node cluster
- calculate
- cluster
- calculated result
- 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
- 238000000034 method Methods 0.000 title claims abstract description 59
- 238000006116 polymerization reaction Methods 0.000 claims description 74
- 238000012549 training Methods 0.000 claims description 52
- 230000005540 biological transmission Effects 0.000 claims description 46
- 238000013528 artificial neural network Methods 0.000 claims description 39
- 238000004364 calculation method Methods 0.000 claims description 14
- 239000004744 fabric Substances 0.000 claims description 13
- 241000208340 Araliaceae Species 0.000 claims description 5
- 235000005035 Panax pseudoginseng ssp. pseudoginseng Nutrition 0.000 claims description 5
- 235000003140 Panax quinquefolius Nutrition 0.000 claims description 5
- 235000008434 ginseng Nutrition 0.000 claims description 5
- 230000008569 process Effects 0.000 description 32
- 238000010586 diagram Methods 0.000 description 27
- 238000004422 calculation algorithm Methods 0.000 description 18
- 230000001360 synchronised effect Effects 0.000 description 14
- 238000012545 processing Methods 0.000 description 12
- 230000006870 function Effects 0.000 description 10
- 238000003860 storage Methods 0.000 description 10
- 235000013399 edible fruits Nutrition 0.000 description 9
- 238000004891 communication Methods 0.000 description 5
- 238000009826 distribution Methods 0.000 description 5
- 238000003062 neural network model Methods 0.000 description 5
- 238000010276 construction Methods 0.000 description 4
- 230000003993 interaction Effects 0.000 description 4
- 230000002452 interceptive effect Effects 0.000 description 4
- 238000007726 management method Methods 0.000 description 4
- 238000004519 manufacturing process Methods 0.000 description 4
- 230000001537 neural effect Effects 0.000 description 4
- 238000005457 optimization Methods 0.000 description 4
- 101100388291 Arabidopsis thaliana DTX49 gene Proteins 0.000 description 3
- 108091006146 Channels Proteins 0.000 description 3
- 102100035027 Cytosolic carboxypeptidase 1 Human genes 0.000 description 3
- 101100268840 Danio rerio chrna1 gene Proteins 0.000 description 3
- 101000946505 Homo sapiens Cytosolic carboxypeptidase 1 Proteins 0.000 description 3
- 101150065731 NIC1 gene Proteins 0.000 description 3
- PWHVEHULNLETOV-UHFFFAOYSA-N Nic-1 Natural products C12OC2C2(O)CC=CC(=O)C2(C)C(CCC2=C3)C1C2=CC=C3C(C)C1OC(O)C2(C)OC2(C)C1 PWHVEHULNLETOV-UHFFFAOYSA-N 0.000 description 3
- 230000009471 action Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- WYDFSSCXUGNICP-UHFFFAOYSA-N 24-methylenecholesta-5,7-dien-3beta-ol Natural products C1C2(C)OC2(C)C(O)OC1C(C)C1C2(C)CCC3C4(C)C(=O)C=CCC4(O)C4OC4C3C2CC1 WYDFSSCXUGNICP-UHFFFAOYSA-N 0.000 description 2
- 101100388296 Arabidopsis thaliana DTX51 gene Proteins 0.000 description 2
- 101100388299 Arabidopsis thaliana DTX54 gene Proteins 0.000 description 2
- 101100388300 Arabidopsis thaliana DTX55 gene Proteins 0.000 description 2
- 101100294133 Arabidopsis thaliana NIC2 gene Proteins 0.000 description 2
- 101100294134 Arabidopsis thaliana NIC3 gene Proteins 0.000 description 2
- WYDFSSCXUGNICP-CDLQDMDJSA-N C[C@@H]([C@H]1CC[C@H]2[C@@H]3[C@@H]4O[C@@H]4[C@@]4(O)CC=CC(=O)[C@]4(C)[C@H]3CC[C@]12C)[C@H]1C[C@]2(C)O[C@]2(C)C(O)O1 Chemical compound C[C@@H]([C@H]1CC[C@H]2[C@@H]3[C@@H]4O[C@@H]4[C@@]4(O)CC=CC(=O)[C@]4(C)[C@H]3CC[C@]12C)[C@H]1C[C@]2(C)O[C@]2(C)C(O)O1 WYDFSSCXUGNICP-CDLQDMDJSA-N 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 125000004122 cyclic group Chemical group 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000011478 gradient descent method Methods 0.000 description 2
- 230000006855 networking Effects 0.000 description 2
- GWWNCLHJCFNTJA-UHFFFAOYSA-N nicandrenone-2 Natural products C12OC2C2(O)CC=CC(=O)C2(C)C(CCC23C)C1C3CCC2(O)C(C)C1OC(O)C2(C)OC2(C)C1 GWWNCLHJCFNTJA-UHFFFAOYSA-N 0.000 description 2
- 238000011144 upstream manufacturing Methods 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 230000004931 aggregating effect Effects 0.000 description 1
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000035045 associative learning Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000033228 biological regulation Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000005314 correlation function Methods 0.000 description 1
- 230000001186 cumulative effect Effects 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 238000004880 explosion Methods 0.000 description 1
- 230000013016 learning Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000001404 mediated effect Effects 0.000 description 1
- 210000005036 nerve Anatomy 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000013439 planning Methods 0.000 description 1
- 238000012805 post-processing Methods 0.000 description 1
- 238000012913 prioritisation Methods 0.000 description 1
- 230000001737 promoting effect Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000012827 research and development Methods 0.000 description 1
- 230000000630 rising effect Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 238000002945 steepest descent method Methods 0.000 description 1
- 230000007474 system interaction Effects 0.000 description 1
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5066—Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
-
- 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/045—Combinations of networks
-
- 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
-
- 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
- G06N3/084—Backpropagation, e.g. using gradient descent
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/01—Dynamic search techniques; Heuristics; Dynamic trees; Branch-and-bound
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/44—Star or tree networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0893—Assignment of logical groups to network elements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5017—Task decomposition
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Biomedical Technology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biophysics (AREA)
- Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Neurology (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Databases & Information Systems (AREA)
Abstract
本发明实施例公开了一种基于树状拓扑的计算系统及方法,可包括:多个节点簇,所述多个节点簇以树状拓扑方式构成多层级的网络结构,所述网络结构中的任意一个最小树,包括作为父节点的第二节点簇和作为子节点的至少一个第一节点簇,其中,第一节点簇用于根据第一计算输入得到第一计算结果,并将所述第一计算结果发送至所述第二节点簇;第二节点簇,用于通过所述物理链路接收所述至少一个第一节点簇发送的至少一个第一计算结果,并将所述至少一个第一计算结果与第二计算结果进行聚合得到第三计算结果,所述第二计算结果为所述第二节点簇根据第二计算输入得到的结果。采用本申请可以解决分布式计算系统的可扩展性,提高计算效率。
Description
技术领域
本发明涉及计算技术领域,尤其涉及一种基于树状拓扑的计算系统及方法。
背景技术
人工智能(Artificial Intelligence,AI)应用呈现爆发式的增长,在AI应用中,深度神经网络是基础。近来,深度神经网络在语音识别、图像识别、复杂游戏等领域都获得了突破性的应用,被部署到人脸识别、安全城市、自动驾驶、医学图像检测、AI智能围棋、会议记录系统等很多领域,深度神经网络表现不俗,甚至超过了人类。这得益于深度神经网络能够从原始数据中提取高层特征,并从海量数据中进行有效的学习。
为了进一步提升深度神经网络的性能,网络的深度、网络参数数量、计算算法强度、训练数据集都在增加,计算复杂度大大增加,训练耗时也在大幅度增加。以ResNet-50典型网络为例,基于ImageNet训练数据集,完成90代的训练,采用常用的8块K80组成的高性能服务器,需要44小时才能完成。即使采用现今最快的8块V100组成的高性能服务器,也需要8小时左右才能完成90代的训练。训练耗时还是很长,深度神经网络模型和算法研究人员需要等待很久才能得到反馈,这严重影响到模型和算法的开发效率。尤其是新领域、新模型、新算法,往往需要尝试多组超参,反复进行调整和优化才能得到理想的结果,这个过程就更长,已经成为研发->验证->上线过程中的关键瓶颈。
因此,深度神经网络在多领域的大规模推行、部署和应用,对训练效率提出更高、更快的要求,单服务器节点的训练效率已远远满足不了生产环境的需要。为了解决该问题,现有技术中通常采用大规模分布式训练,该模型将训练过程分布在多个计算节点上进行,并通过聚合得到最终的训练结果,以缓解单服务节点的计算压力,提升计算效率。但是,由于大规模分布式训练中的各个计算节点之间的带宽有限,当训练数据量大时,可能使得聚合过程变慢,计算效率低。
发明内容
本发明实施例所要解决的技术问题在于,提供一种基于树状拓扑的计算系统及方法,解决了大规模分布式训练中计算系统的计算效率低的问题。
第一方面,本发明实施例提供了一种基于树状拓扑的计算系统,可包括:
多个节点簇,所述多个节点簇以树状拓扑方式构成多层级的网络结构,所述网络结构中的任意一个最小树,包括作为父节点的第二节点簇和作为子节点的至少一个第一节点簇,所述第二节点簇和所述至少一个第一节点簇之间通过物理链路连接,其中,所述至少一个第一节点簇中的每一个第一节点簇,用于根据第一计算输入得到第一计算结果,并通过所述物理链路将所述第一计算结果发送至所述第二节点簇;所述第二节点簇,用于通过所述物理链路接收所述至少一个第一节点簇发送的至少一个第一计算结果,并将所述至少一个第一计算结果与第二计算结果进行聚合得到第三计算结果,所述第二计算结果为所述第二节点簇根据第二计算输入得到的结果。
本发明实施例提供的计算系统,通过每个节点簇既负责本计算节点簇的计算结果,也负责对其连接的低层级的节点簇的计算结果进行聚合,不仅完成了数据从低层级到高层级的传输,也在传输的过程中,逐层的完成了节点簇之间的数据聚合,减小了带宽中传输的待聚合的数据量,并且,由于本发明实施例是采用树状组网拓扑,因此同一个层级的不同节点簇之间的计算和聚合是并行的,进一步地提高了计算和聚合效率,解决了大规模分布式训练中计算效率低的问题。
在一种可能的实现方式中,所述第二节点簇由至少一个第二计算节点组成,所述第二计算节点为神经网络加速器;所述第一节点簇由至少一个第一计算节点组成,所述第一计算节点为神经网络加速器。本发明实施例通过在节点簇中设置一个或多个神经网络加速器,以实现在神经网络中的多个并行计算。
在一种可能的实现方式中,所述第二节点簇还用于;将所述第三计算结果发送至第三节点簇进行聚合,所述第三节点簇为所述第二节点簇的父节点。本发明实施例,通过第二节点簇将低层级的第一节点簇的计算结果进行聚合后,再向其作为子节点的最小树中的父节点发送聚合后的第三结果,以进行更高层级的聚合。
在一种可能的实现方式中,所述网络结构中的任意一个最小树中,包括一个第二节点簇和k个第一节点簇,其中,k为大于或者等于1的整数。本发明实施例,设置每一个最小树均按照k:1进行收敛,便于管理和扩展。
在一种可能的实现方式中,所述第二节点簇包括k个第二计算节点,所述k个第一节点簇中的任意一个第一节点簇包含k个第一计算节点;在所述网络结构中的任意一个最小树中,所述第二节点簇中的k个第二计算节点分别与所述k个第一节点簇一一对应,且所述k个第二计算节点中的任意一个第二计算节点和对应的第一节点簇中的所述k个第一计算节点之间通过物理链路连接。本发明实施例中,每个节点簇中均包括k个计算节点,便于进行分布式计算和分布式聚合,并且作为父节点的第二节点簇中的k个第二计算节点分别与k个第一节点簇一一对应,即一个第二计算节点负责对一个第一节点簇进行上行聚合,均衡聚合过程,有利于进一步提升计算系统的计算效率。
在一种可能的实现方式中,所述k个第一节点簇中的任意一个第一节点簇,具体用于:将所述第一计算输入分布在所述k个第一计算节点上进行分布式计算,得到k个第一分布式计算结果;根据所述k个第一分布式计算结果,分别在所述k个第一计算节点上进行分布式聚合,在每个第一计算节点上得到所述第一计算结果的其中一个分块;通过所述k个第一计算节点将所述第一计算结果的k个分块同步或异步发送给对应的第二计算节点进行聚合。本发明实施例中,将作为子节点的第一节点簇的计算任务分布在k个第一计算节点上并行处理,分别得到每个第一计算节点的计算结果后,又并行在k个第一计算节点之间并行聚合,大大提升计算和聚合效率。
在一种可能的实现方式中,所述第二节点簇,具体用于:将所述第二计算输入分布在所述k个第二计算节点上进行分布式计算,得到k个第二分布式计算结果,所述k个第二分布式计算结果为所述第二计算结果;通过所述k个第二计算节点,分别接收对应的第一节点簇中的k个第一计算节点发送的所述第一计算结果的k个分块;通过所述k个第二计算节点,分别将每个第二计算节点上计算得到的第二分布式计算结果和对应的第一节点簇的第一计算结果的k个分块进行聚合;将所述k个第二计算节点分别聚合后的结果进行分布式聚合,在每个第二计算节点上得到所述第三计算结果的其中一个分块。本发明实施例中,将作为父节点的第二节点簇的计算任务分布在k个第二计算节点上并行处理,分别得到每个第二计算节点的计算结果后,每个第二计算节点将对应的k个第一节点簇发送过来的计算结果,进行本计算节点的聚合,且k个第二计算节点之间的该过程为并行操作,最后通过k个第二计算节点之间再进行一次节点间的分布式聚合,得到该第二节点簇最终的聚合结果,大大提升计算和聚合效率。
在一种可能的实现方式中,所述k个第一节点簇中的任意一个第一节点簇,具体用于:将所述第一计算输入分布在所述k个第一计算节点上进行分布式计算,得到k个第一分布式计算结果;根据所述k个分布式计算结果在所述k个第一计算节点中的指定第一计算节点上进行聚合,得到所述第一计算结果;通过所述指定的第一计算节点发送给对应的第二计算节点进行聚合。本发明实施例中,将作为子节点的第一节点簇的计算任务分布在k个第一计算节点上并行处理,分别得到每个第一计算节点的计算结果后,然后在k个第一计算节点中指定的第一计算节点上进行聚合,再发送给第二计算节点进行更高层级的聚合,大大提升计算和聚合效率。
在一种可能的实现方式中,所述第二节点簇,具体用于:将所述第二计算输入分布在所述k个第二计算节点上进行分布式计算,得到k个第二分布式计算结果;通过所述k个第二计算节点,分别接收对应的第一节点簇中所述指定第一计算节点发送的所述第一计算结果,并与得到的所述第二分布式计算结果进行聚合;通过所述k个第二计算节点中的指定第二计算节点,将所述k个第二计算节点分别聚合后的结果进行聚合,得到所述第三计算结果。本发明实施例中,将作为父节点的第二节点簇的计算任务分布在k个第二计算节点上并行处理,分别得到每个第二计算节点的计算结果后,每个第二计算节点将对应的k个第一节点簇发送过来的计算结果,进行本计算节点的聚合,且k个第二计算节点之间的该过程为并行操作,最后通过k个第二计算节点中的指定第二计算节点再进行一次节点间的聚合,得到该第二节点簇最终的聚合结果,大大提升计算和聚合效率。
在一种可能的实现方式中,所述第一计算输入包括第一参数;所述第二节点簇,还用于:将所述第一参数通过所述k个第二计算节点分别发送给所述k个第一节点簇。本发明实施例中,作为父节点的第二节点簇通过k个第一计算节点将第一计算节点的相关计算输入参数并行下发给对应的第一节点簇,以提升第一节点簇获得相关参数的速度,提高了整个系统的参数同步效率。
在一种可能的实现方式中,所述第二节点簇,具体用于:通过每一个第二计算节点,将分为k份的所述第一参数分别发送给对应的第一节点簇中的k个第一计算节点,以使得所述k个第一计算节点之间广播所述第一参数;或者,通过述k个第二计算节点,分别将所述第一参数并行发送给对应的第一节点簇中的k个第一计算节点;或者通过述k个第二计算节点,分别将所述第一参数发送给对应的第一节点簇中的其中一个第一计算节点,以使得所述其中一个第一计算节点将所述第一参数在同簇内的其它第一计算节点之间进行广播。本发明实施例中,通过在计算系统的相关参数下发过程中,或将第一参数分为k份并行发送给k个第一计算节点,或将第一参数同时发给k个第一计算节点,或将第一参数直接发送给某个第一计算节点,然后该第一计算节点再在同簇内的其它第一计算节点间进行广播,实现第一参数的下发过程。
在一种可能的实现方式中,所述第二节点簇和所述至少一个第一节点簇之间通过物理链路进行直连。本发明实施例中,计算系统中的每个最小树中的第二节点簇和第一节点簇之间可以通过物理链路直连。
在一种可能的实现方式中,所述计算系统还包括交换机,所述交换机与所述多个节点簇分别通过物理链路进行直连;所述第二节点簇和所述至少一个第一节点簇之间通过所述交换机进行连接。本发明实施例中,计算系统中的每个最小树中的第二节点簇和第一节点簇之间可以通过交换机的方式进行间接物理连接。
在一种可能的实现方式中,所述计算系统为神经网络计算系统;所述第一计算输入和所述第二计算输入包括权值、训练数据、偏置和超级参数,所述第一计算结果、所述第二计算结果和所述第三计算结果为梯度。本发明实施例中,将计算系统应用到神经网络训练模型中,对应的计算输入则为神经网络的训练模型中的相关参数,对应的计算结果则为梯度值。
第二方面,本发明实施例提供了一种计算方法,可包括:
第二节点簇接收至少一个第一节点簇发送的第一计算结果,所述第一计算结果为所述至少一个第一节点簇中的每一个第一节点簇根据第一计算输入得到的结果,其中,所述第一节点簇和所述第二节点簇在同一个树状网络结构的任意一个最小树中,所述第二节点簇为所述至少一个第一节点簇的父节点;
所述第二节点簇将所述第一计算结果与第二计算结果进行聚合得到第三计算结果,所述第二计算结果为所述第二节点簇根据第二计算输入得到的结果;
所述第二节点簇将所述第三计算结果发送至第三节点簇进行聚合,所述第三节点簇在所述树状网络拓扑中,且所述第三节点簇为所述第二节点簇的父节点。
在一种可能的实现方式中,所述第二节点簇包括k个第二计算节点,所述k个第一节点簇中的任意一个第一节点簇包含k个第一计算节点;在所述网络结构中的任意一个最小树中,所述第二节点簇中的k个第二计算节点分别与所述k个第一节点簇一一对应,且所述k个第二计算节点中的任意一个第二计算节点和对应的第一节点簇中的所述k个第一计算节点之间通过物理链路连接。
在一种可能的实现方式中,所述第二节点簇将所述第一计算结果与所述第二计算结果进行聚合得到第三计算结果,包括:所述第二节点簇将所述第二计算输入分布在所述k个第二计算节点上进行分布式计算,得到k个第二分布式计算结果,所述k个第二分布式计算结果为所述第二计算结果;所述第二节点簇通过所述k个第二计算节点,分别接收对应的第一节点簇中的k个第一计算节点发送的所述第一计算结果的k个分块;所述第二节点簇通过所述k个第二计算节点,分别将每个第二计算节点上计算得到的第二分布式计算结果和对应的第一节点簇的第一计算结果的k个分块进行聚合;所述第二节点簇将所述k个第二计算节点分别聚合后的结果进行分布式聚合,在每个第二计算节点上得到所述第三计算结果的其中一个分块。
在一种可能的实现方式中,所述第二节点簇将所述第一计算结果与所述第二计算结果进行聚合得到第三计算结果,包括:所述第二节点簇将所述第二计算输入分布在所述k个第二计算节点上进行分布式计算,得到k个第二分布式计算结果;所述第二节点簇通过所述k个第二计算节点,分别接收对应的第一节点簇中所述指定第一计算节点发送的所述第一计算结果,并与得到的所述第二分布式计算结果进行聚合;所述第二节点簇通过所述k个第二计算节点中的指定第二计算节点,将所述k个第二计算节点分别聚合后的结果进行聚合,得到所述第三计算结果。
在一种可能的实现方式中,所述方法,还包括:所述第二节点簇将所述第一参数通过所述k个第二计算节点分别发送给所述k个第一节点簇。
在一种可能的实现方式中,所述第二节点簇将所述第一参数通过所述k个第二计算节点分别发送给所述k个第一节点簇,包括:所述第二节点簇通过每一个第二计算节点,将分为k份的所述第一参数分别发送给对应的第一节点簇中的k个第一计算节点,以使得所述k个第一计算节点之间广播所述第一参数;或者所述第二节点簇通过述k个第二计算节点,分别将所述第一参数并行发送给对应的第一节点簇中的k个第一计算节点;或者所述第二节点簇通过述k个第二计算节点,分别将所述第一参数发送给对应的第一节点簇中的其中一个第一计算节点,以使得所述其中一个第一计算节点将所述第一参数在同簇内的其它第一计算节点之间进行广播。
在一种可能的实现方式中,所述第一计算输入和所述第二计算输入包括权值、训练数据、偏置和超级参数,所述第一计算结果、所述第二计算结果和所述第三计算结果为梯度。
第三方面,本申请提供一种计算机存储介质,用于储存为上述第一方面提供的计算系统所用的计算机软件指令,其包含用于执行上述方面所设计的程序。
第四方面,本发明实施例提供了一种计算机程序,该计算机程序包括指令,当该计算机程序被计算机执行时,使得计算机可以执行上述第一方面中计算系统中的流程。
第五方面,本申请提供了一种节点簇,该节点簇,用于支持上述第一方面中的计算系统中第一节点簇或第二节点簇所实现的功能。
附图说明
为了更清楚地说明本发明实施例或背景技术中的技术方案,下面将对本发明实施例或背景技术中所需要使用的附图进行说明。
图1是全连接架构示意图。
图2是环状组网架构示意图。
图3是胖树组网架构示意图。
图4是本发明实施例提供的一种基于树状拓扑的计算系统架构图。
图5是本发明实施例提供的一种最小树中节点簇间连接关系的结构示意图。
图6为本发明实施例提供的一种最小树中父子节点结构及连接关系示意图。
图7为本发明实施例提供的一种节点簇间的数据上行传输路径示意图。
图8为本发明实施例提供的一种计算系统上行聚合示意图。
图9为本发明实施例提供的一种节点簇间的数据下行传输路径示意图。
图10为本发明实施例提供的一种计算系统参数下发示意图。
图11为本发明实施例提供的一种聚合同步流水线算法示意图。
图12为本发明实施例提供的另一种基于树状拓扑的计算系统中的最小树的架构示意图。
图13为本发明实施例提供的一种大规模计算系统架构示意图。
图14为本发明实施例提供的一种计算方法流程示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例进行描述。
本申请的说明书和权利要求书及所述附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
在本说明书中使用的术语“部件”、“模块”、“系统”等用于表示计算机相关的实体、硬件、固件、硬件和软件的组合、软件、或执行中的软件。例如,部件可以是但不限于,在处理器上运行的进程、处理器、对象、可执行文件、执行线程、程序和/或计算机。通过图示,在计算设备上运行的应用和计算设备都可以是部件。一个或多个部件可驻留在进程和/或执行线程中,部件可位于一个计算机上和/或分布在2个或更多个计算机之间。此外,这些部件可从在上面存储有各种数据结构的各种计算机可读介质执行。部件可例如根据具有一个或多个数据分组(例如来自与本地系统、分布式系统和/或网络间的另一部件交互的二个部件的数据,例如通过信号与其它系统交互的互联网)的信号通过本地和/或远程进程来通信。
首先,对本申请中的部分用语进行解释说明,以便于本领域技术人员理解。
(1)固态硬盘(Solid State Drives,SSD),用固态电子存储芯片阵列而制成的硬盘,由控制单元和存储单元(FLASH芯片、DRAM芯片)组成。固态硬盘在接口的规范和定义、功能及使用方法上与普通硬盘的完全相同,在产品外形和尺寸上也完全与普通硬盘一致。
(2)网络适配器(Network Interface Card,NIC)台式机一般都采用内置网NNA来连接网络。网络适配器也叫“网NNA”,网NNA是局域网中最基本的部件之一,它是连接计算机与网络的硬件设备。无论是双绞线连接、同轴电缆连接还是光纤连接,都必须借助于网NNA才能实现数据的通信。它的主要技术参数为带宽、总线方式、电气接口方式等。它的基本功能为:从并行到串行的数据转换,包的装配和拆装,网络存取控制,数据缓存和网络信号。
(3)NVMe(Non-Volatile Memory express,NVMe)协议是一种建立在M.2接口上的类似AHCI的一种协议,是专门为闪存类存储设计的协议。
(4)双倍速率同步动态随机存储器(Double Data Rate Synchronous DynamicRandom Access Memory,DDR SDRAM),简称为DDR。DDR内存是在SDRAM内存基础上发展而来的,仍然沿用SDRAM生产体系,因此对于内存厂商而言,只需对制造普通SDRAM的设备稍加改进,即可实现DDR内存的生产,可有效的降低成本。与传统的单数据速率相比,DDR技术实现了一个时钟周期内进行两次读/写操作,即在时钟的上升沿和下降沿分别执行一次读/写操作。
(5)高速串行计算机扩展总线标准(Peripheral Component Interconnectexpress,PCI-Express)简称PCIe,是一种高速串行计算机扩展总线标准总线作为处理器系统的局部总线,其作用与PCI总线类似,主要目的是为了连接处理器系统中的外部设备,当然PCIe总线也可以连接其他处理器系统。在不同的处理器系统中,PCIe体系结构的实现方法略有不同。但是在大多数处理器系统中,都使用了RC、Switch和PCIe-to-PCI桥这些基本模块连接PCIe和PCI设备。在PCIe总线中,基于PCIe总线的设备,也被称为EP(Endpoint)。
(6)神经网络加速器(Neural Network Accelerator,NN Accelerator/NNA),用于完成神经网络的前向传播、反向传播的计算。神经网络加速器作为一种处理器,可以是图形处理器(Graphics Processing Unit,GPU),也可以基于现场可编程门阵列(FieldProgrammable Gate Array,FPGA)或专用集成电路(Application-specific integratedcircuit,ASIC)实现的处理器,本申请对其具体实现形式不做限定。
(7)神经网络处理器(Neural-network Processing Unit,NPU),采用“数据驱动并行计算”的架构,可以用于处理视频、图像类的海量多媒体数据。
(8)梯度聚合,梯度即函数在某一点最大的方向导数,函数沿梯度方向函数有最大的变化率。函数在某一点的梯度是这样一个向量,它的方向与取得最大方向导数的方向一致,而它的模为方向导数的最大值。而聚合是指将每个计算节点Worker计算得出的梯度数据进行累加。神经网络中的梯度下降法(Gradient descent)是一个一阶最优化算法,通常也称为最速下降法。要使用梯度下降法找到一个函数的局部极小值,必须向函数上当前点对应梯度(或者是近似梯度)的反方向的规定步长距离点进行迭代搜索。
其次,提出本申请需要解决的技术问题及应用场景。在现有技术中,大规模分布式训练系统中,在学术界和工业界得到广泛应用的训练方式是同步随机梯度下降、数据并行,该训练算法关键是:
(1)集群中每个计算节点独立完成各自mini-batch训练数据的计算,获得梯度;
(2)集群中所有的计算节点需要将计算获得的梯度进行聚合,形成聚合后的梯度;
(3)基于聚合后的梯度,再结合学习速率等超参,计算出新的参数值;
(4)将新参数值分发到集群中每个计算节点;
(5)所有的计算节点在获取到新参数值之后,启动下一轮的迭代计算。
由上述过程可见,深度神经网络训练是计算密集型、网络带宽密集型、并且对时延很敏感的高强度计算过程。下述表1是典型深度神经网络的神经网络模型,以及对应模型的参数个数和参数大小列表。其中,K=1000,M=1000*1000=100万。
表1
神经网络模型 | 参数个数 | 参数大小(Float32) |
CIFAR-10 quick | 145.6K | 582.4KBytes |
GoogLeNet | 5M | 20MBytes |
Inception-V3 | 27M | 108MBytes |
VGG19 | 143M | 572MBytes |
VGG19-22K | 229M | 916MBytes |
ResNet-152 | 60.2M | 240.8MBytes |
由上述列表可以看出,不同网络模型的参数个数、参数大小差异较大。以VGG19-22K为例,其参数大小高达916MByte,再结合上述训练过程的中的关键点(2)和关键点(4),可见训练过程中计算节点间梯度、参数交互非常频繁,流量也很大,并且随着集群中计算节点规模的增多而进一步加剧。因此,如何有效、快速在整个集群系统的所有计算节点间聚合、同步这些参数,是大规模分布式训练需要解决的关键问题。现有技术中已经有相关的解决方案,例如,
现有技术一:
分布式训练系统,当前广泛应用的是全连接结构(计算节点-参数服务器Worker-Parameter Server),其拓扑结构如图1所示,图1为全连接架构示意图,其工作原理如下:
整个集群中有很多Worker组成,Worker负责本节点的梯度计算。参数服务器(Parameter Server,PS)负责收集整个集群中所有Worker计算的梯度数据,将其进行聚合。基于聚合后的梯度数据计算出新的权值,再将新权值下发给所有的Worker。为了分担网络带宽、权值计算的压力,一般采用多个PS组成一个群组来承担该工作负载,令集群中的PS个数为P,Worker个数为W,其工作机制如下:
1、每个Worker将计算所得的梯度平均切成P份,分别发送给所有的PS,每个PS获取独立的一份;
2、每个PS收齐所有Worker发送来的梯度,计算生成新权值,分别发送给所有的Worker;
3、每个Worker将从所有PS接收到的权值拼接成一份完整的权值,用于新一轮的迭代计算。
上述现有技术一的缺点:
(1)集群性能:从上述Worker-PS的交互关系看,是一个全连接的拓扑结构,该集群的性能不高:令N为集群中Worker节点个数,梯度参数Size为M,节点之间传输带宽为B,节点之间进行网络传输的准备时间为ts,则完成同步随机梯度下降(Stochastic gradientdescent,SGD)训练算法中的梯度参数聚合、同步的耗时开销为:T=2*N*(ts+M/B),耗时开销为O(N),通讯时延较高,时延对分布式训练效率影响大。
(2)集群扩展性:上述全连接拓扑存在“多打一”现象,比如集群中所有Worker都需要向同一个PS发送梯度数据,随着Worker节点数量N的增加,严重程度恶化。“多打一”导致的网络丢包、拥塞严重影响系统的性能,集群加速比不高,集群规模可扩展性受限,难以组建大型的训练集群。
现有技术二:为了解决上述“多打一”问题,另一种方案是约束集群中Worker节点之间的发送/接收关系,形成一条逻辑环,即Ring结构,如图2所示,图2为环状组网架构示意图,Ring结构的工作机制如下:
1、每个Worker节点从其前序节点接收数据,针对接收的数据进行处理后,发送给其后序节点;
2、在现有技术中,为了提高效率,Worker一般将待传输的数据切成小片,多条传输通道流水线Pipeline并行传输,充分利用传输带宽资源。例如,如图2中的虚线所示,将传输的数据切成4个小片,即通过4条传输通道Pipeline并行传输。
上述现有技术二的缺点:
(1)集群性能:令N为集群中Worker节点个数,梯度参数Size为M,节点之间传输带宽为B,节点之间进行网络传输的准备时间为ts,则完成同步SGD训练算法中的梯度参数聚合、同步的耗时开销为:T=2*(N-1)*(ts+M/B),耗时开销为O(N),通讯时延较高,时延对分布式训练效率影响大。
(2)集群扩展性:Ring型拓扑通过约束Worker节点之间的数据发送/接收关系,逻辑上形成一条环。解决了“多打一”问题,但是随着节点数量增加,Ring环长度线性增加,端到端的时延也在线性增加,集群加速比不高,集群规模可扩展性受限,难以组建大型的训练集群。
现有技术三:为了解决Ring型拓扑中Ring环长度的问题,一种优化方案是采用下述胖树Fat-Tree组网,如图3所示,图3为胖树组网架构示意图,Fa-Tree结构的工作机制如下:
集群中节点Worker和参数服务器PS组成Tree型结构,按照k:1方式收敛(如图3所示,k=3)为了实现无阻塞交换,越往根节点,所需的网络带宽越高。
现有技术三的缺点:
(1)集群性能:令N为集群中Worker节点个数,梯度参数Size为M,节点之间传输带宽为B,节点之间进行网络传输的准备时间为ts,则完成同步SGD训练算法中的梯度参数聚合、同步的耗时开销为:T=2*Logk(N)*(ts+M/B),k为收敛比,耗时开销为O(Logk(N))。
(2)集群扩展性:为了支撑无阻塞网络,越往根节点,对网络带宽、交换能力要求越高。该要求随集群中节点数量线性增加;对于深度神经网络,参数Size很大,交互频繁,对根节点的网络带宽、交换能力要求更强,网络部署成本很高。整个集群中所有梯度汇聚到根节点,在根节点处形成计算热点,集群加速比、集群规模可扩展性受限,难以组建大型的训练集群。
综上,现有方案在集群的可扩展能力方面存在不足,当集群规模增大,集群中节点数量增加时,集群的性能下降、线性度恶化、部署成本增加,网络性能优化和集群运营的开销增加,不利于组建大规模的AI集群。因此,本申请所要解决的技术问题在于,在大规模分布式训练系统中,如何有效、快速地完成整个集群系统中所有计算节点间的相关参数的聚合、同步,以解决集群系统的可扩展性,利于构建大规模的AI集群,提高训练效率。
基于上述,下面先对本发明实施例提供的一种计算系统架构进行描述。请参见图4,图4是本发明实施例提供的一种基于树状拓扑的计算系统架构图,该计算系统10中可包括多个节点簇(图4中每个方框代表一个节点簇Cluster),该多个节点簇以树状拓扑方式构成多层级的网络结构(图4中以层级N=5为例),包括L0层、L1层、L2层、L3层和L4层。该网络结构中的任意一个最小树,包括作为父节点的第二节点簇和作为子节点的至少一个第一节点簇,且第二节点簇和所述至少一个第一节点簇之间通过物理链路连接。例如,图1中示出部分最小树(最小树1、最小树2、最小树3),在最小树1中,第二节点簇是父节点L4层-Cluster1,第一节点簇则有4个,包括L3层-Cluster1、L3层-Cluster2、L3层-Cluster3、L3层-Cluster4。以此类推,在最小树2和最小树3中,也均是由一个父节点和4个子节点构成的树,即可以理解的是,本申请中最小树是指在网络架构中相邻的两个层级,由较高层级的一个父节点和该父节点在较低层级中的所有子节点形成的树。且最小树的各个子节点与父节点之间均通过物理链路进行连接。其中
第一节点簇,用于根据第一计算输入得到第一计算结果,并通过所述物理链路将所述第一计算结果发送至所述第二节点簇。其中,第一计算输入则为初始或者迭代情况下计算系统为每个第一节点簇分配的计算任务的相关参数、训练数据等,第一计算结果则为第一节点簇根据第一计算输入计算得到的结果。在第一节点簇计算完成之后,需要将第一计算结果通过与父节点第二节点簇之间的物理链路发送至其父节点进行聚合。可以理解的是,本申请中的第一节点簇,是指计算系统中,每一个最小树中的所有子节点,也即是说在图4中的网络结构中,除了L4层-Cluster1,其他所有节点簇均可能在某个最小树中充当子节点的角色,因此,也均需要在其所归属的最小树中执行上述动作。
第二节点簇,用于通过所述物理链路接收所述至少一个第一节点簇发送的至少一个第一计算结果,并将所述至少一个第一计算结果与第二计算结果进行聚合得到第三计算结果,所述第二计算结果为所述第二节点簇根据第二计算输入得到的结果。即作为父节点的第二节点簇,不仅需要执行计算系统分配的计算任务得到第二计算结果,并且需要将第二计算结果与其所在最小树中的所有子节点分别计算得到的一个或多个第一计算结果进行汇聚。进一步地,当第二节点簇不为根节点时,还需要将所述第三计算结果发送至第二节点簇作为子节点对应的最小树中的父节点,即发送至第三节点簇进行更高层级的聚合。可以理解的是,本申请中的第二节点簇,是指计算系统中,每一个最小树中的父节点,也即是说在图1中的网络结构中,除了L0层的256个Clusters,其它所有节点簇均可能在某个最小树中充当父节点的角色。
需要说明的是,除根节点(如图4中的L4层-Cluster1)只充当父节点,以及最低层级的节点簇(如图4中的L0层的256个Clusters)只充当子节点以外,其它所有的节点簇都可能在某个最小树中成为第一节点簇,在另外一个最小树中成为第二节点簇。
在一种可能的实现方式中,所述网络结构中的任意一个最小树中,包括一个第二节点簇和k个第一节点簇,其中,k为大于或者等于1的整数。也即是说所述网络结构中的任意一个最小树按照k:1的方式进行收敛。图4中,k=4,因此在图4中,L0层有256个节点簇Clusters、L1层有64个Clusters、L2层有16个Clusters、L3层有4个Clusters和L4层有1个Clusters。但是可以理解的是,每个最小树的收敛比例可以相同也可以不同,本申请对此不作具体限定。
可选地,所述第一计算输入和所述第二计算输入包括权值、训练数据、偏置和超级参数,所述第一计算结果、所述第二计算结果和所述第三计算结果为梯度。当将上述计算系统应用到AI神经网络时,则计算系统10中的每个节点簇用于根据分配的权值、训练数据、偏置和超级参数来计算得到该节点簇的梯度,并与其所在最小树中的父节点进行梯度聚合,最终,在根节点上得到最终的聚合梯度,而根节点则根据最终的聚合梯度并结合学习速率等超参计算出新的权值,再将新的权值分发给计算系统中的每个节点簇,启动下一轮的迭代计算。
可选地,所述第二节点簇由至少一个第二计算节点组成,所述第二计算节点为神经网络加速器;所述第一节点簇由至少一个第一计算节点组成,所述第一计算节点为神经网络加速器。本发明实施例通过在节点簇中设置一个或多个神经网络加速器,以实现在神经网络中的多个并行计算。
在上述计算系统10中,通过每个节点簇既负责本计算节点簇的计算结果,也负责对其连接的低层级的节点簇的计算结果进行聚合,不仅完成了数据从低层级到高层级的传输,也在传输的过程中,逐层的完成了节点簇之间的数据聚合,减小了带宽中传输的待聚合的数据量,并且,由于本发明实施例是采用树状组网拓扑,因此同一个层级的不同节点簇之间的计算和聚合是并行的,进一步地提高了计算和聚合效率,解决了大规模分布式训练系统中计算效率低的问题。
请参见图5,图5是本发明实施例提供的一种最小树中节点簇间连接关系的结构示意图,如图5所示,第二节点簇(例如为L1-Cluster0)包括k个(图5中以k=4为例)第二计算节点(例如,L1-Cluster0中的NNA1、NNA2、NNA3和NNA4),所述k个第一节点簇中(例如,L0-Cluster0、L0-Cluster1、L0-Cluster2、L0-Cluster3)的任意一个第一节点簇(以为L0-Cluster0为例)包含k个第一计算节点(例如,L0-Cluster0中的NNA1、NNA2、NNA3和NNA4),在所述网络结构中的任意一个最小树中,所述第二节点簇中的k个第二计算节点分别与所述k个第一节点簇一一对应,且所述k个第二计算节点中的任意一个第二计算节点和对应的第一节点簇中的所述k个第一计算节点之间通过物理链路连接。在图5中,即L1-Cluster0中的NNA1与L0-Cluster0对应,并通过物理链路连接;L1-Cluster0中的NNA2与L0-Cluster1对应,并通过物理链路连接;L1-Cluster0中的NNA3与L0-Cluster2对应,并通过物理链路连接;L1-Cluster0中的NNA4与L0-Cluster3对应,并通过物理链路连接。
可以理解的是,图5中的节点簇之间的连接关系,只是本发明实施例中的一种示例性的实施方式,本发明实施例中的节点簇的结构,以及节点簇之间的连接关系包括但不仅限于以上结构和连接关系。
下面以上述最小树中的父节点和其中一个子节点为例,如L1-Cluster0中的NPU1与L0-Cluster0之间的连接,对第一节点簇和第二节点簇的结构和连接关系进行说明。参见图6,图6为本发明实施例提供的一种最小树中父子节点结构及连接关系示意图。图6中,任意一个节点簇(包括上述第一节点簇和第二节点簇)可以包括以下功能模块:
主控CPU,负责节点内计算任务的管理、控制,以及节点间的交互控制,数据的预处理和后处理等(如果需要进行预处理或后处理)。例如,可以为X86。
SSD、NVME:本地高速存储,用于存放系统、训练数据如第一计算输入、第二计算输入等。
NIC1、NIC2、NIC3、NIC4:网络接口,用于和该网络接口所属的节点簇的子节点进行物理链路直连,例如,在图6中,L1-Cluster0中NIC1和L1-Cluster0的子节点L0-Cluster0中网络适配器NIC0进行物理链路直连。可选地,图6中以任意一个第二计算节点和对应的k个第一节点簇中的k个第一计算节点之间通过物理链路直连的方式进行连接,并通过该物理链路接收各个第一节点簇发送的第一计算结果。
NIC0、NIC5:神经网络加速器上的网络接口,用于本计算节点和外部的交互通讯,即用于节点簇作为子节点时,通过NIC0与父节点中对应的NIC1、NIC2、NIC3和NIC4中的一个进行物理直连。并通过该物理链路向第二节点簇发送第一计算结果。其中,NIC5,主要用于组成其他网络平面(例如,用户平面、控制平面、管理平面等)的接口。
PCIe Switch:PCIe总线交换器,用于PCIe设备的互联、和X86主控CPU的互联。
NN Accelerator:神经网络加速器,也可称之为加速NNA,一般以PCIe端点(EndPoint,EP)设备挂接到PCIe总线上。
NN Accelerator/DDR:神经网络加速器上的内存,用于计算过程中的本地存储。
NN Accelerator/PCIe:神经网络加速器上的PCIe总线接口,用于计算节点内的互联通讯。
NN Accelerator/Link:神经网络加速器间的高速互联链路,用于加速NNA间的数据高速交换。
NN Accelerator/NPU:神经网络加速器上的嵌入式神经网络处理器,用于进行各类神经网络算子的计算。
当本申请中的计算系统应用在AI神经网络领域,则在AI训练过程中,上述节点簇中的各个功能模块的处理过程如下:
(1)主控CPU上运行AI应用程序、以及AI框架。当CPU运行后,AI应用程序启动训练,获取到神经网络模型、初始参数、训练数据等必备输入,调用AI框架进行训练。
(2)主控CPU利用AI框架针对神经网络模型进行图分析和图优化,将模型转换为计算图,再根据图调度算法将计算算子(例如本申请中的第一计算输入、第二计算输入)发射到神经网络加速器NN Accelerator(第一节点簇中的各个第一计算节点、第二节点簇中的各个第二计算节点)上执行。
(3)NN Accelerator接受到计算任务后,通过NPU完成算子描述的计算,将计算结果(例如为本申请中的第一计算结果和第二计算结果)存储在设备内存DDR中。
(4)计算过程中往往涉及到多NNA间的数据交互,为了提高数据交互效率,一般都通过设备间的高速互联总线Link进行。
(5)NN Accelerator完成计算后,可以通过PCIe总线,将计算结果发送给主控CPU。或者通过NIC网NNA发送给其他节点。
在具体计算过程中,基于上述图6中的节点簇的结构和节点簇之间的连接关系,本发明实施例提供一种分布式的计算方案,即将每个节点簇上的计算任务分布在该节点簇中的多个计算节点(例如为图6中的NN Accelerator)中进行分布式计算,进一步地,还可以在各个计算节点完成计算任务之后,进行分布式聚合,具体可以包括如下两种实现方式:
在一种可能的实现方式中,在任意一个最小树中的k个第一节点簇中的每一个第一节点簇,具体用于:将第一计算输入分布在所述k个第一计算节点上进行分布式计算,得到k个第一分布式计算结果;然后根据所述k个第一分布式计算结果,分别在所述k个第一计算节点上进行分布式聚合,于是在每个第一计算节点上得到所述第一计算结果的其中一个分块;最后,通过所述k个第一计算节点将所述第一计算结果的k个分块同步或异步发送给对应的第二计算节点进行聚合。对应地,第二节点簇,具体用于将第二计算输入分布在其k个第二计算节点上进行分布式计算,得到k个第二分布式计算结果,所述k个第二分布式计算结果即构成了所述第二计算结果;然后通过所述k个第二计算节点,分别接收对应的第一节点簇中的k个第一计算节点发送的第一计算结果的k个分块;然后通过所述k个第二计算节点,分别将每个第二计算节点上计算得到的第二分布式计算结果和对应的第一节点簇的第一计算结果的k个分块进行聚合;最终将所述k个第二计算节点分别聚合后的结果进行分布式聚合,在每个第二计算节点上得到所述第三计算结果的其中一个分块。
本发明实施例中,将作为子节点的第一节点簇的计算任务分布在k个第一计算节点上并行处理,分别得到每个第一计算节点的计算结果后,又并行在k个第一计算节点之间并行聚合;并且,将作为父节点的第二节点簇的计算任务分布在k个第二计算节点上并行处理,分别得到每个第二计算节点的计算结果后,每个第二计算节点将对应的k个第一节点簇发送过来的计算结果,进行本计算节点的聚合,且k个第二计算节点之间的该过程为并行操作,最后通过k个第二计算节点之间再进行一次节点间的分布式聚合,得到该第二节点簇最终的聚合结果,大大提升计算和聚合效率。
在上述实现方式中,按照图5中的互联关系,L1-Cluster0和L0-Cluster1组成了层级结构,即{L1-Cluster0.NPU2、L0-Cluster0.NPU1、L0-Cluster0.NPU2、L0-Cluster0.NPU3、L0-Cluster0.NPU4}这5个计算节点组成一个最小树中的其中一个计算聚合单元,其中L1-Cluster0.NPU2是本发明实施例中的第二节点簇中的其中一个第二计算节点,其他4个NPU则作为该第二计算节点对应的第一节点簇中的4个第一计算节点。L0-Cluster1中的每个NPU完成梯度计算,并且L0-Cluster0中的4个NPU之间完成分布式梯度聚合后,每个NPU将聚合后的梯度数据发送给其聚合节点L1-Cluster0.NPU2,上行传输路径如图7中的虚线所示,图7为本发明实施例提供的一种节点簇间的数据上行传输路径示意图,传输路径一共有4条:
L0-Cluster1:NPU1->PCIe->PCIe Switch->NIC0->L1-Cluster0:NIC2->NPU2
L0-Cluster1:NPU2->PCIe->PCIe Switch->NIC0->L1-Cluster0:NIC2->NPU2
L0-Cluster1:NPU3->PCIe->PCIe Switch->NIC0->L1-Cluster0:NIC2->NPU2
L0-Cluster1:NPU4->PCIe->PCIe Switch->NIC0->L1-Cluster0:NIC2->NPU2
在另一种可能的实现方式中,k个第一节点簇中的任意一个第一节点簇具体用于:将第一计算输入分布在所述k个第一计算节点上进行分布式计算,得到k个第一分布式计算结果;根据所述k个分布式计算结果在所述k个第一计算节点中的指定第一计算节点上进行聚合,得到所述第一计算结果;通过所述指定的第一计算节点发送给对应的第二计算节点进行聚合。对应地,第二节点簇具体用于:将第二计算输入分布在k个第二计算节点上进行分布式计算,得到k个第二分布式计算结果;通过所述k个第二计算节点,分别接收对应的第一节点簇中所述指定第一计算节点发送的所述第一计算结果,并与得到的所述第二分布式计算结果进行聚合;最终通过所述k个第二计算节点中的指定第二计算节点,将所述k个第二计算节点分别聚合后的结果进行聚合,得到所述第三计算结果。
不同于上述实现方式中的分布式计算和分布式聚合,在本实现方式中,将作为子节点的第一节点簇的计算任务分布在k个第一计算节点上并行处理,分别得到每个第一计算节点的计算结果后,然后在k个第一计算节点中指定的第一计算节点上进行聚合,再发送给第二计算节点进行更高层级的聚合;并且,将作为父节点的第二节点簇的计算任务分布在k个第二计算节点上并行处理,分别得到每个第二计算节点的计算结果后,每个第二计算节点将对应的k个第一节点簇发送过来的计算结果,进行本计算节点的聚合,且k个第二计算节点之间的该过程为并行操作,最后通过k个第二计算节点中的指定第二计算节点再进行一次节点间的聚合,得到该第二节点簇最终的聚合结果。
需要说明的是,在上述第一计算结果、第二结算结果和第三计算结果中,第一计算结果为第一节点簇完成计算和聚合后的结果,第三结果是第二节点簇根据第一计算结果和第二计算结果聚合后得到的,因此,第三结果也是聚合后的结果。而第二计算结果是第二节点簇或者说是第二节点簇中的所有第二计算节点计算得到的且还没有进行汇聚的一个或者多个计算结果。
参见图8,图8为本发明实施例提供的一种计算系统上行聚合示意图,图8中的每一个最小树即可以按照上述的流程进行聚合,且同层级的每个最小树之间的梯度聚合是并发进行的,最终完成整个计算系统即整个树的聚合。其中,该计算系统中的每一个最小树的具体聚合方式请参照上述图5、图6和图7中的其中一个最小树的聚合流程,在此不再赘述。
基于上述数据在计算系统中,从低层级节点簇向高层级的节点簇聚合的过程,本发明实施例还提供相关参数(例如第一计算输入、第二计算输入)在初始或者更新后的从高层级节点簇向低层级的节点簇进行下发的方案。请参见图9,图9为本发明实施例提供的一种节点簇间的数据下行传输路径示意图。
按照上述图9中的互联关系,L1-Cluster0和L0-Cluster1组成了层级结构,即{L1-Cluster0.NPU2、L0-Cluster0.NPU1、L0-Cluster0.NPU2、L0-Cluster0.NPU3、L0-Cluster0.NPU4}这5个计算节点组成一个最小树中的其中一个计算聚合单元,其中L1-Cluster0.NPU2是本发明实施例中的第二节点簇中的其中一个第二计算节点,其他4个NPU则作为该第二计算节点对应的第一节点簇中的4个第一计算节点。L1-Cluster0.NPU2收到新的权值参数(例如为本申请中第一参数)时,需要将其同步给与其连接的所有的第一计算节点。为了提高效率,L1-Cluster0.NPU2将该权值广播(Scatter)给其所有的第一计算节点,同节点簇内的所有第一计算节点可以通过内部高速物理链路进行广播发送。权值数据下行传输路径,如下图9中的虚线所示,共有4条:
L1-Cluster0:NPU2->NIC2->L0-Cluster1:NIC0->PCIe Switch->PCIe->NPU1
L1-Cluster0:NPU2->NIC2->L0-Cluster1:NIC0->PCIe Switch->PCIe->NPU2
L1-Cluster0:NPU2->NIC2->L0-Cluster1:NIC0->PCIe Switch->PCIe->NPU3
L1-Cluster0:NPU2->NIC2->L0-Cluster1:NIC0->PCIe Switch->PCIe->NPU4
例如,在参数下发过程中,当第一计算输入包括第一参数,第二节点簇还用于将所述第一参数通过所述k个第二计算节点分别发送给所述k个第一节点簇。具体的下发过程可以包括以下三种实施方式:
实施方式一:第二节点簇通k个第二计算节点,分别将所述第一参数并行发送给对应的第一节点簇中的k个第一计算节点。即第二节点中将第一参数同时发送给对应的第一节点簇中的k个第一计算节点,因此k个第一计算节点会同时接收到对应的第二计算节点发送的第一参数。该实施方式,下发参数速度快,但需要第二计算节点将第一参数完整的发出k次。
实施方式二:通过述k个第二计算节点,分别将所述第一参数发送给对应的第一节点簇中的其中一个第一计算节点,以使得所述其中一个第一计算节点将所述第一参数在同簇内的其它第一计算节点之间进行广播。即第二计算节点中将第一参数会首先发送给对应的第一节点簇中的其中一个指定的第一计算节点,因此k个第一计算节点中的指定第一计算节点会先接收到第一参数,然后接收到该第一参数的第一计算节点会通过同簇内计算节点的高速物理链路,进行广播,最终每个第一计算节点上都获得了完整的第一参数。
实施方式三:通过述k个第二计算节点每一个,将分为k份的所述第一参数分别发送给对应的第一节点簇中的k个第一计算节点,以使得所述k个第一计算节点之间广播所述第一参数。即第二计算节点中将第一参数分成k份,然后将每一份发给不同的第一计算节点,因此k个第一计算节点均可以接收到第一参数的一部分,然后k个第一计算节点之间再通过高速物理链路,进行同步。如此一来,不仅可以减少第二计算节点和第一节点簇之间的传输带宽,也可以减少参数下发时间,提升参数下发效率。
参见图10,图10为本发明实施例提供的一种计算系统参数下发示意图,图8中的每一个最小树即可以按照上述的流程进行参数下发,参数同步在不同的最小树之间是并发进行的,最终完成整个计算系统即整个树的初始参数或者更新后的参数的下发。其中,该计算系统中的每一个最小树的具体参数下发流程,请参照上述实施方式一、实施方式二和实施方式三的流程,在此不再赘述。
在本申请中,为了降低端到端(End to End,E2E)传输耗时,提高效率,在一种可能的实现方式中,采用Pipeline流水线算法,以提高计算&传输的Overlap比例,将传输耗时尽可能隐藏在计算过程中,处理方式如下:
1、本申请中的计算系统以梯度为粒度进行聚合&传输;
2、当梯度参数一旦解除依赖,就进入流水线进行聚合&传输,一边进行聚合&传输,一边计算新的梯度参数;
3、本申请中的计算系统将大的梯度切成小块进行聚合&传输,将聚合计算、传输并行起来。
4、多小块并发传输,形成多级Pipeline流水线。
如图11所示,图11为本发明实施例提供的一种聚合同步流水线算法示意图,梯度聚合&权值同步形成多级流水线,并发传输,将传输耗时隐藏在计算耗时内:每小块的Size为m,每个小块在节点内的处理耗时为t1,每个小块在节点间的传输耗时为t2=m/B,其中B是节点间传输的有效带宽。
基于上述计算系统中的聚合和参数下发流程,在一种可能的实现方式中,本申请还提供另外一种系统连接方式。如图12所示,图12为本发明实施例提供的另一种基于树状拓扑的计算系统中最小树的架构图。该计算系统20中的最小树中还包括机架顶交换机,所述机架顶交换机与所述多个节点簇分别通过物理链路进行直连;所述第二节点簇和所述至少一个第一节点簇之间通过所述机架顶交换机间接进行物理链路的连接。即计算系统20中的最小树可以通过机架顶交换机ToR进行连接,形成瘦树(Slim-Tree)型组网拓扑。如图11中所示,L1-Cluster0、L0-Cluster0、L0-Cluster1、L0-Cluster2、L0-Cluster3、L0-Cluster4共6个Cluster,连接到同一个ToR上,按照5:1的收敛比(实际部署过程中,根据实际情况,也可以选择其他的收敛比),组成Slim-Tree的L0、L1层。其中,L1-Cluster0是父节点;L0-Cluster0、L0-Cluster1、L0-Cluster2、L0-Cluster3、L0-Cluster4是5个子节点。可以理解的是,每个节点簇中的内部结构,以及节点簇之间的具体连接关系,可以参照图6中的结构和连接方式,在此不再赘述。
可以理解的是,上述图12中的最小树架构按照层级堆叠,就可以形成一颗Slim-Tree,如图13所示,图13为本发明实施例提供的一种大规模计算系统架构示意图,在该图中,包含由5个图12中所提供的最小树。在集群规模比较大的情况下,可以扩展到多层,形成一个多层级的Slim-Tree。可基于本申请中上述图5-图11对应的实施例中的聚合和参数下发算法的相关描述,完成梯度聚合&权值同步,在此不再赘述。
需要说明的是,本发明实施例,基于树状组网拓扑、逐层累加(Accumulate)算法、多级流水线(Pipeline)算法,解决了大规模分布式神经网络训练集群的可扩展性问题。该组网拓扑结构和算法,也适用于其他类似的计算领域,借鉴该思路和算法实现,解决本领域的高性能计算问题。
当本申请中的计算系统应用于大规模分布式神经网络训练集群领域时,可以基于现有的网络平面规划保持不变,以满足集群节点的管理、接入、存储、控制等需要。只需要在现有网络平面的基础上,新规划一个布式深度神经网络(Deep Neural Network,DDN)平面,通过该平面进行梯度数据聚合、权值参数同步、专用。
其次,节点簇中的计算节点之间NIC采用背靠背物理直连的方式进行连接,形成节点间的高带宽、低延时通道。多节点簇按照k:1的方式进行收敛,形成Tree型的拓扑结构。多层堆叠,就可以形成Tree型集群系统。然后将DDN网络平面映射到节点簇间的物理直连拓扑上。
并且,本申请中的每个节点簇可以配置多个NNA也即是本申请中的计算节点(比如4个),形成一个Cluster。数据并行训练方法,Cluster(例如第一节点簇)内的每个NNA(第一计算单元)首先独立完成梯度计算,而后完成Cluster内多NNA间的梯度聚合。聚合完成后,向其父节点(例如第二节点簇)传输聚合后的梯度。而父节点Cluster内的每个NNA(例如第二计算单元),不但需要完成本NNA所负责的梯度计算,还需要把所有的子节点聚合好的梯度数据获取过来,和本NNA计算所得的梯度进行聚合成一份数据。而后父节点Cluster内的所有NNA之间再进行一次聚合。聚合完成后,再向其父节点(例如第三节点簇)传输聚合后的梯度。
因此,本申请中的每个节点簇不但负责梯度的计算,还负责梯度的聚合、路由和传递。由于每个节点簇发送的都是聚合后的梯度,Tree各层级间传输的数据量是均匀一致的。按照该方式,整个集群并发执行,汇聚到Root节点,就可以聚合成一份包含所有节点计算结果的完整梯度数据。
基于上述梯度数据,就可以计算新的权值参数。一旦计算得出新权值,就可以沿着Tree型拓扑向下流动,将新权值同步到所有的Worker节点(也即是本申请中的第一计算节点和第二计算节点)。为了提高下行传输效率,父节点将权值下发给其子节点,子节点收到后,在Cluster内进行广播BroadCast。这样,将父节点->子节点的发送、和子节点->子节点的发送并发起来,并充分利用Cluster内的高速链路。同时,为了提高计算耗时占比,降低加速NNA的停滞(Stall)时间,上述聚合&同步采用流水线方式进行。针对于深度神经网络,反向传播,梯度数据计算好,依赖解除,就可以进入Pipeline流水线。将梯度聚合&同步的处理和反向传播重叠(Overlap)起来。
综上,本申请中的计算系统当应用于大规模分布式神经网络训练集群时,有如下有益效果:
1、提供了一种AI数据网络平面,该AI数据网络平面采用背靠背直连组网,可采用RoCE(RDMA over Converged Ethernet)协议,其中,RoCE是一种允许通过以太网使用远程直接内存访问(RDMA)的网络协议,高带宽、低时延,满足深度神经网络训练业务的性能要求。该AI数据网络平面和其他网络平面解耦,避免相互干扰,同时也节省了大量的交换机资源,减少投资成本,并降低了网络性能优化和运营维护的成本。
2、本申请中的计算系统采用树状(本申请中可称之为瘦树Slim-Tree)组网拓扑,每个Worker节点既负责梯度的计算,也负责梯度的聚合和参数的同步,整颗树各节点之间,树各层级之间传输的数据量是均匀一致的,全局无流量热点,无计算热点。
3、采用本申请中的计算系统,当随着节点数增多,Tree层级增多,每增加一层,节点数量增加4倍,但梯度聚合&参数同步流经E2E Path的耗时增加量为:流经一个节点和两条边的耗时开销,计算耗时占比的衰减小,加速比线性度好。
4、本申请中的计算系统采用Pipeline流水,将梯度聚合&传输隐藏在计算之内,有效的降低计算节点的Stall时间,提高计算耗时占比,进而提高整个集群的效率;
因此,本申请所提供的计算系统在大规模集群中能够获得稳定的加速比,适合于组建大型分布式训练集群。
请参见图14,是本发明实施例提供的一种计算方法的流程示意图,可应用于上述图5-图13中所述的计算系统,下面将结合附图14从第二节点簇侧进行描述,该方法可以包括以下步骤S101-步骤S103。
步骤S101:第二节点簇接收至少一个第一节点簇发送的第一计算结果,所述第一计算结果为所述至少一个第一节点簇中的每一个第一节点簇根据第一计算输入得到的结果,其中,所述第一节点簇和所述第二节点簇在同一个树状网络结构的任意一个最小树中,所述第二节点簇为所述至少一个第一节点簇的父节点.
步骤S102:所述第二节点簇将所述第一计算结果与所述第二计算结果进行聚合得到第三计算结果,所述第二计算结果为所述第二节点簇根据第二计算输入得到的结果。
步骤S103:所述第二节点簇将所述第三计算结果发送至第三节点簇进行聚合,所述第三节点簇在所述树状网络拓扑中,且所述第三节点簇为所述第二节点簇的父节点。
在一种可能的实现方式中,所述第二节点簇包括k个第二计算节点,所述k个第一节点簇中的任意一个第一节点簇包含k个第一计算节点;在所述网络结构中的任意一个最小树中,所述第二节点簇中的k个第二计算节点分别与所述k个第一节点簇一一对应,且所述k个第二计算节点中的任意一个第二计算节点和对应的第一节点簇中的所述k个第一计算节点之间通过物理链路连接。
在一种可能的实现方式中,所述第二节点簇将所述第一计算结果与所述第二计算结果进行聚合得到第三计算结果,具体为:所述第二节点簇将所述第二计算输入分布在所述k个第二计算节点上进行分布式计算,得到k个第二分布式计算结果,所述k个第二分布式计算结果为所述第二计算结果;所述第二节点簇通过所述k个第二计算节点,分别接收对应的第一节点簇中的k个第一计算节点发送的所述第一计算结果的k个分块;所述第二节点簇通过所述k个第二计算节点,分别将每个第二计算节点上计算得到的第二分布式计算结果和对应的第一节点簇的第一计算结果的k个分块进行聚合;所述第二节点簇将所述k个第二计算节点分别聚合后的结果进行分布式聚合,在每个第二计算节点上得到所述第三计算结果的其中一个分块。
在一种可能的实现方式中,所述第二节点簇将所述第一计算结果与所述第二计算结果进行聚合得到第三计算结果,具体为:所述第二节点簇将所述第二计算输入分布在所述k个第二计算节点上进行分布式计算,得到k个第二分布式计算结果;所述第二节点簇通过所述k个第二计算节点,分别接收对应的第一节点簇中所述指定第一计算节点发送的所述第一计算结果,并与得到的所述第二分布式计算结果进行聚合;所述第二节点簇通过所述k个第二计算节点中的指定第二计算节点,将所述k个第二计算节点分别聚合后的结果进行聚合,得到所述第三计算结果。
在一种可能的实现方式中,所述计算方法,还包括步骤:所述第二节点簇将所述第一参数通过所述k个第二计算节点分别发送给所述k个第一节点簇。
在一种可能的实现方式中,所述第二节点簇将所述第一参数通过所述k个第二计算节点分别发送给所述k个第一节点簇,具体包括以下三种实施方式:
实施方式一:所述第二节点簇通过每一个第二计算节点,将分为k份的所述第一参数分别发送给对应的第一节点簇中的k个第一计算节点,以使得所述k个第一计算节点之间广播所述第一参数。
实施方式二:所述第二节点簇通过述k个第二计算节点,分别将所述第一参数并行发送给对应的第一节点簇中的k个第一计算节点。
实施方式三:所述第二节点簇通过述k个第二计算节点,分别将所述第一参数发送给对应的第一节点簇中的其中一个第一计算节点,以使得所述其中一个第一计算节点将所述第一参数在同簇内的其它第一计算节点之间进行广播。
在一种可能的实现方式中,所述第一计算输入和所述第二计算输入包括权值、训练数据、偏置和超级参数,所述第一计算结果、所述第二计算结果和所述第三计算结果为梯度。
需要说明的是,本发明实施例中所描述的计算方法中的具体流程以及执行主体第二节点簇的相关功能,可参见上述图4-图13中所述的计算系统的实施例中的相关描述,此处不再赘述。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可能可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如上述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
上述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以为个人计算机、服务器或者网络设备等,具体可以是计算机设备中的处理器)执行本申请各个实施例上述方法的全部或部分步骤。其中,而前述的存储介质可包括:U盘、移动硬盘、磁碟、光盘、只读存储器(Read-Only Memory,缩写:ROM)或者随机存取存储器(Random Access Memory,缩写:RAM)等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (18)
1.一种基于树状拓扑的计算系统,其特征在于,包括:多个节点簇,所述多个节点簇以树状拓扑方式构成多层级的网络结构,所述网络结构中的任意一个最小树,包括作为父节点的第二节点簇和作为子节点的至少一个第一节点簇,所述第二节点簇和所述至少一个第一节点簇之间通过物理链路连接,其中,
所述至少一个第一节点簇中的每一个第一节点簇,用于根据第一计算输入得到第一计算结果,并通过所述物理链路将所述第一计算结果发送至所述第二节点簇;
所述第二节点簇,用于通过所述物理链路接收所述至少一个第一节点簇发送的至少一个第一计算结果,并将所述至少一个第一计算结果与第二计算结果进行聚合得到第三计算结果,所述第二计算结果为所述第二节点簇根据第二计算输入得到的结果。
2.如权利要求1所述的计算系统,其特征在于,所述第二节点簇还用于;将所述第三计算结果发送至第三节点簇进行聚合,所述第三节点簇为所述第二节点簇的父节点。
3.如权利要求1或2所述的计算系统,其特征在于,所述网络结构中的任意一个最小树中,包括一个第二节点簇和k个第一节点簇,所述第二节点簇包括k个第二计算节点,所述k个第一节点簇中的任意一个第一节点簇包含k个第一计算节点,其中,k为大于或者等于1的整数;
在所述网络结构中的任意一个最小树中,所述第二节点簇中的k个第二计算节点分别与所述k个第一节点簇一一对应,且所述k个第二计算节点中的任意一个第二计算节点和对应的第一节点簇中的所述k个第一计算节点之间通过物理链路连接。
4.如权利要求3所述的计算系统,其特征在于,所述k个第一节点簇中的任意一个第一节点簇,具体用于:
将所述第一计算输入分布在所述k个第一计算节点上进行分布式计算,得到k个第一分布式计算结果;
根据所述k个第一分布式计算结果,分别在所述k个第一计算节点上进行分布式聚合,在每个第一计算节点上得到所述第一计算结果的其中一个分块;
通过所述k个第一计算节点将所述第一计算结果的k个分块同步或异步发送给对应的第二计算节点进行聚合。
5.如权利要求4所述的计算系统,其特征在于,所述第二节点簇,具体用于:
将所述第二计算输入分布在所述k个第二计算节点上进行分布式计算,得到k个第二分布式计算结果,所述k个第二分布式计算结果为所述第二计算结果;
通过所述k个第二计算节点,分别接收对应的第一节点簇中的k个第一计算节点发送的所述第一计算结果的k个分块;
通过所述k个第二计算节点,分别将每个第二计算节点上计算得到的第二分布式计算结果和对应的第一节点簇的第一计算结果的k个分块进行聚合;
将所述k个第二计算节点分别聚合后的结果进行分布式聚合,在每个第二计算节点上得到所述第三计算结果的其中一个分块。
6.如权利要求3所述的计算系统,其特征在于,所述k个第一节点簇中的任意一个第一节点簇,具体用于:
将所述第一计算输入分布在所述k个第一计算节点上进行分布式计算,得到k个第一分布式计算结果;
根据所述k个分布式计算结果在所述k个第一计算节点中的指定第一计算节点上进行聚合,得到所述第一计算结果;
通过所述指定的第一计算节点发送给对应的第二计算节点进行聚合。
7.如权利要求6所述的计算系统,其特征在于,所述第二节点簇,具体用于:
将所述第二计算输入分布在所述k个第二计算节点上进行分布式计算,得到k个第二分布式计算结果;
通过所述k个第二计算节点,分别接收对应的第一节点簇中所述指定第一计算节点发送的所述第一计算结果,并与得到的所述第二分布式计算结果进行聚合;
通过所述k个第二计算节点中的指定第二计算节点,将所述k个第二计算节点分别聚合后的结果进行聚合,得到所述第三计算结果。
8.如权利要求3-7任意一项所述的计算系统,其特征在于,所述第一计算输入包括第一参数;所述第二节点簇,还用于:
将所述第一参数通过所述k个第二计算节点分别发送给所述k个第一节点簇。
9.如权利要求8所述的计算系统,其特征在于,所述第二节点簇,具体用于:
通过每一个第二计算节点,将分为k份的所述第一参数分别发送给对应的第一节点簇中的k个第一计算节点,以使得所述k个第一计算节点之间广播所述第一参数;或者
通过述k个第二计算节点,分别将所述第一参数并行发送给对应的第一节点簇中的k个第一计算节点;或者
通过述k个第二计算节点,分别将所述第一参数发送给对应的第一节点簇中的其中一个第一计算节点,以使得所述其中一个第一计算节点将所述第一参数在同簇内的其它第一计算节点之间进行广播。
10.如权利要求1-9任意一项所述的计算系统,其特征在于,所述计算系统还包括交换机,所述交换机与所述多个节点簇分别通过物理链路进行直连;
所述第二节点簇和所述至少一个第一节点簇之间通过所述交换机进行连接。
11.如权利要求1-11任意一项所述的计算系统,其特征在于,所述计算系统为神经网络计算系统;所述第一计算输入和所述第二计算输入包括权值、训练数据、偏置和超级参数,所述第一计算结果、所述第二计算结果和所述第三计算结果为梯度。
12.一种计算方法,其特征在于,包括:
第二节点簇接收至少一个第一节点簇发送的第一计算结果,所述第一计算结果为所述至少一个第一节点簇中的每一个第一节点簇根据第一计算输入得到的结果,其中,所述第一节点簇和所述第二节点簇在同一个树状网络结构的任意一个最小树中,所述第二节点簇为所述至少一个第一节点簇的父节点;
所述第二节点簇将所述第一计算结果与第二计算结果进行聚合得到第三计算结果,所述第二计算结果为所述第二节点簇根据第二计算输入得到的结果;
所述第二节点簇将所述第三计算结果发送至第三节点簇进行聚合,所述第三节点簇在所述树状网络拓扑中,且所述第三节点簇为所述第二节点簇的父节点。
13.如权利要求12所述的方法,其特征在于,所述第二节点簇包括k个第二计算节点,所述k个第一节点簇中的任意一个第一节点簇包含k个第一计算节点;在所述网络结构中的任意一个最小树中,所述第二节点簇中的k个第二计算节点分别与所述k个第一节点簇一一对应,且所述k个第二计算节点中的任意一个第二计算节点和对应的第一节点簇中的所述k个第一计算节点之间通过物理链路连接。
14.如权利要求13所述的方法,其特征在于,所述第二节点簇将所述第一计算结果与所述第二计算结果进行聚合得到第三计算结果,包括:
所述第二节点簇将所述第二计算输入分布在所述k个第二计算节点上进行分布式计算,得到k个第二分布式计算结果,所述k个第二分布式计算结果为所述第二计算结果;
所述第二节点簇通过所述k个第二计算节点,分别接收对应的第一节点簇中的k个第一计算节点发送的所述第一计算结果的k个分块;
所述第二节点簇通过所述k个第二计算节点,分别将每个第二计算节点上计算得到的第二分布式计算结果和对应的第一节点簇的第一计算结果的k个分块进行聚合;
所述第二节点簇将所述k个第二计算节点分别聚合后的结果进行分布式聚合,在每个第二计算节点上得到所述第三计算结果的其中一个分块。
15.如权利要求13所述的方法,其特征在于,所述第二节点簇将所述第一计算结果与所述第二计算结果进行聚合得到第三计算结果,包括:
所述第二节点簇将所述第二计算输入分布在所述k个第二计算节点上进行分布式计算,得到k个第二分布式计算结果;
所述第二节点簇通过所述k个第二计算节点,分别接收对应的第一节点簇中所述指定第一计算节点发送的所述第一计算结果,并与得到的所述第二分布式计算结果进行聚合;
所述第二节点簇通过所述k个第二计算节点中的指定第二计算节点,将所述k个第二计算节点分别聚合后的结果进行聚合,得到所述第三计算结果。
16.如权利要求12-15任意一项所述的方法,其特征在于,所述方法,还包括:
所述第二节点簇将所述第一参数通过所述k个第二计算节点分别发送给所述k个第一节点簇。
17.如权利要求16所述的方法,其特征在于,所述第二节点簇将所述第一参数通过所述k个第二计算节点分别发送给所述k个第一节点簇,包括:
所述第二节点簇通过每一个第二计算节点,将分为k份的所述第一参数分别发送给对应的第一节点簇中的k个第一计算节点,以使得所述k个第一计算节点之间广播所述第一参数;或者
所述第二节点簇通过述k个第二计算节点,分别将所述第一参数并行发送给对应的第一节点簇中的k个第一计算节点;或者
所述第二节点簇通过述k个第二计算节点,分别将所述第一参数发送给对应的第一节点簇中的其中一个第一计算节点,以使得所述其中一个第一计算节点将所述第一参数在同簇内的其它第一计算节点之间进行广播。
18.如权利要求12-17任意一项所述的方法,其特征在于,所述第一计算输入和所述第二计算输入包括权值、训练数据、偏置和超级参数,所述第一计算结果、所述第二计算结果和所述第三计算结果为梯度。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810033391.5A CN110033078B (zh) | 2018-01-12 | 2018-01-12 | 一种基于树状拓扑的计算系统及方法 |
EP19738693.1A EP3734516A4 (en) | 2018-01-12 | 2019-01-10 | COMPUTER SYSTEM AND PROCESS BASED ON A TREE TOPOLOGY |
PCT/CN2019/071116 WO2019137416A1 (zh) | 2018-01-12 | 2019-01-10 | 一种基于树状拓扑的计算系统及方法 |
US16/926,121 US20200342297A1 (en) | 2018-01-12 | 2020-07-10 | Tree Topology Based Computing System and Method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810033391.5A CN110033078B (zh) | 2018-01-12 | 2018-01-12 | 一种基于树状拓扑的计算系统及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110033078A true CN110033078A (zh) | 2019-07-19 |
CN110033078B CN110033078B (zh) | 2024-01-12 |
Family
ID=67218858
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810033391.5A Active CN110033078B (zh) | 2018-01-12 | 2018-01-12 | 一种基于树状拓扑的计算系统及方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20200342297A1 (zh) |
EP (1) | EP3734516A4 (zh) |
CN (1) | CN110033078B (zh) |
WO (1) | WO2019137416A1 (zh) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111105016A (zh) * | 2019-12-06 | 2020-05-05 | 浪潮电子信息产业股份有限公司 | 一种数据处理方法、装置、电子设备及可读存储介质 |
CN111291760A (zh) * | 2020-02-12 | 2020-06-16 | 北京迈格威科技有限公司 | 图像的语义分割方法、装置及电子设备 |
CN112528108A (zh) * | 2019-09-17 | 2021-03-19 | 华为技术有限公司 | 一种模型训练系统、模型训练中梯度聚合的方法及装置 |
CN112988651A (zh) * | 2021-05-12 | 2021-06-18 | 北京壁仞科技开发有限公司 | 计算系统、计算处理器和数据处理方法 |
CN113138832A (zh) * | 2020-01-17 | 2021-07-20 | 深圳致星科技有限公司 | 一种基于重置训练数据传输网络的分布式训练方法及系统 |
WO2021143911A1 (zh) * | 2020-01-17 | 2021-07-22 | 华为技术有限公司 | 通信方法及装置 |
CN113301073A (zh) * | 2020-04-16 | 2021-08-24 | 阿里巴巴集团控股有限公司 | 分布式机器学习系统中服务器节点之间的通信方法和装置 |
WO2021238508A1 (zh) * | 2020-05-29 | 2021-12-02 | 华为技术有限公司 | 一种数据处理的方法、装置和设备 |
CN113766602A (zh) * | 2020-06-04 | 2021-12-07 | 北京新岸线移动多媒体技术有限公司 | 一种无线网络的组网方法及无线网络结构 |
CN113849293A (zh) * | 2021-11-30 | 2021-12-28 | 湖北芯擎科技有限公司 | 数据处理方法、装置、系统及计算机可读存储介质 |
CN114900482A (zh) * | 2022-03-28 | 2022-08-12 | 中国科学技术大学苏州高等研究院 | Ps架构下基于可编程交换机的梯度调度方法和装置 |
CN115086437A (zh) * | 2022-06-15 | 2022-09-20 | 中国科学技术大学苏州高等研究院 | 基于分簇和xdp技术的梯度聚合加速方法和装置 |
CN116644803A (zh) * | 2023-07-27 | 2023-08-25 | 浪潮电子信息产业股份有限公司 | 分布式协同训练控制方法、系统、装置、设备及存储介质 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7279507B2 (ja) * | 2019-05-21 | 2023-05-23 | 富士通株式会社 | 情報処理装置、情報処理プログラム及び制御方法 |
WO2022118236A1 (en) * | 2020-12-02 | 2022-06-09 | Jet Blockchain Inc. | Closely coupled hardware acceleration in a multi-processors environment |
CN116489148A (zh) * | 2022-01-14 | 2023-07-25 | 华为技术有限公司 | 一种聚合通信方法及装置 |
WO2023192678A1 (en) * | 2022-04-01 | 2023-10-05 | Google Llc | Cross-cluster communication for machine learning workloads |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2003060748A2 (en) * | 2002-01-10 | 2003-07-24 | Massively Parallel Technologies, Inc. | Parallel processing systems and method |
US20130290223A1 (en) * | 2012-04-27 | 2013-10-31 | Yahoo! Inc. | Method and system for distributed machine learning |
CN106879050A (zh) * | 2015-12-11 | 2017-06-20 | 中南大学 | 一种基于分布式神经网络的无线传感器网络数据融合方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7478278B2 (en) * | 2005-04-14 | 2009-01-13 | International Business Machines Corporation | Template based parallel checkpointing in a massively parallel computer system |
US9448966B2 (en) * | 2013-04-26 | 2016-09-20 | Futurewei Technologies, Inc. | System and method for creating highly scalable high availability cluster in a massively parallel processing cluster of machines in a network |
CN104702690A (zh) * | 2015-03-12 | 2015-06-10 | 杭州域竹科技有限公司 | 基于虚拟树型网络技术的分布式高性能计算的方法 |
CN106357478B (zh) * | 2016-09-30 | 2019-08-02 | 郑州云海信息技术有限公司 | 一种服务器集群监控方法及系统 |
CN106713468B (zh) * | 2016-12-29 | 2018-11-20 | 深圳云天励飞技术有限公司 | 一种分布式集群服务系统及其节点协同方法 |
CN106776461A (zh) * | 2017-01-13 | 2017-05-31 | 算丰科技(北京)有限公司 | 数据处理装置和服务器 |
US10217346B1 (en) * | 2017-11-07 | 2019-02-26 | Amazon Technologies, Inc. | Presence detection with neural networks |
-
2018
- 2018-01-12 CN CN201810033391.5A patent/CN110033078B/zh active Active
-
2019
- 2019-01-10 WO PCT/CN2019/071116 patent/WO2019137416A1/zh unknown
- 2019-01-10 EP EP19738693.1A patent/EP3734516A4/en active Pending
-
2020
- 2020-07-10 US US16/926,121 patent/US20200342297A1/en active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2003060748A2 (en) * | 2002-01-10 | 2003-07-24 | Massively Parallel Technologies, Inc. | Parallel processing systems and method |
US20130290223A1 (en) * | 2012-04-27 | 2013-10-31 | Yahoo! Inc. | Method and system for distributed machine learning |
CN106879050A (zh) * | 2015-12-11 | 2017-06-20 | 中南大学 | 一种基于分布式神经网络的无线传感器网络数据融合方法 |
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112528108B (zh) * | 2019-09-17 | 2023-02-07 | 华为技术有限公司 | 一种模型训练系统、模型训练中梯度聚合的方法及装置 |
CN112528108A (zh) * | 2019-09-17 | 2021-03-19 | 华为技术有限公司 | 一种模型训练系统、模型训练中梯度聚合的方法及装置 |
WO2021109588A1 (zh) * | 2019-12-06 | 2021-06-10 | 浪潮电子信息产业股份有限公司 | 一种数据处理方法、装置、电子设备及可读存储介质 |
CN111105016A (zh) * | 2019-12-06 | 2020-05-05 | 浪潮电子信息产业股份有限公司 | 一种数据处理方法、装置、电子设备及可读存储介质 |
CN113138832A (zh) * | 2020-01-17 | 2021-07-20 | 深圳致星科技有限公司 | 一种基于重置训练数据传输网络的分布式训练方法及系统 |
WO2021143911A1 (zh) * | 2020-01-17 | 2021-07-22 | 华为技术有限公司 | 通信方法及装置 |
CN113138832B (zh) * | 2020-01-17 | 2024-03-01 | 深圳致星科技有限公司 | 一种基于重置训练数据传输网络的分布式训练方法及系统 |
CN111291760A (zh) * | 2020-02-12 | 2020-06-16 | 北京迈格威科技有限公司 | 图像的语义分割方法、装置及电子设备 |
CN111291760B (zh) * | 2020-02-12 | 2023-10-17 | 北京迈格威科技有限公司 | 图像的语义分割方法、装置及电子设备 |
CN113301073A (zh) * | 2020-04-16 | 2021-08-24 | 阿里巴巴集团控股有限公司 | 分布式机器学习系统中服务器节点之间的通信方法和装置 |
WO2021238508A1 (zh) * | 2020-05-29 | 2021-12-02 | 华为技术有限公司 | 一种数据处理的方法、装置和设备 |
CN113766602A (zh) * | 2020-06-04 | 2021-12-07 | 北京新岸线移动多媒体技术有限公司 | 一种无线网络的组网方法及无线网络结构 |
CN112988651A (zh) * | 2021-05-12 | 2021-06-18 | 北京壁仞科技开发有限公司 | 计算系统、计算处理器和数据处理方法 |
CN113849293A (zh) * | 2021-11-30 | 2021-12-28 | 湖北芯擎科技有限公司 | 数据处理方法、装置、系统及计算机可读存储介质 |
CN114900482A (zh) * | 2022-03-28 | 2022-08-12 | 中国科学技术大学苏州高等研究院 | Ps架构下基于可编程交换机的梯度调度方法和装置 |
CN115086437A (zh) * | 2022-06-15 | 2022-09-20 | 中国科学技术大学苏州高等研究院 | 基于分簇和xdp技术的梯度聚合加速方法和装置 |
CN115086437B (zh) * | 2022-06-15 | 2023-08-22 | 中国科学技术大学苏州高等研究院 | 基于分簇和xdp技术的梯度聚合加速方法和装置 |
CN116644803A (zh) * | 2023-07-27 | 2023-08-25 | 浪潮电子信息产业股份有限公司 | 分布式协同训练控制方法、系统、装置、设备及存储介质 |
CN116644803B (zh) * | 2023-07-27 | 2023-11-03 | 浪潮电子信息产业股份有限公司 | 分布式协同训练控制方法、系统、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
EP3734516A4 (en) | 2021-03-03 |
US20200342297A1 (en) | 2020-10-29 |
WO2019137416A1 (zh) | 2019-07-18 |
CN110033078B (zh) | 2024-01-12 |
EP3734516A1 (en) | 2020-11-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110033078A (zh) | 一种基于树状拓扑的计算系统及方法 | |
CN112464784A (zh) | 一种基于混合并行的分布式训练方法 | |
CN106156810A (zh) | 通用机器学习算法模型训练方法、系统和计算节点 | |
CN110222005A (zh) | 用于异构架构的数据处理系统及其方法 | |
KR20130090147A (ko) | 신경망 컴퓨팅 장치 및 시스템과 그 방법 | |
CN110347636A (zh) | 数据执行体及其数据处理方法 | |
CN112468401B (zh) | 用于类脑处理器的片上网络路由通信方法及片上网络 | |
CN111371616B (zh) | 一种面向numa架构服务器的虚拟网络功能链部署方法和系统 | |
CN113298222A (zh) | 一种基于神经网络的参数更新方法、分布式训练平台系统 | |
CN108111335A (zh) | 一种调度和链接虚拟网络功能的方法及系统 | |
Yan et al. | Study on deep unsupervised learning optimization algorithm based on cloud computing | |
CN102325089A (zh) | 基于差分进化和捕食搜索策略的胖树型片上网络映射方法 | |
CN110502544A (zh) | 数据整合方法、分布式计算节点及分布式深度学习训练系统 | |
CN110059797A (zh) | 一种计算装置及相关产品 | |
CN109508785A (zh) | 一种用于神经网络训练的异步并行优化方法 | |
CN110059809A (zh) | 一种计算装置及相关产品 | |
Zhang et al. | Mamap: Congestion relieved memetic algorithm based mapping method for mapping large-scale snns onto noc-based neuromorphic hardware | |
CN108540407A (zh) | 一种大数据平台中Spark Streaming接收器动态配置方法及装置 | |
Hou et al. | Co-designing the topology/algorithm to accelerate distributed training | |
CN115392481A (zh) | 一种基于响应时间实时均衡的联邦学习高效通信方法 | |
Liu et al. | Reconfigurable aggregation tree for distributed machine learning in optical WAN | |
CN104717111B (zh) | 一种扩展交换立方体的互联网络系统 | |
Dai et al. | Optree: An efficient algorithm for all-gather operation in optical interconnect systems | |
CN114827783B (zh) | 一种基于聚合树的跨域分布式机器学习的带宽调度方法 | |
CN212364994U (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |