CN113746873B - 环形网络中的异常节点处理方法及相关设备 - Google Patents
环形网络中的异常节点处理方法及相关设备 Download PDFInfo
- Publication number
- CN113746873B CN113746873B CN202010463387.XA CN202010463387A CN113746873B CN 113746873 B CN113746873 B CN 113746873B CN 202010463387 A CN202010463387 A CN 202010463387A CN 113746873 B CN113746873 B CN 113746873B
- Authority
- CN
- China
- Prior art keywords
- node
- ring network
- calculation result
- nodes
- abnormal
- 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.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1034—Reaction to server failures by a load balancer
-
- 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/42—Loop networks
- H04L12/437—Ring fault isolation or reconfiguration
-
- 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/06—Management of faults, events, alarms or notifications
- H04L41/0631—Management of faults, events, alarms or notifications using root cause analysis; using analysis of correlation between notifications, alarms or events based on decision criteria, e.g. hierarchy, tree or time analysis
-
- 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/06—Management of faults, events, alarms or notifications
- H04L41/0654—Management of faults, events, alarms or notifications using network fault recovery
- H04L41/0659—Management of faults, events, alarms or notifications using network fault recovery by isolating or reconfiguring faulty entities
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02A—TECHNOLOGIES FOR ADAPTATION TO CLIMATE CHANGE
- Y02A10/00—TECHNOLOGIES FOR ADAPTATION TO CLIMATE CHANGE at coastal zones; at river basins
- Y02A10/40—Controlling or monitoring, e.g. of flood or hurricane; Forecasting, e.g. risk assessment or mapping
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Multi Processors (AREA)
Abstract
本申请公开了一种环形网络中的异常节点处理方法及相关设备,属于人工智能技术领域。所述方法包括:第一节点获取第一节点对应的第一子任务的第一计算结果,在第二节点为异常节点的情况下,第一节点基于第一计算结果来确定与第二节点对应的第二计算结果,无需执行第二节点对应的子任务就可以得到第二计算结果,能够实现在第二节点为异常节点的情况下,分布式训练过程能够继续进行,同时也提高了异常恢复的效率。
Description
技术领域
本申请涉及人工智能技术领域,特别涉及一种环形网络中的异常节点处理方法及相关设备。
背景技术
环形网络是一种包含多个节点、拓扑架构呈环形的通信网络。在大数据技术领域中,利用环形网络,能够高效地执行分布式计算任务。其中,分布式计算是计算机技术中的一个术语,泛指将需要通过巨大算力执行的任务分解成许多小的子任务,然后将这些子任务分配给多个计算节点进行处理,最终将所有计算节点算出的结果综合起来,得到最终结果的方法。通过环形网络来执行分布式计算任务,环形网络中的每个节点充当一个计算节点,环形网络中的多个节点能够并发执行各自对应的子任务,从而充分利用每个节点的算力,极大地提高算法的性能。
环形网络通常基于环全部归约(Ring All-reduce)的方式执行分布式计算任务,环形网络中的每个节点不仅会执行本节点对应的子任务以得出计算结果,还会接收上一个节点的计算结果,并向下一个节点发送计算结果,使得每个节点的计算结果在环形网络中传播。
以应用在深度学习领域为例,上面描述的分布式计算任务比如是分布式训练任务。概括来讲,分布式训练任务主要分为两个阶段执行,首先执行计算梯度的任务,然后执行根据梯度计算参数值的任务,这两个阶段的任务都基于环形网络以及Ring All-reduce的方式执行。具体地,在执行计算梯度的任务时,每个节点上加载全部训练数据集中的一部分训练数据,且各个节点上加载的训练数据不同。各个节点基于自身上加载的训练数据确定出待训练的模型中的各个参数的初始参数值,该初始参数值即为梯度。在执行计算参数值的任务时,每个节点负责收集一部分参数的梯度,且各个节点负责收集的参数不同,如此每个节点均将获取自身负责的一部分参数的全部梯。之后,各个节点将自身负责的参数的全部梯度在环形网络中的扩散,最终每个节点将获取到全部参数的全部梯度,从而得到模型中各个参数的参数值。
在基于环形网络执行分布式计算任务的过程中,当环形网络中的一个节点出现异常时,环形网络中会缺失异常节点对应的计算结果。所以相关技术在任一节点出现异常时,则需放弃此次训练得到的全部数据。在确保各个节点正常之后重新进行训练,使得训练模型的过程比较复杂。
发明内容
本申请提供了一种环形网络中的异常节点处理方法及相关设备,可以提高异常恢复的效率。技术方案如下:
第一方面,提供了一种环形网络中的异常节点处理方法,该方法应用于第一节点,第一节点为第一环形网络中的任一节点。在该方法中,第一节点获取第一节点对应的第一子任务的第一计算结果;在第二节点为异常节点的情况下,第一节点基于第一计算结果确定与第二节点对应的第二计算结果,第一节点将第二计算结果发送至第三节点,第三节点为第一环形网络的数据传输方向上位于第二节点之后的第一个节点,第一节点与第三节点之间具有通路,第二节点为第一环形网络的数据传输方向上位于第一节点之后、且与第一节点邻接的一个节点或多个连续节点。
在第二节点为异常节点的情况下,第一节点可以基于第一计算结果来确定与第二节点对应的第二计算结果,无需执行第二节点对应的子任务就可以得到第二计算结果,能够实现在第二节点为异常节点的情况下,分布式训练过程能够继续进行,同时也提高了异常恢复的效率。
基于第一方面提供的环形网络中的异常节点处理方法,在一种可能的实现方式中,第一节点基于第一计算结果确定第二计算结果的实现过程为:第一节点将第一计算结果确定为第二计算结果。在第一计算结果包括第一节点针对待训练模型中的目标参数确定的梯度的情况下,第一节点确定除异常节点之外剩下节点的数量;第一节点获取剩下节点针对目标参数确定的梯度之和与数量之间的比值,将比值作为目标参数的参数值,目标参数为模型中的部分参数。
如果分布式计算任务是深度学习领域中的分布式训练任务,此时通过上述实现方式收集的第一环形网络中各个节点确定的梯度将剔除了异常节点确定的梯度,因此,在确定目标参数的参数值时,需要除以非异常节点的数量。也即是,通过本申请提供的方法,能够剔除异常节点确定的梯度,基于其他正常节点确定的梯度来保证训练任务的继续进行,同时还能保证确定的模型中的参数的参数值的准确性。
基于第一方面提供的环形网络中的异常节点处理方法,在一种可能的实现方式中,第一节点基于第一计算结果确定第二计算结果的实现过程为:第一节点将第一计算结果与参考值相加后的数据确定为第二计算结果。
如果分布式计算任务是深度学习领域中的分布式训练任务,且上述参考值为0时,通过上述实现方式同样能够剔除异常节点确定的梯度,基于其他正常节点确定的梯度来保证训练任务的继续进行。
基于第一方面提供的环形网络中的异常节点处理方法,在一种可能的实现方式中,第一节点上配置有与第二节点对应的虚拟节点,虚拟节点为第一节点上运行的软件。这种场景下,第一节点基于第一计算结果确定第二计算结果的实现过程为:第一节点调用虚拟节点,执行基于第一计算结果确定第二计算结果的步骤。
上述确定第二计算结果可以直接由第一节点执行,可选地,也可以由第一节点上配置的与第二节点对应的虚拟节点来执行。提高了本申请提供的异常节点处理方法的灵活性。示例地,如果是直接将第一计算结果确定为第二计算结果,此时可以无需调用该虚拟节点来实现。如果是将第一计算结果和参考数值相加后的数据作为第二计算结果,此时可以调用虚拟节点来实现,这种情况下,虚拟节点相当于需要提供第二计算结果的计算功能,只不过该计算功能和第二节点本身的计算功能并不相同,虚拟节点只需将第一计算结果和参考值相加即可得到第二计算结果,而第二节点本身的计算功能则需要执行第二节点对应的第二子任务才能得到第二计算结果,从而实现提高异常恢复效率的目的。
基于第一方面提供的环形网络中的异常节点处理方法,在一种可能的实现方式中,第一环形网络为多环网络中的任一个网络,多环网络还包括第二环形网络。这种场景下,在第二节点为异常节点的情况下,第一节点获取第二节点需要向第二环形网络中的第四节点发送的第一扩散数据,第一扩散数据包括第二计算结果,第四节点为第二节点在多环网络中传输扩散数据路径上的下一个节点;第一节点将第一扩散数据发送至第四节点。第一节点和第四节点之间有通路
在第二节点为异常节点的情况下,由于第一节点能够替代第二节点确定与第二节点对应的计算结果,因此在环间纵向方向的数据扩散过程中,增加第一节点和第四节点之间的通路,以实现能够由第一节点替代第二节点来传输扩散数据。从而保证基于多环网络的分布式计算任务能够在存在异常节点的情况下,继续执行。
基于第一方面提供的环形网络中的异常节点处理方法,在一种可能的实现方式中,多环网络还包括第三环形网络,第二节点为第三环形网络中的第五节点传输扩散数据路径上的下一个节点。这种场景下,第一节点获取第二节点需要向第二环形网络中的第四节点发送的扩散数据的实现方式为:第一节点接收第五节点发送的第二扩散数据,第二扩散数据包括第三环形网络中与第五节点对应的计算结果;第一节点将第二扩散数据和与第二计算结果叠加,得到第一扩散数据。,第五节点与第一节点之间具有通路。
如果第二节点不是环间纵向方向上传输扩散数据的路径上的第一个节点。比如假设多环网络还包括第三环形网络,第二节点为第三环形网络中的第五节点传输扩散数据路径上的下一个节点。这种场景下,当第五节点向第二节点发送第二扩散数据时,由于第二节点位异常节点,因此第五节点可以通过新增的第五节点与第一节点之间的通路,将第二扩散数据发送至第一节点,第一节点接收第五节点发送的第二扩散数据。以实现第一节点替代第二节点来传输扩散数据。从而保证基于多环网络的分布式计算任务能够在存在异常节点的情况下,继续执行。
基于第一方面提供的环形网络中的异常节点处理方法,在一种可能的实现方式中,第一节点基于第一计算结果确定第二计算结果之前,接收控制节点下发的异常节点通知消息,异常节点通知消息携带异常节点的标识;如果第二节点的标识为异常节点通知消息中的携带的节点的标识,则将第二节点确定为异常节点。
在本申请中,由控制节点在分布式计算任务中判断哪些节点为异常节点。示例地,如果分布式计算任务是深度学习领域中的分布式训练任务,控制节点可以根据各个节点基于自身上加载的训练数据进行训练的进程来判断哪些节点为异常节点。
基于第一方面提供的环形网络中的异常节点处理方法,在一种可能的实现方式中,第一节点确定总异常节点的数量;如果该总异常节点的数量满足参考条件,则停止执行第一任务。
为了保证分布式计算任务的结果的精度,需要保证异常节点的数量不能达到参考条件,如果达到参考条件,则表明系统故障或各个节点对应的计算结果不可信,此时各个节点则无需继续执行分布式计算任务。
基于第一方面提供的环形网络中的异常节点处理方法,在一种可能的实现方式中,异常节点是指基于自身上加载的训练数据确定参数梯度的计算进度不满足进度阈值的节点。
在本申请中,可以将分布式训练过程中计算速度较慢的节点作为异常节点,以提高分布式训练任务的执行效率。
第二方面,提供了一种第一节点,所述第一节点具有实现上述第一方面中环形网络中的异常节点处理方法行为的功能。第一节点包括至少一个模块,该至少一个模块用于实现上述第一方面所提供的环形网络中的异常节点处理方法。
第三方面,提供了一种节点,该节点的结构中包括处理器和存储器,所述存储器用于存储支持节点执行上述第一方面所提供的环形网络中的异常节点处理方法的程序,以及存储用于实现上述第一方面所提供的环形网络中的异常节点处理方法所涉及的数据。所述处理器被配置为用于执行所述存储器中存储的程序。所述存储设备的操作装置还可以包括通信总线,该通信总线用于该处理器与存储器之间建立连接。
第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述第一方面所述的环形网络中的异常节点处理方法。
第五方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面所述的环形网络中的异常节点处理方法。
上述第二方面、第三方面、第四方面和第五方面所获得的技术效果与第一方面中对应的技术手段获得的技术效果近似,在这里不再赘述。
附图说明
图1是本申请实施例提供的一种深度学习领域中执行分布式训练任务的示意图;
图2是本申请实施例提供的一种环形网络的示意图;
图3是本申请实施例提供的一种环形网络中节点的梯度计算分布示意图;
图4是本申请实施例提供的一种梯度水平方向扩散过程示意图;
图5是本申请实施例提供的一种梯度水平方向扩散结果示意图;
图6是本申请实施例提供的另一种梯度水平方向扩散结果示意图;
图7是本申请实施例提供的另一种梯度水平方向扩散结果示意图;
图8是本申请实施例提供的一种多环网络的示意图;
图9是本申请实施例提供的另一种多环网络的示意图;
图10是本申请实施例提供的一种多环网络中的梯度扩散结果示意图;
图11是本申请实施例提供的另一种多环网络中的梯度扩散结果示意图;
图12是本申请实施例提供的另一种环形网络的系统架构示意图;
图13是本申请实施例提供的另一种环形网络的系统架构示意图;
图14是本申请实施例提供的另一种环形网络的系统架构示意图;
图15是本申请实施例提供的另一种环形网络的系统架构示意图;
图16是本申请实施例提供的另一种环形网络的系统架构示意图;
图17是本申请实施例提供的另一种环形网络的示意图;
图18是本申请实施例提供的另一种环形网络的示意图;
图19是本申请实施例提供的另一种传递数据分组示意图;
图20是本申请实施例提供的一种虚拟节点配置和传输路径配置的示意图;
图21是本申请实施例提供的一种新增传输路径分布示意图;
图22是本申请实施例提供的另一种虚拟节点配置和传输路径配置的示意图;
图23是本申请实施例提供的另一种新增传输路径分布示意图;
图24是本申请实施例提供的另一种新增传输路径分布示意图;
图25是本申请实施例提供的另一种新增传输路径分布示意图;
图26是本申请实施例提供的一种环形网络中的异常节点处理方法流程图;
图27是本申请实施例提供的另一种环形网络中的异常节点处理方法流程图;
图28是本申请实施例提供的一种环形网络中的异常节点分布示意图;
图29是本申请实施例提供的一种异常节点下梯度计算结果分布示意图;
图30是本申请实施例提供的一种异常节点下梯度扩散示意图;
图31是本申请实施例提供的另一种异常节点下梯度扩散示意图;
图32是本申请实施例提供的另一种异常节点下梯度扩散示意图;
图33是本申请实施例提供的另一种异常节点下梯度扩散示意图;
图34是本申请实施例提供的另一种异常节点下梯度扩散示意图;
图35是本申请实施例提供的另一种异常节点下梯度扩散示意图;
图36是本申请实施例提供的一种第一节点的结构示意图;
图37是本申请实施例提供的一种节点的结构示意图;
图38为本申请实施例提供的另一种节点的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
本申请中术语“第一”“第二”等字样用于对作用和功能基本相同的相同项或相似项进行区分,应理解,“第一”、“第二”、“第n”之间不具有逻辑或时序上的依赖关系,也不对数量和执行顺序进行限定。还应理解,尽管以下描述使用术语第一、第二等来描述各种元素,但这些元素不应受术语的限制。这些术语只是用于将一元素与另一元素区别分开。比如,在不脱离各种所述示例的范围的情况下,第一图像可以被称为第二图像,并且类似地,第二图像可以被称为第一图像。第一图像和第二图像都可以是图像,并且在某些情况下,可以是单独且不同的图像。
本申请中术语“至少一个”的含义是指一个或多个,本申请中术语“多个”的含义是指两个或两个以上,比如,多个第二报文是指两个或两个以上的第二报文。本文中术语“系统”和“网络”经常可互换使用。
还应理解,术语“如果”可被解释为意指“当...时”(“when”或“upon”)或“响应于确定”或“响应于检测到”。类似地,根据上下文,短语“如果确定...”或“如果检测到[所陈述的条件或事件]”可被解释为意指“在确定...时”或“响应于确定...”或“在检测到[所陈述的条件或事件]时”或“响应于检测到[所陈述的条件或事件]”。
以下示例性介绍本申请的应用场景。
本申请实施例提供的环形网络异常节点处理方法能够应用在计算集群执行分布式计算任务的场景。分布式计算任务可根据具体的应用场景和业务需要而定义。比如,本申请实施例异常节点处理方法能够应用在深度学习领域中执行分布式训练任务的场景、物理实验数据分析的场景,气象数据分析的场景等等。下文虽然侧重描述执行分布式训练任务的应用场景,但应理解,分布式训练的应用场景仅是示例,本申请实施例也适于分布式训练之外的其他并行计算场景,可广泛地应用在大数据技术领域中。在各种通过组建环形网络以执行分布式计算任务的场景下,通过应用本申请实施例,能解决节点异常后导致整个分布式计算任务停止的问题,实现节点异常后自动恢复的功能。
下面对人工智能(Artificial Intelligence,AI)分布式训练的场景进行简单的介绍。
在深度学习领域中,计算集群采用环形网络进行组网并基于环全部归约(RingAll-reduce)算法进行分布式训练是时下热门的训练方式。其中,环形网络是一种网络拓扑架构,使用连续的环将计算集群中的多个计算节点连接在一起,每个计算节点的计算结果在环中传递。以环形网络组网的方式也称环(Ring)组网方式。
参见图1,图1是本申请实施例提供的一种深度学习领域中执行分布式训练任务的示意图。图1以计算集群包括(N+1)个计算节点为例进行说明,第1个计算节点记为计算节点0,最后1个计算节点记为计算节点N。计算节点0与计算节点1建立通路,计算节点1与计算节点2建立通路,计算节点2与下一个计算节点(图1未示出)建立通路,依次类推,计算节点(N-1)与计算节点N建立通路,计算节点N与计算节点0建立通路,这样形成了一个包括(N+1)个计算节点的环形网络。其中,N为正整数。
与图1相对应,环形网络并行训练过程包括以下S101至S105。
S101、向计算集群加载待训练的模型,其中,每个计算节点会加载一份完整的待训练的模型和初始的模型参数。
S102、向计算集群加载本次批尺寸(batch)的训练数据,每个计算节点加载1/(N+1)份batch训练数据;
S103、计算集群各计算节点根据1/(N+1)份batch训练数据,计算一份梯度。比如,请参考图1,计算节点0计算第1份梯度,计算节点1计算第2份梯度,依次类推,计算节点N计算第(N+1)份梯度。
S104、计算集群基于各计算节点计算出的梯度,计算模型参数。
S105、更新各计算节点的模型参数,重复S102,进行下一次batch训练。
时下,可通过多个节点组成环形网络,每个节点充当一个计算节点,多个节点通过并行计算实现上述分布式训练方法。需要说明的是,本申请中的节点可以是一个物理节点,也可以是一个具有计算节点功能的软件模块。
以8个节点为例,形成环形网络组网和计算过程如图2所示,8个节点比如是节点a0、节点a1、节点a2、节点a3、节点a4、节点a5、节点a6和节点a7。其中,图2中每个黑色圆点表示一个节点,箭头的方向表示数据传输方向。
图2中的8个节点进行分布式训练过程包括以下S111至S116。
S111、向计算集群加载训练模型。具体地,每个节点加载一份完整的训练模型和初始模型参数。
S112、向计算集群加载本次batch的训练数据,每个节点加载1/8份batch训练数据。
S113、计算集群中各节点分别基于自身上加载的训练数据计算一份模型中的参数的梯度。
S114、环形网络中的每个节点确定模型中全部参数中的1/8参数的累加梯度。
S115、环形网络梯度传播,进行全局收集(All-Gather)计算,每个节点获得一份完整的最新参数的累加梯度。
S116、重复S112,进行下一次batch训练。
其中,S114的Ring All-Reduce环形网络计算过程包括以下S1141至S1142。
S1141、每个节点计算一份模型中全部的参数的梯度,每份梯度分为8份。比如,参见附图3,图3包括8列,每一列对应一个节点,比如第一列对应于节点a0,第二列对应于节点a1,依次类推,最后一列对应于节点a7。每一列的内容表示一个节点计算出的一份梯度。图3包括8行,8行表示将节点a0计算的梯度拆分为8份。比如,图3的第一列的内容表示节点a0计算出的梯度,节点a0计算的梯度包括a00、a01至a07,图3中其他单元格的含义同理。应理解,图3中梯度拆分成了8份仅为示例,在另一些实施例中,梯度拆成8份之上的更多份,本实施例对梯度拆分的具体份数不做限定,也不限定梯度拆分的份数和环形网络中节点的数量相等。
S1142、环形网络中进行归约-分散(Reduce-Scatter)计算。比如,参见附图4,图4中的箭头表示梯度的移动方向。比如,图4中第一行的第一列和第二列包括a00→a00+a10,表示节点a0计算出梯度a00,向节点a1发送梯度a00。节点a1计算出梯度a10,并接收节点a0发送的梯度a00,将梯度a00与梯度a10相加。图4中其他箭头的含义与此同理。依次类推,每个节点计算得到的梯度在环形网络中,按照图4中各个箭头的方向移动至其他节点,每个节点计算的梯度逐步累加,通过累加得到有效计算结果,从而实现每个节点收集一部分参数的梯度。图4中的加粗斜体字表示累加得到的有效计算结果,也即是每个节点负责收集的一部分参数的全部梯度。比如,图4中第2行第一列以加粗斜体字表达a11+……+a01,含义是节点a0负责收集的这部分参数的累加梯度是a11+……+a01。
执行S1142后,请参考图5,每个节点上分布的有效计算结果如图5所示。其中,图5的省略号表示有效计算结果中包括而图5未示出的梯度。比如,图5中a0对应的一列包括a11+……+a01,表示节点a0上分布的有效计算结果为a11+……+a01,该省略号指代a21+a31+a41+a51+a61+a71,换句话说,节点a0的有效计算结果为a11+a21+a31+a41+a51+a61+a71+a01。同理地,节点a7的有效计算结果是a00+a10+a20+a30+a40+a50+a60+a70,其他节点的有效计算结果依次类推。
比如,环形网络包括n个节点,节点an执行S1142后得到的有效计算结果为xn,S115中环形网络All-Gather过程具体包括以下S1151至S1152。
S1151、由于每个节点收集的有效计算结果即为该节点负责收集的这部分参数的累加梯度,因此在通过步骤S114之后环形网络中每个节点保存模型中的参数的1/n参数的累加梯度,每个节点将保存的1/n参数的累加梯度发送至下一个节点,通过在不同节点之间移动部分参数的累加梯度,最终将一份完整的模参数的累加梯度扩散到环形网络中的每个节点上。比如,以环形网络包括8个节点,即n=8为例,如附图6所示,图6中每一列对应一个节点。X表示1/8参数的累加梯度,比如,X0表示节点a0保存的1/8参数的累加梯度,X1表示节点a1保存的1/8参数的累加梯度,X3、X5、X5、X6,X7的含义与此同理。图6中箭头表示参数的累加梯度的移动方向,箭头的起点对应于发送参数的累加梯度的节点,箭头的终点对应于接收参数的累加梯度的节点。比如,比如X0右侧的箭头表示节点a0将计算出的1/8参数的累加梯度X0发送至节点a1,其他箭头的含义与此同理。其中,(X0、X1、X2、X3、X4、X5、X6,X7)为待训练的模型中的完整的参数的累加梯度,从图6可以看出,完整的模型参数分布在8个节点,每个节点保存有模型参数的1/8。
S1152、每个节点保存完整的模型的累加梯度。如附图7所示,节点a0、节点a1至节点a7这8个节点均保存了完整的模型参数的累加梯度(X0、X1、X2、X3、X4、X5、X6,X7)。
上述是以单环为例说明分布式训练的场景。此外,对于大规模训练集群,还可以采用多环对称结构进行组网,即采用多个环形网络组网,每个环形网络中节点数相同。通过这种多环网络可以实现更多节点并发地进行训练模型,从而提高训练模型的效率。
图8是本申请实施例提供的一种多环网络的架构示意图。如图8所示,每个水平方向的一个环形网络为上述图2所示的环形网络。假设水平方向上每个环形网络中包括n个节点,垂直方向上有m个这样的环形网络。此时,该多环网络中共有n*m个节点。
图8中的n*m个节点进行分布式训练过程包括以下S211至S217。
S211、训练任务向计算集群加载训练模型。具体地,每个计算节点加载一份完整的训练模型和初始模型参数。
S212、向计算集群加载本次batch的训练数据,每个节点加载1/mn份batch训练数据。
S213、计算集群各节点分别基于自身上加载的训练数据计算一份模型中全部参数的梯度。
S214、计算集群水平方向每个环形网络基于各节点确定1/n参数的累加梯度,实现方式可以参考上述步骤S114,在此不再赘述。
S215、计算集群垂直方向上传递水平方向各个环形网络的计算结果,如此垂直方向上每列节点将获得全网中所有节点的1/n参数的累加梯度。具体实现方式将在下述图9所示的内容中详细解释。
S216、计算集群在多全网中传递所有节点的1/n参数的累加梯度,实现每个节点上均保存有全部节点针对全部参数的累加梯度,从而使得每个节点均可以确定出参数值。具体实现方式将在下述图9所示的内容中详细解释。
S217、重复步骤S211,进行下一次batch训练。
上述图8所示的网络中的n和m仅仅用于示例,n和m可以用于指示任意数字。下面以n=8,m=3为例详细说明上述步骤S212至步骤S216。
图9是本申请实施例提供的另一种多环网络的架构示意图。如图9所示,水平方向上每个环形网络中包括8个节点,垂直方向上有3个这样的环形网络。水平方向上从上到下第一个环形网络中8个节点分别标记为a0-a7,用于表示节点a0、节点a1、节点a2、节点a3、节点a4、节点a5、节点a6和节点a7这8个节点。水平方向上第二个环形网络中8个节点分别标记为b0-b7,用于表示节点b0、节点b1、节点b2、节点b3、节点b4、节点b5、节点b6和节点b7这8个节点。水平方向上第三个环形网络中8个节点分别标记为c0-c7,用于表示节点c0、节点c1、节点c2、节点c3、节点c4、节点c5、节点c6和节点c7这8个节点。
此时,在上述S212中,向计算集群加载本次batch的训练数据,每个节点加载1/24份batch训练数据。
在上述S213中,计算集群各节点分别基于自身上加载的训练数据计算一份模型中全部参数的梯度,且每个节点确定的全部参数的梯度可以表示为图3所示的8份。其中,图3是以水平方向第一个环形网络中各个节点为例进行说明,水平方向另外两个环形网络中各个节点确定的全部梯度同样可以参考图3所示的表格进行表示。
在上述S214中、水平方向中各个环形网络内部各节点分别承担1/8的参数的梯度汇聚计算,该汇聚过程可以为取各个梯度的累加值。水平方向上第一个环形网络中各个节点汇聚后的梯度累加值可以如图4和图5所示。具体实现方式可以参考上述步骤S114,在此不再赘述。
在上述S215中、计算集群垂直方向上传递水平方向各个环形网络的计算结果,如此垂直方向上每列节点将获得全网中所有节点的1/8参数的累加梯度。在一种可能的实现方式中,水平方向上第二个环形网络中的节点b0-b7分别向自身收集的1/8参数的累加梯度传递至节点c0-c7,节点c0-c7将接收到的1/8参数的累加梯度与自身收集的1/8参数的累加梯度融合,并将融合后的累加梯度分别传递给节点a0-a7,节点a0-a7将接收到的1/8参数的累加梯度与自身收集的1/8参数的累加梯度融合,融合得到全部节点的1/8参数的累加梯度。以b0、c0以及a0为例来说明该过程,其中,b0在上述S214中收集的1/8参数的累加梯度为b11+…+b01,c0在上述S214中收集的1/8参数的累加梯度为c11+…+c01,a0在上述S214中收集的1/8参数的累加梯度为a11+…+a01,因此,b0将b11+…+b01传递给c0之后,c0将b11+…+b01和c11+…+c01融合,得到b11+…+b01+c11+…+c01,并将融合后的数据发送给a0,a0将b11+…+b01+c11+…+c01和a11+…+a01融合,从而得到垂直方向上收集的1/8参数的累加梯度,为a11+…+a01+b11+…+b01+c11+…+c01。因此,在通过S215后,节点a0收集的1/8参数的累加梯度可以如图10所示。
图10中a1至a7其他节点收集垂直方向上的1/8参数的累加梯度的实现方式可以参考上述过程,在此就不再一一解释说明。
在上述S216中、分两个扩散过程。
第一个扩散过程:垂直方向扩散。比如,对于图10所示的计算结果,节点a0可以将梯度累加值a11+…+a01+b11+…+b01+c11+…+c01传递给b0,b0再将a11+…+a01+b11+…+b01+c11+…+c01传递给c0。a1至a7其他节点同样按照上述方式传递。垂直方向扩散的结果是:每一列节点中各个节点保存有相同的1/8参数的梯度累加值。
第二个扩散过程:水平方向扩散。由于垂直方向扩散的结果是每一列节点中各个节点保存有相同的1/8参数的梯度累加值。因此,在水平方向扩展之后,对于任一水平方向的环形网络,该环形网络中任一节点均保存有全网中24个节点针对全部参数的累加梯度值。如图11所示,对于水平方向的第一个环形网络a0-a7,每个节点均保存为8份1/8参数的梯度累加值,也即是全部参数的累加梯度。
在第二次扩散之后,对于模型中任一参数,多环网络中任一节点均可以获取到全网中所有节点针对该参数确定的梯度的累加值,如果采用平均梯度作为参数值,此时可以将该累加值除以24便可作为该参数的参数值。
然而,采用上述方法时,如果某个节点出现异常,对于单环网络中将会影响上述S113和S114,即影响Reduce Scatter过程的1/8样本训练计算,以及影响环形网络中1/8份参数的累加梯度计算,会导致环形网络计算的模型参数缺失1/8。对于多环网络,不仅影响水平方向环形网络中1/8份参数的累加梯度计算,还影响垂直方向上1/8份参数的累加梯度计算。
鉴于此,本申请实施例提供了一种环形网络中的异常节点处理方法,通过应用本申请实施例提供的方法,可解决单环形网络或多环形网络中单节点异常和多节点异常(允许相邻节点中一个或多个节点异常)的问题。
为了简明起见,本申请实施例后续在不至于引入理解困难的情况下用“节点+小写字母”的形式来简化表示环形网络中的一个节点,如节点为节点a或节点b。其中,这里的小写字母表示节点的标识,比如是节点的编号。此外,使用“节点n”来泛指环形网络中的一个节点,比如在图2所示的包含8个节点的环形网络中,节点n可以理解为节点a0至节点a7这8个节点中的任一个。
此外,为了清楚地表达环形网络中不同节点之间的逻辑关系,本申请的一些实施例中,使用“节点(n+1)”表示环形网络的数据传输方向上“节点n”的下一个节点,使用“节点(n+2)”表示环形网络中的数据传输方向上“节点(n+1)”的下一个节点,使用“节点(n-1)”表示环形网络的数据传输方向上“节点n”的上一个节点。比如,对于图2所示的环形网络,如果节点n理解为节点a1,则节点(n+1)为节点a2,节点(n+2)为节点a3,节点(n-1)为节点a0。
应理解,这里的“节点n”、“节点(n+1)”、“节点(n+2)”等仅是节点的称谓,本申请实施例提供的节点并不受其称谓的限制,不同节点可采用其他的表达方式区分描述。
在下面的各个实施例中,将主要围绕以下几点进行介绍。
1、在环形网络中的第一节点上设置虚拟节点,第一节点上的虚拟节点能够实现第二节点的部分功能,第二节点为环形网络的数据传输方向上第一节点的下一个或连续的多个节点。在本申请实施例中,虚拟节点无需参与基于训练数据确定梯度的计算过程,当第二节点异常时,虚拟节点会代替第二节点收集梯度,并将收集的梯度在各个节点之间扩散。其中,第一节点为环形网络中任一节点,需要说明的是,在本申请实施例中,第二节点可以为一个节点,也可以为两个以上的节点。比如,对于图2所示的环形网络,当第一节点为a0时,第二节点可以为a1,也可以为a1和a2。此外,本申请实施例中的虚拟节点还可以称为影子节点。
2、新增了第一节点与第三节点之间的通路,第三节点是环形网络的数据传输方向上第二节点后的第一个节点。比如,对于图2所示的环形网络,当第一节点为a0,第二节点为a1时,第三节点为a2。当第一节点为a0,第二节点为a1和a2时,第三节点为a3。
3、在多环网络中,新增了第一节点和第四节点之间的通路,以及第一节点和第五节点之间的通路。第四节点为第二节点在多环网络的环间传输扩散数据路径上的下一个节点。第二节点为第五节点在多环网络的环间传输扩散数据路径上的下一个节点。
以上节点内容将在下述实施例中详细解释,在此就先不展开说明。
下面介绍本申请实施例提供的环形网络的系统架构。
本申请提供的单环形网络或者多环形网络中任一环形网络包括多个节点。节点可以是具有计算处理能力的任意实体装置。节点也可被称为实体节点、计算节点、物理节点等。下面,通过环形网络100、环形网络200、环形网络300、环形网络400和环形网络500对环形网络的架构举例说明。
本申请实施例提供了环形网络100,环形网络100中的节点是独立的实体设备。比如,节点为主机、服务器、个人电脑或其他计算机一类的设备。环形网络100中的不同节点可以部署在同一地理区域或不同地理区域。环形网络100中的不同节点通过有线网络或无线网络相连。在一种可能的实现中,环形网络100中的每个节点接入至一个或多个网络设备,网络设备用于在环形网络100中的不同节点之间转发数据,其中,网络设备包括而不限于交换机、路由器等。环形网络中任意两个节点通过网络设备实现互联,在软件上实现环形网络。
比如,请参考图12,图12是环形网络100的系统架构示意图。参见附图12,环形网络100包括节点0、节点1……节点n,省略号表示环形网络100包括而图12未示出的节点。图12中的交换机是对网络设备的举例说明。
本申请实施例提供了环形网络200,环形网络200中的节点包括一个或多个处理器。被配置为节点的处理器包括多种实现方式。比如,该处理器包括而不限于图形处理器(英语:Graphics Processing Unit,GPU)、嵌入式神经网络处理器(neural-networkprocessing units,NPU)、中央处理器(central processing unit,CPU),或者,处理器也可以是集成电路。比如,处理器可以是专用集成电路(application-specific integratedcircuit,ASIC),可编程逻辑器件(programmable logic device,PLD)或其组合。上述PLD可以是复杂可编程逻辑器件(complex programmable logic device,CPLD),现场可编程逻辑门阵列(field-programmable gate array,FPGA),通用阵列逻辑(generic array logic,GAL)或其任意组合。处理器可以是单核处理器,也可以是多核处理器。可选地,环形网络中的每个处理器的类型相同,比如,环形网络中的每个处理器均是NPU。可选地,环形网络包括多种不同类型的处理器。比如,环形网络中的部分处理器是NPU,另外一部分处理器是GPU,再一部分处理器是ASIC。
可选地,在分布式训练的场景下,环形网络200中的节点是神经网络处理器,神经网络处理器俗称为AI芯片,神经网络处理器利用算法硬件化的方式加快运算效率。
可选地,被配置为不同节点的不同处理器设置在同一个实体设备内,不同节点之间通过实体设备内的系统总线相连,不同节点通过该系统总线通信。该系统总线包括而不限于串行计算机扩展总线标准(peripheral component interconnect express,简称:PCIe)总线、外设部件互连标准(peripheral component interconnect,简称:PCI)总线、紧凑型PCI(Compact PCI)总线等等。或者,可选地,被配置为不同节点的不同处理器设置在不同的实体设备内,不同节点所处的实体设备通过网络相连,不同节点借助对应实体设备进行通信。
比如,请参考图13,图13是环形网络200的系统架构示意图。在一种可能的实现中,采用NPU作为环形网络中的节点,通过PCIE switch等方式将不同NPU互联,在软件上实现不同NPU组成一个环形网络。比如,参见图13,环形网络200中的节点包括(n+1)个NPU,分别是NPU_0、NPU_1至NPU_N。NPU_0、NPU_1至NPU_N中的不同NPU通过PCIE交换机(PCIE switch)互联。
本申请实施例提供了环形网络300,环形网络300中不同节点与不同的CPU相连,环形网络中不同CPU连接的节点之间传输的数据通过CPU交换,环形网络中同一CPU连接的节点之间传输的数据通过PCIE交换机或其他类型的系统总线交换。
比如,参见附图14,图14为环形网络300的系统架构示意图,环形网络300中的节点为处理器,比如为NPU或GPU。任意两个处理器通过PCIE交换机等方式互联,并通过CPU进行级联,在软件上实现不同处理器组成一个环形网络。比如,参见图14,环形网络300中的节点包括NPU_00、NPU_01至NPU_0N,另外还包括NPU_10、NPU_11至NPU_1N。其中,NPU_00、NPU_01至NPU_0N均接入至PCIE交换机0,PCIE交换机0与CPU_0连接。NPU_10、NPU_11至NPU_1N均接入至PCIE交换机1,PCIE交换机1与CPU_1连接。NPU_00、NPU_01至NPU_0N中的不同NPU之间传输的数据通过PCIE交换机0转发。NPU_10、NPU_11至NPU_1N中的不同NPU之间传输的数据通过PCIE交换机1转发。NPU_00、NPU_01至NPU_0N中的NPU与NPU_10、NPU_11至NPU_1N中的NPU之间传输的数据通过PCIE交换机0、PCIE交换机1、CPU_0和CPU_1转发。
本申请实施例提供了环形网络400,环形网络400中的不同节点之间两两互联。请参考图15,图15是环形网络400的系统架构示意图。环形网络400中的节点为处理器,比如节点为NPU或GPU。环形网络400中的不同节点通过PCIE switch等方式对接,环形网络400中的不同节点之间两两互联,在软件上实现不同处理器组成一个环形网络。
本申请实施例提供了环形网络500,环形网络500中的不同节点之间两两互联,并通过CPU进行级联。请参考图16,图16是环形网络500的系统架构示意图。环形网络500中的节点为处理器,比如为NPU或GPU。不同处理器之间通过PCIE switch等方式对接,不同处理器之间两两互联,再通过CPU进行级联,软件上实现不同处理器组成一个环形网络。
基于以上描述的环形网络的各种系统架构,参见附图17,最终实现的环形网络如图17所示。
需要说明的是,上述图11至图17用于解释说明单个环形网络中各个节点系统架构示意图。如果当前网络为多环形网络,此时任一环形网络的系统结构均可以参考上述实施例。此外,不同环形网络中节点之间的连接方式也可以参考上述同一环形网络中的不同节点之间的连接方式,在此就不再一一举例说明。
在本申请实施例中,数据在环形网络节点之间的传递方式包括传递方式一、传递方式二和传递方式三。
传递方式一、数据从第一个节点开始依次传递至最后一个节点,最后一个节点将数据传递给第一个节点。如图18所示,数据从节点0传递至节点1,再从节点1传递至节点2,依次传递到节点n,再从节点n传递到节点0,形成环形网络。图18中第3列上侧的省略号表示环形网络包括而图18未示出的其他节点。
传递方式二、完整数据被拆分成多个数据分组,每个数据分组包括完整数据中的部分数据。每个数据分组类似于传递方式1,在某个节点开始向后续的节点传递,形成环形网络。参考图19,完整数据被拆分成M+1个数据分组,该M+1个数据分组包括数据分组0到数据分组M。其中,数据分组0表示完整数据中的第一个数据分组。数据分组M表示完整数据中的第M+1个数据分组。图19中节点对应的一列中包含的省略号表示完整数据包括而图19未示出的数据分组,比如节点0所在的一列的第3行的省略号表示未示出的数据分组2。M为正整数。
传递方式三、在多环网络中,跨环计算采用对称计算方式。比如,对于图8所示的多环网络,垂直方向计算路径为a0-m0节点、a1-m1节点,以此类推。垂直方向上的各条计算路径在图8中已经采用粗虚线表示出。关于传递方式三的功能,在上述S216中已经详细解释说明,在此就不再赘述。
以上介绍了环形网络的系统架构以及环形网络中数据的传递方式,下面对本申请实施例提供的环形网络中的异常节点处理方法进行详细解释说明。
下述实施例用于对本申请实施例提供的环形网络的配置过程进行举例说明。换句话说,下述实施例描述的方法流程关于如何配置环形网络以使环形网络执行分布式计算任务。
图20是本申请实施例提供的一种配置环形网络的示意图。该实施例以8个节点组成的环形网络为例进行说明。
请参考图20中“原始环形网络”,8个节点组成的环形网络如“原始环形网络”中的圆形实线所示,每个节点如“原始环形网络”中的实心圆点所示。
环形网络中数据传输方向为顺时针方向。比如,如图20所示,数据传输方向是:节点a0将数据传递给节点a1,节点a1将数据传递给节点a2,依次类推,节点a6将数据传递给节点a7,节点a7将数据传递给节点a0。如果应用在分布式训练的场景下,图20中箭头对应于梯度融合计算过程的数据传输方向,也就是图4中箭头的方向。
需要说明的是,在一个固定的时间点,环形网络中各个节点的数据传输方向为单向传输。比如图20中,节点a0将数据传递给节点a1,节点a1将数据传递给节点a2,依次类推,节点a6将数据传递给节点a7,节点a7将数据传递给节点a0。但是在其他时间点,可以对环形网络中的数据传输方向进行调整,调整后的各个节点的邻居节点允许发生变化,但是整个环形网络的数据传输方向仍然是单向传输。
本申请实施例中,对环形网络增加了配置。增加的配置至少包括增加虚拟节点和增加网络传输路径这二个方面,以下对这二方面分别如何实现进行具体说明。
(1)增加虚拟节点。
虚拟节点为节点的冗余节点。虚拟节点用于保护对应的节点。其中,节点与虚拟节点之间的保护关系包括而不限于主备关系以及对等关系。比如,节点为主用节点,节点对应的虚拟节点为备用节点。
为了清楚地表达节点和虚拟节点之间的对应关系,本申请实施例后续在不至于引入理解困难的情况下用“节点标识+`”的形式来简化表示一个节点对应的虚拟节点,如虚拟节点“a0`”是节点“a0”对应的虚拟节点,虚拟节点“a1`”是节点“a1”对应的虚拟节点等等。
可选地,节点和虚拟节点之间的对应关系为一一对应的关系,即,每个节点具有一个对应的虚拟节点。比如,请参考图20“新增虚拟节点”所示,虚拟节点如“新增虚拟节点”中的空心圆点所示,8个节点对应于8个虚拟节点,其中,节点a0对应的虚拟节点是虚拟节点a0`,节点a1对应的虚拟节点是虚拟节点a1`,依次类推。其中,图20“新增虚拟节点”中带箭头的虚线表示节点与其对应的虚拟节点之间的对应关系,带箭头的虚线的起点表示节点,箭头指向的是节点对应的虚拟节点。比如,图20中有根虚线是从节点a1指向虚拟节点a1`,含义是节点a1对应的虚拟节点是虚拟节点a1`,图20中其他带箭头的虚线的含义与此同理。
需要说明的是,在本申请中,允许环形网络中相邻节点中只有一个节点存在异常,也允许环形网络中多个相邻节点同时存在异常。下面以允许相邻节点中只有一个节点出现异常和相邻节点中连续两个节点存在异常分别为例进行说明,其他更多节点的场景可以参考允许连续两个节点出现异常的场景,在此就不再一一详细解释说明。
图20是本申请实施例提供的一种配置虚拟节点的示意图,应用于允许相邻节点中只有一个节点出现异常的场景。
这种场景下,节点对应的虚拟节点配置在环形网络中节点的上一个节点上。其中,这里涉及的“上一个”节点是相对于环形网络中数据传输方向而言的。比如,若数据传输方向为从发送端至接收端,则充当发送端的节点为上一个节点,充当接收端的节点为下一个节点。换句话说,节点对应的虚拟节点按照环形网络数据传输方向反向进行配置。比如,请参考图20“新增虚拟节点”,在环形网络执行分布式计算任务的过程中,节点a0会将数据传输给节点a1,节点a1会将数据传输至节点a2,数据传输方向是节点a0→节点a1→节点a2。在配置虚拟节点的过程中,将节点a2对应的虚拟节点a2`配置在节点a1上,将节点a1对应的虚拟节点a1`配置在节点a0上,将节点a0对应的虚拟节点a0`配置在节点a7上。其中,图20“新增虚拟节点”中虚线矩形框表示节点与其配置的虚拟节点之间的对应关系,同一个虚线矩形框内包含一个虚拟节点和一个节点,该虚拟节点配置在该节点上,比如,节点a0和虚拟节点a1`画在了同一个虚线矩形框内,表示虚拟节点a1`配置在了节点a0上,图20中其他虚线矩形框的含义与此同理。
图22是本申请实施例提供的一种配置虚拟节点的示意图,应用于允许相邻节点中连续两个节点存在异常的场景。
在这种场景下,对于原始环形网络中的任一节点,该节点上配置有数据传输方向上的位于该节点之后邻近的连续两个节点对应的虚拟节点。比如,节点a0上配置有节点a1的虚拟节点a1`和节点a2的虚拟节点a2`,节点a1上配置有节点a2的虚拟节点a2`和节点a3的虚拟节点a3`,以此类推,节点a7上配置有节点a0的虚拟节点a0`和节点a1的虚拟节点a1`。
图22中原始环形网络、以及新增虚拟节点对应的图中的其他内容可以参考图20对应的内容,在此就不再赘述。
在本申请中,虚拟节点可以为配置该虚拟节点的节点上运行的软件。采用软件实现虚拟节点的方式包括多种。在一些实施例中,虚拟节点采用虚拟化技术构建,比如,虚拟节点包括而不限于容器、虚拟机、pod中的任一种。比如,将节点打包为镜像文件,将镜像文件导入至节点的上一个节点上,在上一个节点根据镜像文件创建出虚拟节点。又如,虚拟节点是进程。
通过增加虚拟节点,达到的效果包括:环形网络中的每个节点被配置为执行分布式计算任务中对应的子任务,每个虚拟节点无需执行对应节点的子任务,只需在环形网络中的节点异常时,虚拟节点能够替换异常节点融合计算结果,并扩散融合后的计算结果即可,这样可以保证其他正常节点的计算结果仍然可以用于确定模型中参数,也就避免了由于节点异常导致环形网络的分布式计算任务中止的情况。
(2)增加网络传输路径。
环形网络中的每个节点与下一个节点之间具有通路,节点通过该通路向下一个节点传输数据。换个方式表达,节点n和节点(n+1)具有通路,该通路可以视为节点n向节点(n+1)传递数据的路径。比如,请参见图20中的“原始环形网络”,如果节点n是图20中的节点a0,节点(n+1)则是图20中的节点a1,节点n和节点(n+1)之间的通路比如是节点a0与节点a1之间的网络路径,节点a0通过该网络路径,可将数据传输至节点a1。
本段对通路的概念进行介绍。通路是通过网络建立的路径。可选地,通路通过高速互联网络建立。该高速互联网络包括而不限于PCIe总线、缓存一致性(cache coherence,CC)系统、以太网、光纤通道(Fibre Channel,FC)、无限带宽(infiniband,IB)、SCSI、以太网、直接内存存取(direct memory access,简称:DMA)、远程直接内存访问(remote directmemory access,简称:RDMA)或内存结构(memory fabric)等。可选地,通路是通过有线网络建立的网络路径。可选地,通路是通过无线网络建立的网络路径。可选地,节点与下一个节点位于同一台实体设备内,节点与下一个节点之间的通路是实体设备内部的网络路径。或者,节点与下一个节点位于不同实体设备内,节点与下一个节点之间的通路是远程的网络路径,可通过传输控制协议/因特网互联协议(transmission control protocol/internetprotocol,TCP/IP)协议建立。
本申请实施例提供的环形网络中,不仅具有节点n和节点(n+1)之间的通路,还配置了新增的通路。比如请参考图20,图20中“新增网络路径”相对于“原始环形网络”中增加的网络路径是对新增的通路的举例说明。新增的通路具体参见下述(2.1)和(2.2)。
(2.1)新增了第一节点与第三节点之间的通路,其中第一节点为环形网络中任一节点,第二节点为第一节点后的连续的一个或多个节点,第三节点为第二节点后的第一个节点。
上述第二节点可以为一个节点,此时,应用于允许相邻节点中只有一个节点出现异常的场景。
比如,在图20的新增网络路径中,第一节点是图20中的节点a0,第二节点是图20中的节点a1。第一节点和第三节点之间的通路是节点a0与节点a2之间的网络路径,节点a0通过该网络路径,可将数据传输至节点a2。依次类推,还新增了节点a1与节点a3之间的通路、节点a2与节点a4之间的通路、节点a3与节点a5之间的通路、节点a4与节点a6之间的通路等等。
此外,上述第二节点也可以为多个节点,此时,应用于允许相邻节点中多个连续节点出现异常的场景。下面以允许相邻节点中连续两个节点出现异常为例进行说明。
比如,在图22的新增网络路径中,第一节点是图22中的节点a0,第二节点是图20中的节点a1和a2。第一节点和第三节点之间的通路是节点a0与节点a3之间的网络路径,节点a0通过该网络路径,可将数据传输至节点a3。依次类推,还新增了节点a1与节点a4之间的通路、节点a2与节点a5之间的通路、节点a3与节点a6之间的通路、节点a4与节点a7之间的通路等等。
需要说明的是,在图22所示的新增网络路径中,除了新增第一节点和第三节点之间的通路,还新增了第一节点和第二节点中除了第一节点的下一个节点之外的其他节点之间的通路。这样配置的技术效果为:如果只有一个节点出现异常,便直接跨过下一个节点继续进行数据传输。比如,在图22的新增网络路径中,a0上除了新增到达a3的通路,还新增了到达a2的通路。以此类推,a1上除了新增到达a4的通路,还新增了到达a3的通路,a2上除了新增到达a5的通路,还新增了到达a4的通路,a3上除了新增到达a6的通路,还新增了到达a5的通路,a4上除了新增到达a7的通路,还新增了到达a6的通路等等。
(2.1)在第一环形网络中的第二节点与第二环形网络中的第四节点之间有传输路径的场景下,新增了第一节点与第二环形网络中的第四节点之间的通路。可选地,还新增有第一节点与第五节点之间的通路。第二节点为第三环形网络中的第五节点传输扩散数据路径上的下一个节点。
当分布式训练应用于多环网络中时,为了保证在节点异常时环间数据扩散能够继续进行,还需新增垂直方向上跨过异常节点的通路。假设第二节点为第一环形网络中的任一个节点,第四节点为第二环形网络中与第一节点对称的节点,也即是第四节点为第二节点发送扩散数据路径上的下一个节点。此时,还需增加第四节点与设置有与第二节点对应的虚拟节点的节点之间的通路,也即是第四节点与第一节点之间的通路。
可选地,在第二节点发送扩散数据的路径上还存在上一个节点(也即是上述第五节点)的情况下,还需增加第一节点与第五节点之间的通路。
比如,图21中本申请实施例提供的一种环间新增通路的分布示意图。对于b0至b7中的任一节点,假设为b1,如果节点b1发生异常,此时则需新增节点a1到达节点b0之间的通路,以及节点b0到达节点c1之间的通路。图21中其他斜线所指示通路同样可以参考该解释。
需要说明的是,在垂直方向的环间扩散中,也可以允许一个节点存在异常,也可以允许连续两个节点异常,此时,新增的环间通路分布同样可以如图21所示。只不过在实际传输扩散数据时选择的通路与一个节点发生异常时选择的通路不同。图23是本申请实施例提供的一种垂直方向上环间扩散数据的传输路径示意图。如图23所示,假设垂直方向上的节点b5和节点c5均发送异常,此时,节点a5在向节点b5发送扩散数据时,可以先将扩散数据发送至节点b4,节点b4在对扩散数据更新后,便可向更新后的扩散数据发送至节点c5,由于节点c5此时也发生异常,因此需要将更新后的扩散数据发送至节点c4,由节点c4继续更新扩散数据,并将更新后的扩散数据发送至节点d5。
通过环间新增通路的设置,在第二节点异常的情况下,环间的扩散数据能够跨过第二节点通过第一节点继续进行扩散,从而避免了垂直方向上数据扩散中断。
图24是本申请实施例提供的一种异常节点的场景中的数据传输路径示意图。如图24所示,假设节点b5(图24中未示出该节点)是异常节点,此时基于上述新增通路的配置,如图24所示,该多环网络中,节点b4和节点b6之间有通路,节点a5和节点b4之间有通路,节点b4与节点c5上也有通路。以实现在b5节点异常时,分布式训练计算过程能够继续进行。
图25是本申请实施例提供的另一种异常节点的场景中的数据传输路径示意图。如图25所示,假设节点b5和b6是异常节点,此时基于上述新增通路的配置,如图25所示,该多环网络中,节点b4和节点b7之间有通路,节点a5和节点b4之间有通路,节点a6也和节点b4之间有通路,节点b4与节点c5上有通路,节点b4与节点c6上也有通路。以实现在b5节点和或节点b6异常时,分布式训练计算过程能够继续进行。
需要说明的是,图25中仅仅示出了节点a6和节点b4之间的通路以及节点b4和节点c6之间的通路,节点a5和节点b4之间的通路以及节点b4和节点c5之间的通路并未在图25中示出。
以上实施例介绍了环形网络的配置过程,以下通过实施例,对基于上述实施例提供的环形网络中的异常节点处理方法进行举例说明。换句话说,下述实施例描述的方法流程关于如何基于配置好的环形网络来解决节点异常的问题。应理解,下述实施与上述实施例同理的步骤还请
参见图26,图26是本申请实施例提供的一种环形网络的异常节点处理方法的流程图。图26所示的实施例应用于上述实施例配置的环形网络中的任一节点上,下面将以应用在第一节点为例进行说明,第一节点为第一环形网络中的任一节点,第一环形网络为多环网络中的任一环形网络,也即是,下述实施例应用于任一环形网络的任一节点中。示例性地,下述实施例包括S2601至S2603。
S2601、第一节点获取第一节点对应的第一子任务的第一计算结果。
在一种可能的实现方式中,上述步骤S2601的实现过程可以为:第一节点获取执行第一子任务所需的数据,根据获取的数据即可确定第一计算结果。
示例地,如果分布式计算任务是深度学习领域中的分布式训练任务,则第一子任务为收集第一环形网络中起始节点至第一节点中各个节点针对目标参数确定的梯度。其中,目标参数为待训练的模型中的部分参数。比如,在图5所示的收集过程中,目标参数即可为模型中全部参数的1/8份参数。
上述起始节点为基于控制节点下发的环内收集指令开始融合第一环形网络中各个节点基于目标参数确定的梯度的节点。需要说明的是,起始节点可以和第一节点为同一节点,也可以为不同的节点。当起始节点和第一节点不是同一节点时,起始节点为第一环形网络的数据传输方向上第一节点的上游的一个节点。此时,第一计算结果包括起始节点至第一节点中各个节点针对目标参数确定的梯度。当起始节点和第一节点为同一节点时,第一节点为开始收集针对目标参数的梯度的第一个节点。此时,第一计算结果仅仅包括第一节点基于自身上加载的训练数据确定的针对目标参数的梯度。
S2602、在第二节点为异常节点的情况下,第一节点基于第一计算结果确定与第二节点对应的第二计算结果。
在本申请实施例中,为了能够实现在第二节点为异常节点的情况下,分布式训练过程能够继续进行,在第二节点为异常节点的情况下,第一节点可以基于第一计算结果来确定与第二节点对应的第二计算结果,无需执行第二节点对应的子任务就可以得到第二计算结果,提高了处理异常节点的效率。
在一种可能的实现方式中,第一节点可以直接将第一计算结果确定为第二计算结果。
需要说明的是,第一节点将第一计算结果确定为第二计算结果包括第一节点没有执行任何动作,直接将第一计算结果作为第二计算结果。换句话说,在第二节点为异常节点的情况下,第一节点在确定出第一计算结果后,相当于也确定出了第二计算结果。
在另一种可能的实现方式中,第一节点可以将第一计算结果与参考值相加后的数据确定为第二计算结果。
该参考值为预先配置的数值。当该参考值为0时,这两种实现方式确定的第二计算结果相同。可选地,该参考值也可以为在历史时间段内所有节点确定的模型中的参数的梯度的一个平均值。本申请实施例对该参考值不作具体限定。
需要说明的是,上述两种实现方式可以直接由第一节点执行,可选地,也可以由第一节点上配置的第二节点对应的虚拟节点来执行。此时,在S2602中,第一节点基于第一计算结果确定与第二节点对应的第二计算结果的实现方式可以为:第一节点调用虚拟节点,执行基于第一计算结果第二计算结果的步骤。
在上述实现方式中,如果是直接将第一计算结果确定为第二计算结果,此时可以无需调用该虚拟节点来实现。如果是将第一计算结果和参考数值相加后的数据作为第二计算结果,此时可以调用虚拟节点来实现,这种情况下,虚拟节点相当于需要提供第二计算结果的计算功能,只不过该计算功能和第二节点本身的计算功能并不相同,虚拟节点只需将第一计算结果和参考值相加即可得到第二计算结果,而第二节点的计算功能则需要执行第二节点对应的第二子任务才能得到第二计算结果。
基于S2602,在第二节点出现异常时,可以直接忽略第二节点对应的子任务的第二计算结果,直接由第一节点基于第一计算结果确定一个第二计算结果,以保证分布式训练的继续进行。
需要说明的是,在分布式计算任务是深度学习领域中的分布式训练任务的场景中,如果直接将第一计算结果确定为第二计算结果,或者上述参考值设置为0,表明在收集环形网络中各个节点针对模型中的目标参数确定的梯度时,剔除了异常节点针对目标参数确定的梯度。目标参数为待训练的模型中的部分参数。
因此,在确定目标参数的参数值时,假设采用梯度均值化后的结果作为参数值,则第一节点确定除异常节点之外剩下节点的数量,第一节点获取剩下节点针对目标参数确定的梯度之和与数量之间的比值,将比值作为目标参数的参数值,目标参数为模型中的部分参数。比如,环形网络中有N个节点,如果异常节点的数量为1,那么则将收集的目标参数的梯度之和除以(N-1),得到的数值即为目标参数的参数值。
如果通过参考值确定第二计算结果,且参考值为在历史时间段内所有节点确定的模型中的目标参数的梯度的一个平均值。这种场景下,相当于对通过一个平均值对异常节点的确定的梯度进行了补偿,因此,第一节点确定收集的梯度之和与全部节点的数量之间的比值,将该比值作为目标参数的参数值。
此外,如果通过参考值确定第二计算结果,且参考值为在历史时间段内所有节点确定的模型中的目标参数的梯度的一个平均值,但是考虑到第二节点在历史时间段内确定的目标参数的梯度普遍较高。这种场景下,第一节点确定收集的梯度之和与正常节点的数量之间的比值,将该比值作为目标参数的参数值。
也即是,上述确定第二计算结果时所使用的参数值,以及后续确定目标参数的参数值时所使用的节点数量可以根据实际使用场景适应调整。
此外,第一节点能够通过控制节点下发的通知来确定第二节点是否为异常节点。在一种可能的实现方式中,第一节点接收控制节点下发的异常节点通知消息,该异常节点通知消息携带异常节点的标识,此时,如果第二节点的标识为该异常节点通知消息中的携带的节点的标识,则将第二节点确定为异常节点。
也即是,可以由控制节点在分布式计算任务中判断哪些节点为异常节点。示例地,如果分布式计算任务是深度学习领域中的分布式训练任务,控制节点可以根据各个节点基于自身上加载的训练数据进行训练的进程来判断哪些节点为异常节点。也即是,异常节点是指基于自身上加载的训练数据确定参数梯度的计算进度不满足进度阈值的节点。这种异常节点设置方式带来的效果为:将分布式训练过程中计算速度较慢的节点作为异常节点,以提高分布式训练任务的执行效率
在一种可能的实现方式中,将进度阈值设置时间阈值,控制节点在控制多环网络中各个节点基于自身上加载的训练数据开始训练之后,开始计时,如果在计时时长达到时间阈值,某个节点还没有完成基于自身上加载的训练数据进行训练得到梯度的计算过程,控制可以将该节点确定为异常节点。
在另一种可能的实现方式中,将进度阈值设置比例阈值,控制节点在控制多环网络中各个节点基于自身上加载的训练数据开始训练之后,可以统计完成基于自身上加载的训练数据进行训练得到梯度的计算过程的节点,如果统计的节点的数量和全部节点数量之间的比值达到比例阈值,则将剩下没有完成基于自身上加载的训练数据进行训练得到梯度的计算过程的节点确定为异常节点。
上述是将训练过程中计算比较慢的节点作为异常节点,这种场景下,该异常节点还可以称为慢节点。比较慢的判断阈值便可通过上述时间阈值或比例阈值来实现,在此不再赘述。
此外,在本申请实施例中,异常节点还可以包括发生故障的节点或环形网络中的缺失的节点,发生故障的节点比如可以为无法正常与其他节点进行通信的节点等等。
另外,本申请实施例允许环形网络中的节点出现异常,但是为了保证分布式计算任务的计算结果的精度,还需保证出现异常的节点的数量不能达到一定参考条件,如果异常节点的数量满足了该参考条件,则表明系统故障或各个节点对应的计算结果不可信,此时则需要停止执行分布式计算任务中相应子任务。
此外,控制节点在确定异常节点的数量满足了该参考条件时,控制节点可以发出告警提示信息,以提示环形网络中各个节点终止执行分布式计算任务。
在一种可能的实现方式中,如果分布式计算任务是深度学习领域中的分布式训练任务,创建训练任务的用户可配置基于模型的训练需要指定整个训练集群的异常节点的比例或者数量,也可以配置单环环内异常节点的数量和多环垂直方向单列异常节点的比例或者数量,并将配置的比例或者数量作为上述参考条件。
此外,需要说明的是,为了保证分布式计算任务能够实现,每个单环中至少有一个节点需要正常工作。
S2603、第一节点将第二计算结果发送至第三节点。
在一种可能的实现方式中,第一节点可以直接将第二计算结果发送至第三节点。
在另一种可能的实现方式中,如果第一节点是通过调用第二节点对应的虚拟节点确定第二计算结果的,此时第二节点可以继续通过调用该虚拟节点将第二计算结果发送至第三节点,以使第三节点能够继续基于第二计算结果执行自身对应的子任务。
可选地,在分布式训练计算场景中,如果第二节点是收集目标参数的梯度的路径上的最后一个节点,也即是,第二节点是S2601中起始节点的上游邻接节点,此时,第一节点在确定出第二计算结果后,则不再继续将第二计算结果发送至第三节点,并将第二计算结果确定为第一环形网络中针对目标参数收集的融合梯度。
在上述实施例中,在第二节点为异常节点的情况下,第一节点可以基于第一计算结果来确定与第二节点对应的第二计算结果,无需执行第二节点对应的子任务就可以得到第二计算结果,能够实现在第二节点为异常节点的情况下,分布式训练过程能够继续进行,同时也提高了异常恢复的效率。
上述S2601至S2603用于解释说明单个环形网络中的节点出现异常时,如何实现训练过程的继续进行。在分布式训练应用于多环网络的场景时,当进行环间垂直方向的梯度扩散时,同样需要跨过异常节点,才能保证分布式训练的继续进行,下述实施例用于对该过程进行详细解释说明。
图27是本申请实施例提供的另一种异常节点处理方法流程图。该方法用于对环间垂直方向的梯度扩散过程中的异常恢复进行解释说明。如图27所示,该方法包括如下几个步骤。
S2701:在第二节点为异常节点的情况下,第一节点获取第二节点需要向第二环形网络中的第四节点发送的第一扩散数据,第一扩散数据包括第二计算结果,第四节点为第二节点在多环网络中传输扩散数据路径上的下一个节点。
在第二节点为异常节点的情况下,由于第一节点能够替代第二节点确定与第二节点对应的计算结果,因此在环间纵向方向的数据扩散过程中,仍然能够由第一节点替代第二节点来传输扩散数据。
此外,基于前述关于虚拟节点的配置可知,在S2701中,可选地,第一节点能够调用与第二节点对应的虚拟节点来执行“获取第二节点需要向第二环形网络中的第四节点发送的第一扩散数据”的步骤,在此就不再详细说明。
基于图8所示的实施例中垂直方向的扩散过程的解释说明可知,第一节点能够在以下两个场景中来执行上述S2701。
场景一:如果第二节点为环间纵向方向上传输扩散数据的路径上的第一个节点,这种场景下,控制节点在向第二节点下发环间收集指令时,如果确定第二节点为异常节点,则不向第二节点下发环间收集指令,而是向第一节点下发环间收集指令,以使第一节点能够代替第二节点确定需要向第二环形网络中的第四节点发送的第一扩散数据。
场景二:如果第二节点不是环间纵向方向上传输扩散数据的路径上的第一个节点。比如假设多环网络还包括第三环形网络,第二节点为第三环形网络中的第五节点传输扩散数据路径上的下一个节点。这种场景下,当第五节点向第二节点发送第二扩散数据时,由于第二节点位异常节点,因此第五节点可以通过新增的第五节点与第一节点之间的通路,将第二扩散数据发送至第一节点,第一节点接收第五节点发送的第二扩散数据,第二扩散数据包括第三环形网络中与第五节点对应的计算结果。此时,第一节点将第二扩散数据和第二节点计算结果叠加,即可得到第一扩散数据。
示例地,如果分布式计算任务是深度学习领域中的分布式训练任务,上述第二节点为第一环形网络中负责收集针对目标参数的梯度的节点,第四节点为第二环形网络中负责收集针对目标参数的梯度的节点,第五节点为第三环形网络中负责收集针对目标参数的梯度的节点。也即是,第五节点、第二节点、第四节点为环间纵向方向传输扩散数据路径上的三个连续的节点,这三个节点组成了环间梯度扩散的一个传输链路。
由于第二节点为第一环形网络中负责收集针对目标参数的梯度的节点,因此,上述第一扩散数据即为第二节点在执行收集针对目标参数的融合梯度这个子任务上的第二计算结果。也即是,第一扩散数据包括各个节点针对目标参数确定的梯度的融合梯度。需要说明的是,在第二节点为异常节点的情况下,由于确定第二计算结果的实现方式和第二节点正常情况下确定的第二计算结果不同,所以,在第二节点为异常情况下,第二节点需要向第二环形网络中的第四节点发送的第一扩散数据和第二节点正常情况下发送的扩散数据不同。
比如,第一节点直接将第一计算结果确定为第二计算结果或者将上述参考值设置为0的情况下,在第二节点为异常情况下,第二节点需要向第二环形网络中的第四节点发送的第一扩散数据中包括除第二节点之外的其他节点针对目标参数确定的梯度。而第二节点正常情况下发送的扩散数据将包括全部节点针对目标参数确定的梯度。
此外,该第二计算结果则包括第一环形网络中各个节点针对该目标参数确定的梯度。该目标参数比如为图8所示的环形网络中待训练模型的1/8份参数。其中,在第二节点为异常节点的情况下,第二计算结果的实现方式参考图26所示的实施例,在此就不再详细说明。
S2702:第一节点将第一扩散数据发送至第四节点。
第一节点在确定第一扩散数据之后,由于第二节点为异常节点,此时可以通过新增的第一节点与第四节点之间的通路,将第一扩散数据发送至第四节点。
基于前述关于虚拟节点的配置可知,在S2702中,可选地,第一节点能够调用与第二节点对应的虚拟节点来执行“将第一扩散数据发送至第四节点”的步骤,在此就不再详细说明。
通过上述图27所示的实施例,在多环网络中,即使某个节点出现异常,仍然可以通过上述方法保证环间纵向方向上的扩散过程的中断。
上述图26和图27所示的实施例用于详细解释说明在多环网络中如何在节点异常的情况下保证分布式计算过程的继续进行。下面以图9所示的三层环形网络、分布式计算任务是深度学习领域中的分布式训练任务为例进一步对上述两个实施例展开说明。
如图28所示,假设图9所示的多环网络中的节点a5为一个异常节点。图28中的8*3个节点进行分布式训练过程包括以下S2811至S2816。
S2811、向计算集群加载训练模型。图28所示的24个节点中每个节点加载一份完整的训练模型和初始模型参数。
S2812、向计算集群加载本次batch的训练数据,图28所示的每个节点加载1/24份batch训练数据。
S2813、计算集群各节点分别基于自身上加载的训练数据计算一份模型中全部参数的梯度。
图29是以图28中水平方向第一个环形网络为例来说明各个节点确定的全部参数的梯度。其中,节点a0确定的参数的梯度为a00、a01、a02、a03、a04、a05、a06、a07。依次类推,如图29所示,节点a1确定的参数的梯度为a10至a17,节点a2确定的参数的梯度为a20至a27,节点a3确定的参数的梯度为a30至a37,节点a4确定的参数的梯度为a40至a47,节点a5确定的参数的梯度为a50至a57,节点a6确定的参数的梯度为a60至a67,节点a7确定的参数的梯度为a70至a77。
需要说明的是,本申请实施例中的虚拟节点并不参与梯度计算的任务,但是便于后续能够通过虚拟节点来替代相应节点进行梯度融合,可以在虚拟节点配置对应的节点的梯度为0。如图29所示可以将a5`基于自身上加载的训练数据计算的一份全部参数的梯度暂确定为0。
S2814、计算集群水平方向每个环形网络各节点确定1/n参数的累加梯度。下面以水平方向第一个环形网络a0-a7为例说明S2814。
基于上述S2602中的解释可知,在第二节点为异常节点的情况下,第一节点基于第一计算结果确定与第二节点对应的第二计算结果有两种可能的实现方式,一种是第一节点直接将第一计算结果确定为第二计算结果,另一种是调用虚拟节点将第一计算结果与0相加,得第二计算结果。因此,下面分别以这两种实现方式来详细说明上述S2814。
(1)假设在第二节点为异常节点的情况下,第一节点直接将第一计算结果确定为第二计算结果。
水平方向的第一次梯度融合计算结果如图30所示。水平方向的第一次梯度融合过程为:
和a5节点为正常节点的情况下相同,节点a0向节点a1传递第一份参数的梯度a00,节点a1在接收到a00后需要执行的子任务为:将a00与自身确定的第一份参数的梯度a10相加,得到计算结果为a00+a10。
和a5节点为正常节点的情况下相同,节点a1向节点a2传递第二份参数的梯度a11,节点a2在接收到a11后需要执行的子任务为:将a11与自身确定的第二份参数的梯度a21相加,得到计算结果为a11+a21。
和a5节点为正常节点的情况下相同,节点a2向节点a3传递第三份参数的梯度a22,节点a3在接收到a22后需要执行的子任务为:将22与自身确定的第三份参数的梯度a32相加,得到计算结果为a22+a32。
和a5节点为正常节点的情况下相同,节点a3向节点a4传递第四份参数的梯度a33,节点a4在接收到a33后需要执行的子任务为:将a33与自身确定的第四份参数的梯度a43相加,得到计算结果为a33+a43。
在水平方向的第一次梯度融合过程中,节点a4应该向节点a5传递第五份参数的梯度a44,但是由于节点a5为异常节点,因此,节点a4直接将a44作为节点a5对应的计算结果传输至节点a6,此时,a6执行的子任务为将接收到的a44与自身确定的第五份参数的梯度a64相加,得到计算结果为a44+a64。相对于a5为正常节点的情况,a6得到的计算结果少了a5节点确定的第五份参数的梯度。
在水平方向的第一次梯度融合过程中,节点a5应该向节点a6传递第六份参数的梯度a55,但是由于节点a5是异常节点,因此,控制节点可以将原本向节点a5下发的环内收集指令下发至节点a6,由节点a6直接将自身确定的第六份参数的梯度a65传递至节点a7,由节点a7执行子任务:将接收到的a65与自身确定的第六份参数的梯度a75相加,得到计算结果a65+a75。
此外,和a5节点为正常节点的情况下相同,节点a6还需向节点a7传递第七份参数的梯度a66,节点a7在接收到a66后需要执行的子任务为:将a66与自身确定的第七份参数的梯度a76相加,得到计算结果为a66+a76。
此外,和a5节点为正常节点的情况下相同,节点a7还需向节点a0传递第八份参数的梯度a77,节点a0在接收到a77后需要执行的子任务为:将a77与自身确定的第八份参数的梯度a07相加,得到计算结果为a77+a07。
按照第一次的梯度融合过程继续在水平方向执行梯度融合,在第六次梯度融合之后,可以得到图31所示的融合结果。
如图31所示,节点a7最终得到的计算结果为:a00+a10+a20+a30+a40+a60+a70。也即是,节点a7得到水平方向第一个环形网络中的各个节点针对第一份参数确定的梯度的融合梯度。显然,和节点a5为正常节点的情况相比,针对第一份参数的融合梯度中不包括节点a5确定的第一份参数的梯度a50。
节点a0最终得到的计算结果为:a11+a21+a31+a41+a61+a71+a01。也即是,节点a0得到水平方向第一个环形网络中的各个节点针对第二份参数确定的梯度的融合梯度。显然,和节点a5为正常节点的情况相比,针对第二份参数的融合梯度中不包括节点a5确定的第二份参数的梯度a51。
节点a1最终得到的计算结果为:a22+a32+a42+a62+a72+a02+a12。也即是,节点a1得到水平方向第一个环形网络中的各个节点针对第三份参数确定的梯度的融合梯度。显然,和节点a5为正常节点的情况相比,针对第三份参数的融合梯度中不包括节点a5确定的第三份参数的梯度a52。
节点a2最终得到的计算结果为:a33+a43+a63+a73+a03+a13+a23。也即是,节点a2得到水平方向第一个环形网络中的各个节点针对第四份参数确定的梯度的融合梯度。显然,和节点a5为正常节点的情况相比,针对第四份参数的融合梯度中不包括节点a5确定的第四份参数的梯度a53。
节点a3最终得到的计算结果为:a44+a64+a74+a04+a14+a24+a34。也即是,节点a3得到水平方向第一个环形网络中的各个节点针对第五份参数确定的梯度的融合梯度。显然,和节点a5为正常节点的情况相比,针对第五份参数的融合梯度中不包括节点a5确定的第五份参数的梯度a54。
节点a4将得到两个计算结果,一个是自身负责收集的水平方向第一个环形网络中的各个节点针对第六份参数确定的梯度的融合梯度为:a65+a75+a05+a15+a25+a35+a45。显然,和节点a5为正常节点的情况相比,针对第六份参数的融合梯度中不包括节点a5确定的第六份参数的梯度a55。
节点a4得到另一个计算结果为:节点a5原本负责收集的水平方向第一个环形网络中的各个节点针对第七份参数确定的梯度的融合梯度为:a66+a76+a06+a16+a26+a36+a46。为了后续便于说明,将节点a5原本负责收集的水平方向第一个环形网络中的各个节点针对第七份参数确定的梯度的融合梯度称为与节点a5对应的融合梯度。显然,和节点a5为正常节点的情况相比,针对第七份参数的融合梯度中不包括节点a5确定的第七份参数的梯度a56。
节点a6最终得到的计算结果为:a77+a07+a07+a27+a37+a47+a57。也即是,节点a6得到水平方向第一个环形网络中的各个节点针对第八份参数确定的梯度的融合梯度。显然,和节点a5为正常节点的情况相比,针对第八份参数的融合梯度中不包括节点a5确定的第八份参数的梯度a57。
在通过水平方向的六次梯度融合之后,为了便于后续进行环间纵向上的梯度扩散,对于a4节点确定的与节点a5对应的融合梯度,可以将该融合梯度作为虚拟节点a5`最终确定的融合梯度。如此,水平方向上第一个环形网络中各个节点最终将得到图32所示的融合梯度。关于图32中各个节点对应的列中的数据在此就不再重复说明了。
(2)假设在第二节点为异常节点的情况下,第一节点调用第二节点对应的虚拟节点将第一计算结果与0相加后得到第二计算结果。
此时,水平方向的第一次梯度融合计算结果如图33所示。和图30所示的水平方向第一次梯度融合计算结果不同的地方在于以下两点:
第一:在水平方向的第一次梯度融合过程中,节点a4应该向节点a5传递第五份参数的梯度a44,但是由于节点a5为异常节点,因此,节点a4将a44发送至虚拟节点a5`,由节点a5`将参考值0和a44相加后的数值作为节点a5`得到的计算结果。并将该计算结果作为与节点a5对应的计算结果。相对于a5为正常节点的情况,a5`得到的计算结果少了a5节点确定的第五份参数的梯度a54。
第二,在水平方向的第一次梯度融合过程中,节点a5应该向节点a6传递第六份参数的梯度a55,但是由于节点a5是异常节点,因此,控制节点可以将原本向节点a5下发的环内收集指令下发至节点a4,由节点a4调用虚拟节点a5`将参考值0传递至节点a6,由节点a6执行子任务:将接收到的参考值0与自身确定的第六份参数的梯度a65相加,得到计算结果0+a65。
其他节点在在水平方向的第一次梯度融合过程中的计算方式和图30中的相应节点一致,在此就不再重复说明。
按照图33中第一次的梯度融合过程继续在水平方向执行梯度融合,在第七次梯度融合之后,可以得到图34所示的融合结果。和图31所示的融合结果不同的是:节点a4将得到一个计算结果,即为自身负责收集的水平方向第一个环形网络中的各个节点针对第六份参数确定的梯度的融合梯度为:a65+a75+a05+a15+a25+a35+a45。
节点a4上配置的虚拟节点将得到节点a5原本负责收集的水平方向第一个环形网络中的各个节点针对第七份参数确定的梯度的融合梯度为:a66+a76+a06+a16+a26+a36+a46。
在通过水平方向的七次梯度融合之后,水平方向上第一个环形网络中各个节点最终也将得到图32所示的融合梯度。因此,在上述两种实现方式中,最终将得到一样的梯度融合结果。
S2815、计算集群垂直方向上传递水平方向各个环形网络的计算结果,如此垂直方向上每列节点将获得全网中所有节点的1/n参数的累加梯度。
假设图28所示的多环网络中的垂直方向的扩散路径为:水平方向第三个环形网络c0-c7向水平方向第二个环形网络b0-b7传递,水平方向第二个环形网络b0-b7向水平方向第一个环形网络a0-a7传递。
如此,对于节点b5在向节点a5传递融合梯度时,由于节点a5为异常节点,因此节点b5可以将融合梯度发送至节点a4,由a4调用虚拟节点a5`执行节点a5原本应该执行的计算任务,该计算任务为:将接收到的融合梯度与自身对应的融合梯度相加,得到更新后的融合梯度。
如此,在通过两次垂直方向的传输之后,水平方向第一个环形网络中各个节点得到的计算结果为:
节点a0将得到三个环形网络中全部节点针对第二份参数的融合梯度。如图35所示,该融合梯度可以表示为:a11+…+a01+b11+…+b01+c11+…+c01。需要说明的是,a11+…+a01用于指示图32中a0节点在水平方向得到的计算结果,也即是,用a11+…+a01来表示a11+a21+a31+a41+a61+a71+a01。此外,由于水平方向第二个环形网络b0-b7和水平方向第三个环形网络c0-c7内并无异常节点,因此,上述b11+…+b01用于表示b11+b21+b31+b41+b51+b61+b71+b01,上述c11+…+c01用于表示c11+c21+c31+c41+c51+c61+c71+c01。如此,相对于节点a5为正常节点的情况,节点a0将得到三个环形网络中全部节点针对第二份参数的融合梯度中并不包括节点a5确定的第一份参数的梯度a50。
其他节点a1、a2、a3、a4、a6、a7各自得到的计算结果如图35所示,关于计算结果的说明可以参考上述节点a0得到的计算结果,在此就不再赘述。
需要说明的是,如图35所示,节点a5`将得到三个环形网络中全部节点针对第七份参数的融合梯度。如图35所示,该融合梯度可以表示为:a66+…+a46+b66+…+b56+c66+…+c56。需要说明的是,a66+…+a46用于指示图32中a5`节点在水平方向得到的计算结果,也即是,用a66+…+a46来表示a66+a76+a06+a16+a26+a36+a46。此外,由于水平方向第二个环形网络b0-b7和水平方向第三个环形网络c0-c7内并无异常节点,因此,上述b66+…+b56用于表示b66+b76+b06+b16+b26+b36+b46+b56,上述c66+…+c56用于表示c66+c76+c06+c16+c26+c36+c46+c56。如此,相对于节点a5为正常节点的情况,节点a5`将得到三个环形网络中全部节点针对第七份参数的融合梯度中并不包括节点a5确定的第七份参数的梯度a56。
S2816、计算集群在多环网中传递所有节点的1/n参数的累加梯度,实现每个节点上均保存有全部节点针对全部参数的累加梯度,从而使得每个节点均可以确定出参数值。
S2816的详细实现方式可以参考图10中S216的实现方式。不同的地方在于:a5`代替a5节点进行扩散。最终水平方向的任一环形网络中的任一节点上均可以得到三个环形网络中全部节点针对8份参数的融合梯度。与节点a5是正常节点的情况不同,此时针对任一份参数的融合梯度中将包括23个梯度,而不是24个梯度,因为并不包括节点a5针对该份参数确定的梯度。这种场景下,将融合梯度除以23后的数据作为该份参数训练后的参数值。
与本申请提供的方法实施例相对应,本申请实施例提供了环形网络中的节点。下面通过实施例对环形网络中的节点的功能模块进行介绍。下述实施例为节点的虚拟装置实施例,下述实施例描述的节点具有上述方法实施例中节点的任意功能,此外,关于节点如何在环形网络中实现异常节点的处理的详细流程,请参考上文实施例,在此不再赘述。
图36是本申请实施例提供的一种第一节点3600的结构示意图,如图36所示,该第一节点3600包括:获取模块3601,用于执行S2601;确定模块3602,用于执行S2602;发送模块3603,用于执行S2603。
可选地,确定模块用于:
将第一计算结果确定为第二计算结果;
在第一计算结果包括第一节点针对待训练模型中的目标参数确定的梯度的情况下,确定模块,还用于确定除异常节点之外剩下节点的数量;
获取模块,还用于获取剩下节点针对目标参数确定的梯度之和与数量之间的比值,将比值作为目标参数的参数值,目标参数为模型中的部分参数。
可选地,确定模块用于:
将第一计算结果与参考值相加后的数据确定为第二计算结果。
可选地,第一节点上配置有与第二节点对应的虚拟节点,虚拟节点为第一节点上运行的软件;
确定模块用于:
调用虚拟节点,执行基于第一计算结果确定第二计算结果的步骤。
可选地,第一环形网络为多环网络中的任一个网络,多环网络还包括第二环形网络;
获取模块还用于:
在第二节点为异常节点的情况下,获取第二节点需要向第二环形网络中的第四节点发送的第一扩散数据,第一扩散数据包括第二计算结果,第四节点为第二节点在多环网络中传输扩散数据路径上的下一个节点;
发送模块,还用于将第一扩散数据发送至第四节点。
可选地,多环网络还包括第三环形网络,第二节点为第三环形网络中的第五节点传输扩散数据路径上的下一个节点;
获取模块用于:
接收第五节点发送的第二扩散数据,第二扩散数据包括第三环形网络中与第五节点对应的计算结果;
将第二扩散数据和第二计算结果叠加,得到第一扩散数据。
可选地,第一节点还包括:
接收模块,用于接收控制节点下发的异常节点通知消息,异常节点通知消息携带异常节点的标识;
确定模块,还用于如果第二节点的标识为异常节点通知消息中的携带的节点的标识,则将第二节点确定为异常节点。
可选地,确定模块还用于第一节点确定总异常节点的数量;
相应地,第一节点还包括执行模块,用于如果总异常节点的数量满足参考条件,则停止执行第一子任务。
应理解,第一节点3600对应于上述实施例中的第一节点,第一节点3600中的各模块和上述其他操作和/或功能分别为了实现上述实施例中的节点所实施的各种步骤和方法,第一节点3600与上述实施例属于同一构思,具体细节可参见上述实施例,为了简洁,在此不再赘述。
应理解,第一节点3600在处理异常节点时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将第一节点3600的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
与本申请提供的方法实施例以及虚拟装置实施例相对应,本申请实施例提供一种节点,下面对节点的硬件结构进行介绍。
应理解,下文描述的节点3700或节点3800中的各硬件、模块和上述其他操作和/或功能分别为了实现方法实施例中的节点所实施的各种步骤和方法,关于节点3700或节点3800如何实现异常节点处理的详细流程,具体细节可参见上述实施例,为了简洁,在此不再赘述。其中,上述实施例的各步骤通过节点3700或节点3800处理器中的硬件的集成逻辑电路或者软件形式的指令完成。结合本申请实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。为避免重复,这里不再详细描述
还应理解,下文描述的节点3700或节点3800对应于上述实施例第一节点3600。比如,第一节点3600中的发送模块3603相当于节点3700中的总线接口单元3710;第一节点3600中的获取模块3601和确定模块3602相当于运算电路3703或向量计算单元3707。又如,第一节点3600中的发送模块3603相当于节点3800中的通信接口3804;第一节点3600中的获取模块3601和确定模块3602相当于处理器3801或处理器3805。其中,第一节点3600中的每个功能模块采用节点3700或节点3800的软件实现。换句话说,第一节点3600包括的功能模块为节点3700或节点3800的处理器读取存储器中存储的程序代码后生成的。
图37为本申请实施例提供的一种节点3700的结构示意图,节点3700的形态比如是AI芯片,节点3700包括神经网络处理器370。神经网络处理器370适于分布式训练任务中梯度的计算任务以及模型参数的计算任务。比如,如果模型是神经网络,神经网络中各层的算法均可在如图37所示的神经网络处理器370中得以实现。
神经网络处理器作为协处理器挂载到主CPU(Host CPU)上,由Host CPU分配任务。NPU的核心部分为运算电路370,控制器3704控制运算电路3703提取存储器(权重存储器或输入存储器)中的数据并进行运算。
在一些实现中,运算电路3703内部包括多个处理单元(Process Engine,PE)。在一些实现中,运算电路3703是二维脉动阵列。运算电路3703还可以是一维脉动阵列或者能够执行比如乘法和加法这样的数学运算的其它电子线路。在一些实现中,运算电路3703是通用的矩阵处理器。
举例来说,假设有输入矩阵A,权重矩阵B,输出矩阵C。运算电路从权重存储器3702中取矩阵B相应的数据,并缓存在运算电路中每一个PE上。运算电路从输入存储器3701中取矩阵A数据与矩阵B进行矩阵运算,得到的矩阵的部分结果或最终结果,保存在累加器3708accumulator中。
向量计算单元3707可以对运算电路的输出做进一步处理,如向量乘,向量加,指数运算,对数运算,大小比较等等。比如,向量计算单元3707可以用于神经网络中非卷积/非FC层的网络计算,如池化(Pooling),批归一化(Batch Normalization),局部响应归一化(Local Response Normalization)等。
在一些实现中,向量计算单元3707将经处理的输出的向量存储到统一缓存器3706。比如,向量计算单元3707可以将非线性函数应用到运算电路3703的输出,比如累加值的向量,用以生成激活值。在一些实现中,向量计算单元3707生成归一化的值、合并值,或二者均有。在一些实现中,处理过的输出的向量能够用作到运算电路3703的激活输入,比如用于在神经网络中的后续层中的使用。
在一些实施例中,上述各个实施例中子任务由运算电路3703或向量计算单元3707执行。比如,由运算电路3703或向量计算单元3707计算梯度或根据所述梯度计算模型参数。
统一存储器3706用于存放输入数据以及输出数据,输入数据包括一个批尺寸的样本数据。输出数据包括梯度和模型参数。
权重数据直接通过存储单元访问控制器3705(Direct Memory AccessController,DMAC)将外部存储器中的输入数据搬运到输入存储器3701和/或统一存储器3706、将外部存储器中的权重数据存入权重存储器3702,以及将统一存储器3706中的数据存入外部存储器。
总线接口单元(Bus Interface Unit,BIU)810,用于通过总线实现主CPU、DMAC和取指存储器3709之间进行交互。
与控制器3704连接的取指存储器(instruction fetch buffer)3709,用于存储控制器3704使用的指令;
控制器3704,用于调用指存储器3709中缓存的指令,实现控制该运算加速器的工作过程。
一般地,统一存储器3706,输入存储器3701,权重存储器3702以及取指存储器3709均为片上(On-Chip)存储器,外部存储器为该NPU外部的存储器,该外部存储器可以为双倍数据率同步动态随机存储器(Double Data Rate Synchronous Dynamic Random AccessMemory,简称DDR SDRAM)、高带宽存储器(High Bandwidth Memory,HBM)或其他可读可写的存储器。
可选地,分布式训练任务以及Ring All-reduce的程序算法是由主CPU和NPU共同配合完成的。其中,模型参数中各层的运算可以由运算电路3703或向量计算单元3707执行。
上面的实施例将AI芯片一类的实体装置配置为节点,在本申请的一些实施例中,将通用的计算设备配置为节点,以下通过实施例九进行示例性说明。
图38为本申请实施例提供的一种节点3800的结构示意图。节点3800的形态比如是计算设备。比如,该计算设备可以是主机、服务器或个人计算机等。该计算设备可以由一般性的总线体系结构来实现。该计算设备中的中央处理器可以执行上述实施例中节点执行的各个步骤。
节点3800包括至少一个处理器3801、通信总线3802、存储器3803以及至少一个通信接口3804。
处理器3801可以是一个通用中央处理器(central processing unit,CPU)、网络处理器(network processer,NP)、微处理器、或者可以是一个或多个用于实现本申请方案的集成电路,比如,专用集成电路(application-specific integrated circuit,ASIC),可编程逻辑器件(programmable logic device,PLD)或其组合。上述PLD可以是复杂可编程逻辑器件(complex programmable logic device,CPLD),现场可编程逻辑门阵列(field-programmable gate array,FPGA),通用阵列逻辑(generic array logic,GAL)或其任意组合。
通信总线3802用于在上述组件之间传送信息。通信总线3802可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
存储器3803可以是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其它类型的静态存储设备,也可以是随机存取存储器(random access memory,RAM)或者可存储信息和指令的其它类型的动态存储设备,也可以是电可擦可编程只读存储器(electrically erasable programmable read-only Memory,EEPROM)、只读光盘(compactdisc read-only memory,CD-ROM)或其它光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其它磁存储设备,或者是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其它介质,但不限于此。存储器3803可以是独立存在,并通过通信总线3802与处理器3801相连接。存储器3803也可以和处理器3801集成在一起。
通信接口3804使用任何收发器一类的装置,用于与其它设备或通信网络通信。通信接口3804包括有线通信接口,还可以包括无线通信接口。其中,有线通信接口比如可以为以太网接口。以太网接口可以是光接口,电接口或其组合。无线通信接口可以为无线局域网(wireless local area networks,WLAN)接口,蜂窝网络通信接口或其组合等。
在具体实现中,作为一种实施例,处理器3801可以包括一个或多个CPU,如图38中所示的CPU0和CPU1。
在具体实现中,作为一种实施例,节点3800可以包括多个处理器,如图38中所示的处理器3801和处理器3805。这些处理器中的每一个可以是一个单核处理器(single-CPU),也可以是一个多核处理器(multi-CPU)。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(如计算机程序指令)的处理核。
在具体实现中,作为一种实施例,节点3800还可以包括输出设备和输入设备。输出设备和处理器3801通信,可以以多种方式来显示信息。比如,输出设备可以是液晶显示器(liquid crystal display,LCD)、发光二级管(light emitting diode,LED)显示设备、阴极射线管(cathode ray tube,CRT)显示设备或投影仪(projector)等。输入设备和处理器3801通信,可以以多种方式接收用户的输入。比如,输入设备可以是鼠标、键盘、触摸屏设备或传感设备等。
在一些实施例中,存储器3803用于存储执行本申请方案的程序代码3810,处理器3801可以执行存储器3803中存储的程序代码3810。也即是,节点3800可以通过处理器3801以及存储器3803中的程序代码3810,来实现方法实施例提供的环形网络的异常节点处理方法。
本申请实施例的节点3800可对应于上述各个方法实施例中的节点,比如实施例二中的第一节点,并且,该节点3800中的处理器3801、通信接口3804等可以实现上述各个方法实施例中的第一节点所具有的功能和/或所实施的各种步骤和方法。为了简洁,在此不再赘述。
在一些可能的实施例中,上述节点还可以使用计算机程序产品实现。具体地,本申请实施例提供了一种计算机程序产品,当该计算机程序产品在节点上运行时,使得节点执行上述方法实施例中的环形网络的异常节点处理方法。
应理解,上述各种产品形态的节点,分别具有上述方法实施例中节点的任意功能,此处不再赘述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例中描述的各方法步骤和单元,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各实施例的步骤及组成。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。本领域普通技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参见前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。比如,以上所描述的装置实施例仅仅是示意性的,比如,该单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,比如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
该作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本申请实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
该集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例中方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上描述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。该计算机程序产品包括一个或多个计算机程序指令。在计算机上加载和执行该计算机程序指令时,全部或部分地产生按照本申请实施例中的流程或功能。该计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。该计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,比如,该计算机程序指令可以从一个网站站点、计算机、服务器或数据中心通过有线或无线方式向另一个网站站点、计算机、服务器或数据中心进行传输。该计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。该可用介质可以是磁性介质(比如软盘、硬盘、磁带)、光介质(比如,数字视频光盘(digitalvideo disc,DVD)、或者半导体介质(比如固态硬盘)等。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,该程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上描述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (14)
1.一种环形网络中的异常节点处理方法,其特征在于,应用于第一节点,所述第一节点为第一环形网络中的任一节点,所述第一环形网络为多环网络中的任一个网络;
所述方法包括:
所述第一节点获取所述第一节点对应的第一子任务的第一计算结果;
在第二节点为异常节点的情况下,所述第一节点基于所述第一计算结果确定与所述第二节点对应的第二计算结果,所述第二节点为所述第一环形网络的数据传输方向上位于所述第一节点之后、且与所述第一节点邻接的一个节点或多个连续节点;
所述第一节点将所述第二计算结果发送至第三节点,所述第三节点为所述第一环形网络的数据传输方向上位于所述第二节点之后的第一个节点,所述第一节点与所述第三节点之间具有通路;
所述多环网络还包括第二环形网络和第三环形网络,所述多环网络采用多个环形网络组网,每个环形网络中节点数相同;所述方法还包括:
在所述第二节点为异常节点的情况下,所述第一节点接收第五节点发送的第二扩散数据,所述第二扩散数据包括所述第三环形网络中与所述第五节点对应的计算结果,所述第五节点与所述第一节点之间具有通路,所述第二节点为所述第三环形网络中的所述第五节点传输扩散数据路径上的下一个节点;
所述第一节点将所述第二扩散数据和与所述第二计算结果叠加,得到第一扩散数据;
所述第一节点将所述第一扩散数据发送至第四节点,所述第四节点为所述第二节点在所述多环网络中传输扩散数据路径上的下一个节点,所述第一节点和所述第四节点之间有通路。
2.如权利要求1所述的方法,其特征在于,所述第一节点基于所述第一计算结果确定第二计算结果,包括:
所述第一节点将所述第一计算结果确定为所述第二计算结果;
在所述第一计算结果包括所述第一节点针对待训练模型中的目标参数确定的梯度的情况下,所述方法还包括:
所述第一节点确定除异常节点之外剩下节点的数量;
所述第一节点获取所述剩下节点针对所述目标参数确定的梯度之和与所述数量之间的比值,将所述比值作为所述目标参数的参数值,所述目标参数为所述模型中的部分参数。
3.如权利要求1所述的方法,其特征在于,所述第一节点基于所述第一计算结果确定第二计算结果,包括:
所述第一节点将所述第一计算结果与参考值相加后的数据确定为所述第二计算结果。
4.如权利要求1至3任一所述的方法,其特征在于,所述第一节点上配置有与所述第二节点对应的虚拟节点,所述虚拟节点为所述第一节点上运行的软件;
所述第一节点基于所述第一计算结果确定第二计算结果,包括:
所述第一节点调用所述虚拟节点,执行基于所述第一计算结果确定第二计算结果的步骤。
5.如权利要求1至3任一所述的方法,其特征在于,所述方法还包括:
所述第一节点确定总异常节点的数量;
如果所述总异常节点的数量满足参考条件,则停止执行所述第一子任务;其中,所述参考条件为所述总异常节点的数量达到用户配置的整个训练集群的异常节点的数量。
6.如权利要求4所述的方法,其特征在于,所述方法还包括:
所述第一节点确定总异常节点的数量;
如果所述总异常节点的数量满足参考条件,则停止执行所述第一子任务;其中,所述参考条件为所述总异常节点的数量达到用户配置的整个训练集群的异常节点的数量。
7.一种环形网络中的第一节点,其特征在于所述第一节点为第一环形网络中的任一节点,所述第一环形网络为多环网络中的任一个网络;
所述第一节点包括:
获取模块,用于获取所述第一节点对应的第一子任务的第一计算结果;
确定模块,用于在第二节点为异常节点的情况下,基于所述第一计算结果确定与所述第二节点对应的第二计算结果,所述第二节点为所述第一环形网络的数据传输方向上位于所述第一节点之后、且与所述第一节点邻接的一个节点或多个连续节点,第三节点为所述第一环形网络的数据传输方向上位于所述第二节点之后的第一个节点,所述第一节点与所述第三节点之间具有通路;
发送模块,用于将所述第二计算结果发送至第三节点;
所述多环网络还包括第二环形网络和第三环形网络,所述多环网络采用多个环形网络组网,每个环形网络中节点数相同;所述获取模块还用于:
在所述第二节点为异常节点的情况下,接收第五节点发送的第二扩散数据,所述第二扩散数据包括所述第三环形网络中与所述第五节点对应的计算结果,所述第五节点与所述第一节点之间具有通路,所述第二节点为所述第三环形网络中的所述第五节点传输扩散数据路径上的下一个节点;
将所述第二扩散数据和与所述第二计算结果叠加,得到第一扩散数据;
所述发送模块,还用于将所述第一扩散数据发送至第四节点,所述第四节点为所述第二节点在所述多环网络中传输扩散数据路径上的下一个节点,所述第一节点和所述第四节点之间有通路。
8.如权利要求7所述的第一节点,其特征在于,所述确定模块用于:
将所述第一计算结果确定为所述第二计算结果;
在所述第一计算结果包括所述第一节点针对待训练模型中的目标参数确定的梯度的情况下,所述确定模块,还用于确定除异常节点之外剩下节点的数量;
所述获取模块,还用于获取所述剩下节点针对所述目标参数确定的梯度之和与所述数量之间的比值,将所述比值作为所述目标参数的参数值,所述目标参数为所述模型中的部分参数。
9.如权利要求7所述的第一节点,其特征在于,所述确定模块用于:
将所述第一计算结果与参考值相加后的数据确定为所述第二计算结果。
10.如权利要求7至9任一所述的第一节点,其特征在于,所述第一节点上配置有与所述第二节点对应的虚拟节点,所述虚拟节点为所述第一节点上运行的软件;
所述确定模块用于:
调用所述虚拟节点,执行基于所述第一计算结果确定第二计算结果的步骤。
11.如权利要求7至9任一所述的第一节点,其特征在于,
所述确定模块,还用于确定总异常节点的数量;
所述第一节点还包括执行模块,用于如果所述总异常节点的数量满足参考条件,则停止执行所述第一子任务;其中,所述参考条件为所述总异常节点的数量达到用户配置的整个训练集群的异常节点的数量。
12.如权利要求10所述的第一节点,其特征在于,
所述确定模块,还用于确定总异常节点的数量;
所述第一节点还包括执行模块,用于如果所述总异常节点的数量满足参考条件,则停止执行所述第一子任务;其中,所述参考条件为所述总异常节点的数量达到用户配置的整个训练集群的异常节点的数量。
13.一种环形网络中的节点,其特征在于,所述节点包括存储器和处理器;
所述存储器用于存储支持所述第一节点执行权利要求1-6任一项所述的方法的程序,以及存储用于实现权利要求1-6任一项所述的方法所涉及的数据;
所述处理器被配置为用于执行所述存储器中存储的程序。
14.一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行权利要求1-6任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010463387.XA CN113746873B (zh) | 2020-05-27 | 2020-05-27 | 环形网络中的异常节点处理方法及相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010463387.XA CN113746873B (zh) | 2020-05-27 | 2020-05-27 | 环形网络中的异常节点处理方法及相关设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113746873A CN113746873A (zh) | 2021-12-03 |
CN113746873B true CN113746873B (zh) | 2023-05-23 |
Family
ID=78723919
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010463387.XA Active CN113746873B (zh) | 2020-05-27 | 2020-05-27 | 环形网络中的异常节点处理方法及相关设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113746873B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106663030A (zh) * | 2014-08-13 | 2017-05-10 | 微软技术许可有限责任公司 | 在分布式集群中的可扩展故障恢复通信 |
WO2020016901A1 (en) * | 2018-07-18 | 2020-01-23 | Telefonaktiebolaget Lm Ericsson (Publ) | A method in an ethernet ring protection switching (erps) network of handling a sub-ring link failure |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100387017C (zh) * | 2005-09-01 | 2008-05-07 | 西安交通大学 | 构建多机系统高可用的自愈合逻辑环故障检测与容忍方法 |
CN114880133A (zh) * | 2017-08-31 | 2022-08-09 | 华为技术有限公司 | 分布式计算系统,分布式计算系统中数据传输方法和装置 |
US10698766B2 (en) * | 2018-04-18 | 2020-06-30 | EMC IP Holding Company LLC | Optimization of checkpoint operations for deep learning computing |
CN110389826B (zh) * | 2018-04-20 | 2023-03-31 | 伊姆西Ip控股有限责任公司 | 用于处理计算任务的方法、设备和计算程序产品 |
CN110502544A (zh) * | 2019-08-12 | 2019-11-26 | 北京迈格威科技有限公司 | 数据整合方法、分布式计算节点及分布式深度学习训练系统 |
CN113364603B (zh) * | 2020-03-06 | 2023-05-02 | 华为技术有限公司 | 环形网络的故障恢复方法及物理节点 |
-
2020
- 2020-05-27 CN CN202010463387.XA patent/CN113746873B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106663030A (zh) * | 2014-08-13 | 2017-05-10 | 微软技术许可有限责任公司 | 在分布式集群中的可扩展故障恢复通信 |
WO2020016901A1 (en) * | 2018-07-18 | 2020-01-23 | Telefonaktiebolaget Lm Ericsson (Publ) | A method in an ethernet ring protection switching (erps) network of handling a sub-ring link failure |
Also Published As
Publication number | Publication date |
---|---|
CN113746873A (zh) | 2021-12-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113364603B (zh) | 环形网络的故障恢复方法及物理节点 | |
CN108712464A (zh) | 一种面向集群微服务高可用的实现方法 | |
JP2020515976A (ja) | ブロックチェーンコンセンサスのための方法、装置およびシステム | |
CN100449497C (zh) | 并行计算机和定位并行计算机中硬件故障的方法 | |
CN108833202A (zh) | 故障链路检测方法、装置和计算机可读存储介质 | |
CN103092807A (zh) | 节点控制器、并行计算服务器系统以及路由方法 | |
CN106033476A (zh) | 一种云计算环境中分布式计算模式下的增量式图计算方法 | |
US20200195502A1 (en) | Network control system, method and program | |
CN112686379B (zh) | 集成电路装置、电子设备、板卡和计算方法 | |
CN111159195A (zh) | 区块链系统中的数据存储控制方法及设备 | |
CN111240822B (zh) | 任务调度方法、装置、系统及存储介质 | |
Hu et al. | CoEdge: Exploiting the edge-cloud collaboration for faster deep learning | |
CN113746873B (zh) | 环形网络中的异常节点处理方法及相关设备 | |
Peng et al. | Mobility and privacy-aware offloading of AR applications for healthcare cyber-physical systems in edge computing | |
CN111160661A (zh) | 一种电力通信网可靠性优化方法、系统以及设备 | |
CN113132176A (zh) | 一种控制边缘节点的方法、节点及边缘计算系统 | |
CN113703955A (zh) | 计算系统中数据同步的方法及计算节点 | |
Iftikhar et al. | Fog computing based router-distributor application for sustainable smart home | |
US20230403232A1 (en) | Data Transmission System and Method, and Related Device | |
Ali et al. | Probabilistic normed load monitoring in large scale distributed systems using mobile agents | |
WO2022089092A1 (zh) | 一种集成计算装置、芯片、板卡、设备和计算方法 | |
Fang et al. | A Scheduling Strategy for Reduced Power Consumption in Mobile Edge Computing | |
CN113190498B (zh) | 一种频率调整方法、装置以及电子设备 | |
Chiang | Eventually Byzantine Agreement on CDS-based mobile ad hoc network | |
WO2023065656A1 (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 |