CN113364603B - 环形网络的故障恢复方法及物理节点 - Google Patents
环形网络的故障恢复方法及物理节点 Download PDFInfo
- Publication number
- CN113364603B CN113364603B CN202010152994.4A CN202010152994A CN113364603B CN 113364603 B CN113364603 B CN 113364603B CN 202010152994 A CN202010152994 A CN 202010152994A CN 113364603 B CN113364603 B CN 113364603B
- Authority
- CN
- China
- Prior art keywords
- physical node
- node
- physical
- task
- ring network
- 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
- 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/0663—Performing the actions predefined by failover planning, e.g. switching to standby network elements
-
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/16—Threshold monitoring
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Small-Scale Networks (AREA)
- Multi Processors (AREA)
Abstract
本申请提供了一种环形网络的故障恢复方法及物理节点,属于大数据技术领域。本申请当环形网络中一个物理节点发生故障时,通过由故障的物理节点的上一个物理节点执行故障的物理节点对应的子任务,将计算结果发送给故障的物理节点的下一个物理节点,由于故障的物理节点负责的子任务得以被执行,并且故障的物理节点负责计算得出的计算结果得以被传递给其他物理节点,因此环形网络不会缺失故障物理节点对应的计算结果,环形网络中能够基于计算结果继续执行分布式计算任务,从而避免了环形网络上运行的分布式计算任务停止,使得环形网络具备在节点发生故障时自动恢复的能力。
Description
技术领域
本申请涉及大数据技术领域,特别涉及一种环形网络的故障恢复方法及物理节点。
背景技术
环形网络是一种包含多个物理节点、拓扑架构呈环形的通信网络。在大数据技术领域中,利用环形网络,能够高效地执行分布式计算任务。其中,分布式计算是计算机技术中的一个术语,泛指将需要通过巨大算力执行的任务分解成许多小的子任务,然后将这些子任务分配给多个计算节点进行处理,最终将所有计算节点算出的结果综合起来,得到最终结果的方法。通过环形网络来执行分布式计算任务,环形网络中的每个物理节点充当一个计算节点,环形网络中的多个物理节点能够并发执行各自对应的子任务,从而充分利用每个物理节点的算力,极大地提高算法的性能。
环形网络通常基于环全部归约(Ring All-reduce)的方式执行分布式计算任务,环形网络中的每个物理节点不仅会执行本节点对应的子任务以得出计算结果,还会接收上一个物理节点的计算结果,并向下一个物理节点发送计算结果,使得每个物理节点的计算结果在环形网络中传播。
以应用在深度学习领域为例,上面描述的分布式计算任务例如是分布式训练任务。概括来讲,分布式训练任务主要分为两个阶段执行,首先执行计算梯度的任务,然后执行根据梯度计算参数值的任务,这两个阶段的任务都基于环形网络以及Ring All-reduce的方式执行。具体地,在执行计算梯度值的任务时,每个物理节点会根据数据集中的部分数据进行训练,计算出梯度,将算出的梯度与上一个物理节点发来的值进行累加,得到和值,将和值发送至环形网络中的下一个物理节点。在执行计算参数值的任务时,每个物理节点会计算出一份不完整的模型参数,通过同理的方式,和相邻的物理节点交换彼此的模型参数,最终完整的模型参数会扩散至环形网络中的每个物理节点上。
在基于环形网络执行分布式计算任务的过程中,当环形网络中的一个物理节点故障时,环形网络中会缺失故障物理节点对应的计算结果,导致整个分布式计算任务停止。
发明内容
本申请实施例提供了一种环形网络的故障恢复方法及物理节点,能够实现环形网络的故障恢复。所述技术方案如下:
第一方面,提供了一种环形网络的故障恢复方法,所述环形网络被配置为执行分布式计算任务,所述方法应用于第一物理节点,所述第一物理节点为所述环形网络中的一个物理节点,所述第一物理节点和第三物理节点具有通路,所述第三物理节点为所述环形网络中第二物理节点的下一个物理节点,所述第二物理节点为所述环形网络中所述第一物理节点的下一个物理节点,在该方法中,第一物理节点获取第二物理节点的任务执行数据;若所述第二物理节点处于故障状态,所述第一物理节点使用所述任务执行数据,执行所述分布式计算任务中所述第二物理节点对应的子任务,得到计算结果;所述第一物理节点通过所述通路,向第三物理节点发送所述计算结果。
以上提供了一种实现环形网络的故障恢复的方法,当环形网络中一个物理节点发生故障时,通过由故障的物理节点的上一个物理节点执行故障的物理节点对应的子任务,将计算结果发送给故障的物理节点的下一个物理节点,由于故障的物理节点负责的子任务得以被执行,并且故障的物理节点负责计算得出的计算结果得以被传递给其他物理节点,因此环形网络不会缺失故障物理节点对应的计算结果,环形网络中能够基于计算结果继续执行分布式计算任务,从而避免了环形网络上运行的分布式计算任务停止,使得环形网络具备在节点发生故障时自动恢复的能力。
可选地,所述分布式计算任务包括第一阶段的任务和所述第一阶段之后的第二阶段的任务,所述第二阶段的任务的输入数据包括所述第一阶段的任务的计算结果,所述任务执行数据包括所述第二物理节点执行所述第一阶段的任务的备份计算结果,所述第一物理节点在执行所述第二物理节点对应的子任务的过程中,所述第一物理节点使用所述备份计算结果,执行所述第二阶段的任务中所述第二物理节点对应的子任务。
通过这种可选方式,由于第一物理节点上保存了第二物理节点的备份计算结果,第二物理节点可利用备份计算结果执行第二物理节点负责的子任务,从而免去第一物理节点重新计算第二物理节点故障前已经得出的计算结果带来的开销,因而提升了性能,此外,该方式有助于解决物理节点短时间故障的恢复问题。
可选地,所述分布式计算任务包括n次迭代,所述n为大于或等于1的整数,所述若所述第二物理节点处于故障状态,所述第一物理节点使用所述任务执行数据,执行所述分布式计算任务中所述第二物理节点对应的子任务,包括:
若所述第二物理节点在第i次迭代中处于故障状态,所述第一物理节点使用所述第二物理节点在第i-1次迭代中执行所述第一阶段的任务的备份计算结果,执行第i次迭代中所述第二阶段的任务中所述第二物理节点对应的子任务,所述i为不大于所述n的正整数。
通过这种可选方式,如果第二物理节点故障,由于第一物理节点已经预先保存了物理节点在故障前最后一次迭代得到的备份计算结果,第一物理节点可通过故障前最后一次计算得到的备份计算结果参与计算,免去重新计算备份计算结果带来的开销,提升了性能。
可选地,所述任务执行数据包括所述第二物理节点执行子任务所需的数据,当第二物理节点发生故障时,所述第一物理节点使用所述执行子任务所需的数据,执行所述第二物理节点对应的子任务。
通过这种可选方式,在第二物理节点处于正常状态的情况下,第一物理节点就已经开始执行第二物理节点负责的子任务了,那么,若第二物理节点处于故障状态,第一物理节点代替第二物理节点继续执行子任务即可,因而免去了故障恢复时间。
可选地,所述第一物理节点获取第二物理节点的任务执行数据之后,所述第一物理节点将所述任务执行数据保存至虚拟节点,所述虚拟节点为所述第一物理节点上运行的软件;所述第一物理节点在执行所述第二物理节点对应的子任务的过程中,所述第一物理节点调用所述虚拟节点,使用所述任务执行数据,执行所述分布式计算任务中所述第二物理节点对应的子任务。
通过增加虚拟节点,达到的效果包括:环形网络中的每个物理节点被配置为执行分布式计算任务中对应的子任务,每个虚拟节点也能执行对应物理节点的子任务。因此,即使环形网络中的物理节点故障,故障的物理节点的子任务能够被故障的物理节点对应的虚拟节点执行,故障的物理节点的子任务的计算结果能够被虚拟节点计算得出并传递给其他物理节点,因此避免了环形网络缺失故障的物理节点对应的计算结果的情况,也就避免了由于物理节点故障导致环形网络的分布式计算任务中止的情况。
可选地,所述任务执行数据包括所述第二物理节点执行子任务所需的数据,所述第一物理节点在执行第二物理节点负责的子任务的过程中,所述第一物理节点使用所述执行子任务所需的数据,执行所述第二物理节点负责的子任务。
通过这种可选方式,在第二物理节点正常的情况下,第一物理节点无需执行第二物理节点负责的子任务,因此免去了第二物理节点正常时执行子任务带来的开销,因此提升了性能,保证正常情况下的网络计算过程不受冗余方案影响。
可选地,所述分布式计算任务包括n次迭代,所述n为大于或等于1的整数,若所述第二物理节点在第i次迭代中发生故障,所述第一物理节点使用所述第i次迭代中执行子任务所需的数据,执行所述第i次迭代中所述第二物理节点对应的子任务,所述i为不大于所述n的整数。
通过这种可选方式,若所述第二物理节点在第i次迭代中发生故障,所述第一物理节点会代替第二物理节点重新执行本次迭代负责的子任务,从而解决了第二物理节点在一次迭代中发生故障时如何恢复的问题。
可选地,所述分布式计算任务包括深度学习领域中的分布式训练任务,所述分布式训练任务包括第一阶段的任务以及第二阶段的任务,所述第一阶段的任务包括计算梯度值的任务,所述第二阶段的任务包括根据所述梯度值计算模型参数的任务,所述任务执行数据包括备份梯度值、样本数据或模型参数中的至少一项,所述分布式计算任务包括n次迭代,所述n次迭代中的一次迭代包括根据一个批尺寸的样本数据进行模型训练,所述n为大于或等于1的整数。
通过在分布式训练场景下应用这种可选方式,能够解决环形网络中的节点故障引起的训练任务停止的问题,提升训练方案的可靠性。
可选地,所述方法还包括:若所述第二物理节点发生故障的时长未达到阈值,所述第一物理节点从至少一个冗余模式中选择半冗余模式。
可选地,所述方法还包括:当所述第一物理节点启动执行所述分布式计算任务中所述第一物理节点对应的子任务时,所述第一物理节点从至少一个冗余模式中选择半冗余模式。
可选地,所述方法还包括:若所述第二物理节点发生故障的时长达到阈值,所述第一物理节点从至少一个冗余模式中选择全冗余模式。
可选地,所述方法还包括:在所述半冗余模式下,若所述第二物理节点发生故障的时长达到阈值,所述第一物理节点从半冗余模式切换为全冗余模式包括的性能优先子模式。
可选地,所述环形网络包括多个处理器,所述第一物理节点和所述第二物理节点为所述多个处理器中的两个处理器,所述多个处理器包括嵌入式神经网络处理器NPU、物理图形处理器GPU、中央处理器CPU中的至少一种。
第二方面,提供了一种第一物理节点,该第一物理节点具有实现上述第一方面或第一方面任一种可选方式中故障恢复的功能。该第一物理节点包括至少一个模块,至少一个模块用于实现上述第一方面或第一方面任一种可选方式所提供的环形网络的故障恢复方法。第二方面提供的第一物理节点的具体细节可参见上述第一方面或第一方面任一种可选方式,此处不再赘述。
第三方面,提供了一种物理节点,该物理节点包括处理器,该处理器用于执行指令,使得该物理节点执行上述第一方面或第一方面任一种可选方式所提供的环形网络的故障恢复方法。第三方面提供的物理节点的具体细节可参见上述第一方面或第一方面任一种可选方式,此处不再赘述。
第四方面,提供了一种计算机可读存储介质,该存储介质中存储有至少一条指令,该指令由处理器读取以使物理节点执行上述第一方面或第一方面任一种可选方式所提供的环形网络的故障恢复方法。
第五方面,提供了一种计算机程序产品,当该计算机程序产品在物理节点上运行时,使得物理节点执行上述第一方面或第一方面任一种可选方式所提供的环形网络的故障恢复方法。
第六方面,提供了一种芯片,当该芯片在物理节点上运行时,使得物理节点执行上述第一方面或第一方面任一种可选方式所提供的环形网络的故障恢复方法。
第七方面,提供了一种环形网络,该环形网络包括第一物理节点、第二物理节点以及第三物理节点,该环形网络被配置为执行分布式计算任务,该第一物理节点用于执行上述第一方面或第一方面任一种可选方式所述的方法。
附图说明
图1是本申请实施例提供的一种深度学习领域中执行分布式训练任务的示意图;
图2是本申请实施例提供的一种8个物理节点组成的环形网路的计算过程示意图;
图3是本申请实施例提供的一种环形网络中物理节点计算出的梯度值的示意图;
图4是本申请实施例提供的一种梯度值在环形网络移动的示意图;
图5是本申请实施例提供的一种环形网络中物理节点上分布的有效计算结果的示意图;
图6是本申请实施例提供的一种环形网络中物理节点上保存的一份模型参数的示意图;
图7是本申请实施例提供的一种环形网络中物理节点上保存的完整模型参数的示意图;
图8是本申请实施例提供的一种环形网络中物理节点故障导致模型参数丢失的示意图;
图9是本申请实施例提供的一种环形网络中物理节点故障导致模型参数丢失的示意图;
图10是本申请实施例提供的一种环形网络中传递数据分组的示意图;
图11是本申请实施例提供的一种环形网络100的系统架构示意图;
图12是本申请实施例提供的一种环形网络200的系统架构示意图;
图13是本申请实施例提供的一种环形网络300的系统架构示意图;
图14是本申请实施例提供的一种环形网络400的系统架构示意图;
图15是本申请实施例提供的一种环形网络500的系统架构示意图;
图16是本申请实施例提供的一种环形网络的示意图;
图17是本申请实施例提供的一种环形网络中传递数据的示意图;
图18是本申请实施例提供的一种环形网络中传递数据的示意图;
图19是本申请实施例一提供的一种配置环形网络的示意图;
图20是本申请实施例一提供的半冗余模式的示意图;
图21是本申请实施例一提供的全冗余模式的示意图;
图22是本申请实施例二提供的一种环形网络的故障恢复方法的流程图;
图23是本申请实施例提供的一种通过NPU组建环形网络的示意图;
图24是本申请实施例三提供的一种配置环形网络的示意图;
图25是本申请实施例四提供的一种分布式训练任务执行方法的流程图;
图26是本申请实施例五提供的一种环形网络的故障恢复方法的示意图;
图27是本申请实施例五提供的一种环形网络的故障恢复方法的示意图;
图28是本申请实施例六提供的一种通过NPU组建环形网络的示意图;
图29是本申请实施例六提供的一种配置环形网络的示意图;
图30是本申请实施例六提供的一种环形网络的故障恢复方法的示意图;
图31是本申请实施例六提供的一种环形网络的故障恢复方法的示意图;
图32是本申请实施例七提供的一种物理节点700的结构示意图;
图33为本申请实施例八提供的一种物理节点800的结构示意图;
图34为本申请实施例九提供的一种物理节点900的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
本申请中术语“第一”“第二”等字样用于对作用和功能基本相同的相同项或相似项进行区分,应理解,“第一”、“第二”、“第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中每个黑色圆点表示一个物理节点,箭头的方向表示数据传输方向。
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行表示梯度值拆分为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、环形网络中每个物理节点保存模型参数的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)。
然而,通过付出创造性劳动发现,采用上述方法时,影响S113和S114,即影响Reduce Scatter过程的1/8样本训练计算,以及影响环形网络中1/8份模型参数的计算,会导致环形网络计算的模型参数缺失1/8。以物理节点a5发生故障为例,请参考图8,图8中a5上标注有×,表示物理节点a5处于故障状态。图5中下划线标注的内容表示丢失的模型参数,例如物理节点a5对应的一列中均用下划线表达,含义是物理节点a5负责计算的1/8份模型参数丢失。总结来看,请参考图9,由于物理节点a5故障,环形网络丢失的1/8模型参数是a66+a76+a06+a16+a26+a36+a46+a56,按行来看,就是图9的X5丢失了。并且,被分配给物理节点a5的1/8的样本数据也会丢失。
此外,影响S115,即影响All-Gather计算过程,也会影响模型参数的完整性,如附图10示例。物理节点a5故障后,物理节点a0、物理节点a1至物理节点a7这8个物理节点都丢失了故障的物理节点a5负责计算的模型参数X5,导致每个物理节点上的模型参数都缺失了1/8份模型参数,并且物理节点a5上丢失了一份完整的模型参数。
时下,当环形网络中的任意节点故障后,都会导致分布式训练任务停止,需要重新查找可用的物理节点组建新的环形网络。目前,环形网络的可靠性方案尚为空白,并没有故障恢复方法,只能由用户手动恢复,重启分布式训练任务。
有鉴于此,本申请实施例提供了一种环形网络的故障恢复方法,通过应用本申请实施例提供的方法,可解决环形网络中单节点故障和多节点故障(允许相邻两个节点中一个节点故障)的问题,最多允许环形网络中1/2物理节点故障,故障恢复时间小于1个batch训练时间甚至为0s。其中,本申请的一些实施例提供了多种冗余模式,包括而不限于全冗余模式、半冗余模式等。在全冗余模式下,虚拟节点一直参与梯度值计算、Reduce计算和Gather计算,当物理节点故障后,无故障恢复点,故障恢复时间为0。或者,当物理节点故障后,虚拟节点参与梯度值计算、Reduce和Gather计算,batch训练结果为故障恢复点,故障恢复时间最长为一次batch计算时间。半冗余模式下,采用最后一次正常计算梯度值做为故障后的梯度值计算结果,能够解决物理节点短时间故障造成训练任务停止的问题,故障恢复时间为0。
为了简明起见,本申请实施例后续在不至于引入理解困难的情况下用“物理节点+小写字母”的形式来简化表示环形网络中的一个物理节点,如物理节点为物理节点a或物理节点b。其中,这里的小写字母表示物理节点的标识,比如是物理节点的编号。此外,使用“物理节点n”来泛指环形网络中的一个物理节点,例如在包含8个物理节点的环形网络中,物理节点n可以理解为物理节点a、物理节点b、物理节点c至物理节点h这8个物理节点中的任一个。
此外,为了清楚地表达环形网络中不同物理节点之间的逻辑关系,本申请的一些实施例中,使用“物理节点(n+1)”表示环形网络中“物理节点n”的下一个物理节点,使用“物理节点(n+2)”表示环形网络中“物理节点(n+1)”的下一个物理节点,使用“物理节点(n-1)”表示环形网络中“物理节点n”的上一个物理节点。例如,如果物理节点n理解为物理节点b,则物理节点(n+1)为物理节点c,物理节点(n+2)为物理节点d,物理节点(n-1)为物理节点a。
应理解,这里的“物理节点n”、物理节点(n+1)”、“物理节点(n+2)”等仅是物理节点的称谓,本申请实施例提供的物理节点并不受其称谓的限制,不同物理节点可采用其他的表达方式区分描述,如“物理节点n”也可称为“第一物理节点”,物理节点“N+1”也可称为“第二物理节点”、“物理节点(n+2)”也可称为“第三物理节点”。
在下面的各个实施例中,将主要围绕以下几点进行介绍。
1、在环形网络中的物理节点n上设置虚拟节点,物理节点n上的虚拟节点为物理节点(n+1)的冗余节点。在一些实施例中,允许虚拟节点一直参与计算过程,当物理节点(n+1)故障时,虚拟节点会代替物理节点(n+1)计算结果。在一些实施例中,允许虚拟节点在物理节点(n+1)故障后参与计算过程,故障时环形网络重新训练本次batch数据,继续后续的计算。
2、新增了物理节点n与物理节点(n+2)之间的通路。
3、新增了物理节点n与物理节点(n-1)之间的通路。
4、在每次batch计算的过程中,虚拟节点会备份物理节点(n+1)的梯度值。
下面介绍本申请实施例提供的环形网络的系统架构。
本申请提供的环形网络包括多个物理节点。物理节点可以是具有计算处理能力的任意实体装置。物理节点也可被称为实体节点、计算节点等。下面,通过环形网络100、环形网络200、环形网络300、环形网络400和环形网络500对环形网络的架构举例说明。
本申请实施例提供了环形网络100,环形网络100中的物理节点是独立的实体设备。例如,物理节点为主机、服务器、个人电脑或其他计算机一类的设备。环形网络100中的不同物理节点可以部署在同一地理区域或不同地理区域。环形网络100中的不同物理节点通过有线网络或无线网络相连。在一种可能的实现中,环形网络100中的每个物理节点接入至一个或多个网络设备,网络设备用于在环形网络100中的不同物理节点之间转发数据,其中,网络设备包括而不限于交换机、路由器等。环形网络中任意两个物理节点通过网络设备实现互联,在软件上实现环形网络。
例如,请参考图11,图11是环形网络100的系统架构示意图。参见附图11,环形网络100包括物理节点0、物理节点1……物理节点n,省略号表示环形网络100包括而图11未示出的物理节点。图11中的交换机是对网络设备的举例说明。
本申请实施例提供了环形网络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 interconnectexpress,简称:PCIe)总线、外设部件互连标准(peripheral component interconnect,简称:PCI)总线、紧凑型PCI(Compact PCI)总线等等。或者,可选地,被配置为不同物理节点的不同处理器设置在不同的实体设备内,不同物理节点所处的实体设备通过网络相连,不同物理节点借助对应实体设备进行通信。
例如,请参考图12,图12是环形网络200的系统架构示意图。在一种可能的实现中,采用NPU作为环形网络中的物理节点,通过PCIE switch等方式将不同NPU互联,在软件上实现不同NPU组成一个环形网络。例如,参见图12,环形网络200中的物理节点包括(n+1)个NPU,分别是NPU_0、NPU_1至NPU_N。NPU_0、NPU_1至NPU_N中的不同NPU通过PCIE交换机(PCIEswitch)互联。
本申请实施例提供了环形网络300,环形网络300中不同物理节点与不同的CPU相连,环形网络中不同CPU连接的物理节点之间传输的数据通过CPU交换,环形网络中同一CPU连接的物理节点之间传输的数据通过PCIE交换机或其他类型的系统总线交换。
例如,参见附图13,图13为环形网络300的系统架构示意图,环形网络300中的物理节点为处理器,例如为NPU或GPU。任意两个处理器通过PCIE交换机等方式互联,并通过CPU进行级联,在软件上实现不同处理器组成一个环形网络。例如,参见图13,环形网络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中的不同物理节点之间两两互联。请参考图14,图14是环形网络400的系统架构示意图。环形网络400中的物理节点为处理器,例如物理节点为NPU或GPU。环形网络400中的不同物理节点通过PCIE switch等方式对接,环形网络400中的不同物理节点之间两两互联,在软件上实现不同处理器组成一个环形网络。
本申请实施例提供了环形网络500,环形网络500中的不同物理节点之间两两互联,并通过CPU进行级联。请参考图15,图15是环形网络500的系统架构示意图。环形网络500中的物理节点为处理器,例如为NPU或GPU。不同处理器之间通过PCIE switch等方式对接,不同处理器之间两两互联,再通过CPU进行级联,软件上实现不同处理器组成一个环形网络。
基于以上描述的环形网络的各种系统架构,参见附图16,最终实现的环形网络如图16所示。数据在环形网络物理节点之间的传递方式包括传递方式一至传递方式二。
传递方式一、数据从第一个物理节点开始依次传递至最后一个物理节点,最后一个物理节点将数据传递给第一个物理节点。如图17所示,数据从物理节点0传递至物理节点1,再从物理节点1传递至物理节点2,依次传递到物理节点n,再从物理节点n传递到物理节点0,形成环形网络。
传递方式二、完整数据被拆分成多个数据分组,每个数据分组包括完整数据中的部分数据。每个数据分组类似于传递方式1,在某个物理节点开始向后续的物理节点传递,形成环形网络。参考图18,完整数据被拆分成M+1个数据分组,该M+1个数据分组包括数据分组0到数据分组M。其中,数据分组0表示完整数据中的第一个数据分组。数据分组M表示完整数据中的第M+1个数据分组。图18中物理节点对应的一列中包含的省略号表示完整数据包括而图18未示出的数据分组,例如物理节点0所在的一列的第3行的省略号表示未示出的数据分组2。图18中第3列上侧的省略号表示环形网络包括而图18未示出的其他物理节点。M为正整数。
以上介绍了环形网络的系统架构以及环形网络中数据的传递方式,以下通过实施例一至实施例六,示例性介绍基于环形网络100、环形网络200至环形网络500等系统架构进行任务处理以及故障恢复的方法流程。
以下通过实施例一,对本申请实施例提供的环形网络的配置过程进行举例说明。换句话说,实施例一描述的方法流程关于如何配置环形网络以使环形网络执行分布式计算任务。
实施例一
图19是本申请实施例一提供的一种配置环形网络的示意图。实施例一以8个物理节点组成的环形网络为例进行说明。
请参考图19中“原始环形网络”,8个物理节点组成的环形网络如“原始环形网络”中的圆形实线所示,每个物理节点如“原始环形网络”中的实心圆点所示。
环形网络中数据处理传递方向为顺时针方向。例如,如图19所示,数据处理传递方向是:物理节点a将数据传递给物理节点b,物理节点b将数据传递给物理节点c,依次类推,物理节点g将数据传递给物理节点h,物理节点h将数据传递给物理节点a。如果应用在分布式训练的场景下,图19中箭头对应于梯度融合计算过程的数据传输方向,也就是图4中箭头的方向。
本申请实施例中,对环形网络增加了配置。增加的配置至少包括增加虚拟节点、增加网络配置、增加工作模式配置这三个方面,以下对这三方面分别如何实现进行具体说明。
(1)增加虚拟节点。
虚拟节点为物理节点的冗余节点。虚拟节点用于保护对应的物理节点。其中,物理节点与虚拟节点之间的保护关系包括而不限于主备关系以及对等关系。例如,物理节点为主用节点,物理节点对应的虚拟节点为备用节点。
为了简明起见,本申请实施例后续在不至于引入理解困难的情况下用“虚拟节点+小写字母+0”的形式来简化表示一个具体的虚拟节点,如虚拟节点为虚拟节点a0或虚拟节点b0。其中,这里的“小写字母+0”表示虚拟节点的标识,比如是虚拟节点的编号。此外,为了清楚地表达物理节点和虚拟节点之间的对应关系,物理节点与物理节点对应的虚拟节点使用相同的小写字母标识。例如,物理节点a对应于虚拟节点a0,物理节点b对应于虚拟节点b0。此外,使用“虚拟节点n0”泛指环形网络中的一个虚拟节点,例如在包括8个虚拟节点的环形网络中,虚拟节点n0可以理解为虚拟节点a0、虚拟节点b0至虚拟节点h0这8虚拟节点中的任一个。还应理解,“虚拟节点n0”是“物理节点n”对应的虚拟节点。
可选地,物理节点和虚拟节点之间的对应关系为一一对应的关系,即,每个物理节点具有一个对应的虚拟节点。例如,请参考图19“新增虚拟节点”所示,虚拟节点如“新增虚拟节点”中的空心圆点所示,8个物理节点对应于8个虚拟节点,其中,物理节点a对应的虚拟节点是虚拟节点a0,物理节点b对应的虚拟节点是虚拟节点b0,依次类推。其中,图19“新增虚拟节点”中带箭头的虚线表示物理节点与其对应的虚拟节点之间的对应关系,带箭头的虚线的起点表示物理节点,箭头指向的是物理节点对应的虚拟节点。例如,图19中有根虚线是从物理节点b指向虚拟节点b0,含义是物理节点b对应的虚拟节点是虚拟节点b0,图19中其他带箭头的虚线的含义与此同理。
可选地,物理节点对应的虚拟节点配置在环形网络中物理节点的上一个物理节点上。其中,这里涉及的“上一个”物理节点是相对于环形网络中数据传输方向而言的。例如,若数据传输方向为从发送端至接收端,则充当发送端的物理节点为上一个物理节点,充当接收端的物理节点为下一个物理节点。换句话说,物理节点对应的虚拟节点按照环形网络数据传输方向反向进行配置。例如,请参考图19“新增虚拟节点”,在环形网络执行分布式计算任务的过程中,物理节点a会将数据传输给物理节点b,物理节点b会将数据传输至物理节点c,数据传输方向是物理节点a→物理节点b→物理节点c。在配置虚拟节点的过程中,将物理节点c对应的虚拟节点c0配置在物理节点b上,将物理节点b对应的虚拟节点b0配置在物理节点a上,将物理节点a对应的虚拟节点a0配置在物理节点h上。其中,图19“新增虚拟节点”中虚线矩形框表示物理节点与其配置的虚拟节点之间的对应关系,同一个虚线矩形框内包含一个虚拟节点和一个物理节点,该虚拟节点配置在该物理节点上,例如,物理节点a和虚拟节点b0画在了同一个虚线矩形框内,表示虚拟节点b0配置在了物理节点a上,图19中其他虚线矩形框的含义与此同理。
虚拟节点为物理节点上运行的软件。采用软件实现虚拟节点的方式包括多种。在一些实施例中,虚拟节点采用虚拟化技术构建,例如,虚拟节点包括而不限于容器、虚拟机、pod中的任一种。例如,将物理节点打包为镜像文件,将镜像文件导入至物理节点的上一个物理节点上,在上一个物理节点根据镜像文件创建出虚拟节点。又如,虚拟节点是进程。
通过增加虚拟节点,达到的效果包括:环形网络中的每个物理节点被配置为执行分布式计算任务中对应的子任务,每个虚拟节点也能执行对应物理节点的子任务。因此,即使环形网络中的物理节点故障,故障的物理节点的子任务能够被故障的物理节点对应的虚拟节点执行,故障的物理节点的子任务的计算结果能够被虚拟节点计算得出并传递给其他物理节点,因此避免了环形网络缺失故障的物理节点对应的计算结果的情况,也就避免了由于物理节点故障导致环形网络的分布式计算任务中止的情况。
(2)增加网络配置。
环形网络中的每个物理节点与下一个物理节点之间具有通路,物理节点通过该通路向下一个物理节点传输数据。换个方式表达,物理节点n和物理节点(n+1)具有通路,该通路可以视为物理节点n向物理节点(n+1)传递数据的路径。例如,请参见图19中的“原始环形网络”,物理节点n是图19中的物理节点a,物理节点(n+1)是图19中的物理节点b,物理节点n和物理节点(n+1)之间的通路例如是物理节点a与物理节点b之间的网络路径,物理节点a通过该网络路径,可将数据传输至物理节点b。
本段对通路的概念进行介绍。通路是通过网络建立的路径。可选地,通路通过高速互联网络建立。该高速互联网络包括而不限于PCIe总线、缓存一致性系统(Huawei cache-coherent system,HCCS)、以太网、光纤通道(Fibre Channel,FC)、无限带宽(infiniband,IB)、SCSI、以太网、直接内存存取(direct memory access,简称:DMA)、远程直接内存访问(remote direct memory access,简称:RDMA)或内存结构(memory fabric)等。可选地,通路是通过有线网络建立的网络路径。可选地,通路是通过无线网络建立的网络路径。可选地,物理节点与下一个物理节点位于同一台实体设备内,物理节点与下一个物理节点之间的通路是实体设备内部的网络路径。或者,物理节点与下一个物理节点位于不同实体设备内,物理节点与下一个物理节点之间的通路是远程的网络路径,可通过传输控制协议/因特网互联协议(transmission control protocol/internet protocol,TCP/IP)协议建立。
本申请实施例提供的环形网络中,不仅具有物理节点n和物理节点(n+1)之间的通路,还配置了新增的通路。例如请参考图19,图19中“新增网络路径”相对于“原始环形网络”中增加的网络路径是对新增的通路的举例说明。新增的通路具体参见下述(2.1)和(2.2)。
(2.1)新增了物理节点n与物理节点(n+2)之间的通路。
例如,物理节点n是图19中的物理节点a,物理节点(n+2)例如是图19中的物理节点c。物理节点n和物理节点(n+2)之间的通路例如是物理节点a与物理节点c之间的网络路径,物理节点a通过该网络路径,可将数据传输至物理节点c。依次类推,还新增了物理节点b与物理节点d之间的通路、物理节点d与物理节点f之间的通路、物理节点c与物理节点e之间的通路、物理节点g与物理节点a之间的通路等等。
通过增加物理节点n与物理节点(n+2)之间的通路,达到的效果包括:通过该通路,物理节点n与物理节点(n+2)实现了数据直通,物理节点n执行子任务得到计算结果或中间结果后,可通过该通路将计算结果或中间结果传输至物理节点(n+2)。那么,如果环形网络中的物理节点(n+1)故障,物理节点n能跳过故障的物理节点(n+1),物理节点n通过物理节点n与物理节点(n+2)之间的通路,直接与物理节点(n+2)进行通讯,向物理节点(n+2)传递计算结果或中间结果,这样,重新接上了环形网络,从而避免环形网络在物理节点(n+1)处断开。
(2.2)新增了物理节点n与物理节点(n-1)之间的通路。
例如请参考图19“新增网络路径”,物理节点n是图19中的物理节点b,物理节点(n-1)例如是图19中的物理节点a。物理节点n与物理节点(n-1)之间的通路例如是从物理节点b到物理节点a之间的网络路径。物理节点b通过该网络路径,可将数据回传至物理节点a。依次类推,还新增了从物理节点c到物理节点b之间的通路、从物理节点d到物理节点c之间的通路、从物理节点e到物理节点d之间的通路等等。
通过增加物理节点n与物理节点(n-1)之间的通路,达到的效果包括:物理节点n与物理节点(n-1)通过该通路实现了数据直通,物理节点n执行子任务得到计算结果后,可通过该通路将计算结果发送至物理节点(n-1)。由于物理节点(n-1)上配置有物理节点n对应的虚拟节点n,物理节点(n-1)接收到计算结果后,物理节点(n-1)可将计算结果保存至虚拟节点n,如此,物理节点n的计算结果得以备份存储至虚拟节点n。那么,如果物理节点n发生故障,由于虚拟节点n上保存了物理节点n的备份计算结果,虚拟节点n可利用备份计算结果执行物理节点n对应的子任务,从而免去虚拟节点n重新计算该计算结果带来的开销,提升了性能。
其中,备份计算结果是指物理节点执行子任务得到的计算结果的备份,备份计算结果与物理节点执行子任务得到的计算结果相同。其中,物理节点执行子任务得到的计算结果包括中间结果或最终的计算结果中的至少一项,相应地,备份计算结果包括中间结果的备份和最终的计算结果的备份中的至少一项。
例如,如果分布式计算任务是深度学习领域中的分布式训练任务,物理节点执行子任务得到的中间结果例如是梯度值,物理节点执行子任务得到的最终的计算结果例如是模型参数,相应地,备份计算结果包括备份梯度值和最终的模型参数的备份中的至少一项。在执行分布式训练任务的过程中,物理节点n计算得到梯度值后,可通过该通路将梯度值传输至物理节点(n-1),从而将梯度值备份至物理节点(n-1)上部署的虚拟节点n,使得虚拟节点n上保存物理节点n的备份梯度值。那么,如果物理节点n发生故障,虚拟节点n可利用备份梯度值参与模型参数计算,从而免去重新计算物理节点n已计算出的梯度值带来的开销。
(3)增加配置。
冗余模式用于指示对物理节点进行冗余的方式,以便在物理节点故障后利用冗余模式进行故障恢复。冗余模式也称故障恢复模式。本申请实施例提供了至少一个冗余模式,不同冗余模式下物理节点故障后进行处理的方式有所区别,可以根据应用场景或业务需求,灵活地选择冗余模式。该至少一个冗余模式包括半冗余模式、全冗余模式和混合冗余模式。其中,全冗余模式至少包括两种子模式:高可用(High Availability,HA)优先子模式和性能优先子模式。下面,对本申请实施例提供的几种冗余模式分别进行介绍。
(3.1)半冗余模式
半冗余模式是指对分布式计算任务中物理节点对应的部分子任务进行冗余的模式。
本段对子任务的概念进行解释说明。在大数据分析的各种分布式计算的场景中,通常会同时使用多种计算资源来解决问题。在通过组建环形网络执行分布式计算任务的场景下,分布式计算任务会被分解为若干个部分,每个部分由一个物理节点执行,多个物理节点可并行执行自己负责的部分任务,从而有效提高分布式计算任务整体的处理速度。为了将环形网络整体承担的任务与单个物理节点承担的部分任务区分描述,本申请实施例将用“分布式计算任务”这一术语指代环形网络整体承担的任务,用“子任务”这一术语指代单个物理节点承担的部分任务,“物理节点n对应的子任务”这一表达意在指代分布式计算任务中物理节点n负责执行的部分任务,比如,在包括8个物理节点的环形网络中,分布式计算任务可以是计算梯度值的任务,子任务是指单个物理节点要计算出1/8份梯度值的任务。
一个物理节点可以对应一个或多个子任务。例如,在环形网络执行分布式计算任务的过程中,物理节点对应子任务A和子任务B,半冗余模式例如是对子任务B进行冗余而不对子任务A进行冗余的模式。
在一些实施例中,半冗余模式的实现方式包括:物理节点n执行子任务A后,通过(2.2)描述的物理节点n与物理节点(n-1)之间的通路,将执行子任务A的计算结果发送给物理节点(n-1),从而将执行子任务A的计算结果备份至物理节点(n-1)上的虚拟节点n。在物理节点n故障后,虚拟节点n利用子任务A的备份计算结果执行子任务B。
例如,请参考附图20,半冗余模式配置如图20中的“半冗余模式”。物理节点c执行子任务后,物理节点c将计算结果备份至物理节点b上,使得物理节点b上的虚拟节点c0保存有物理节点c的备份计算结果。同理地,物理节点b执行子任务后,物理节点b将计算结果备份至物理节点a上,使得物理节点a上的虚拟节点b0保存有物理节点b的备份计算结果。
例如,在深度学习领域中执行分布式训练任务的场景,物理节点对应的子任务包括计算梯度值的任务和根据梯度值计算模型参数的任务,半冗余模式下保存的备份计算结果例如是梯度值的备份,半冗余模式例如是对计算模型参数的任务进行冗余的模式。在一些实施例中,执行分布式训练任务的场景下半冗余模式的实现方式包括:物理节点将计算得到的梯度值备份至物理节点对应的虚拟节点上,在物理节点故障后,虚拟节点利用物理节点故障前计算的梯度值以计算模型参数,使得虚拟节点代替故障的物理节点参与模型参数的计算过程。
环形网络执行的分布式计算任务可以包括至少一次迭代。可选地,在这一情况下,物理节点在每次迭代中将本次迭代得到的计算结果发送至上一个物理节点,从而将本次迭代得到的计算结果备份至对应的虚拟节点,使得每个虚拟节点保存对应物理节点上一次迭代得到的备份计算结果。那么,如果物理节点故障,由于虚拟节点上已经预先保存了物理节点在故障前最后一次计算得到的备份计算结果,虚拟节点可通过故障前最后一次计算得到的备份计算结果参与计算。
换一个表达方式来说,如果分布式计算任务包括n次迭代,物理节点在n次迭代中的第i-1次迭代后,虚拟节点会保存物理节点第(i-1)次迭代中计算得到的备份计算结果,如果物理节点在第i次迭代中发生故障,虚拟节点可通过第i-1次迭代的备份计算结果参与计算。例如,在执行分布式训练任务的场景,分布式训练任务包括n次迭代,每次迭代中环形网络的物理节点会计算梯度值以及计算模型参数,每次迭代结束后会得到梯度值以及模型参数。例如,请参考图20“第(i-1)次计算过程之后备份过程”,在环形网络执行第(i-1)次计算过程后,物理节点n计算得到的梯度值会备份到虚拟节点n0。其中,图20中“第(i-1)次计算过程之后备份过程”中的带箭头的点划线表示梯度值的备份过程,实心圆点表示物理节点,空心圆点表示虚拟节点,带箭头的点划线从物理节点指向物理节点对应的虚拟节点,表示物理节点将计算得到的梯度值发送给了对应的虚拟节点,使得虚拟节点保存对应物理节点的梯度值的备份。例如,图20“第(i-1)次计算过程之后备份过程”中,物理节点c和虚拟节点c0之间存在一条带箭头的点划线,表示物理节点c将物理节点c计算出的梯度值发送给了虚拟节点c0,使得虚拟节点c0上保存物理节点c的梯度值的备份。其中,n为大于或等于1的整数,i为不大于n的正整数。
以环形网络中物理节点c发生故障为例,如图20中“物理节点c故障第i次计算过程”,物理节点c在第(i-1)次迭代后,在第i次计算过程故障,此时虚拟节点c0参与模型参数计算(Reduce+Gather),如果正在进行模型参数计算,此时需要各正常工作的物理节点重新发起本次batch计算,虚拟节点c0采用上一次计算的梯度值作为本次batch计算的梯度值参与模型参数计算。当物理节点c从故障后恢复后,按照正常处理流程进行计算,虚拟节点c0仍然备份物理节点c每一次计算得到的梯度值。
半冗余模式达到的效果包括:在半冗余模式下,能够解决物理节点短时间故障的恢复问题。并且,由于冗余了部分子任务,利用另外一部分子任务的备份计算结果参与运算,免去重新计算备份计算结果带来的开销,提升了性能。
(3.2)全冗余模式
全冗余模式是指对分布式计算任务中第二物理节点对应的全部子任务进行冗余的模式。例如,在环形网络执行分布式计算任务的过程中,物理节点承担子任务A和子任务B,全冗余模式例如是对子任务A和子任务B均进行冗余的模式。例如,在深度学习领域中执行分布式训练任务的场景下,物理节点承担计算梯度值的任务和根据梯度值计算模型参数的任务,全冗余模式例如是对计算梯度值的任务和计算模型参数的任务均进行冗余的模式。例如,请参考图21,全冗余模式配置如图21中的“全冗余模式”。
全冗余模式达到的效果包括:在全冗余模式下,在实现故障恢复的功能的基础上,能解决计算任务执行过程中相邻两个物理节点任意一个节点故障后长时间无法恢复的问题。
全冗余模式包括HA(高可用)优先子模式和性能优先子模式。在全冗余模式下,可以择一执行HA优先子模式和性能优先子模式中的一种。以下通过(3.2.1)对HA优先子模式进行举例说明,以下通过(3.2.2)性能优先子模式进行举例说明。
(3.2.1)HA优先子模式
在HA优先子模式下,物理节点n和对应的虚拟节点n0可以同时参与执行对应的子任务。例如,在启动执行分布式计算任务的过程中,不仅启动物理节点n执行子任务,还启动物理节点(n-1)上的虚拟节点n0,由虚拟节点n0也执行物理节点n对应的子任务。也即是,在物理节点n正常的情况下,物理节点n和虚拟节点n0都参与执行子任务。物理节点n执行子任务后会输出一路计算结果,虚拟节点n0执行子任务后会输出一路计算结果,环形网络从两路计算结果中选择一路计算结果传递给物理节点(n+1)。在物理节点n故障的情况下,故障的物理节点n自动退出工作,虚拟节点n0承担故障的物理节点n对应的子任务,由虚拟节点n0将计算结果传递给物理节点(n+1)。
例如,在深度学习领域中执行分布式训练任务的场景下,物理节点n和虚拟节点n0均参与梯度值计算,输出两份梯度值。并且,物理节点n和虚拟节点n0参与模型参数计算(Reduce+Gather),输出两份模型参数,如图21中“HA优先子模式故障恢复”,以物理节点c故障为例,当物理节点c故障时,虚拟节点c0代替物理节点c,该方式为输出二选一冗余模式。
通过HA优先子模式,由于物理节点和对应的虚拟节点均参与执行子任务,当物理节点故障时,故障物理节点的子任务得以通过虚拟节点(即故障物理节点的上一个物理节点)执行,因此HA优先子模式下故障恢复时间为0,充分保证了高可用性。
(3.2.2)性能优先子模式
在性能优先子模式下,在物理节点n正常的情况下,物理节点n参与执行子任务,虚拟节点n0不参与执行子任务。在物理节点n故障的情况下,物理节点(n-1)启动虚拟节点n0,由虚拟节点n0执行物理节点n对应的子任务。
以执行分布式训练任务的场景为例,请参考图21中“性能优先子模式故障恢复”,以物理节点c故障为例,当物理节点c故障后,物理节点b启动虚拟节点c0计算训练数据,虚拟节点c0代替物理节点c参与梯度值计算任务和模型参数计算(Reduce+Gather)。如果正在进行模型参数计算,此时需要各正常工作的物理节点重新发起本次batch计算,故障恢复时间最长为一次batch计算时间。
性能优先子模式达到的效果包括:通过性能优先子模式,虚拟节点在对应的物理节点故障后参与计算,而在物理节点正常的情况下,虚拟节点无需执行物理节点对应的子任务,因此免去了虚拟节点在物理节点正常时执行子任务带来的开销,因此提升了性能,保证正常情况下的网络计算过程不受冗余方案影响。
此外,当物理节点n从故障恢复后,按照正常处理流程进行计算,虚拟节点n0按照HA优先子模式或者性能优先子模式工作。
(3.3)混合冗余模式。
混合冗余模式故障恢复是半冗余模式和全冗余模式均生效的方式。物理节点短期故障的情况下,采用半冗余模式进行故障恢复。故障的物理节点长时间无法恢复时,转为全冗余模式进行故障恢复。在混合冗余模式下,可选地,全冗余模式部分采取“性能优先子模式。详细的恢复过程参考(3.1)半冗余模式和(3.2)全冗余模式说明。在一种可能的实现中,环形网络初始时工作在半冗余模式下,如果物理节点发生故障的时长达到阈值,而始终没有恢复,则切换为全冗余模式。
以上实施例一介绍了环形网络的配置过程,以下通过实施例二,对基于实施例一提供的故障恢复方法进行举例说明。换句话说,实施例二描述的方法流程关于如何基于配置好的环形网络来解决物理节点故障后恢复处理的问题。应理解,实施例二与实施例一同理的步骤还请参见实施例一,在实施例二中不做赘述。
实施例二
参见图22,图22是本申请实施例二提供的一种环形网络的故障恢复方法的流程图。实施例二应用于实施例一配置的环形网络中的物理节点上,下面将以应用在物理节点n为例进行说明。示例性地,实施例二包括S201至S203。
S201、物理节点n获取物理节点(n+1)的任务执行数据。
任务执行数据包括物理节点(n+1)执行物理节点(n+1)对应的子任务所需的数据、物理节点(n+1)执行任务的备份计算结果。例如,如果分布式计算任务是深度学习领域中的分布式训练任务,任务执行数据包括备份梯度值、样本数据或模型参数中的至少一项。
如何获取任务执行数据包括多种实现方式。以下通过实现方式一和实现方式二举例说明。
实现方式一、物理节点n读取预先保存的任务执行数据。
以任务执行数据是备份计算结果为例,在物理节点(n+1)正常的情况下,物理节点(n+1)执行子任务得出计算结果后,物理节点(n+1)向物理节点n发送备份计算结果,物理节点n接收备份计算结果,保存备份计算结果。在物理节点(n+1)故障的情况下,物理节点n获取预先保存的备份计算结果。
在一些实施例中,参考上文“增加虚拟节点”的介绍,物理节点n上预先配置了物理节点(n+1)对应的虚拟节点(n0+1),在物理节点(n+1)正常的情况下,物理节点(n+1)将备份计算结果发送至物理节点n上的虚拟节点(n0+1),使得虚拟节点(n0+1)保存备份计算结果。在物理节点(n+1)故障的情况下,虚拟节点(n0+1)读取预先保存的备份计算结果。例如,请参考上文对半冗余模式和(2.2)新增通路的说明,在物理节点(n+1)正常的情况下,物理节点(n+1)通过物理节点(n+1)与物理节点n之间的通路,将计算得到的梯度值发送至物理节点n,使得物理节点n上的虚拟节点(n0+1)保存有备份梯度值。当物理节点(n+1)故障后,物理节点n从虚拟节点(n0+1)读取预先保存的备份梯度值。
实现方式二、物理节点n接收主控节点发送的任务执行数据。
可选地,环形网络包括主控节点,主控节点用于向每个物理节点发送执行子任务所需的数据,主控节点可以将物理节点(n+1)执行子任务所需的数据发送至物理节点n,以便物理节点n利用执行子任务所需的数据代替物理节点(n+1)参与计算。
以分布式训练任务为例,主控节点例如是CPU,CPU用于向每个物理节点分别推送对应的一个批尺寸的样本数据,CPU可以将物理节点(n+1)对应的一个批尺寸的样本数据推送至物理节点n上,物理节点n上的虚拟节点(n0+1)可以加载物理节点(n+1)对应的一个批尺寸的样本数据。
S202、若物理节点(n+1)处于故障状态,物理节点n使用任务执行数据,执行分布式计算任务中物理节点(n+1)对应的子任务,得到计算结果。
物理节点n检测到物理节点(n+1)发生故障时,物理节点n利用任务执行数据,能够执行物理节点(n+1)对应的子任务,从而实现代替物理节点(n+1)执行其负责的子任务的功能,使得物理节点(n+1)负责的子任务得到正常执行。
在一些实施例中,参考上文“增加虚拟节点”的介绍,物理节点n上预先配置了物理节点(n+1)对应的虚拟节点(n0+1),物理节点n调用虚拟节点(n0+1),由虚拟节点(n0+1)使用任务执行数据执行物理节点(n+1)对应的子任务。
物理节点n执行物理节点(n+1)负责的子任务的实现方式包括多种,以下通过实现方式A至实现方式B举例说明。
实现方式A、物理节点n使用备份计算结果,执行物理节点(n+1)对应的子任务。
实现方式A与半冗余模式对应,实现方式A未记载的技术细节可参考上文对半冗余模式的介绍。
在一些实施例中,分布式计算任务分为多个阶段执行,上一个阶段的计算结果可以充当下一个阶段的输入数据,物理节点n使用上一个阶段的备份计算结果,执行物理节点(n+1)在下一个阶段对应的子任务。
例如,分布式计算任务包括第一阶段的任务和第一阶段之后的第二阶段的任务。第二阶段的任务的输入数据包括第一阶段的任务的计算结果。物理节点(n+1)执行第一阶段的任务得到的备份计算结果可以发送给物理节点n,物理节点n使用备份计算结果,执行第二阶段的任务中物理节点(n+1)对应的子任务。例如,对于分布式训练任务而言,分布式训练任务中第一阶段的任务包括计算梯度值的任务,分布式训练任务中第二阶段的任务包括根据梯度值计算模型参数的任务。例如,物理节点n上的虚拟节点(n0+1)使用备份梯度值,计算物理节点(n+1)负责计算的模型参数。
在一些实施例中,分布式计算任务包括n次迭代,实现方式A具体包括:若物理节点(n+1)在第i次迭代中处于故障状态,物理节点n使用物理节点(n+1)在第i-1次迭代中执行第一阶段的任务的备份计算结果,执行第i次迭代中第二阶段的任务中物理节点(n+1)对应的子任务。例如,物理节点(n+1)在第i-1次迭代中将梯度值备份至物理节点n上的虚拟节点(n0+1),使得虚拟节点(n0+1)保存备份梯度值。如果物理节点(n+1)在第i+1次迭代故障,物理节点n上的虚拟节点(n0+1)使用备份梯度值,计算物理节点(n+1)负责计算的模型参数。
本段对什么情况下选择执行实现方式A进行举例说明。例如,当物理节点n检测到物理节点(n+1)发生故障时,从至少一个冗余模式中选择半冗余模式,在半冗余模式下执行实现方式A。同时,物理节点n启动定时器,记录从物理节点(n+1)发生故障开始经过的时长。物理节点n判断物理节点(n+1)发生故障的时长是否达到阈值,若物理节点(n+1)发生故障的时长未达到阈值,则物理节点n仍然选择半冗余模式。又如,当物理节点n启动执行分布式计算任务中物理节点n对应的子任务时,物理节点n从至少一个冗余模式中选择半冗余模式。
实现方式B、物理节点n使用执行子任务所需的数据,执行物理节点(n+1)对应的子任务。
实现方式B与全冗余模式对应,实现方式B未记载的技术细节可参考上文对全冗余模式的介绍。实现方式B可选地包括实现方式B.1和实现方式B.2。其中,实现方式B.1与HA优先子模式对应,实现方式B.1未记载的技术细节可参考上文对全冗余模式的介绍。实现方式B.2与性能优先子模式对应,实现方式B.2未记载的技术细节可参考上文对性能优先子模式的介绍。
实现方式B.1、物理节点n在得到执行子任务所需的数据后,使用执行子任务所需的数据,执行物理节点(n+1)对应的子任务。那么,在物理节点(n+1)处于正常状态的情况下,物理节点n就已经开始执行物理节点(n+1)对应的子任务了,若物理节点(n+1)处于故障状态,物理节点n使用执行子任务所需的数据,执行物理节点(n+1)对应的子任务,那么物理节点n继续执行当前已在执行的子任务即可,无需临时启动执行子任务,从而免去了故障恢复时间。
实现方式B.2、在物理节点(n+1)处于正常状态的情况下,物理节点n无需执行物理节点(n+1)对应的子任务。若物理节点(n+1)处于故障状态,物理节点n使用执行子任务所需的数据,执行物理节点(n+1)对应的子任务。在分布式计算任务包括n次迭代的情况下,可选地,实现方式B.2包括:若物理节点(n+1)在第i次迭代中发生故障,物理节点n使用第i次迭代中执行子任务所需的数据,执行第i次迭代中物理节点(n+1)对应的子任务。
本段对什么情况下选择执行实现方式B进行举例说明。可选地,物理节点n判断物理节点(n+1)发生故障的时长是否达到阈值,若物理节点(n+1)发生故障的时长达到阈值,物理节点n从至少一个冗余模式中选择全冗余模式,在全冗余模式下执行实现方式B,例如,选择全冗余模式包括的性能优先子模式,在性能优先子模式下执行实现方式B.2。
可选地,物理节点n在上述实现方式A至实现方式B中的不同方式之间切换。例如,在半冗余模式下,若物理节点(n+1)发生故障的时长达到阈值,物理节点n从半冗余模式切换为全冗余模式包括的性能优先子模式,从而将故障恢复的实现方式从实现方式A切换为实现方式B.2。
S203、物理节点n通过物理节点n与物理节点(n+2)之间的通路,向物理节点(n+2)发送计算结果。
其中,如果物理节点n与物理节点(n+2)通过PCIE switch建立通路,物理节点n发送计算结果后,PCIE switch会接收到计算结果,将计算结果转发给物理节点(n+2)。如果物理节点n与物理节点(n+2)之间的通路还经过了CPU,物理节点n发送计算结果后,CPU会接收到计算结果,将计算结果转发给物理节点(n+2)。
物理节点(n+2)从物理节点n接收计算结果后,利用物理节点n的计算结果以及物理节点(n+2)的任务执行数据,执行分布式计算任务中物理节点(n+2)对应的子任务,将得到的计算结果发送至物理节点n+3。
上述方法实施例可适用于CPU、NPU、GPU等组建的环形网络进行AI训练系统中,在出现的环形网络中CPU/NPU/GPU故障时的故障恢复,也适用于CPU、NPU、GPU等组建的环形网络进行其它并行计算的节点故障恢复。适用于CPU、NPU、GPU等组建的单向环形网络,也适用于双向环形网络的故障恢复。
本实施例提供了一种实现环形网络的故障恢复的方法,当环形网络中一个物理节点发生故障时,通过由故障的物理节点的上一个物理节点执行故障的物理节点对应的子任务,将计算结果发送给故障的物理节点的下一个物理节点,由于故障的物理节点负责的子任务得以被执行,并且故障的物理节点负责计算得出的计算结果得以被传递给其他物理节点,因此环形网络不会缺失故障物理节点对应的计算结果,环形网络中能够基于计算结果继续执行分布式计算任务,从而避免了环形网络上运行的分布式计算任务停止,使得环形网络具备在节点发生故障时自动恢复的能力。
以下通过实施例三,对本申请实施例一进行举例说明。在实施例三,物理节点为NPU,俗称为NPU卡。不同物理节点之间的通路通过PCIe switch建立。换句话说,实施例三描述的方法流程关于如何基于PCIe switch配置多个NPU组成的环形网络。应理解,实施例三与实施例一同理的步骤还请参见实施例一,在实施例三中不做赘述。
实施例三
实施例三以4个NPU组成环形网络为例进行说明。为了简明起见,实施例三后续在不至于引入理解困难的情况下用“NPU+小写字母”的形式来简化表示1个NPU,如NPU为NPU_a。其中,这里的小写字母表示NPU的标识,比如是NPU的编号。
请参考图23,4个NPU例如是图23中的NPU_a、NPU_b、NPU_c和NPU_d。通过PCIeswitch方式,实现4个NPU中任意两个NPU互联,以及NPU和CPU相连,软件上可实现NPU组成一个环形网络。
请参考图24,环形网络配置和冗余配置如图24所示。实施例三的配置过程包括而不限于以下S301至S305。
S301、计算过程采用环形网络配置,组网后数据传递过程为NPU_a->NPU_b->NPU_c->NPU_d->NPU_a。
S302、将每个NPU对应的虚拟节点配置在上一个NPU上。例如,将NPU_b对应的虚拟节点NPU_b0配置在NPU_a上,将NPU_c对应的虚拟节点NPU_c0配置在NPU_b上,以此类推。
S303、配置跨物理节点的传输路径。跨物理节点的传输路径与上文(2.1)新增的通路对应。在实施例三中,跨物理节点的传输路径例如是NPU与下下一个NPU之间的通路。例如,NPU_c可接收NPU_a的数据,其他NPU以此类推。
S304、配置数据组网反方向传输路径。例如,配置与S301描述的数据传递方向为反方向的传输路径,例如配置NPU_a<-NPU_b<-NPU_c<-NPU_d<-NPU_a。
S305、配置冗余模式。
应理解,上面的“S301”“S302”仅是区分配置过程的不同步骤,S301至S305各个步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
以上实施例三介绍了一种环形网络的配置方法,以下通过实施例四,对基于实施例三配置的环形网络执行分布式计算任务的方法流程进行举例说明。换句话说,实施例四描述的方法流程关于如何基于实施例三配置的环形网络,来协同执行分布式计算任务。其中,实施例四以执行分布式训练任务为例进行说明,分布式训练任务之外的其他分布式计算任务的方法流程与实施例四同理。应理解,实施例四与上述实施例同理的步骤还请参见上文,在实施例四中不做赘述。
实施例四
参见图25,图25是本申请实施例四提供的一种分布式训练任务执行方法的流程图。可选地,实施例四由实施例三描述的NPU执行。实施例四包括S401至S406。
S401、CPU通过PCIe交换机加载训练模型和该训练模型的初始参数。
S402、CPU从样本数据中,分配本次batch数据,将每个NPU对应的batch数据发送至各NPU。
S403、各NPU加载本次batch数据,各NPU根据本次batch数据,分别计算出模型参数的一份梯度值。为简明地区分不同NPU计算出的梯度值,本实施例用“P+小写字母”的形式来简化表示一个NPU计算出的一份梯度值,其中,P表示梯度值,小写字母表示NPU的标识。如NPU_a计算出的一份梯度值记为P_a,NPU_b计算出的一份梯度值记为P_b。依次类推,四个NPU计算出的梯度值包括P_a、P_b、P_c和P_d。
S404、NPU选择冗余模式。S404包括S404a至S404c。
S404a、在无冗余模式下,跳转至S405。
S404b、混合冗余模式或半冗余模式下,各NPU备份训练结果。
S404c、在全冗余模式下执行以下S404ci或S404cii。
S404ci、在HA优先子模式下,各NPU上的虚拟节点加载本次batch数据,各虚拟节点分别利用本次batch数据,计算出一份梯度值。虚拟节点参与梯度值计算。
S404cii、在性能优先子模式,跳转至S405。
S405、各NPU通过业务配置的数据传递环形组网,继续进行参数梯度计算,计算后,每个NPU得到一份完整的当前batch训练模型参数。
S406、判断分布式训练任务是否结束。若分布式训练任务未结束,跳转S402,进行下一批batch计算。若分布式训练任务结束,退出分布式训练任务。
以上实施例四介绍了环形网络中执行分布式训练任务的过程,以下通过实施例五,对基于实施例三配置的环形网络进行故障恢复的方法流程进行举例说明。换句话说,实施例五描述的方法流程关于环形网络中物理节点发生故障时如何避免执行的分布式训练任务停止。
实施例五
参见图26,图26是本申请实施例五提供的一种环形网络的故障恢复方法的示意图。以物理节点NPU_b故障为例,如图27所示,物理节点NPU_b故障,位于物理节点NPU_a上的虚拟节点NPU_b0代替物理节点NPU_b继续参与计算任务。实施例五包括S501至S503。
S501、物理节点n检测到物理节点(n+1)故障,物理节点n通知CPU物理节点(n+1)故障,CPU暂停向物理节点(n+1)推送训练数据,并对物理节点(n+1)进行故障恢复;
S502、NPU选择冗余模式。S502包括S502a至S502d。
S502a、在无冗余模式下,由于物理节点(n+1)故障,分布式训练任务停止;
S502b、在全冗余模式中的HA优先子模式下,虚拟节点替代故障的物理节点。
S502c、在全冗余模式中的性能优先子模式下,执行以下S502ci和S502cii。
S502ci、加载上一次batch模型参数和本次batch数据,各物理节点分别计算梯度值,并且,虚拟节点替代故障的物理节点计算梯度值。也即是,虚拟节点(n0+1)所在的物理节点n计算两份梯度值,一份梯度值是P_n,P_n表示物理节点n负责计算的梯度值。另一份梯度值是P_n+1,P_n+1表示物理节点(n+1)负责计算的梯度值。
S502cii、虚拟节点替代故障的物理节点参与模型参数计算;
S502d、在半冗余模式或混合模式下,执行以下S502di、S502dii或S502diii。
S502di、若半冗余模式有效,执行以下(1)和(2)。
(1)各个物理节点加载上一次batch模型参数和本次batch数据,各个物理节点分别计算梯度值;
(2)虚拟节点备份梯度值参与模型参数计算;
S502dii、若半冗余模式无效或非混合冗余模式下,由于物理节点(n+1)故障,分布式训练任务停止;
S502diii、在混合冗余模式,执行以下(1)至(3)。
(1)加载上一次batch模型参数和本次batch数据,各物理节点分别计算梯度值,虚拟节点替代故障的物理节点计算梯度值,即虚拟节点所在的物理节点x计算两份梯度值P_n和P_n+1;
(2)虚拟节点替代故障节点参与模型参数计算;
(3)将冗余模式设置为全冗余模式(性能优先);
S503、继续下一次batch计算,CPU分配batch数据。
通过上述实施例三、实施例四至实施例五,环形网络具备了节点故障恢复能力,在全冗余模式中的HA优先子模式下,故障恢复时间为0,其它冗余模式下,故障恢复时间小于一个batch计算时间(一般小于1s)。
上述实施例三描述了如何通过同一个CPU相连的多个NPU配置为环形网络,在本申请的另一些实施例中,可将不同CPU相连的多个NPU配置为环形网络。以下通过实施例六进行具体说明。应理解,实施例六与实施例三同理的步骤还请参见实施例三,在实施例六中不做赘述。
实施例六
实施例六以8个NPU组成环形网络为例进行说明。请参见图28,8个NPU和两个CPU分为两组,每组包括4个NPU和1个CPU。
同一组内的NPU通过PCIe switch方式与CPU相连,同一组内的NPU通过实现两两互联,软件上可实现8个NPU组成一个环形网络。训练数据、模型、模型参数初始值通过CPU加载,模型参数计算(Reduce+Gather)计算过程通过组内NPU互联进行数据交互,跨组模型参数计算通过CPU交换。抽象出的环形网络配置和冗余配置如图29所示。环形网络包括分组0和分组1,分组0包括NPU_a、NPU_b、NPU_c和NPU_d,此外分组0还包括CPU_0。分组1包括NPU_e、NPU_f、NPU_g和NPU_h,此外分组1还包括CPU_1。
实施例六的配置过程包括而不限于以下S601至S605。
S601、计算过程采用环形网络配置,组网后数据传递过程为NPU_a->NPU_b->NPU_c->NPU_d->CPU0->CPU1->NPU_e->NPU_f->NPU_g->NPU_h->CPU1->CPU0->NPU_a。
S602、将每个NPU对应的虚拟节点配置在上一个NPU上。例如,将NPU_b的虚拟节点NPU_b0配置在NPU_a上,将NPU_c的虚拟节点NPU_c0配置在NPU_b上,以此类推。
S603、配置跨节点传输路径,NPU_c可接收NPU_a的数据,以此类推,跨组传输路径通过CPU互通。
S604、配置数据组网反方向传输路径,例如配置NPU_a<-NPU_b<-NPU_c<-NPU_d<-CPU0<-CPU1<-NPU_e->NPU_f<-NPU_g<-NPU_h<-CPU1<-CPU0<-NPU_a。
S605、配置冗余模式。
以上实施例六介绍了一种环形网络的配置方法,基于实施例六配置的环形网络中节点故障后的恢复方法与实施例五同理。例如请参考图30,若物理节点b处于故障状态,虚拟节点b0替代物理节点b工作。
例如,物理节点a故障时,故障恢复方案如图31所示。故障恢复方案与实施例五不同的差异在于,物理节点a故障,虚拟节点a0代替物理节点a之后,通过CPU完成环形网络后续的模型参数计算。例如,请参考图31和图28,虚拟节点a0计算出一份模型参数后,虚拟节点a0向物理节点b传递模型参数的过程包括:虚拟节点a0所在的物理节点h发送模型参数。PCIE交换机1会接收到物理节点h发送的模型参数,将模型参数发送给CPU1。CPU1接收到模型参数后,会将模型参数发送给CPU0。CPU0接收到模型参数后,会发送模型参数。PCIE交换机0会接收到CPU0发送的模型参数,将模型参数发送给物理节点b,使得物理节点b得到了虚拟节点a0的模型参数,等同于得到了故障物理节点a负责计算的一份模型参数。
通过上述实施例六,环形网络具备了节点故障恢复能力,在全冗余模式中的HA优先子模式下,故障恢复时间为0,其它冗余模式下,故障恢复时间小于一个batch计算时间。
与本申请提供的方法实施例相对应,本申请实施例提供了物理节点。下面通过实施例七对物理节点的功能模块进行介绍。实施例七为物理节点的虚拟装置实施例,实施例七描述的物理节点700具有上述方法实施例中物理节点的任意功能,此外,关于物理节点700如何在环形网络中实现故障恢复的详细流程,请参考上文实施例一至实施例六的描述,实施例七不做重复。
实施例七
图32是本申请实施例提供的一种物理节点700的结构示意图,如图32所示,该物理节点700包括:获取模块701,用于执行S201;执行模块702,用于执行S202;发送模块704,用于执行执行S203。
应理解,物理节点700对应于实施例一至实施例六中的物理节点,物理节点700中的各模块和上述其他操作和/或功能分别为了实现实施例一至实施例六中的物理节点所实施的各种步骤和方法,物理节点700与上述实施例一至实施例六属于同一构思,具体细节可参见实施例一至实施例六,为了简洁,在此不再赘述。
应理解,物理节点700在故障恢复时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将物理节点700的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
与本申请提供的方法实施例以及虚拟装置实施例相对应,本申请实施例提供一种物理节点,下面对物理节点的硬件结构进行介绍。
应理解,下文描述的物理节点800或物理节点900中的各硬件、模块和上述其他操作和/或功能分别为了实现方法实施例中的物理节点所实施的各种步骤和方法,关于物理节点800或物理节点900如何实现故障恢复的详细流程,具体细节可参见上述实施例一至实施例六,为了简洁,在此不再赘述。其中,实施例一至实施例六的各步骤通过物理节点800或物理节点900处理器中的硬件的集成逻辑电路或者软件形式的指令完成。结合本申请实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。为避免重复,这里不再详细描述
还应理解,下文描述的物理节点800或物理节点900对应于上述实施例七中的物理节点700,例如,物理节点700中的获取模块701和发送模块703相当于物理节点800中的总线接口单元810;物理节点700中的执行模块702相当于运算电路803或向量计算单元808。又如,物理节点700中的获取模块701和发送模块703相当于物理节点900中的通信接口904;物理节点700中的执行模块702相当于处理器901或处理器905。其中,物理节点700中的每个功能模块采用物理节点800或物理节点900的软件实现。换句话说,物理节点700包括的功能模块为物理节点800或物理节点900的处理器读取存储器中存储的程序代码后生成的。
下面通过实施例八,介绍本申请实施例提供的一种芯片的硬件结构,该芯片可提供为上述各个实施例涉及的物理节点。
实施例八
图33为本申请实施例八提供的一种物理节点800的结构示意图,物理节点800的形态例如是AI芯片,物理节点800包括神经网络处理器80。神经网络处理器80适于分布式训练任务中梯度值的计算任务以及模型参数的计算任务。例如,如果模型是神经网络,神经网络中各层的算法均可在如图33所示的神经网络处理器80中得以实现。
神经网络处理器作为协处理器挂载到主CPU(Host CPU)上,由Host CPU分配任务。NPU的核心部分为运算电路80,控制器804控制运算电路803提取存储器(权重存储器或输入存储器)中的数据并进行运算。
在一些实现中,运算电路803内部包括多个处理单元(Process Engine,PE)。在一些实现中,运算电路803是二维脉动阵列。运算电路803还可以是一维脉动阵列或者能够执行例如乘法和加法这样的数学运算的其它电子线路。在一些实现中,运算电路803是通用的矩阵处理器。
举例来说,假设有输入矩阵A,权重矩阵B,输出矩阵C。运算电路从权重存储器802中取矩阵B相应的数据,并缓存在运算电路中每一个PE上。运算电路从输入存储器801中取矩阵A数据与矩阵B进行矩阵运算,得到的矩阵的部分结果或最终结果,保存在累加器808accumulator中。
向量计算单元808可以对运算电路的输出做进一步处理,如向量乘,向量加,指数运算,对数运算,大小比较等等。例如,向量计算单元808可以用于神经网络中非卷积/非FC层的网络计算,如池化(Pooling),批归一化(Batch Normalization),局部响应归一化(Local Response Normalization)等。
在一些实现中,向量计算单元808将经处理的输出的向量存储到统一缓存器806。例如,向量计算单元808可以将非线性函数应用到运算电路803的输出,例如累加值的向量,用以生成激活值。在一些实现中,向量计算单元808生成归一化的值、合并值,或二者均有。在一些实现中,处理过的输出的向量能够用作到运算电路803的激活输入,例如用于在神经网络中的后续层中的使用。
在一些实施例中,上述各个实施例中子任务由运算电路803或向量计算单元808执行。例如,由运算电路803或向量计算单元808计算梯度值或根据梯度值计算模型参数。
统一存储器806用于存放输入数据以及输出数据,输入数据包括一个批尺寸的样本数据。输出数据包括梯度值和模型参数。
权重数据直接通过存储单元访问控制器805(Direct Memory AccessController,DMAC)将外部存储器中的输入数据搬运到输入存储器801和/或统一存储器806、将外部存储器中的权重数据存入权重存储器802,以及将统一存储器806中的数据存入外部存储器。
总线接口单元(Bus Interface Unit,BIU)810,用于通过总线实现主CPU、DMAC和取指存储器809之间进行交互。
与控制器804连接的取指存储器(instruction fetch buffer)809,用于存储控制器804使用的指令;
控制器804,用于调用指存储器809中缓存的指令,实现控制该运算加速器的工作过程。
一般地,统一存储器806,输入存储器801,权重存储器802以及取指存储器809均为片上(On-Chip)存储器,外部存储器为该NPU外部的存储器,该外部存储器可以为双倍数据率同步动态随机存储器(Double Data Rate Synchronous Dynamic Random AccessMemory,简称DDR SDRAM)、高带宽存储器(High Bandwidth Memory,HBM)或其他可读可写的存储器。
可选地,分布式训练任务以及Ring All-reduce的程序算法是由主CPU和NPU共同配合完成的。其中,模型参数中各层的运算可以由运算电路803或向量计算单元808执行。
上面的实施例八将AI芯片一类的实体装置配置为物理节点,在本申请的一些实施例中,将通用的计算设备配置为物理节点,以下通过实施例九进行示例性说明。
实施例九
图34为本申请实施例九提供的一种物理节点900的结构示意图。物理节点900的形态例如是计算设备。例如,该计算设备可以是主机、服务器或个人计算机等。该计算设备可以由一般性的总线体系结构来实现。该计算设备中的中央处理器可以执行上述实施例一至实施例六中物理节点执行的各个步骤。
物理节点900包括至少一个处理器901、通信总线902、存储器903以及至少一个通信接口904。
处理器901可以是一个通用中央处理器(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)或其任意组合。
通信总线902用于在上述组件之间传送信息。通信总线902可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
存储器903可以是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其它类型的静态存储设备,也可以是随机存取存储器(random access memory,RAM)或者可存储信息和指令的其它类型的动态存储设备,也可以是电可擦可编程只读存储器(electrically erasable programmable read-only Memory,EEPROM)、只读光盘(compactdisc read-only memory,CD-ROM)或其它光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其它磁存储设备,或者是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其它介质,但不限于此。存储器903可以是独立存在,并通过通信总线902与处理器901相连接。存储器903也可以和处理器901集成在一起。
通信接口904使用任何收发器一类的装置,用于与其它设备或通信网络通信。通信接口904包括有线通信接口,还可以包括无线通信接口。其中,有线通信接口例如可以为以太网接口。以太网接口可以是光接口,电接口或其组合。无线通信接口可以为无线局域网(wireless local area networks,WLAN)接口,蜂窝网络通信接口或其组合等。
在具体实现中,作为一种实施例,处理器901可以包括一个或多个CPU,如图34中所示的CPU0和CPU1。
在具体实现中,作为一种实施例,物理节点900可以包括多个处理器,如图34中所示的处理器901和处理器905。这些处理器中的每一个可以是一个单核处理器(single-CPU),也可以是一个多核处理器(multi-CPU)。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(如计算机程序指令)的处理核。
在具体实现中,作为一种实施例,物理节点900还可以包括输出设备906和输入设备907。输出设备906和处理器901通信,可以以多种方式来显示信息。例如,输出设备906可以是液晶显示器(liquid crystal display,LCD)、发光二级管(light emitting diode,LED)显示设备、阴极射线管(cathode ray tube,CRT)显示设备或投影仪(projector)等。输入设备907和处理器901通信,可以以多种方式接收用户的输入。例如,输入设备907可以是鼠标、键盘、触摸屏设备或传感设备等。
在一些实施例中,存储器903用于存储执行本申请方案的程序代码910,处理器901可以执行存储器903中存储的程序代码910。也即是,物理节点900可以通过处理器901以及存储器903中的程序代码910,来实现方法实施例提供的环形网络的故障恢复方法。
本申请实施例的物理节点900可对应于上述各个方法实施例中的物理节点,例如实施例二中的物理节点n,并且,该物理节点900中的处理器901、通信接口904等可以实现上述各个方法实施例中的物理节点n所具有的功能和/或所实施的各种步骤和方法。为了简洁,在此不再赘述。
在一些可能的实施例中,上述物理节点还可以使用计算机程序产品实现。具体地,本申请实施例提供了一种计算机程序产品,当该计算机程序产品在物理节点上运行时,使得物理节点执行上述方法实施例中的环形网络的故障恢复方法。
应理解,上述各种产品形态的物理节点,分别具有上述方法实施例中物理节点的任意功能,此处不再赘述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例中描述的各方法步骤和单元,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各实施例的步骤及组成。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。本领域普通技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参见前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,该单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
该作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本申请实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
该集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例中方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上描述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。该计算机程序产品包括一个或多个计算机程序指令。在计算机上加载和执行该计算机程序指令时,全部或部分地产生按照本申请实施例中的流程或功能。该计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。该计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,该计算机程序指令可以从一个网站站点、计算机、服务器或数据中心通过有线或无线方式向另一个网站站点、计算机、服务器或数据中心进行传输。该计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。该可用介质可以是磁性介质(例如软盘、硬盘、磁带)、光介质(例如,数字视频光盘(digitalvideo disc,DVD)、或者半导体介质(例如固态硬盘)等。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,该程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上描述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (14)
1.一种环形网络的故障恢复方法,其特征在于,所述环形网络被配置为执行分布式计算任务,所述分布式计算任务包括第一阶段的任务和所述第一阶段之后的第二阶段的任务,所述第二阶段的任务的输入数据包括所述第一阶段的任务的计算结果,所述方法应用于第一物理节点,所述第一物理节点为所述环形网络中的一个物理节点,所述第一物理节点和第三物理节点具有通路,所述通路用于使所述第一物理节点和所述第三物理节点之间实现数据直通,所述第三物理节点为所述环形网络中第二物理节点的下一个物理节点,所述第二物理节点为所述环形网络中所述第一物理节点的下一个物理节点,所述方法包括:
第一物理节点获取第二物理节点的任务执行数据,所述任务执行数据包括所述第二物理节点执行所述第一阶段的任务的备份计算结果和执行所述第二阶段的任务中所述第二物理节点对应的子任务所需的数据中的至少一项,所述备份计算结果包括中间结果的备份和最终的计算结果的备份中的至少一项;
所述第一物理节点将所述任务执行数据保存至第二物理节点对应的虚拟节点,所述虚拟节点为所述第一物理节点上运行的软件,所述第一物理节点上运行的所述虚拟节点为所述第二物理节点的冗余节点,所述虚拟节点用于保护对应的物理节点,虚拟节点与对应的物理节点之间的保护关系包括主备关系和对等关系中任一种;
若所述第二物理节点处于故障状态,所述第二物理节点发生故障的时长未达到阈值,所述第一物理节点从至少一个冗余模式中选择半冗余模式,所述第一物理节点调用所述虚拟节点,在所述半冗余模式下,使用所述任务执行数据,执行所述第二阶段的任务中所述第二物理节点对应的子任务,得到计算结果,所述半冗余模式是指对分布式计算任务中所述第二物理节点对应的部分子任务进行冗余的模式;
所述第一物理节点通过所述通路,向第三物理节点发送所述计算结果;
若所述第二物理节点发生故障的时长达到阈值,所述第一物理节点从所述半冗余模式切换至全冗余模式,所述全冗余模式是指对分布式计算任务中所述第二物理节点对应的全部子任务进行冗余的模式,所述全冗余模式包括高可用HA优先子模式和性能优先子模式,所述HA优先子模式下物理节点和对应的虚拟节点均参与执行子任务,所述性能优先子模式下虚拟节点在对应的物理节点发生故障后参与执行子任务。
2.根据权利要求1所述的方法,其特征在于,所述分布式计算任务包括n次迭代,所述n为大于或等于1的整数,所述若所述第二物理节点处于故障状态,所述第二物理节点发生故障的时长未达到阈值,所述第一物理节点从至少一个冗余模式中选择半冗余模式,所述第一物理节点调用所述虚拟节点,在所述半冗余模式下,使用所述任务执行数据,执行所述第二阶段的任务中所述第二物理节点对应的子任务,包括:
若所述第二物理节点在第i次迭代中处于故障状态,所述第二物理节点发生故障的时长未达到阈值,所述第一物理节点调用所述虚拟节点,在所述半冗余模式下,使用所述第二物理节点在第i-1次迭代中执行所述第一阶段的任务的备份计算结果,执行第i次迭代中所述第二阶段的任务中所述第二物理节点对应的子任务,所述i为不大于所述n的正整数。
3.根据权利要求1所述的方法,其特征在于,所述第一物理节点调用所述虚拟节点,在所述半冗余模式下,使用所述任务执行数据,执行所述第二阶段的任务中所述第二物理节点对应的子任务,包括:
所述第一物理节点调用所述虚拟节点,在所述半冗余模式下,使用所述执行子任务所需的数据,执行所述第二阶段的任务中所述第二物理节点对应的子任务。
4.根据权利要求1所述的方法,其特征在于,所述分布式计算任务包括n次迭代,所述n为大于或等于1的整数,所述第一物理节点调用所述虚拟节点,在所述半冗余模式下,使用所述任务执行数据,执行所述第二阶段的任务中所述第二物理节点对应的子任务,包括:
若所述第二物理节点在第i次迭代中发生故障,所述第一物理节点调用所述虚拟节点,在所述半冗余模式下,使用所述第i次迭代中执行子任务所需的数据,执行所述第i次迭代中所述第二物理节点对应的子任务,所述i为不大于所述n的整数。
5.根据权利要求中1至4中任一项所述的方法,其特征在于,所述分布式计算任务包括深度学习领域中的分布式训练任务,所述分布式训练任务包括第一阶段的任务以及第二阶段的任务,所述第一阶段的任务包括计算梯度值的任务,所述第二阶段的任务包括根据所述梯度值计算模型参数的任务,所述任务执行数据包括备份梯度值、样本数据或模型参数中的至少一项,所述分布式计算任务包括n次迭代,所述n次迭代中的一次迭代包括根据一个批尺寸的样本数据进行模型训练,所述n为大于或等于1的整数。
6.一种第一物理节点,其特征在于,所述第一物理节点为环形网络中的一个物理节点,所述环形网络被配置为执行分布式计算任务,所述分布式计算任务包括第一阶段的任务和所述第一阶段之后的第二阶段的任务,所述第二阶段的任务的输入数据包括所述第一阶段的任务的计算结果,所述第一物理节点和第三物理节点具有通路,所述通路用于使所述第一物理节点和所述第三物理节点之间实现数据直通,所述第三物理节点为所述环形网络中第二物理节点的下一个物理节点,所述第二物理节点为所述环形网络中所述第一物理节点的下一个物理节点,所述第一物理节点包括:
获取模块,用于获取第二物理节点的任务执行数据,所述任务执行数据包括所述第二物理节点执行所述第一阶段的任务的备份计算结果和执行所述第二阶段的任务中所述第二物理节点对应的子任务所需的数据中的至少一项,所述备份计算结果包括中间结果的备份和最终的计算结果的备份中的至少一项;
保存模块,用于将所述任务执行数据保存至第二物理节点对应的虚拟节点,所述虚拟节点为所述第一物理节点上运行的软件,所述第一物理节点上运行的所述虚拟节点为所述第二物理节点的冗余节点,所述虚拟节点用于保护对应的物理节点,虚拟节点与对应的物理节点之间的保护关系包括主备关系和对等关系中任一种;
执行模块,用于若所述第二物理节点处于故障状态,所述第二物理节点发生故障的时长未达到阈值,所述第一物理节点从至少一个冗余模式中选择半冗余模式,调用所述虚拟节点,在所述半冗余模式下,使用所述任务执行数据,执行所述第二阶段的任务中所述第二物理节点对应的子任务,得到计算结果,所述半冗余模式是指对分布式计算任务中所述第二物理节点对应的部分子任务进行冗余的模式;
发送模块,用于通过所述通路,向第三物理节点发送所述计算结果;
所述执行模块,还用于若所述第二物理节点发生故障的时长达到阈值,所述第一物理节点从所述半冗余模式切换至全冗余模式,所述全冗余模式是指对分布式计算任务中所述第二物理节点对应的全部子任务进行冗余的模式,所述全冗余模式包括高可用HA优先子模式和性能优先子模式,所述HA优先子模式下物理节点和对应的虚拟节点均参与执行子任务,所述性能优先子模式下虚拟节点在对应的物理节点发生故障后参与执行子任务。
7.根据权利要求6所述的第一物理节点,其特征在于,所述分布式计算任务包括n次迭代,所述n为大于或等于1的整数,所述执行模块,用于若所述第二物理节点在第i次迭代中处于故障状态,所述第二物理节点发生故障的时长未达到阈值,调用所述虚拟节点,在所述半冗余模式下,使用所述第二物理节点在第i-1次迭代中执行所述第一阶段的任务的备份计算结果,执行第i次迭代中所述第二阶段的任务中所述第二物理节点对应的子任务,所述i为不大于所述n的正整数。
8.根据权利要求6所述的第一物理节点,其特征在于,所述执行模块,用于调用所述虚拟节点,在所述半冗余模式下,使用所述执行子任务所需的数据,执行所述第二阶段的任务中所述第二物理节点对应的子任务。
9.根据权利要求6所述的第一物理节点,其特征在于,所述分布式计算任务包括n次迭代,所述n为大于或等于1的整数,所述执行模块,用于若所述第二物理节点在第i次迭代中发生故障,调用所述虚拟节点,在所述半冗余模式下,使用所述第i次迭代中执行子任务所需的数据,执行所述第i次迭代中所述第二物理节点对应的子任务,所述i为不大于所述n的整数。
10.根据权利要求中6至9中任一项所述的第一物理节点,其特征在于,所述分布式计算任务包括深度学习领域中的分布式训练任务,所述分布式训练任务包括第一阶段的任务以及第二阶段的任务,所述第一阶段的任务包括计算梯度值的任务,所述第二阶段的任务包括根据所述梯度值计算模型参数的任务,所述任务执行数据包括备份梯度值、样本数据或模型参数中的至少一项,所述分布式计算任务包括n次迭代,所述n次迭代中的一次迭代包括根据一个批尺寸的样本数据进行模型训练,所述n为大于或等于1的整数。
11.一种物理节点,其特征在于,所述物理节点包括处理器,所述处理器用于执行指令,使得所述物理节点执行如权利要求1至权利要求5中任一项所述的环形网络的故障恢复方法。
12.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条指令,所述指令由处理器读取以使物理节点执行如权利要求1至权利要求5中任一项所述的环形网络的故障恢复方法。
13.一种芯片,其特征在于,当所述芯片在物理节点上运行时,使得所述物理节点执行如权利要求1至权利要求5中任一项所述的环形网络的故障恢复方法。
14.一种环形网络,其特征在于,所述环形网络包括第一物理节点、第二物理节点以及第三物理节点,所述环形网络被配置为执行分布式计算任务,所述第一物理节点用于执行如权利要求1至权利要求5中任一项所述的环形网络的故障恢复方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010152994.4A CN113364603B (zh) | 2020-03-06 | 2020-03-06 | 环形网络的故障恢复方法及物理节点 |
PCT/CN2021/078755 WO2021175226A1 (zh) | 2020-03-06 | 2021-03-02 | 环形网络的故障恢复方法及物理节点 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010152994.4A CN113364603B (zh) | 2020-03-06 | 2020-03-06 | 环形网络的故障恢复方法及物理节点 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113364603A CN113364603A (zh) | 2021-09-07 |
CN113364603B true CN113364603B (zh) | 2023-05-02 |
Family
ID=77524191
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010152994.4A Active CN113364603B (zh) | 2020-03-06 | 2020-03-06 | 环形网络的故障恢复方法及物理节点 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN113364603B (zh) |
WO (1) | WO2021175226A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113746873B (zh) * | 2020-05-27 | 2023-05-23 | 华为技术有限公司 | 环形网络中的异常节点处理方法及相关设备 |
US20230132831A1 (en) * | 2021-10-29 | 2023-05-04 | International Business Machines Corporation | Task failover |
CN116701043B (zh) * | 2023-08-04 | 2024-01-12 | 浪潮电子信息产业股份有限公司 | 面向异构计算系统的故障节点切换方法、装置和设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101663649A (zh) * | 2007-04-18 | 2010-03-03 | 国际商业机器公司 | 动态地重新路由并行计算机系统上的节点业务 |
CN105718244A (zh) * | 2016-01-18 | 2016-06-29 | 上海交通大学 | 一种流水化数据洗牌传输的Spark任务调度与执行方法 |
CN110083441A (zh) * | 2018-01-26 | 2019-08-02 | 中兴飞流信息科技有限公司 | 一种分布式计算系统及分布式计算方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100387017C (zh) * | 2005-09-01 | 2008-05-07 | 西安交通大学 | 构建多机系统高可用的自愈合逻辑环故障检测与容忍方法 |
US9525636B2 (en) * | 2014-10-20 | 2016-12-20 | Telefonaktiebolaget L M Ericsson (Publ) | QoS on a virtual interface over multi-path transport |
CN109426574B (zh) * | 2017-08-31 | 2022-04-05 | 华为技术有限公司 | 分布式计算系统,分布式计算系统中数据传输方法和装置 |
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控股有限责任公司 | 用于处理计算任务的方法、设备和计算程序产品 |
EP3837608A2 (en) * | 2018-08-13 | 2021-06-23 | Stratus Technologies Ireland Limited | High reliability fault tolerant computer architecture |
CN110502544A (zh) * | 2019-08-12 | 2019-11-26 | 北京迈格威科技有限公司 | 数据整合方法、分布式计算节点及分布式深度学习训练系统 |
-
2020
- 2020-03-06 CN CN202010152994.4A patent/CN113364603B/zh active Active
-
2021
- 2021-03-02 WO PCT/CN2021/078755 patent/WO2021175226A1/zh active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101663649A (zh) * | 2007-04-18 | 2010-03-03 | 国际商业机器公司 | 动态地重新路由并行计算机系统上的节点业务 |
CN105718244A (zh) * | 2016-01-18 | 2016-06-29 | 上海交通大学 | 一种流水化数据洗牌传输的Spark任务调度与执行方法 |
CN110083441A (zh) * | 2018-01-26 | 2019-08-02 | 中兴飞流信息科技有限公司 | 一种分布式计算系统及分布式计算方法 |
Also Published As
Publication number | Publication date |
---|---|
CN113364603A (zh) | 2021-09-07 |
WO2021175226A1 (zh) | 2021-09-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113364603B (zh) | 环形网络的故障恢复方法及物理节点 | |
US8769034B2 (en) | Query performance data on parallel computer system having compute nodes | |
US20080195840A1 (en) | Identifying Messaging Completion on a Parallel Computer | |
CN108647104B (zh) | 请求处理方法、服务器及计算机可读存储介质 | |
US9052935B1 (en) | Systems and methods for managing affinity rules in virtual-machine environments | |
JP5851503B2 (ja) | 高可用性仮想機械環境におけるアプリケーションの高可用性の提供 | |
CN102402395B (zh) | 基于仲裁磁盘的高可用系统不间断运行方法 | |
WO2016115831A1 (zh) | 一种虚拟机容错的方法、装置及系统 | |
Gotoda et al. | Task scheduling algorithm for multicore processor system for minimizing recovery time in case of single node fault | |
US9658861B2 (en) | Boot strap processor assignment for a multi-core processing unit | |
TWI528155B (zh) | 在多核心處理系統中處理核心之重設 | |
CN103457775A (zh) | 一种基于角色的高可用虚拟机池化管理系统 | |
CN103092807A (zh) | 节点控制器、并行计算服务器系统以及路由方法 | |
CN104618153A (zh) | 分布式并行图处理中基于p2p的动态容错方法及系统 | |
US11748164B2 (en) | FAAS distributed computing method and apparatus | |
CN104123183B (zh) | 集群作业调度方法和装置 | |
CN116701043A (zh) | 面向异构计算系统的故障节点切换方法、装置和设备 | |
CN113132176A (zh) | 一种控制边缘节点的方法、节点及边缘计算系统 | |
US20150363225A1 (en) | Checkpointing for a hybrid computing node | |
US8621260B1 (en) | Site-level sub-cluster dependencies | |
CN113703955A (zh) | 计算系统中数据同步的方法及计算节点 | |
JP5906705B2 (ja) | テストシステム、テスト方法、及び、プログラム | |
CN113746873B (zh) | 环形网络中的异常节点处理方法及相关设备 | |
US9372816B2 (en) | Advanced programmable interrupt controller identifier (APIC ID) assignment for a multi-core processing unit | |
JPWO2012032572A1 (ja) | 計算機 |
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 |