CN116506359A - 一种数据传输系统、方法及相关设备 - Google Patents
一种数据传输系统、方法及相关设备 Download PDFInfo
- Publication number
- CN116506359A CN116506359A CN202210073931.9A CN202210073931A CN116506359A CN 116506359 A CN116506359 A CN 116506359A CN 202210073931 A CN202210073931 A CN 202210073931A CN 116506359 A CN116506359 A CN 116506359A
- Authority
- CN
- China
- Prior art keywords
- accelerator
- data
- accelerators
- node
- communication
- 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
- 230000005540 biological transmission Effects 0.000 title claims abstract description 117
- 238000000034 method Methods 0.000 title claims abstract description 84
- 238000004891 communication Methods 0.000 claims abstract description 302
- 238000012549 training Methods 0.000 claims description 18
- 230000008569 process Effects 0.000 claims description 15
- 238000013473 artificial intelligence Methods 0.000 claims description 7
- 238000013528 artificial neural network Methods 0.000 claims description 6
- 238000013135 deep learning Methods 0.000 claims description 6
- 230000002093 peripheral effect Effects 0.000 claims description 6
- 238000004590 computer program Methods 0.000 claims description 4
- 229920002803 thermoplastic polyurethane Polymers 0.000 claims 2
- 230000003993 interaction Effects 0.000 abstract description 52
- 239000011159 matrix material Substances 0.000 description 60
- 238000010586 diagram Methods 0.000 description 19
- 238000012545 processing Methods 0.000 description 15
- 238000004364 calculation method Methods 0.000 description 9
- 238000003062 neural network model Methods 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 2
- 230000001427 coherent effect Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/12—Avoiding congestion; Recovering from congestion
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/16—Flow control; Congestion control in connection oriented networks, e.g. frame relay
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
-
- 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
-
- 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/16—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks using machine learning or artificial intelligence
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/12—Avoiding congestion; Recovering from congestion
- H04L47/125—Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/17—Interaction among intermediate nodes, e.g. hop by hop
Landscapes
- Engineering & Computer Science (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Databases & Information Systems (AREA)
- Medical Informatics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Multi Processors (AREA)
- Computer And Data Communications (AREA)
- Small-Scale Networks (AREA)
Abstract
本申请提供一种数据传输系统、方法及相关设备,该系统包括多个节点,每个节点内的多个加速器之间通过第一通信链路互联;多个节点的加速器之间构成多个通信平面,每个通信平面包括每个节点内的一个加速器,且任意两个通信平面包括的加速器互不相同,同一个通信平面内的加速器之间通过第二通信链路连接;第一节点内的第一加速器获取第一节点内其他加速器各自发送的第一数据,该第一数据包括第一节点内的其他加速器各自待发送至第二节点内的第二加速器的数据,然后第一加速器通过第二通信链路将第一数据发送给第二加速器。通过上述方法进行节点内和节点间的数据交互,能够降低节点间数据交互次数,降低数据拥塞和传输时延,提高数据传输效率。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种数据传输系统、方法及相关设备。
背景技术
随着计算机技术的发展,数据规模也在不断发展,为了解决大规模数据的计算问题,分布式计算应运而生。分布式计算为了解决算力不足的问题,把需要进行大量计算的任务分配给多个计算设备或芯片进行计算。在进行分布式计算的过程中,各个计算设备或芯片会产生其他计算设备或芯片需要的数据,这会涉及到不同计算设备之间或者不同芯片之间的数据交互,因此提高不同计算设备或不同芯片之间的数据传输效率是提高分布式计算效率的一个有效途径。
发明内容
本申请公开了一种数据传输系统、方法及相关设备,能够减少数据传输过程中的拥塞和传输时延,提高数据传输效率。
第一方面,本申请提供一种数据传输系统,该数据传输系统包括多个节点,多个节点中的每个节点包括多个加速器,每个节点内的多个加速器之间通过第一通信链路连接;这多个节点的加速器之间构成多个通信平面,每个通信平面包括每个节点内的一个加速器,且任意两个通信平面包括的加速器互不相同,同一个通信平面内的加速器之间通过第二通信链路连接;其中,第一节点内的第一加速器用于获取第一节点内的其他加速器发送的第一数据,该第一数据包括第一节点内的其他加速器各自需要发送至第二节点内的第二加速器的数据;上述第一节点和第二节点是上述多个节点中的任意两个节点,第一加速器和第二加速器是第一通信平面内的加速器;第一加速器还用于将上述第一数据通过上述第二通信链路发送给第二加速器。
通过在多个节点的加速器之间构建多个通信平面,在第一节点内的一个或多个加速器有数据需要发送给第一通信平面内的加速器时,先通过第一节点内的通信链路将数据发送给属于第一节点且属于第一通信平面的第一加速器,然后由第一加速器通过第二通信链路将数据分别发送给第一通信平面的加速器。通过上述方法能够降低节点间的加速器相互发送数据的次数,降低网络上的数据拥塞和传输时延,提高数据传输效率。
需要说明的是,当第一节点内的其他加速器有数据需要发送给第一通信平面内的多个加速器时,第一节点内的其他加速器能够将需要发送给第一通信平面内各个加速器的数据均先发送给第一加速器,然后第一加速器再通过第二通信链路将接收到的数据中分别发送给第一通信平面的各个加速器。例如第一节点内包括四个加速器,第一通信平面内包括六个加速器,第一节点内的其他三个加速器将需要发送给第一通信平面内的六个加速器的数据均发送给第一加速器,然后由第一加速器将接收到的数据中第一通信平面内其他五个加速器各自需要的数据,通过第二通信链路分别发送给其他五个加速器。
通过在多个节点的加速器之间构建多个通信平面,在第一节点内的一个或多个加速器有数据需要发送给第一通信平面内的一个或多个加速器时,先通过第一节点内的通信链路将数据发送给属于第一节点且属于第一通信平面的第一加速器,然后由第一加速器通过第二通信链路将第一通信平面内各个加速器需要的数据分别发送给各个加速器。通过上述方法能够降低节点间的加速器相互发送数据的次数,降低网络上的数据拥塞和传输时延,提高数据传输效率。
在一种可能的实现方式中,上述数据传输系统还包括处理器,处理器用于向上述多个节点内的各个加速器发送分组信息,该分组信息包括每个通信平面包括的加速器的信息。
在一种可能的实现方式中,上述第一加速器还用于根据接收到的分组信息与上述第二加速器建立第二通信链路的连接。
处理器确定用于计算的数据传输系统包括的节点之后,能够根据每个节点的加速器对加速器进行分组以确定每个通信平面包括的加速器的信息,并通知给各个节点内的加速器,以使各个节点内的加速器根据上述分组信息建立连接。
在一种可能的实现方式中,上述第一加速器还用于在有第二数据需要发送给第二通信平面内的任一加速器时,将第二数据发送给第一节点内的第三加速器,该第三加速器是位于第二通信平面的加速器;第三加速器用于将第二数据通过第二通信链路发送给第二通信平面内的上述任一加速器。
需要说明的是,当第一加速器和本节点内的其他加速器有需要发送给第二通信平面内一个或多个加速器的数据时,均先发送给第三加速器,第三加速器再通过第二通信链路将第二通信平面各个加速器需要的数据分别发送给各个加速器,从而减少节点间的通信规模,降低网络上的数据拥塞和传输时延,提高数据传输效率。
在一种可能的实现方式中,上述第一加速器还用于通过第二通信链路接收第一通信平面内各个加速器发送的第三数据。其中,第一通信平面内一个加速器发送给第一加速器的数据包括该加速器所在的节点内多个加速器需要发送给第一加速器的数据。
在一种可能的实现方式中,上述数据传输系统用于人工智能(artificialintelligence,AI)模型的训练,上述第一数据、第二数据以及第三数据是AI模型训练过程中产生的中间数据。
在人工智能模型的训练过程中,需要采用多个节点内的多个加速器对数据进行处理,不同加速器之间会涉及大量的数据传输,在人工智能模型训练的过场中产生的中间数据通过上述方法进行传输,能够提高模型训练的效率。
在一种可能的实现方式中,上述第一通信链路包括外设总线接口标准(peripheral component interface express,PCIe)总线或统一总线(unified bus,UB);上述第二通信链路为支持传输控制协议(transmission control protocol,TCP)、基于以太网实现远程直接内存访问(remote mirect memory access over converged ethernet,RoCE)协议或无线带宽(InfiniBand,IB)协议的链路。
在一种可能的实现方式中,上述多个节点部署于一个或多个物理机中,上述多个节点内的加速器为图像处理器(graphics processing unit,GPU)、嵌入式神经网络处理器(neural-network processing units,NPU)、张量处理器(tensor processing unit,TPU)或深度学习处理器(deep learning processing units,DPU)。
第二方面,本申请提供一种数据传输方法,应用于包括多个节点的数据传输系统,上述多个节点中的每个节点包括多个加速器,每个节点内的多个加速器之间通过第一通信链路连接;上述多个节点之间的加速器构成多个通信平面,每个通信平面包括每个节点内的一个加速器,且任意两个通信平面包括的加速器互不相同,同一个通信平面包括的加速器之间通过第二通信链路连接;上述数据传输方法包括:
第一节点内的第一加速器通过第一通信链路获取第一节点内的其他加速器发送的第一数据,该第一数据包括第一节点内的其他加速器各自需要发送至第二节点内的第二加速器的数据;然后第一加速器将上述第一数据通过上述第二通信链路发送给第二加速器。上述第一节点和第二节点是上述多个节点中的任意两个节点,第一加速器和第二加速器是第一通信平面内的加速器。
需要说明的是,当第一节点内的其他加速器有数据需要发送给第一通信平面内的多个加速器时,第一节点内的其他加速器能够将需要发送给第一通信平面内各个加速器的数据均先发送给第一加速器,然后第一加速器再通过第二通信链路将接收到的数据中各个加速器需要的数据分别发送给第一通信平面的各个加速器。例如第一节点内包括四个加速器,第一通信平面内包括六个加速器,第一节点内的其他三个加速器将需要发送给第一通信平面内的六个加速器的数据均发送给第一加速器,然后由第一加速器将接收到的数据中第一通信平面内其他五个加速器各自需要的数据,通过第二通信链路分别发送给其他五个加速器。
在一种可能的实现方式中,第一加速器接收处理器发送的分组信息,根据分组信息与上述第二加速器建立基于上述第二通信链路的连接,其中,所述分组信息包括每个通信平面包括的加速器的信息。
在一种可能的实现方式中,所述方法还包括:上述第一加速器在有第二数据需要发送给第二通信平面内的任一加速器时,将该第二数据发送给第一节点内的第三加速器,该第三加速器是位于第二通信平面的加速器;以使第三加速器将第二数据通过第二通信链路发送给第二通信平面内的上述任一加速器。
需要说明的是,当第一加速器有需要发送给第二通信平面内多个加速器的数据时,均先发送给第三加速器,第三加速器再通过第二通信链路将第二通信平面各个加速器需要的数据分别发送给各个加速器。
在一种可能的实现方式中,上述第一加速器还用于通过第二通信链路接收第一通信平面内各个加速器发送的第三数据。其中,第一通信平面内一个加速器发送给第一加速器的数据包括该加速器所在的节点内多个加速器需要发送给第一加速器的数据。
在一种可能的实现方式中,上述数据传输系统用于AI模型的训练,上述第一数据、第二数据以及第三数据是AI模型训练过程中产生的中间数据。在人工智能模型的训练过程中,需要采用多个节点内的多个加速器对数据进行处理,不同加速器之间会涉及大量的数据传输,在人工智能模型训练的过场中产生的中间数据通过上述方法进行传输,能够提高模型训练的效率。
在一种可能的实现方式中,上述第一通信链路包括PCIe总线或UB;上述第二通信链路为支持TCP、RoCE协议或IB协议的链路。
在一种可能的实现方式中,上述多个节点部署于一个或多个物理机中,上述多个节点内的加速器为GPU、NPU、TPU或DPU。
第三方面,本申请提供一种板卡,该板卡包括多个用于执行如上述第二方面或第二方面任意可能实现方式中所述方法的加速器。
第四方面,本申请提供一种计算设备,包括处理器、存储器和多个加速器,上述存储器存储有计算机指令,当处理器执行所述计算机指令时,计算设备调用一个或多个加速器执行如上述第二方面或第二方面任意可能实现方式中所述的方法。
第五方面,本申请一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,计算机程序被加速器执行时,加速器执行如上述第二方面或第二方面任意可能实现方式中所述的方法。
附图说明
为了更清楚地说明本申请实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种计算设备的结构示意图;
图2是本申请实施例提供的一种节点集群的示意图;
图3是本申请实施例提供的一种数据传输系统的示意图;
图4是本申请实施例提供的一种数据传输过程的示意图;
图5是本申请实施例提供的另一种数据传输过程的示意图;
图6是本申请实施例提供的一种数据传输方法的流程示意图;
图7是本申请实施例提供的另一种数据传输方法的流程示意图;
图8是本申请实施例提供的一种矩阵计算的示意图;
图9是本申请实施例提供的另一种矩阵计算的示意图;
图10是本申请实施例提供的一种数据传输装置的结构示意图;
图11是本申请实施例提供的一种板卡的结构示意图;
图12是本申请实施例提供的另一种计算设备的结构示意图。
具体实施方式
下面将结合附图,对本申请中的技术方案进行描述。
本申请实施例中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B的情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。本申请中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其他实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
下面结合附图对本申请进行具体介绍,首先介绍本申请中涉及的专用名词:
人工智能(artificial intelligence,AI)芯片:是一种用于处理人工智能应用中大量计算任务的模块,一个计算设备中可以有一个或多个AI芯片。
网络接口控制器(network interface controller,NIC):又称为网卡,NIC是用于支撑各个计算设备在网络上进行通信的计算机硬件,计算设备的NIC用于将一台计算设备与另一台计算设备连接起来,或者用于使计算设备与交换机等网络设备之间建立连接。
外设总线接口标准交换(peripheral component interface express switch,PCIe Switch)芯片:PCIe Switch芯片是一种用于扩展PCIe链路的模块,PCIe链路使用端到端的连接方式,在一条PCIe链路的两端只能各连接一个设备或器件,因此PCIe链路可以使用PCIe Switch芯片扩展PCIe链路,使得在PCIe链路的一端连接多个设备或者器件,其中,PCIe Switch芯片与其他设备或者器件之间通过PCIe总线连接。
下面首先介绍一种计算设备的内部结构。
如图1所示,图1是本申请实施例提供的一种计算设备的结构示意图,计算设备包括至少一个中央处理器(central processing unit,CPU)和至少一个节点,每个节点包括多个加速器。中央处理器作为主机CPU(Host CPU),通过总线与各个节点内的加速器连接,或者通过总线与交换芯片与多个加速器连接。图1中以一个计算设备包括两个CPU和两个节点,每个节点包括4个加速器为例,一个Host CPU通过PCIe总线以及PCIe交换芯片与一个节点内的4个加速器分别连接,一个节点内的4个加速器通过PCIe总线连接。需要说明的是,计算设备还包括每个加速器对应的内存、网卡等器件。上述加速器可以是图像处理器(graphics processing unit,GPU)、嵌入式神经网络处理器(neural-network processingunits,NPU)、张量处理器(tensor processing unit,TPU)或深度学习处理器(deeplearning processing units,DPU)等AI芯片中的任意一种。
如图2所示,图2中是一种节点集群的示意图,该节点集群中的每个节点包括多个加速器,不同节点之间通过通信网络连接。其中,节点集群中的多个节点可以是如图1所示的一个计算设备内的节点,也可以是不同计算设备内的节点,当多个节点集群位于不同计算设备时,不同计算设备内节点的数量可以相同,也可以不同。在节点集群进行计算的过程中,每个加速器会产生其他加速器需要的数据,因此该加速器需要将数据发送给其他需要的加速器。当一个加速器产生的数据是同一个节点内的加速器需要的数据时,该加速器能够通过内部高速链路将数据发送给节点内的加速器。但是当一个节点内的多个加速器各自产生了需要发送给另外一个节点内的目标加速器的数据时,这多个加速器需要各自将数据通过通信网络发送给另外一个节点内的目标加速器。例如节点N0内的4个加速器各自产生了节点N2内加速器0需要的数据,节点N0内的4个加速器需要分别将数据通过通信网络发送给节点N2内加速器0。当节点集群内的多个节点的多个加速器之间需要互相发送数据时,会导致通信网络中的通信规模较大。例如,节点N0内的4个加速器各自产生了节点N1内4个加速器需要的数据以及节点N2内4个加速器;节点N1内的4个加速器也各自产生了节点N0内4个加速器需要的数据以及节点N2内4个加速器。当通信网络中的通信规模较大时,容易导致网络拥塞,降低数据传输效率;并且节点集群的通信规模会随着节点数量的增加而增加,不利于集群的扩容。
本申请实施例提供一种数据传输方法,应用于如图3所示的包括多个节点的数据传输系统,上述多个节点中的每个节点包括至少两个加速器,每个节点内的多个加速器之间通过第一通信链路连接;多个节点之间的加速器构成多个通信平面,每个通信平面包括每个节点内的一个加速器,且任意两个通信平面包括的加速器互不相同,同一个通信平面内的加速器之间通过第二通信链路连接,图3中仅示出了一个通信平面的加速器(各个节点内的加速器0)通过第二通信链路连接。上述多个节点可以是同一个计算设备中的节点,也可以是多个计算设备中的节点。其中,计算设备的结构如上述图1所描述的计算设备。当多个节点位于同一个计算设备时,同一个节点内的多个加速器通过第一通信链路连接,能够通过第一通信链路进行数据交互;同一个计算设备的不同节点内的加速器之间由于没有通过第一通信链路连接,同一个计算设备的不同节点之间的加速器需要通过第二通信链路进行数据交互。当上述多个节点是多个计算设备中的节点时,不同计算设备的节点之间的加速器通过第二通信链路连接。需要说明的是,当上述多个节点位于多个计算设备中时,任意两个计算设备中包括的节点的数量可以相同,也可以不同。图3中以每个节点内的4个加速器通过第一通信链路连接为例,应理解,每个节点内通过第一通信链路连接的加速器的数量还可以是其他数量。
上述第一通信链路包括总线,例如PCIe总线或统一总线(unified bus,Ubus或UB)等,第一通信链路也可以是包括总线与交换芯片的通信网络,例如PCIe总线和PCIe Switch芯片等。第二通信链路可以是支持TCP、RoCE协议或IB协议的链路,例如以太网或IB网络。其中,每个加速器对应有一个网卡,不同节点的加速器通过网卡和交换机等网络设备连接。
如果数据传输系统包括n个节点N0~Nn-1,每个节点包括m个加速器,则该数据传输系统共包括m*n个加速器,其中,m和n均是大于1的整数。数据传输系统的n个节点中,每个节点内的一个加速器与其他各个节点内的一个加速器通过第二通信链路连接,构成通过第二通信链路连接的通信平面,且每个通信平面包括一个节点内的一个加速器,任意两个通信平面所包括的加速器不同。上述包括n个节点,每个节点包括m个加速器的数据传输系统共包括m个通信平面,每个通信平面包括n个加速器。
上述n个节点在共同完成一项任务的过程中,例如通过模型并行(modelparallelism)的方式训练神经网络模型,每个加速器会生成需要发送给其他加速器的数据。当一个节点内的一个源加速器有数据需要发送给一个或多个目的加速器时,这一个或多个目的加速器可能与源加速器位于同一个节点,也可能源加速器位于不同节点;并且当有多个目的加速器时,这多个目的加速器可能部分与源加速器位于同一个节点,部分目的加速器与源加速器位于不同的节点。需要说明的是,源加速器发送给各个目的加速器的数据可能相同,也可能发送给部分目的加速器的数据是相同的,还可能是发送给各个加速器的数据各不相同,本申请实施例不做具体限定。
本申请实施例中,为了将各个加速器中生成的数据发送给需要这些数据的节点,首先各个节点内的加速器通过第一通信链路交互数据。以数据传输系统中第一节点内的第一加速器为例,其中,第一节点是数据传输系统中的任意一个节点,第一加速器是第一节点内的任意一个加速器,该第一加速器位于数据传输系统的第一通信平面。当第一节点内的加速器有数据需要发送给位于第一通信平面内的加速器时,先通过第一通信链路将数据发送给第一节点内位于第一通信平面的第一加速器。当第一加速器以及第一节点内的其他加速器有数据需要发送给位于第二通信平面内的加速器时,第一加速器以及其他加速器均将数据发送给第一节点内位于第二通信平面的加速器。其中,第二通信平面是数据传输系统中的任意一个通信平面。各个节点内的加速器均执行上述节点内的数据交互操作,各个节点内的加速器完成节点内数据交互之后,每个加速器中保存的是该加速器所在的通信平面内各个加速器需要的数据。在各个节点内的加速器数据交互完成之后,位于同一个通信平面内的各个加速器再通过第二通信链路交互数据,最终每个加速器得到数据传输系统内各个加速器需要发送给该加速器的数据。需要说明的是,各个加速器发送的数据中均包括指示数据对应的目的加速器的指示信息,该指示信息可以是目的加速器的标识或者地址,例如,节点N0中的加速器1有数据需要发送给节点N1中的加速器0,节点N0中的加速器1将该数据发送给节点N0中的加速器0,该数据中包括节点N1中的加速器0的地址。
示例性的,节点0中的m个加速器的编号分别为A0~Am-1,节点1中的m个加速器的编号分别为Am~A2m-1,节点Nk中的m个加速器的编号分别为Akm~A(k+1)*m-1,其中,k为小于或等于n的整数。其中,加速器A0、Am、A2m、Akm、…、A(n-1)m是位于同一个通信平面的加速器,加速器A1、Am+1、A2m+1、…Akm+1、…、A(n-1)m+1是位于同一个通信平面的加速器,依此类推,加速器Am-1、A2m-1、A3m-1、…A(k+1)m-1、…、An*m-1是位于同一个通信平面的加速器。
用(x,y)表示加速器Ax需要发送给加速器Ay的数据,其中,x和y均是大于或等于0,且小于或等于m*n的整数。当一个节点Nk中的m个加速器均有需要发送给其他加速器的数据时,对于节点Nk中的任意一个加速器Ax,该加速器需要发送给其他加速器的数据分别为(x,0)、(x,1)、(x,2)、…、(x,n*m-1),该加速器先将各个数据分别发送给各个数据对应的转发加速器,该转发加速器位于节点Nk中,且与目的加速器位于同一个通信平面的加速器。例如Ax将发送给目的加速器A0、Am、A2m、…Akm、…、A(n-1)m的数据均发送给加速器Akm,将需要发送给目的加速器A1、Am+1、A2m+1、…Akm+1、…、A(n-1)m+1发送给加速器Akm+1,依此类推,将需要发送给目的加速器Am-1、A2m-1、A3m-1、…A(k+1)m-1、…、An*m-1的数据发送给加速器A(k+1)*m-1。同时加速器Ax会接收到节点Nk中其他加速器发送的数据,加速器Ax接收的数据是需要发送给与Ax位于同一个通信平面的加速器的数据。
节点Nk中的任意一个加速器均会执行上述操作,最终节点Nk中任意一个加速器中得到的数据是与该加速器位于同一个通信平面的n个加速器需要的数据。例如,加速器Akm中有需要发送给A0、Am、A2m、…Akm、…、A(n-1)m的数据,加速器Akm+1中有需要发送给A1、Am+1、A2m+1、…Akm+1、…、A(n-1)m+1的数据。
同时数据传输系统内任意一个节点内的加速器均会执行上述操作,各个节点内的加速器完成节点内的数据交互后,任意一个加速器中得到的是与该加速器位于同一个通信平面的n个加速器需要的数据。例如加速器A0中包括有需要发送给A0、Am、A2m、…Akm、…、A(n-1)m的数据,加速器A1中有需要发送给A1、Am+1、A2m+1、…Akm+1、…、A(n-1)m+1的数据。最后各个加速器执行节点间的数据交换,每个加速器将与该加速器位于同一通信平面的各个加速器需要的数据通过第二通信链路分别发送给各个加速器,完成同一个通信平面的加速器的数据交互,最终每个加速器得到的是数据传输系统内各个加速器需要发送给该加速器的数据。例如,加速器A0将需要发送给Am的数据通过第二通信链路发送给Am,加速器A0将需要发送给Akm的数据通过第二通信链路发送给Akm等等,最终加速器A0得到各个加速器需要发送给A0的数据,Akm得到各个加速器需要发送给Akm的数据。
下面以加速器是GPU,两个节点N0和N1之间的数据传输为例,对本申请提供的数据传输方法进行详细介绍。如图4所示,图4是本申请实施例提供的一种数据传输的示意图。图4中仅示出节点内GPU的连接关系以及一个通信平面的GPU的连接关系。N0包括G0、G1、G2和G3共四个GPU,N1包括G4、G5、G6和G7共四个GPU。该数据传输系统包括L0(包、L1、L2和L3共四个通信平面,其中,通信平面L0包括G0和G4,通信平面L1包括G1和G5,通信平面L2包括G2和G6,通信平面L3包括G3和G7。各个GPU分别存在需要发送给两个节点内的所有GPU的数据,例如G0包括需要分别发送给G0~G7的数据(0,0)、(0,1)、…、(0,7),G1包括需要分别发送给G0~G7的数据(1,0)、(1,1)、…、(1,7),依此类推,G7包括需要分别发送给G0~G7的数据(7,0)、(7,1)、…、(7,7)。N0和N1首先进行各自节点内的GPU的数据交互,具体包括:对于N0或N1内的任意一个GPU,例如N0内的G0,当N0内的一个或多个GPU有数据需要发送给位于通信平面L0内的GPU时,均先通过第一通信链路将数据发送给G0;当G0有数据需要发送给其他通信平面内的目的GPU时,先通过第一通信链路将数据发送给N0内与目的GPU位于同一通信平面的GPU;例如,G0会接收到G1发送的数据(1,0)和(1,4),接收到G2发送的数据(2,0)和(2,4),接收到G3发送的数据(3,0)和(3,4);G0将需要发送给G1的数据(0,1)和需要发送给G5的数据(0,5)都发送给G1,G0将需要发送给G2的数据(0,2)和需要发送给G6的数据(0,6)都发送给G2,G0将需要发送给G3的数据(0,3)和需要发送给G7的数据(0,7)都发送给G3。
N0和N1内的各个GPU均执行上述节点内的数据交互,各节点内的GPU在完成节点内的数据交互之后,每个GPU中的数据是与该GPU位于同一个通信平面的各个GPU需要的数据。如图4中所示,在节点内的数据交互完成之后,G0中的数据是G0和G4需要的数据,包括数据(0,0)、(1,0)、(2,0)、(3,0)、(0,4)、(1,4)、(2,4)和(3,4);G1中的数据是G1和G5需要的数据,包括数据(0,1)、(1,1)、(2,1)、(3,1)、(0,5)、(1,5)、(2,5)和(3,5);G4中的数据是G0和G4需要的数据,包括数据(4,0)、(5,0)、(6,0)、(7,0)、(4,4)、(5,4)、(6,4)和(7,4);G5中的数据是G1和G5需要的数据,包括数据(4,1)、(5,1)、(6,1)、(7,1)、(4,5)、(5,5)、(6,5)和(7,5)。
在各节点内的GPU完成节点内的数据交互之后,位于同一个通信平面的各个GPU通过第二通信链路进行节点间的数据交互,各个GPU将同一通信平面内其他GPU各自需要的数据通过第二通信链路分别发送给对应的GPU。具体的,G0将数据(0,4)、(1,4)、(2,4)和(3,4)发送给G4;G4将数据(4,0)、(5,0)、(6,0)和(7,0)发送给G0;G1将数据(0,5)、(1,5)、(2,5)和(3,5)发送给G5,G5将数据(4,1)、(5,1)、(6,1)和(7,1)发送给G1;其他通信平面的数据交互过程与上述相同,在此不再一一赘述。位于同一通信平面的GPU完成数据交互之后,每个GPU中的数据均是数据传输系统中各个GPU需要发送给该GPU的数据,例如,G0中的数据是(0,0)、(1,0)、(2,0)、(3,0)、(4,0)、(5,0)、(6,0)和(7,0),G5中的数据是(0,5)、(1,5)、(2,5)、(3,5)、(4,5)、(5,5)、(6,5)和(7,5)。
以上是以两个节点中的数据传输为例对本申请实施例提供的数据传输方法进行介绍,应理解,本申请实施例中,对于包括两个以上节点的系统,同样能够用上述方法进行数据传输。下面以加速器是GPU、8个节点N0~N8之间的数据传输为例,对本申请提供的数据传输方法进行详细介绍。如图5所示,图5是本申请实施例提供的另一种数据传输的示意图。数据传输系统包括4台计算设备,每个计算设备包括2个节点,每个节点包括4个GPU,即数据传输系统共包括32个GPU,分别为G0~G31。该数据传输系统共包括4个通信平面,如图5中所示,4个通信平面分别为L0、L1、L2和L3,通信平面L0包括G0、G4、G8、G12、G16、G20、G24和G28,通信平面L1包括G1、G5、G9、G13、G17、G21、G25和G29,通信平面L2包括G2、G6、G10、G14、G18、G22、G26和G30,通信平面L3包括G3、G7、G11、G15、G19、G23、G27和G31。每个通信平面包括8个GPU,图5中仅示出通信平面L0通过第二通信链路连接。
当数据传输系统中的各个GPU有数据需要发送给其他GPU时,首先进行节点内的GPU之间的数据交互,对于通信平面L0中的8个GPU,G0会分别接收节点N0内的G1~G3发送给通信平面L0内各个GPU的数据,同时G0将需要发送给通信平面L1内各个GPU的数据发送给G1,G0将需要发送给通信平面L2内各个GPU的数据发送给G2,G0将需要发送给通信平面L3内各个GPU的数据发送给G3。其他节点内的GPU之间同样根据上述方法进行数据交互。例如,节点N5内的G21会接收G20、G22和G23分别发送给通信平面L1内各个GPU的数据,同时G21将需要发送给通信平面L0内各个GPU的数据发送给G20,G21将需要发送给通信平面L2内各个GPU的数据发送给G22,G21将需要发送给通信平面L3内各个GPU(的数据发送给G23。
各节点内的GPU在完成节点内的数据交互之后,每个GPU中的数据是与该GPU位于同一个通信平面内的各个GPU需要的数据。例如,G0中的数据是通信平面L0内8个GPU各自需要的数据,G1中的数据是通信平面L1内8个GPU各自需要的数据,G4中的数据是通信平面L0内8个GPU各自需要的数据,G6中的数据是通信平面L2内8个GPU各自需要的数据。
在各节点内的GPU完成节点内数据交互之后,位于同一个通信平面的各个GPU通过第二通信链路进行节点间的数据交互。各个GPU将同一通信平面内其他GPU需要的数据通过第二通信链路分别发送给其他GPU。具体的,G0将数据(0,4)、(1,4)、(2,4)和(3,4)发送给G4,将数据(0,8)、(1,8)、(2,8)和(3,8)发送给G8,将数据(0,12)、(1,12)、(2,12)和(3,12)发送给G12等;G4将数据(4,0)、(5,0)、(6,0)和(7,0)发送给G0,将数据(4,8)、(5,8)、(6,8)和(7,8)发送给G8,将数据(4,12)、(5,12)、(6,12)和(7,12)发送给G12等;G1将数据(0,5)、(1,5)、(2,5)和(3,5)发送给G5,G5将数据(4,1)、(5,1)、(6,1)和(7,1)发送给G1等等;其他通信平面内的GPU的数据交互过程与上述相同,在此不再一一赘述。位于同一通信平面的GPU完成节点间的数据交互之后,每个GPU中的数据均是数据传输系统中各个GPU需要发送给该GPU的数据,例如,G0中的数据是(0,0)、(1,0)、(2,0)、…、(31,0);G1中的数据是(0,1)、(1,1)、(2,1)、…、(31,1)。
图6是本申请实施例提供的一种数据传输方法的流程示意图,该数据传输方法应用于如图3所示的数据传输系统,该数据传输方法包括S601至S602。
S601.第一加速器获取第一节点内其他加速器通过第一通信链路发送的第一数据。
其中,第一数据包括第一节点内的其他加速器各自需要发送给第二节点内的第二加速器的数据;第一节点和第二节点是数据传输系统的多个节点中的任意两个节点,第一加速器和第二加速器是第一通信平面内的加速器。
上述n个节点在共同完成一项任务的过程中,例如通过模型并行(modelparallelism)的方式训练神经网络模型时,每个加速器会生成需要发送给其他加速器的数据。第一节点内的一个或多个加速器生成了需要发送给第二节点内的第二加速器的数据;第一节点内的这一个或多个加速器通过第一通信链路将各自需要发送给第二加速器的数据发送给与第二加速器位于同一通信平面的第一加速器。其中,各个加速器发送的数据中均包括将数据发送给第二加速器的指示信息,例如第二加速器的标识或者第二加速器的地址;第一节点和第二节点可以是同一个计算设备中的两个节点,也可以是不同计算设备中的两个节点。
S602.第一加速器通过第二通信链路将第一数据发送给第二加速器。
第一加速器在接收到上述第一节点内各个加速器发送的需要发送给第二加速器的数据之后,得到第一数据,然后将第一数据通过第二通信链路发送给第二加速器。
第一节点内的其他加速器将需要发送给第二加速器的数据发送给第一节点内的第一加速器的具体操作,可以参照上述图4或图5对应的实施例中关于节点内数据交互的操作;第一加速器将数据通过第二通信链路发送给第二加速器的具体操作,可以参照上述图4或图5对应的实施例中关于节点间数据交互的操作。例如,第一节点可以是图4中的N0,第二节点是图4中的N1,第一加速器是图4中的G0,第二加速器是图4中的G4,具体的数据交互操作在此不再赘述。
上述图6对应的方法实施例是以两个节点中一个节点内的一个加速器接收同一个节点内的其他加速器发送的数据,然后通过第二通信链路发送给另一个节点内的一个加速器为例。应理解,本申请提供的数据传输方法能够用于图3所示的数据传输系统中的各个节点内的每个加速器。各个节点内的各个加速器能够先通过第一通信链路进行节点内的数据交互,以使任意一个加速器中得到的数据是与该加速器位于同一个通信平面的各个加速器需要的数据;然后各个节点内的加速器分别通过第二通信链路与同一个通信平面内的各个加速器交互数据,最终每个加速器得到各自需要的数据。如图7所示,图7是本申请实施例提供的另一种数据传输方法的流程示意图,该数据传输方法应用于如图3所示的数据传输系统,该数据传输方法包括S701至S703。
S701.处理器向各自管理的节点内的各个加速器发送分组信息,该分组信息包括每个通信平面包括的加速器的信息。
上述数据传输系统包括n个节点和至少一个Host CPU,其中,每个节点包括m个加速器,一个Host CPU管理至少一个节点。上述分组信息包括数据传输系统中每个通信平面包括的加速器的信息。其中,加速器的信息可以是加速器的标识或地址。例如上述图5所示的数据传输系统包括8个节点,每个节点包括4个GPU,该数据传输系统包括4个通信平面,每个通信平面包括8个GPU,则分组信息包括每个通信平面包括的8个GPU的信息。各个节点内的加速器根据上述分组信息与位于同一个通信平面的其他各个加速器建立基于第二通信链路的连接。
S702.各个节点内的加速器进行节点内的数据交互,以使一个加速器得到的数据是与该加速器位于同一个通信平面的各个加速器需要的数据。
上述n个节点在共同完成一项任务的过程中,例如通过模型并行的方式训练神经网络模型时,每个加速器会生成需要发送给其他加速器的数据。例如第一节点内的一个或多个加速器生成了需要发送给第二节点内的第二加速器的第一数据,第一节点内的这一个或多个加速器根据上述分组信息,确定第一节点内的第一加速器与第二节点内的第二加速器都位于第一通信平面,第一节点内的这一个或多个加速器各自将需要发送给第二加速器的数据先通过第一通信链路发送给第一加速器。其中,第一节点内的各个节点发送的数据中均包括将数据发送给第二加速器的指示信息,例如第二加速器的标识或者第二加速器的地址等;第一节点和第二节点是数据传输系统中任意两个不同的节点,第一节点和第二节点可以是同一个计算设备中的两个节点,也可以是不同计算设备中的两个节点。
需要说明的是,当第一节点内的其他加速器有数据需要发送给第一通信平面内的多个加速器时,第一节点内的其他加速器能够将需要发送给第一通信平面内各个加速器的数据均先发送给第一加速器。例如第一节点内包括四个加速器,第一通信平面内包括六个加速器,第一节点内的其他三个加速器将各自需要发送给第一通信平面内的六个加速器的数据均发送给第一加速器。
在一种可能的实现方式中,第一节点内的第一加速器会生成需要发送给第二节点内第四加速器的第二数据,第一加速器根据上述分组信息确定第一节点内的第三加速器与第四加速器位于同一个通信平面,则第一加速器将第二数据发送给第三加速器,以使第三加速器通过第二通信链路将第二数据发送给第四加速器。其中,第二数据中包括指示将第二数据发送给第四加速器的指示信息。
本申请实施例中,各个节点内的加速器生成需要发送给其他加速器的数据后,各个节点内的加速器通过第一通信链路进行节点内的加速器之间的数据交互,最终使得一个加速器得到的数据是与该加速器位于同一通信平面的各个加速器需要的数据。节点内加速器的数据交互的方法可以参照上述图3至图5对应的实施例中关于节点内数据交互的操作,在此不再赘述。
S703.同一个通信平面内的各个加速器分别通过第二通信链路进行节点间的数据交互,得到每个加速器各自需要的数据。
第一加速器在接收到第一节点内其他各个加速器发送的需要发送给第二加速器的数据之后,根据接收到的数据中的指示信息,将其他各个加速器需要发送给第二加速器的数据以及第一加速器需要发送给第二加速器的数据,通过第二通信链路发送给第一加速器。同样的,第三加速器通过第二通信链路将第二数据发送给第四加速器。第一加速器也会通过第二通信链路接收第一通信平面内其他加速器各自发送的第三数据,第三数据包括第一通信平面内的各个加速器所属的节点内的加速器发送给第一加速器的数据。
本申请实施例中,各个节点内的加速器通过第一通信链路进行节点内的加速器的数据交互之后,任意一个加速器的内存中保存的是该加速器所在的通信平面内的各个加速器需要的数据;然后位于同一通信平面的各个加速器通过第二通信链路进行节点间的数据交互,最终每个加速器得到各自需要的数据,即数据传输系统中各个加速器需要发送给该加速器的数据,位于同一通信平面的加速器进行节点间的数据交互的方法可以参照上述图3至图5对应的实施例中关于节点间数据交互的操作,在此不再赘述。
通过本申请实施例提供的数据传输方法,在多个节点内的各个加速器需要相互交互数据时,各个节点内的加速器先通过节点内的通信链路进行数据交互,各个节点内的加速器通过节点内的第一通信链路进行数据交互之后,任意一个加速器中的数据是与该加速器位于同一通信平面的各个加速器需要的数据,位于同一个通信平面内的各个加速器再通过第二通信链路交互数据,最终实现各个加速器得到各自需要的数据。通过实施本申请提供的数据传输方法,能够充分利用节点内的内部高速链路实现同一通信平面的数据聚合,然后再通过第二通信链路在各个节点的加速器之间进行数据交互,能够降低节点间的加速器相互发送数据的次数,即降低节点间的通信规模,从而能够降低网络上的数据拥塞和传输时延,提高数据传输效率,有利于进行系统扩容以增强算力。例如,上述图4所对应的实施例中,节点N0内的G0~G3有需要发送给节点N1内G4的数据时,G1~G3先将需要发送给G4的数据通过节点内的第一通信链路发送给G0,然后由G0将G0~G3需要发送给G4的数据通过第二通信链路发送给G4,而不需要G0~G3分别将数据通过第二通信链路发送给G4,能够将节点间的通信次数减少到原来的四分之一。
本申请实施例提供的数据传输方法能够应用于矩阵运算,例如神经网络模型的模型训练过程中的矩阵运算。如图8所示,图8是本申请实施例提供的一种矩阵运算的示意图。图8是通过如图4所示的包括两个节点、8个GPU的数据传输系统进行模型训练的示意图,8个GPU完成模型训练过程中Z=(B x C)x D的矩阵乘法计算。其中,B为a*b的矩阵,C为b*c的矩阵,D为c*d的矩阵,E=B x C,则E为a*c的矩阵。在进行上述矩阵乘法运算时,矩阵C的数据量较大,例如矩阵C为嵌入表(embedding table),需要将矩阵C部署到多个GPU中,例如部署到G0~G7共8个GPU中,将矩阵C按列分成8个子矩阵,如果将矩阵按列平均分成8个子矩阵,则子矩阵C0~C7均为b*c1的矩阵,其中c1=c/8。如图8所示,8个GPU输入数据为矩阵C的一个子矩阵以及矩阵B,即每个GPU完成矩阵乘法B*C的部分计算。例如G0完成E0=B x C0的矩阵计算,G4完成E4=B x C4的矩阵计算。
如图8所示,每个GPU完成矩阵乘法计算后,每个GPU中得到a*c1的8个矩阵E0~E7。然后各个GPU需要继续协作完成与矩阵D的矩阵乘法运算,由于矩阵D是c*d的矩阵,矩阵E0~E7不能和矩阵D直接进行矩阵乘法计算,需要先通过上述各节点内GPU间的数据交互以及节点间同一通信平面的GPU间的数据交互的方法,将各个GPU中的矩阵转换为列数为c的矩阵。矩阵E0~E7组合后的矩阵E为a*c的矩阵,因此可以将矩阵E按行分成8个子矩阵F0~F7,如果将矩阵E按行平均分成8个子矩阵,每个子矩阵为a1*c,其中a1=a/8。然后进行节点内各GPU的数据交互和节点间各GPU的数据交互,将每个GPU中的矩阵转换为a1*c的矩阵,以完成与矩阵D的乘法运算。
根据上述分析,GPU间需要进行数据交互,以将a*c1的矩阵E0~E7转换为a1*c的矩阵F0~F7。为便于描述,下面以a等于200,c等于800为例,则a1=25,c1=100,E为200*800的矩阵,E0~E7为200*100的矩阵,F0~F7为25*800的矩阵。如图9所示,G0中矩阵E0相当于矩阵E的第1~100列,G1中矩阵E1相当于矩阵E的第101~200列,G2中矩阵E2相当于矩阵E的第201~300列,依此类推,G7中矩阵E7相当于矩阵E的第701~800列。为了将各个GPU中200*100的矩阵转换为25*800的矩阵,首先将各个GPU中的矩阵均按行分成8个25*100的矩阵,如果G0中最终得到的矩阵F0是矩阵E中的第1~25行的数据,则G0需要接收G1~G7中各个矩阵的第1~25行的数据;如果G1中最终得到的矩阵F1是矩阵E中的第26~50行的数据,则G1需要接收G0以及G2~G7中各个矩阵的第26~50行的数据;如果G2中最终得到的矩阵F2是矩阵E中的第51~75行的数据,则G2需要接收G0、G1以及G3~G7中各个矩阵的第51~75行的数据;依此类推,如果G7中最终得到的矩阵F7是矩阵E中的第176~200行的数据,则G7需要接收G0~G6中各个矩阵的第176~200行的数据。
对于G0,G0中的第1~25行的数据是G0自身需要的数据,为G0发送给G0的数据,相当于上述图4对应的实施例中的数据(0,0);G0中的第26~50行的数据是G1需要的数据,为G0发送给G1的数据,相当于上述图4对应的实施例中的数据(0,1);依此类推,G0中的第176~200行的数据是G7需要的数据,为G0发送给G7的数据,相当于上述图4对应的实施例中的数据(0,7)。因此,G0中包括发送给G0~G7的数据(0,0)、(0,1)、…、(0,7)。
对于G1,G1中的第1~25行的数据是G0需要的数据,为G1发送给G0的数据,相当于上述图4对应的实施例中的数据(1,0);G1中的第26~50行的数据是G1自身需要的数据,为G1发送给G1的数据,相当于上述图4对应的实施例中的数据(1,1);依此类推,G1中的第176~200行的数据是G7需要的数据,为G1发送给G7的数据,相当于上述图4对应的实施例中的数据(1,7)。因此,G1中包括发送给G0~G7的数据(1,0)、(1,1)、…、(1,7)。
同样的,G2中包括发送给G0~G7的数据(2,0)、(2,1)、…、(2,7);G3中包括发送给G0~G7的数据(3,0)、(3,1)、…、(3,7);G4中包括发送给G0~G7的数据(4,0)、(4,1)、…、(4,7);G5中包括发送给G0~G7的数据(5,0)、(5,1)、…、(5,7);G6中包括发送给G0~G7的数据(6,0)、(6,1)、…、(6,7);G7中包括发送给G0~G7的数据(7,0)、(7,1)、…、(7,7)。其中,一个GPU需要发送给另一个GPU的数据均为25行100列的数据。
通过上述分析,G0~G7中的任何一个GPU都要分别向各个GPU发送25行100列的数据,每个GPU也要接收其他各个GPU发送的25行100列的数据,才能够将G0中E0转换为F0,将G1中的E1转换为F1,等等。通过上述图4对应的实施例中的方法,通过节点内GPU的数据交互和节点间同一通信平面的GPU的数据交互,将8个GPU中的数据分别转换为a1*c的矩阵F0~F7,每个GPU中的矩阵与矩阵D完成矩阵乘法运算,分别得到a1*d的矩阵Z0~Z7。
对于上述方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明所必须的。
本领域的技术人员根据以上描述的内容,能够想到的其他合理的步骤组合,也属于本发明的保护范围内。其次,本领域技术人员也应该熟悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明所必须的。
上文中结合图1至图9详细描述了根据本申请实施例所提供的数据传输系统和方法,下面结合图10至图12,介绍本申请实施例所提供的关于数据传输的装置、板卡和计算设备。
如图10所示,图10是本申请实施例提供的一种数据传输装置的结构示意图,该数据传输装置100用于上述数据传输系统中的任一加速器,该数据传输装置100包括通信单元101和处理单元102,其中,
通信单元101,用于通过第一通信链路获取第一节点内的其他加速器发送的第一数据,该第一数据包括第一节点内的其他加速器各自需要发送至第二节点内的第二加速器的数据。上述第一节点和第二节点是上述多个节点中的任意两个节点,第一加速器和第二加速器是第一通信平面内的加速器。例如第一节点内的一个或多个加速器生成了需要发送给第二节点中的第二加速器的第一数据,第一节点中的这一个或多个加速器确定第一节点中的第一加速器与第二节点中的第二加速器位于同一通信平面,第一节点中的这一个或多个加速器各自将需要发送给第二加速器的数据先通过第一通信链路发送给第一加速器。其中,第一节点中这一个或多个加速器发送的数据中均包括将数据发送给第二加速器的指示信息,例如第二加速器的标识或者第二加速器的地址等。
处理单元102,用于在第一加速器的通信单元101接收到第一节点内其他加速器发送的数据后,根据各个节点发送的数据中的指示信息,确定各个加速器发送的数据的目的加速器,即第二加速器,然后通过通信单元101将各个加速器发送给第二加速器的发送给第二加速器。
在一种可能的实现方式中,处理单元102还用于确定需要发送给第四加速器的第二数据,并确定第一节点内的第三加速器与第四加速器位于同一通信平面;通信单元101还用于通过第一通信链路发送第二数据给第一节点内的第三加速器,以使第三加速器通过第二通信链路将第二数据发送给第四加速器;其中,第四加速器是与第一加速器位于不同节点的加速器,第二数据包括将第二数据发送给第四加速器的指示信息。
在一种可能的实现方式中,通信单元101还用于接收与第一加速器位于相同通信平面内的其他加速器各自发送的数据。
上述数据传输装置100实现数据传输的具体操作可以参照上述图3至图9所描述的实施例中任一加速器执行的操作,在此不再赘述。
如图11所示,图11是本申请实施例提供的一种板卡的结构示意图,该板卡110包括多个加速器111和多个网络接口控制器(network interface controller,NIC)112,其中,多个加速器111中的部分或者全部通过第一通信链路连接,即板卡110包括上述图3至图5对应的实施例中描述的一个或多个节点。每个节点内的多个加速器之间通过上述第一通信链路连接,每个加速器111和一个NIC 112通过总线113连接,一个NIC 112能够供一个或多个加速器111用来发送或接收数据。每个加速器111对应的NIC 112用于向其他节点内的加速器111发送数据,或者接收其他节点内的加速器111发送的数据。加速器111可以是GPU、NPU、TPU或DPU等AI芯片中的任意一种。
当一个板卡110包括一个上述节点时,该板卡110能够设置于计算设备中,板卡110上通过第一通信链路的连接的加速器111能够完成上述图3至图9所对应的实施例中所描述的节点内数据交互的各项操作;也能够与计算设备内其他板卡110上的节点构建上述方法实施例中的第二通信链路,多个板卡110上的多个节点内的加速器111能够完成上述图3至图9所对应的实施例中所描述的节点间的数据交互的各项操作。当一个板卡110包括多个上述节点时,板卡110上的多个节点能够建立如上述方法实施例中所述的第二通信链路,板卡110上的任意一个节点内通过第一通信链路的连接的加速器111能够完成上述图3至图9所对应的实施例中所描述的节点内数据交互的各项操作;也能够与该板卡110上其他节点内的加速器配合完成上述图3至图9所对应的实施例中所描述的节点间的数据交互的各项操作。或者与计算设备中其他板卡110上的其他节点内的加速器配合完成上述图3至图9所对应的实施例中所描述的节点间的数据交互的各项操作。
上述板卡110实现数据传输的具体操作可以参照上述图3至图9所描述的实施例中任一节点内加速器执行的操作,在此不再赘述。
参见图12,图12是本申请实施例提供的一种计算设备的示意图,该计算设备120包括:一个或者多个处理器121、通信接口122、存储器123以及多个加速器124,所述处理器121、通信接口122、存储器123和加速器124通过总线125相互连接,其中,处理器121与加速器124之间的连接关系可以参照上述图1中的描述,多个加速器124能够构建如上述图3所描述的一个或多个节点,多个加速器124可以部署在如图11所示的一个或多个板卡110上。
处理器121执行的各种操作可参照上述图7中S701中的具体操作。任一加速器124执行的具体操作可参照上述图3至图9所描述的实施例中加速器执行的操作,其中,处理器121和加速器124之间的关系可以参见上述图3的相关描述,在此不再赘述。
处理器121可以有多种具体实现形式,例如处理器121可以为CPU,处理器121可以是单核处理器或多核处理器。处理器121可以由CPU和硬件芯片的组合。上述硬件芯片可以是专用集成电路(application-specific integrated circuit,ASIC),可编程逻辑器件(programmable logic device,PLD)或其组合。上述PLD可以是复杂可编程逻辑器件(complex programmable logic device,CPLD),现场可编程逻辑门阵列(field-programmable gate array,FPGA),通用阵列逻辑(generic array logic,GAL)或其任意组合。处理器121也可以单独采用内置处理逻辑的逻辑器件来实现,例如FPGA或数字信号处理器(digital signal processor,DSP)等。
加速器124可以是GPU、NPU、TPU或DPU等AI芯片中的任意一种。
通信接口122可以为有线接口或无线接口,用于与其他模块或设备进行通信,有线接口可以是以太接口、局域互联网络(local interconnect network,LIN)等,无线接口可以是蜂窝网络接口或使用无线局域网接口等。
存储器123可以是非易失性存储器,例如,只读存储器(read-only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存。存储器123也可以是易失性存储器,易失性存储器可以是随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(dynamic RAM,DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data rate SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhancedSDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambus RAM,DR RAM)。
存储器123也可用于存储程序代码和数据,以便于处理器121或加速器124调用存储器123中存储的程序代码执行上述方法实施例中实现数据传输的操作步骤。此外,计算设备120可能包含相比于图12展示的更多或者更少的组件,或者有不同的组件配置方式。
总线125可以是PCIe总线,或扩展工业标准结构(extended industry standardarchitecture,EISA)总线、统一总线(unified bus,Ubus或UB)、计算机快速链接(computeexpress link,CXL)、缓存一致互联协议(cache coherent interconnect foraccelerators,CCIX)等。总线125可以分为地址总线、数据总线、控制总线等。总线125除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,图12中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
可选地,该计算设备120还可以包括输入/输出接口126,输入/输出接口126连接有输入/输出设备,用于接收输入的信息,输出操作结果。
具体地,上述计算设备120执行各种操作的具体实现可参照上述图2至图9所描述的方法实施例中的具体操作,在此不再赘述。
本申请实施例还提供一种数据传输系统,该系统包括一个或多个上述计算设备120,该系统中的各个计算设备120中各个加速器之间的数据交互过程可以参照上述图3至图9所描述的方法实施例中的具体操作,在此不再赘述。
本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在处理器上运行时,可以实现上述方法实施例中的方法步骤,所述计算机可读存储介质的处理器在执行上述方法步骤的具体实现可参照上述方法实施例图3至图9所描述的方法实施例中所示的具体操作,在此不再赘述。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
上述实施例,可以全部或部分地通过软件、硬件、固件或其他任意组合来实现。当使用软件实现时,上述实施例可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载或执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以为通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集合的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质、或者半导体介质。半导体介质可以是固态硬盘(solid state drive,SSD)。
本申请实施例方法中的步骤可以根据实际需要进行顺序调整、合并或删减;本申请实施例系统中的模块可以根据实际需要进行划分、合并或删减。
以上对本申请实施例进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (18)
1.一种数据传输系统,其特征在于,所述数据传输系统包括多个节点,所述多个节点中的每个节点包括多个加速器,每个节点内的所述多个加速器之间通过第一通信链路连接;所述多个节点之间的加速器构成多个通信平面,每个通信平面包括每个节点内的一个加速器,且任意两个通信平面包括的加速器互不相同,同一个通信平面内的加速器之间通过第二通信链路连接;其中,
第一加速器,用于获取第一节点内的其他加速器发送的第一数据,所述第一数据包括所述第一节点内的其他加速器各自待发送至第二节点内的第二加速器的数据,所述第一节点和所述第二节点是所述多个节点中的任意两个节点,所述第一加速器和所述第二加速器是第一通信平面内的加速器;
所述第一加速器,还用于将所述第一数据通过所述第二通信链路发送给所述第二加速器。
2.根据权利要求1所述的数据传输系统,其特征在于,所述数据传输系统还包括处理器,
所述处理器,用于向所述多个节点内的各个加速器发送分组信息,所述分组信息包括每个通信平面包括的加速器的信息。
3.根据权利要求2所述的数据传输系统,其特征在于,所述第一加速器还用于根据接收的所述分组信息与所述第二加速器建立所述第二通信链路的连接。
4.根据权利要求1至3任一项所述的数据传输系统,其特征在于,
所述第一加速器,还用于通过所述第一通信链路发送第二数据给所述第一节点内的第三加速器,其中,所述第三加速器位于第二通信平面,所述第二数据为所述第一加速器待发送至所述第二通信平面内任一加速器的数据;
所述第三加速器,用于将所述第二数据通过所述第二通信链路发送给所述第二通信平面内的所述任一加速器。
5.根据权利要求1至4任一项所述的数据传输系统,其特征在于,所述第一加速器还用于通过所述第二通信链路接收所述第一通信平面内各个加速器发送的第三数据。
6.根据权利要求1至5任一项所述的数据传输系统,其特征在于,所述数据传输系统用于人工智能AI模型的训练,所述第一数据是所述AI模型训练过程中产生的中间数据。
7.根据权利要求1至6任一项所述的数据传输系统,其特征在于,所述第一通信链路包括外设总线接口标准PCIe总线或统一总线UB;所述第二通信链路为支持传输控制协议TCP、基于以太网实现远程直接内存访问RoCE协议或无线带宽IB协议的链路。
8.根据权利要求1至7任一项所述的数据传输系统,其特征在于,所述多个节点部署于一个或多个物理机中,所述多个节点内的加速器为图像处理器GPU、嵌入式神经网络处理器NPU、张量处理器TPU或深度学习处理器DPU。
9.一种数据传输方法,其特征在于,应用于包括多个节点的数据传输系统,所述多个节点中的每个节点包括多个加速器,每个节点内的所述多个加速器之间通过第一通信链路连接;所述多个节点之间的加速器构成多个通信平面,每个通信平面包括每个节点内的一个加速器,且任意两个通信平面包括的加速器互不相同,同一个通信平面包括的加速器之间通过第二通信链路连接;所述方法包括:
第一加速器获取第一节点内的其他加速器发送的第一数据,所述第一数据包括所述第一节点内的其他加速器各自待发送给第二节点内的第二加速器的数据,所述第一节点和所述第二节点是所述多个节点中的任意两个节点,所述第一加速器和所述第二加速器是第一通信平面内的加速器;
所述第一加速器将所述第一数据通过所述第二通信链路发送给所述第二加速器。
10.根据权利要求9所述的方法,其特征在于,所述方法还包括:
所述第一加速器接收处理器发送的分组信息,所述分组信息包括每个通信平面包括的加速器的信息;
所述第一加速器根据所述分组信息与所述第二加速器建立所述第二通信链路的连接。
11.根据权利要求9或10所述的方法,其特征在于,所述方法还包括:
所述第一加速器通过所述第一通信链路发送第二数据给所述第一节点内的第三加速器,以使所述第三加速器通过所述第二通信链路对所述第二数据进行转发;其中,所述第三加速器位于第二通信平面,所述第二数据为所述第一加速器待发送给所述第二通信平面内任一加速器的数据。
12.根据权利要求9至11任一项所述的方法,其特征在于,所述方法还包括:
所述第一加速器通过所述第二通信链路接收所述第一通信平面内各个加速器发送的第三数据。
13.根据权利要求9至12任一项所述的方法,其特征在于,所述数据传输系统用于人工智能AI模型的训练,所述第一数据是所述AI模型训练过程中产生的中间数据。
14.根据权利要求9至13任一项所述的方法,其特征在于,所述第一通信链路包括外设总线接口标准交换PCIe总线或统一总线UB;所述第二通信链路为支持传输控制协议TCP、基于以太网实现远程直接内存访问RoCE协议或无线带宽IB协议的链路。
15.根据权利要求9至14任一项所述的方法,其特征在于,所述多个节点部署于一个或多个物理机中,所述多个节点内的加速器为图像处理器GPU、嵌入式神经网络处理器NPU、张量处理器TPU或深度学习处理器DPU。
16.一种板卡,其特征在于,包括多个用于执行如权利要求9至15任一项所述方法的加速器。
17.一种计算设备,其特征在于,包括处理器、存储器和多个加速器,所述存储器存储有计算机指令,当所述处理器执行所述计算机指令时,所述计算设备调用一个或多个加速器执行如权利要求9至15任一项所述的方法。
18.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被加速器执行时,所述加速器执行如权利要求9至15任一项所述的方法。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210439787.6A CN114979000B (zh) | 2022-01-21 | 2022-01-21 | 一种数据传输系统、方法及相关设备 |
CN202210073931.9A CN116506359A (zh) | 2022-01-21 | 2022-01-21 | 一种数据传输系统、方法及相关设备 |
EP22921439.0A EP4293984A1 (en) | 2022-01-21 | 2022-07-18 | Data transmission system and method, and related device |
PCT/CN2022/106309 WO2023138009A1 (zh) | 2022-01-21 | 2022-07-18 | 一种数据传输系统、方法及相关设备 |
US18/356,475 US20230403232A1 (en) | 2022-01-21 | 2023-07-21 | Data Transmission System and Method, and Related Device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210073931.9A CN116506359A (zh) | 2022-01-21 | 2022-01-21 | 一种数据传输系统、方法及相关设备 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210439787.6A Division CN114979000B (zh) | 2022-01-21 | 2022-01-21 | 一种数据传输系统、方法及相关设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116506359A true CN116506359A (zh) | 2023-07-28 |
Family
ID=83004391
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210073931.9A Pending CN116506359A (zh) | 2022-01-21 | 2022-01-21 | 一种数据传输系统、方法及相关设备 |
CN202210439787.6A Active CN114979000B (zh) | 2022-01-21 | 2022-01-21 | 一种数据传输系统、方法及相关设备 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210439787.6A Active CN114979000B (zh) | 2022-01-21 | 2022-01-21 | 一种数据传输系统、方法及相关设备 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20230403232A1 (zh) |
EP (1) | EP4293984A1 (zh) |
CN (2) | CN116506359A (zh) |
WO (1) | WO2023138009A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117955901A (zh) * | 2022-10-20 | 2024-04-30 | 华为技术有限公司 | 通信方法、系统及服务器 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9886275B1 (en) * | 2013-10-09 | 2018-02-06 | Mellanox Technologies Ltd. | Multi-core processor using three dimensional integration |
CN105049362B (zh) * | 2015-06-18 | 2018-04-17 | 西安电子科技大学 | 一种二维环绕网格片上网络拓扑结构的路由方法 |
US10423429B2 (en) * | 2018-01-02 | 2019-09-24 | International Business Machines Corporation | Reconfiguring processing groups for cascading data workloads |
CN109033001B (zh) * | 2018-07-17 | 2021-08-27 | 北京百度网讯科技有限公司 | 用于分配gpu的方法和装置 |
US10747280B2 (en) * | 2018-11-27 | 2020-08-18 | International Business Machines Corporation | Reconfigurble CPU/GPU interconnect to mitigate power/thermal throttling |
CN112148663A (zh) * | 2019-06-28 | 2020-12-29 | 华为技术有限公司 | 一种数据交换芯片及服务器 |
CN110825689B (zh) * | 2019-10-31 | 2020-08-04 | 新华三半导体技术有限公司 | 电子芯片的实现方法及电子芯片 |
CN111427835B (zh) * | 2020-03-13 | 2023-01-06 | 苏州浪潮智能科技有限公司 | 一种基于混合路由算法的片上网络设计方法和装置 |
-
2022
- 2022-01-21 CN CN202210073931.9A patent/CN116506359A/zh active Pending
- 2022-01-21 CN CN202210439787.6A patent/CN114979000B/zh active Active
- 2022-07-18 EP EP22921439.0A patent/EP4293984A1/en active Pending
- 2022-07-18 WO PCT/CN2022/106309 patent/WO2023138009A1/zh active Application Filing
-
2023
- 2023-07-21 US US18/356,475 patent/US20230403232A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
CN114979000A (zh) | 2022-08-30 |
US20230403232A1 (en) | 2023-12-14 |
WO2023138009A1 (zh) | 2023-07-27 |
EP4293984A1 (en) | 2023-12-20 |
CN114979000B (zh) | 2023-06-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107689948B (zh) | 应用于神经网络硬件加速系统的高效数据访存管理装置 | |
US20240223514A1 (en) | Multicast message delivery across remote cores | |
CN110516801B (zh) | 一种高吞吐率的动态可重构卷积神经网络加速器 | |
TWI803663B (zh) | 一種運算裝置和運算方法 | |
CN107301456B (zh) | 基于向量处理器的深度神经网络多核加速实现方法 | |
CN113098773B (zh) | 数据处理方法、装置及系统 | |
US20160335119A1 (en) | Batch-based neural network system | |
US20210374503A1 (en) | Network-centric architecture and algorithms to accelerate distributed training of neural networks | |
CN108510064A (zh) | 包括多个核心处理模块的人工神经网络的处理系统及方法 | |
US10237782B2 (en) | Hardware acceleration for batched sparse codes | |
CN114979000B (zh) | 一种数据传输系统、方法及相关设备 | |
WO2023040197A1 (zh) | 一种跨节点通信方法、装置、设备及可读存储介质 | |
WO2022134465A1 (zh) | 加速可重构处理器运行的稀疏化数据处理方法和装置 | |
CN116541338B (zh) | 一种计算系统、模型训练方法、装置及产品 | |
CN113486298A (zh) | 基于Transformer神经网络的模型压缩方法、矩阵乘法模块 | |
CN116861966B (zh) | Transformer模型加速器及其构建和数据处理方法、装置 | |
CN106776461A (zh) | 数据处理装置和服务器 | |
CN111193971B (zh) | 一种面向机器学习的分布式计算互连网络系统及通信方法 | |
Salazar-García et al. | A custom interconnection multi-FPGA framework for distributed processing applications | |
CN113159302B (zh) | 一种用于可重构神经网络处理器的路由结构 | |
CN105830368B (zh) | 光互联系统、节点、光网络控制器和传输数据的方法 | |
CN114915595B (zh) | 突发包装配方法和电子设备 | |
CN114095289B (zh) | 数据多播电路、方法、电子设备及计算机可读存储介质 | |
CN114844757B (zh) | 一种面向分布式并行运算类算法的片上网络设计方法 | |
CN206400534U (zh) | 数据处理装置和服务器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |