CN114968947B - 一种故障文件保存方法及相关装置 - Google Patents
一种故障文件保存方法及相关装置 Download PDFInfo
- Publication number
- CN114968947B CN114968947B CN202210197961.0A CN202210197961A CN114968947B CN 114968947 B CN114968947 B CN 114968947B CN 202210197961 A CN202210197961 A CN 202210197961A CN 114968947 B CN114968947 B CN 114968947B
- Authority
- CN
- China
- Prior art keywords
- training
- fault
- management node
- node
- file
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/172—Caching, prefetching or hoarding of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Biomedical Technology (AREA)
- Evolutionary Computation (AREA)
- Life Sciences & Earth Sciences (AREA)
- Artificial Intelligence (AREA)
- Databases & Information Systems (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请提供了一种故障文件保存方法,应用于人工智能(AI)领域中的分布式训练场景。分布式系统包括管理节点和多个训练节点,多个训练节点用于协同执行训练任务,该方法包括:管理节点从多个训练节点中的至少一个训练节点获取实时信号,该实时信号用于表征至少一个训练节点的状态,管理节点根据实时信号进行故障检测,检测到故障后进行故障文件保存,该故障文件用于恢复训练任务。该方法通过实时进行故障检测,并在检测到故障后进行故障文件保存,由此可以保留故障发生时的迭代轮次的训练结果,避免基于大量样本数据重新启动该迭代轮次的训练,保障了训练效率。
Description
技术领域
本申请涉及人工智能(artificial intelligence,AI)技术领域,尤其涉及一种故障文件保存方法、装置以及管理节点、分布式系统、计算机可读存储介质、计算机程序产品。
背景技术
随着AI技术的不断发展,越来越多的行业和领域采用AI模型(为了便于描述,有些情况下也简称为模型)实现业务的智能化、自动化。例如,电子商务行业中,越来越多商家采用基于AI模型构建的AI客服代替人工客服,提供售前、售后咨询服务。又例如,社交网络中,平台采用AI模型代替人工审核用户发布的内容,以节省人力成本。
AI模型是指基于AI技术构建的、用于对未知数据进行预测的数学模型。例如,AI模型可以是基于神经网络构建的目标检测模型、图像分类模型。AI模型通常需要通过大量数据进行训练。为了提高AI模型的训练效率,分布式训练方法应运而生。所谓分布式训练方法是将训练任务分散到多个训练节点执行,多个训练节点并行训练模型。其中,训练任务是利用数据集训练模型,获得模型的权重的过程。训练任务的任务类型可以分为数据并行训练类型和模型并行训练类型。数据并行训练类型是指将数据集中的数据分散到多个训练节点进行训练,模型并行训练类型是指将模型的不同部分分散到多个训练节点进行训练。多个训练节点可以采用同步更新机制更新模型的参数。同步更新机制是指将各个训练节点获得的梯度进行累加计算均值,基于该均值更新模型的参数。当个别训练节点、训练算法或者网络出现故障时,整个分布式训练任务就会中断。随着训练节点的增加,中断可能性越来越高,因此,需要提供一种故障文件保存机制,以便基于故障文件恢复训练任务。
目前,业界主要采用定时备份检查点(checkpoint,ckpt)文件的方式,以实现故障文件保存。当故障发生时,基于最近一次保存的checkpoint文件进行故障恢复,该方式会导致丢失故障发生时的迭代轮次的训练结果,训练节点需要基于大量样本数据重新启动该迭代轮次的训练,影响了训练效率。
发明内容
本申请提供了一种故障文件保存方法,该方法通过实时进行故障检测,并在检测到故障后进行故障文件保存,由此可以保留故障发生时的迭代轮次的训练结果,避免基于大量样本数据重新启动该迭代轮次的训练,保障了训练效率。本申请还提供了上述方法对应的装置、管理节点、分布式系统、计算机可读存储介质以及计算机程序产品。
第一方面,本申请提供了一种故障文件保存方法。该方法应用于分布式系统。其中,分布式系统包括管理节点和多个训练节点,多个训练节点用于协同执行训练任务。该方法可以由分布式系统中的管理节点执行。
具体地,管理节点从多个训练节点中的至少一个训练节点获取实时信号,该实时信号用于表征至少一个训练节点的状态,然后管理节点根据实时信号进行故障检测,接着管理节点检测到故障后进行故障文件保存,该故障文件用于恢复训练任务。
在该方法中,管理节点基于从训练节点获取的实时信号,进行实时地故障检测,在检测到故障后,保存训练任务在故障发生时的迭代轮次的训练结果,当训练任务被重调度至新的训练节点时,新的训练节点可以基于故障发生时的迭代轮次的训练结果继续训练,无需基于大量样本数据重复训练,提高了训练效率。而且,该方法也无需频繁地进行故障文件保存,避免了以较高的频率(较短的周期)定时备份故障文件对性能的挑战。
在一些可能的实现方式中,训练节点在执行训练任务时可以产生信号。当管理节点触发信号采集时,从训练节点实时采集的信号即为实时信号。管理节点可以设置采集时间窗,管理节点从训练节点获取该训练节点在采集时间窗内的信号,从而获得实时信号。
考虑到多个训练节点在协同执行训练任务时,可以执行集合通信操作,产生集群通信信号,实时信号可以包括上述集群通信信号。此外,训练节点在执行训练任务时,可以执行编译操作(如编译得到计算图,也称作图编译结果)、运行操作(如运行图编译结果),产生编译信号、运行信号。其中,训练节点执行运行操作时,还可以产生运行管理器信号,因此,实时信号也可以包括编译信号、运行信号和运行管理器信号中的一种或多种。
在该方法中,管理节点通过获取集群通信信号、编译信号、运行信号、运行管理器信号等实时信号中的一种或多种,可以实现实时地故障检测,进而为保存故障发生时的迭代轮次的训练结果奠定基础。
在一些可能的实现方式中,管理节点还可以先通过故障预警算法对训练任务进行故障预测,得到预测结果。然后管理节点根据所述预测结果,从所述多个训练节点中的至少一个训练节点获取实时信号,以根据该实时信号进行故障检测。具体地,预测结果表征在某一时间段将要发生故障时,管理节点可以在预测的时间点(或者该时间点前后一段时间)进行获取实时信号,进而根据该实时信号进行故障检测,如此可以提高效率,并且减少对资源的占用。预测结果表征在某一时间段不发生故障时,管理节点可以在该时间段获取实时信号,进而根据实时信号进行故障检测,如此可以避免故障预警算法的准确度不能达到100%导致的漏报现象发生,提高故障检测的准确度。
在一些可能的实现方式中,管理节点可以确定训练任务的任务类型,然后管理节点可以按照与任务类型对应的保存策略,进行故障文件保存。如此可以个性化的故障文件保存,满足不同应用场景的需求。
在一些可能的实现方式中,多个训练节点中的每个训练节点包括至少一个加速卡。训练任务的任务类型为数据并行训练类型时,由于各加速卡会进行数据交换,以保持数据一致性,因此,保存策略可以为保存至少一个加速卡中任一个非故障卡上的故障文件,如此可以避免重复保存,减少存储资源占用。训练任务的任务类型为模型并行训练类型时,由于各加速卡是对模型的不同部分进行训练,因此,保存策略可以为保存所述至少一个加速卡中多个非故障卡上的故障文件,例如是保存所有非故障卡上的故障文件,如此可以实现尽可能全面地保留故障发生时的迭代轮次的训练结果,避免基于大量样本数据重新启动该迭代轮次的训练。
在一些可能的实现方式中,所述训练任务的任务类型为数据并行训练类型时,管理节点还可以进一步确定多个训练节点中用于聚合通信的目标加速卡是否为非故障卡。相应地,保存策略可以进一步细化为:当多个训练节点中用于聚合通信的目标加速卡为非故障卡时,保存所述目标加速卡上的故障文件,而不必在多个训练节点进行数据交换保证数据一致性后,再保存故障文件,缩短了保存时间;当多个训练节点中用于聚合通信的目标加速卡为故障卡时,保存所述多个训练节点中的非故障节点中网络带宽最大的节点的加速卡上的故障文件,由此提高故障文件的保存速率。
在一些可能的实现方式中,在故障文件保存完毕后,管理节点可以重调度训练任务,例如重调度训练任务至新的训练节点,该新的训练节点是未发生故障的节点,然后加载故障文件,从而使得训练节点可以从故障发生时的迭代轮次继续进行训练,而无需根据大量样本数据进行重复训练。
在一些可能的实现方式中,管理节点可以根据与训练任务的任务类型对应的恢复策略,加载故障文件。具体地,任务类型为数据并行训练类型时,恢复策略可以为基于单个故障文件如ckpt文件进行恢复;任务类型为模型并行训练类型时,恢复策略可以为基于多个故障文件(例如是所有非故障卡上的ckpt文件)进行恢复。如此可以实现根据任务类型选择性地加载故障文件,恢复训练任务,满足不同应用场景的需求。
在一些可能的实现方式中,所述故障文件包括以下信息:迭代轮次、权重、损失和超参数。通过上述迭代轮次、权重、损失以及学习率、优化器等超参数,可以实现从故障发生时的迭代轮次继续训练,满足了业务需求。
在一些可能的实现方式中,所述故障文件还包括所述训练任务的图编译结果。该图编译结果是指根据模型使用的方法对应的计算图,通常可以通过对模型使用的方法进行编译得到。
在该方法中,通过保存图编译结果,可以实现图编译结果的复用,提高训练任务恢复的效率。
在一些可能的实现方式中,管理节点可以识别所述训练任务采用的深度学习框架,获得识别结果。所述识别结果为支持静态编译的框架,例如为TensorFlow框架或者MindSpore框架时,管理节点可以保存该图编译结果,以便后续恢复训练任务时,直接复用该图编译结果,由此提高训练任务恢复的效率。
第二方面,本申请提供一种故障文件保存装置。该故障文件保存装置应用于分布式系统,所述分布式系统包括管理节点和多个训练节点,所述多个训练节点用于协同执行训练任务,所述装置部署于所述管理节点,所述装置包括:
通信模块,用于从所述多个训练节点中的至少一个训练节点获取实时信号,所述实时信号用于表征所述至少一个训练节点的状态;
检测模块,用于根据所述实时信号进行故障检测;
保存模块,用于检测到故障后进行故障文件保存,所述故障文件用于恢复所述训练任务。
在一些可能的实现方式中,所述实时信号包括以下一种或多种:
集群通信信号、编译信号、运行信号、运行管理器信号。
在一些可能的实现方式中,所述装置还包括:
预测模块,用于通过故障预警算法对所述训练任务进行故障预测,得到预测结果;
所述检测模块具体用于:
根据所述预测结果,从所述多个训练节点中的至少一个训练节点获取实时信号。
在一些可能的实现方式中,所述保存模块具体用于:
确定所述训练任务的任务类型;
按照与所述任务类型对应的保存策略,进行故障文件保存。
在一些可能的实现方式中,所述多个训练节点中的每个训练节点包括至少一个加速卡,所述训练任务的任务类型为数据并行训练类型时,所述保存策略为保存所述至少一个加速卡中任一个非故障卡上的故障文件;所述训练任务的任务类型为模型并行训练类型时,所述保存策略为保存所述至少一个加速卡中多个非故障卡上的故障文件。
在一些可能的实现方式中,所述训练任务的任务类型为数据并行训练类型时,所述保存策略为:
当所述多个训练节点中用于聚合通信的目标加速卡为非故障卡时,保存所述目标加速卡上的故障文件;
当所述多个训练节点中用于聚合通信的目标加速卡为故障卡时,保存所述多个训练节点中的非故障节点中网络带宽最大的节点的加速卡上的故障文件。
在一些可能的实现方式中,所述装置还包括:
恢复模块,用于在所述故障文件保存完毕后,重调度所述训练任务,加载所述故障文件。
在一些可能的实现方式中,所述恢复模块具体用于:
根据与所述训练任务的任务类型对应的恢复策略,加载所述故障文件。
在一些可能的实现方式中,所述故障文件包括以下信息:迭代轮次、权重、损失和超参数。
在一些可能的实现方式中,所述故障文件还包括所述训练任务的图编译结果。
第三方面,本申请提供一种管理节点。所述管理节点包括至少一个处理器和至少一个存储器。所述至少一个处理器、所述至少一个存储器进行相互的通信。所述至少一个处理器用于执行所述至少一个存储器中存储的指令,以使得管理节点执行如第一方面或第一方面的任一种实现方式中的方法。
第四方面,本申请提供一种分布式系统。所述分布式系统包括:管理节点和多个训练节点。
所述多个训练节点,用于协同执行训练任务;
所述管理节点,用于从所述多个训练节点中的至少一个训练节点获取实时信号,所述实时信号用于表征所述至少一个训练节点的状态,根据所述实时信号进行故障检测,检测到故障后进行故障文件保存,所述故障文件用于恢复所述训练任务。
第五方面,本申请提供一种计算机可读存储介质。所述计算机可读存储介质中存储有指令,所述指令指示管理节点执行上述第一方面或第一方面的任一种实现方式所述的方法。
第六方面,本申请提供了一种包含指令的计算机程序产品。当其在管理节点上运行时,使得管理节点执行上述第一方面或第一方面的任一种实现方式所述的方法。
本申请在上述各方面提供的实现方式的基础上,还可以进行进一步组合以提供更多实现方式。
附图说明
为了更清楚地说明本申请实施例的技术方法,下面将对实施例中所需使用的附图作以简单地介绍。
图1为本申请实施例提供的一种分布式系统的架构示意图;
图2为本申请实施例提供的一种服务器的硬件结构图;
图3A为本申请实施例提供的一种服务器上部署的软件的框架图;
图3B为本申请实施例提供的一种服务器上部署的软件的调用关系图;
图4为本申请实施例提供的一种故障文件保存方法的流程图;
图5为本申请实施例提供的一种故障检测的流程图;
图6为本申请实施例提供的一种故障文件保存字段的示意图;
图7为本申请实施例提供的一种故障文件保存方法的流程图;
图8为本申请实施例提供的一种故障文件保存方法的信令流程图;
图9为本申请实施例提供的一种故障文件保存装置的结构示意图;
图10为本申请实施例提供的一种管理节点的硬件结构图。
具体实施方式
本申请实施例中的术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。
首先对本申请实施例中所涉及到的一些技术术语进行介绍。
人工智能(artificial intelligence,AI),也称作机器智能,具体是指由机器(如计算机)通过模仿人类思维和行为(如学习、推理、思考、规划等)所表现出来的智能。人工智能通常是基于知识模仿人类思维和行为,以实现特定目标或者完成特定任务。其中,知识可以来源于经验或数据。
深度学习(deep learning,DL),作为AI的一个分支,具体是使用深层次神经网络模型(也称作深度学习模型,为了便于描述,一些情况下也简称为模型)对海量的数据进行处理,以从海量的数据中学习知识,并基于该知识对数据进行分析。经过训练的深度学习模型可以应用于AI领域的感知、决策等场景,例如应用于图像识别、语音识别、自然语言翻译、计算机博弈等场景。
深度学习模型的参数量较高,通常可以达到千亿、万亿级别。例如,自然语言处理(natural language processing,NLP)领域的大模型的参数量可以达到千亿级别。这种大规模的深度学习模型通常需要庞大的数据集进行训练。一种典型的训练方式为分布式训练。
分布式训练可以由分布式系统执行。参见图1所示的分布式系统的架构图,分布式系统10包括管理节点100和多个训练节点200。其中,管理节点100也称作主节点(masternode),训练节点200也称作工作节点(worker node)。管理节点100具体用于维护元信息,根据元信息进行任务调度。训练节点200具体用于执行管理节点100调度的任务。
在分布式训练场景中,元信息包括分布式系统10中训练节点200的数量、每个训练节点200的负载中的一种或多种。管理节点100可以基于上述元信息,将训练任务分散到多个训练节点200,多个训练节点200并行训练模型。
需要说明的是,图1所示的系统架构仅是示例性的,在另一些情况下,也可以不设置专用于执行管理功能的管理节点100。参与分布式训练的训练节点200也可以具有管理功能。例如,分布式系统10中的任一个节点可以既是管理节点100,又是训练节点200,也即分布式系统10中的任一个节点可以同时具备管理功能和训练功能。
分布式训练的并行策略可以包括数据并行训练策略和模型并行训练策略。数据并行训练策略是指将数据集切分为多个部分,并分发到不同训练节点200,每个训练节点200基于数据集中的不同数据对相同结构的模型进行训练,并在多个训练节点200之间传递参数,如此可以解决数据集过大导致无法在单机高效率训练的问题。模型并行训练策略是指将模型(例如深度学习模型)分割为多个部分,并将模型的多个部分部署在不同训练节点200上,不同训练节点200采用数据集并行训练模型的多个部分,如此可以解决显存限制导致大规模的深度学习模型难以在单个训练节点200上运行的问题。
分布式系统10可以采用迭代法更新模型的参数,以实现模型训练。每次迭代(iteration)则更新一次模型的参数,其中,一次迭代也可以称作一次训练步骤trainstep,简称为step。每次迭代所使用的样本量称为批尺寸(batch size)。在训练过程中,将数据集(例如是训练集)中的样本数据均被使用一次的过程称为一个时期(epoch)。为了便于理解,下面以一个示例进行说明。在该示例中,训练集包括1000个样本数据,batch size可以为100,则每次可以使用100个样本数据进行一次迭代,训练集中的1000个样本数据进行10次迭代即完成一个epoch的训练。
在分布式系统10中,多个训练节点200可以采用同步更新机制更新模型的参数。其中,同步更新机制是指将各个训练节点200获得的梯度进行累加计算均值,基于该均值更新模型的参数。相较于异步更新机制,即各个训练节点200基于各自的梯度更新模型的参数,同步更新机制可以保障损失(loss)的下降比较稳定,避免出现较大的抖动。在采用同步更新机制的情况下,当个别训练节点200、训练算法或者网络出现故障时,整个分布式训练任务就会中断。随着训练节点200的增加,中断可能性越来越高。为此,相关技术提供了一种定时备份checkpoint文件,以便于训练任务发生故障时能够基于该checkpoint文件恢复训练任务的机制。然而,当故障发生时,管理节点100可以根据最近一次保存的checkpoint文件重调度训练任务,从而进行故障恢复。当备份周期较短时,管理节点100需要占用大量的内存,以保存大量的参数,由此影响了性能。出于性能的考虑,通常会设置较长的备份周期。当备份周期较长时,将会导致丢失故障发生时的迭代轮次的训练结果,训练节点200需要基于大量样本数据重复训练,影响了训练效率。
有鉴于此,本申请实施例提供了一种故障文件保存方法。该方法应用于如图1所示的分布式系统10。其中,多个训练节点200用于协同执行训练任务。在训练时,管理节点100可以从多个训练节点200中的至少一个训练节点200获取实时信号,该实时信号用于表征至少一个训练节点200的状态,管理节点100可以根据该实时信号进行故障检测,当管理节点100检测到故障后进行故障文件保存。
在该方法中,管理节点100基于从训练节点200获取的实时信号,进行实时地故障检测,在检测到故障后,保存训练任务在故障发生时的迭代轮次的训练结果,当训练任务被重调度至新的训练节点200时,新的训练节点200可以基于故障发生时的迭代轮次的训练结果继续训练,无需基于大量样本数据重复训练,提高了训练效率。
本申请实施例的故障文件保存方法可以应用于各种分布式训练的场景。例如,该故障文件保存方法可以用于分布式训练图像识别模型的场景,当训练图像识别模型的分布式训练任务因训练节点200等发生故障而中断时,管理节点100可以保存故障文件,该故障文件包括故障发生时的迭代轮次的训练结果,管理节点100可以基于包括上述训练结果的故障文件重调度训练任务,实现从故障发生时的迭代轮次继续训练,无需根据大量样本数据进行重复训练,提高了训练效率。又例如,该故障文件保存方法也可以用于分布式训练语音识别模型的场景,当训练语音识别模型的分布式训练任务因训练节点200等发生故障而中断时,管理节点100通过保存故障发生时所在迭代轮次的训练结果,并基于该训练结果恢复训练任务,可以实现从故障发生时的迭代轮次继续训练,提高训练效率。
需要说明的是,本申请实施例的故障文件保存方法可以被封装为功能组件,该功能组件可以集成在分布式深度学习框架中,以供用户使用。在一些可能的实现方式中,本申请实施例的故障文件保存方法也可以被封装为独立的应用,以供用户使用。上述功能组件或应用可以统称为故障文件保存装置。为了便于描述,下面以故障文件保存方法被封装为功能组件进行示例说明。
图1对分布式系统10的系统架构进行示例说明,为了实现分布式训练过程中进行故障文件保存,以便基于保存的故障文件恢复训练任务,可以先构建分布式系统10。下面结合服务器的硬件结构图以及服务器上部署的软件的框架图、调用关系图,将服务器配置为管理节点100和训练节点200,从而构建分布式系统10进行说明。
具体地,用户可以购买或租赁服务器,该服务器可以是云服务器,或者是物理服务器。参见图2所示的服务器的硬件结构图,该服务器20包括主机(host)22和至少一个设备(device)24。其中,host 22和至少一个device 24连接。
其中,host 22包括处理器和内存,该处理器可以是中央处理器(centralprocessing unit,CPU),该内存可以是双列直插式存储器模块(Dual In-line MemoryModule,DIMM)。其中,DIMM具体可以是双倍数据率(double data rate,DDR)类型,例如内存可以是DDR4DIMM。在图2的示例中,host 22包括4个CPU和4个DDR4 DIMM组,每个CPU连接1个DDR4 DIMM组,每个DDR4 DIMM组包括8个DDR4 DIMM。host 22的多个CPU可以连接,形成hydra mesh。
可选地,host 22还包括接口,例如是串行高级技术附件(Serial AdvancedTechnology Attachment,SATA)接口、新一代非易失性内存(Non-Volatile Memoryexpress,NVMe)接口以及千兆以太网(Gigabit Ethernet,GE)接口中的一种或多种。
device 24包括处理器,该处理器通常是加速卡。在图2的示例中,device24包括的处理器可以为神经网络处理器(Neural-network Processing Unit,NPU)。图2以device 24包括8张NPU进行示例说明。在本申请实施例其他可能的实现方式中,device 24也可以包括更多的加速卡。
然后,参见图3A所示的服务器上部署的软件的框架图,用户可以在服务器20上安装固件302和驱动304。其中,固件302通常是写入只读存储器中的程序,可以直接控制硬件、与硬件交互,并检查硬件是否有任何错误。驱动304具体是添加到操作系统中的一小块代码,其中包含有关硬件的信息。当计算机程序请求与某个硬件交互时,驱动304可以充当硬件与使用它的程序之间指令的转换器。例如,固件302可以控制device 24、与device24交互,并检查device 24是否有任何错误,驱动304可以充当device 24与使用它的程序之间指令的转换器。
进一步地,服务器20的硬件架构采用异构计算架构(包括使用不同类型指令集的计算单元的计算架构)时,用户还可以在服务器20上安装异构计算框架306。在分布式训练场景中,异构计算框架306可以是针对神经网络的异构计算框架(Compute Architecturefor Neuro Net,CANN)。CANN可以通过提供多层次的编程接口,支持用户快速构建AI应用。其中,AI应用是指基于训练得到的模型构建的应用。需要说明的是,异构计算框架306为可选框架,服务器20上不安装上述框架,也可以执行本申请实施例的故障文件保存方法,上述框架的作用在于提高构建AI应用的效率。
然后,用户可以在服务器20上安装深度学习框架308。深度学习框架308用于通过对实现模型的方法进行编译,构建大规模的计算图(computational graph),以及自动实现计算图中的梯度计算。其中,计算图也称作图编译结果。如此,在进行分布式训练时,可以执行图编译结果,以进行分布式训练的相关计算。根据编译方式不同,深度学习框架可以分为支持静态编译的框架和支持动态编译的框架。其中,支持静态编译的框架包括MindSpore框架和Tensorflow框架中的一种或多种,支持动态编译的框架包括PyTorch框架。用户可以根据业务需求,选择在服务器20上安装一个或多个深度学习框架308。在一些实施例中,服务器20上也可以不安装深度学习框架308,此时,服务器20可以采用编程语言如Python从头开始实现模型。
在本申请实施例中,故障文件保存装置310的安装包可以封装在深度学习框架308的安装包内,当用户在服务器20上安装深度学习框架308时,故障文件保存装置310也可以随着深度学习框架308安装在服务器20上。
用户还可以在服务器20上安装调度装置312。该调度装置312用于调度训练任务,以实现分布式训练。其中,调度装置312可以是分布式调度组件或者AI开发平台。在一些实施例中,分布式调度组件可以是MindX DL组件,或者是其他第三方分布式调度组件,AI开发平台可以是Model Arts等开发平台。
在完成上述准备工作后,多个服务器20可以通过投票或选举方式,确定一个服务器20为管理节点100,剩余的服务器20可以作为训练节点200。需要说明的是,当一个或多个训练节点200故障时,管理节点100可以重调度训练任务至新的训练节点200;当管理节点100故障时,剩余的服务器20可以重新投票或选举,确定新的管理节点100。
在一些可能的实现方式中,多个服务器20也可以不进行投票或选举,例如服务器20可以既作为管理节点100,又作为训练节点200。具体地,当一个服务器20作为管理节点100时,该服务器20可以对其他的服务器20进行故障检测,进而实现管理,此外,该服务器20作为训练节点200时,也可以被其他的服务器20检测,并接受其他的服务器20的管理。
接下来,参见图3B所示的软件的调用关系图,故障文件保存装置310包括故障检测(fault detect)组件3102、控制引擎(control engine)3104和修复管理(restoremanager)组件3106。调度装置312(例如MindX DL组件或者第三方分布式调度组件)可以调用上述故障检测组件3102、控制引擎3104和修复管理组件3106,以执行本申请实施例的故障文件保存方法。
具体地,故障检测组件3102可以调用异构计算框架306中的昇腾计算语言(AscendComputing Language,ACL)功能组件,以发现故障。其中,ACL功能组件包括ACL算子编译并执行(aclopCompileAndExecute)和集合通信库,如华为集合通信库(Huawei CollectiveCommunication Library,HCCL)。aclopCompileAndExecute用于编译并执行指定的算子,集合通信库可以为多机多卡训练提供数据并行或模型并行的高性能集合通信方案。控制引擎3104可以调用ACL功能组件,指定保存策略和恢复策略。修复管理组件3106用于调用深度学习框架308和ACL功能组件,以对训练任务进行故障恢复。在该示例中,训练任务为深度学习训练任务,例如是计算机视觉(Computer Vision)、NLP等场景中的深度学习训练任务。
接下来,将从管理节点100的角度,结合附图对本申请实施例提供的故障文件保存方法进行详细说明。
参见图4所示的故障文件保存方法的流程图,该方法包括如下步骤:
S402:管理节点100从多个训练节点200中的至少一个训练节点200获取实时信号。
训练节点200在执行训练任务时可以产生信号。当管理节点100触发信号采集时,从训练节点200实时采集的信号即为实时信号。其中,管理节点100可以设置采集时间窗,管理节点100从训练节点200获取该训练节点200在采集时间窗内的信号,从而获得实时信号。采集时间窗的窗口长度可以根据经验值设置,例如采集时间窗的窗口长度可以设置为5秒。需要说明的是,从管理节点100触发信号采集,到管理节点100开始获取采集时间窗内的信号,往往存在时延,例如,管理节点100在9点0分0秒触发信号采集,在9点0分20秒开始获取采集时间窗内的信号,管理节点100可以在9点0分25秒采集完本轮的信号,即使该信号相对于触发信号采集的时间有所延迟,但该延迟小于设定值,可以忽略不计,因此,该信号也称作实时信号。
实时信号用于表征至少一个训练节点200的状态。该状态可以是训练节点200的健康状态。考虑到多个训练节点200在协同执行训练任务时,可以执行集合通信操作,如HCCLop,产生集群通信信号,实时信号可以包括上述集群通信信号。此外,训练节点200在执行训练任务时,可以执行编译操作(如编译得到计算图,也称作图编译结果)、运行操作(如运行图编译结果),产生编译信号、运行信号。例如,训练节点200可以执行aclopCompileAndExecute,产生编译信号、运行信号,在运行过程中,还可以产生运行管理器信号,如运行时错误(Runtime Error),因此,实时信号也可以包括编译信号、运行信号和运行管理器信号中的一种或多种。
在实际应用时,管理节点100可以提供系统管理库(system management library,SMI)命令工具。例如,训练节点200的device为NPU时,管理节点100可以提供npu-smi命令工具。管理节点100可以执行npu-smi命令工具中的查询命令,如执行ascend-dmi命令,以采集至少一个训练节点200的实时信号。
S404:管理节点100根据实时信号进行故障检测。
管理节点100从训练节点200采集的实时信号可以表征该训练节点200的状态。其中,训练节点200包括host 22和至少一个device 24。不同类型的实时信号可以反映训练节点200中不同硬件的状态。
具体地,host 22可以通过深度学习框架将实现模型的方法编译成计算图,并将计算图下沉至device 24,device 24可以调用ACL功能组件,执行计算图,以进行相关计算,例如在训练图像识别模型时,可以执行对图像的卷积、池化等计算。进一步地,device 24可以计算梯度,并向host 22返回梯度,以便于host 22对多个device 24返回的梯度进行聚合通信,如进行归约(reduce)运算,从而得到平均梯度。基于此,编译信号、聚合通信信号可以反映host 22的状态,运行信号、运行管理器信号可以反映device 24的状态。管理节点100可以基于编译信号或聚合通信信号中的至少一种,确定host 22是否故障,基于运行信号或运行管理器信号中的至少一种确定device 24是否故障,由此实现故障检测。例如,管理节点100可以根据运行管理器信号如runtime error,确定device 24发生故障。
在一些可能的实现方式中,管理节点100还可以对连接训练节点200的网络是否故障进行检测。具体地,管理节点100可以周期性地向训练节点200发送心跳信号,并接收训练节点200对心跳信号的响应,当管理节点100连续N个周期未接收到训练节点200的响应,则表明训练节点200与该管理节点100之间的网络发生故障,或者训练节点200发生故障。当管理节点100结合日志等信息,排除训练节点200发生故障时,可以确定训练节点200与管理节点100之间的网络发生故障。
进一步地,管理节点100自身也可能发生故障。训练节点200可以对管理节点100进行故障检测。具体地,训练节点200可以基于管理节点100的心跳信号对管理节点100进行故障检测,当多个训练节点200在连续N个周期,未接收到来自管理节点100的心跳信号,则该管理节点100发生故障的置信度较高,当置信度大于置信度阈值时,训练节点200可以确定该管理节点100发生故障。训练节点200可以通过投票或选举机制,重新确定管理节点100。
在一些可能的实现方式中,参见图5所示的故障检测的流程图,管理节点100可以先基于故障预警算法进行故障预测。其中,故障预警算法可以是基于先验知识或专家知识库的算法,例如差分整合移动平均自回归(autoregressive integrated moving average,ARIMA)算法、时间序列预测算法Prophet或者时间感知卷积神经网络算法(time-aware CNNalgorithm)。上述故障预警算法可以用于预测训练任务在预设时间段,如未来1小时内是否发生故障。
进一步地,一些故障预警算法还可以预测上述预设时间段中发生故障时的时间点。管理节点100可以根据预测结果,从多个训练节点200中的至少一个训练节点200中获取实时信号,根据该实时信号进行故障检测。
具体地,当预测结果表征将要发生故障,管理节点100可以在故障将要发生的时间点,根据该实时信号进行故障检测。当预测结果表征预设时间段不存在故障时,管理节点100可以启动实时故障检测,具体是捕捉集群通信信号、编译信号、运行信号、运行管理器信号等实时信号,然后基于该实时信号进行故障检测,如此可以避免算法导致的漏检。当管理节点100检测到故障后,可以执行S406,进行故障文件保存。当管理节点100未检测到故障,可以继续进行下一轮的故障检测。
S406:管理节点100进行故障文件保存。
具体地,故障文件为用于恢复训练任务的文件。故障文件保存故障发生时迭代轮次的训练结果。在一些实施例中,故障文件包括以下信息:迭代轮次、权重、损失和超参数。迭代轮次包括故障发生时所在epoch和/或step。超参数可以包括学习率(learning rate,LR)和优化器(optimizer)中的一种或多种。进一步地,故障文件还可以包括隐藏状态hidden states。参见图6所示的故障文件的示意图,本申请实施例通过新增“LR”、“Epoch”、“Step”、“Loss”、“optimizer”等保存字段,可以实现恢复故障发生时所在epoch或step的训练结果。
在一些可能的实现方式中,训练任务可以基于并行策略分为不同类型。例如,训练任务的任务类型可以为数据并行训练类型或模型并行训练类型。其中,数据并行训练类型是利用数据集中的不同数据并行训练相同模型,模型并行训练类型是指利用数据集中的相同数据并行训练模型的多个部分,因此,管理节点100在进行故障文件保存时,可以针对不同任务类型的训练任务,采用不同的保存策略。
具体地,管理节点100可以确定所述训练任务的任务类型,然后按照与所述任务类型对应的保存策略,进行故障文件保存。在一些实施例中,训练任务的任务类型为数据并行训练类型时,由于各加速卡会进行数据交换,以保持数据一致性,因此,保存策略可以为保存至少一个加速卡中任一个非故障卡上的故障文件。在另一些实施例中,所述训练任务的任务类型为模型并行训练类型时,由于各加速卡是对模型的不同部分进行训练,因此,保存策略可以为保存至少一个加速卡中多个非故障卡上的故障文件,例如是保存所有非故障卡上的故障文件。
其中,训练任务的任务类型为数据并行训练类型时,管理节点100还可以进一步确定多个训练节点200中用于聚合通信的目标加速卡是否为非故障卡。其中,目标加速卡可以是多个训练节点200中rank_id为0的加速卡。当目标加速卡为非故障卡时,管理节点100可以保存该目标加速卡上的故障文件,而不必在多个训练节点200进行数据交换保证数据一致性后,再保存故障文件,缩短了保存时间。当多个训练节点200中用于聚合通信的目标加速卡为故障卡时,管理节点100可以保存多个训练节点200中的非故障节点中网络带宽最大的节点(也称作最近的节点)的加速卡上的故障文件,由此可以提高故障文件的保存速率。
在本实施例中,故障文件可以包括checkpoint文件也即ckpt文件。具体地,迭代轮次、权重、损失和超参数等保存字段的字段值可以写入ckpt文件,然后通过保存该ckpt文件以保存故障文件。其中,字段值可以和字段名形成键值对,该键值对可以被写入ckpt文件进行保存。进一步地,由于不同训练任务采用的深度学习框架308可以是不同的,例如,一些训练任务采用的深度学习框架为支持静态编译的框架,基于该框架编译所得的图编译结果可以被复用,管理节点100还可以将图编译结果也进行保存。也即故障文件还可以包括图编译结果。具体实现时,管理节点100可以判断训练任务采用的深度学习框架308。当深度学习框架308为支持静态编译的框架时,管理节点100可以将图编译结果写入故障文件,并进行故障文件保存。其中,支持静态编译的框架包括但不限于MindSpore框架和Tensorflow框架。当深度学习框架308为支持动态编译的框架时,由于图编译结果并不能被复用,管理节点100可以不保存上述图编译结果。其中,支持动态编译的框架包括但不限于pytorch框架。
为了便于理解,下面结合一具体示例说明。
参见图7所示的保存故障文件的流程图,管理节点100检测到训练任务发生故障时,先判断训练任务的任务类型为数据并行训练类型或模型并行训练类型。然后针对不同任务类型,分别采用不同保存策略,具体如下:
当任务类型为模型并行训练类型时,管理节点100可以保存多个非故障卡上的ckpt文件。例如,管理节点100可以保存故障节点和所有非故障节点的非故障卡上的ckpt文件。其中,管理节点100还可以保存策略(strategy)文件,以便基于该策略文件恢复训练任务。
当任务类型为数据并行训练类型时,管理节点100可以进一步判断目标加速卡是否发生故障。具体地,多个训练节点200中的每个训练节点200包括至少一个加速卡,其中,一个加速卡具有聚合通信功能,该加速卡即为目标加速卡(rank_id=0),管理节点100还可以判断上述目标加速卡是否发生故障,也即目标加速卡是否为故障卡。例如,管理节点100可以通过捕获来自于目标加速卡的实时信号,从而判断目标加速卡是否为故障卡。当目标加速卡为非故障卡时,也即rank_id=0的加速卡未发生故障时,管理节点100可以确定保存该目标加速卡上的故障文件,当目标加速卡为故障卡时,管理节点100可以确定非故障节点中网络带宽最大的节点,然后确定保存该网络带宽最大的节点的加速卡上的故障文件。
接着,管理节点100可以判断深度学习框架308是否为支持静态编译的框架。当深度学习框架308为支持静态编译的框架,例如TensorFlow框架或者MindSpore框架时,管理节点100还可以保存图编译结果。故障文件还包括图编译结果。当深度学习框架308为支持动态编译的框架,例如pytorch框架时,管理节点100可以保存ckpt文件。
在一些可能的实现方式中,管理节点100还可以备份故障文件,从而保证故障文件的安全性。例如,管理节点100可以将ckpt文件进行备份,以保证可靠性,避免数据丢失。具体地,管理节点100可以将ckpt文件保存在高性能统一缓存(High-performance UnifiedBuffer,HUB),从而实现可靠性备份。类似地,管理节点100也可以将图编译结果或者策略文件等保存在高性能统一缓存,从而实现可靠性备份。
S408:在故障文件保存完毕后,管理节点100重调度训练任务,加载故障文件。
具体地,管理节点100可以在故障文件保存完毕后,基于该故障文件启动对训练任务的恢复流程。其中,管理节点100可以重调度训练任务至新的训练节点200,新的训练节点不包括发生故障的训练节点200。然后管理节点100通过加载故障文件,例如加载故障发生时迭代轮次的训练结果,如迭代轮次、权重、损失和超参数等,从而使得训练节点200可以从故障发生时的迭代轮次继续进行训练,而无需根据大量样本数据进行重复训练。
其中,管理节点100可以根据训练任务的任务类型确定与该任务类型对应的恢复策略,然后根据所述故障文件,按照该恢复策略,恢复所述训练任务。
在一些可能的实现方式中,任务类型为数据并行训练类型时,恢复策略可以为基于单个ckpt文件进行恢复;任务类型为模型并行训练类型时,恢复策略可以为基于多个ckpt文件(例如是所有非故障卡上的ckpt文件)进行恢复。
进一步地,任务类型为数据并行训练类型的情况下,训练任务所采用的深度学习框架308为支持动态编译的框架,如pytorch框架时,管理节点100可以基于ckpt文件恢复训练任务,训练任务所采用的深度学习框架308为支持静态编译的框架,例如是TensorFlow框架或者MindSpore框架时,管理节点100还可以结合图编译结果进行故障恢复。
具体地,管理节点100可以获取ckpt文件,例如管理节点100可以从HUB获取ckpt文件,然后加载该ckpt文件,从而基于该ckpt文件中的相应字段的字段值恢复续训的数据和模型。例如,管理节点100可以基于ckpt文件中的epoch和step恢复续训的数据,基于ckpt文件中的权重weights、学习率LR、优化器optimizer恢复模型,如此实现恢复训练任务。其中,管理节点100在恢复训练任务时,可以加载策略文件,按照该策略文件恢复训练任务。
需要说明的时,上述S408为本申请实施例的可选步骤,执行本申请实施例的故障文件保存方法也可以不执行S408。例如,管理节点100可以直接将上述故障文件中的权重等用于模型推理。
基于上述内容描述,本申请实施例提供了一种故障文件保存方法。在该方法中,管理节点100基于从训练节点200获取的实时信号,进行实时地故障检测,在检测到故障后,保存训练任务在故障发生时的迭代轮次的训练结果,当训练任务被重调度至新的训练节点200时,新的训练节点200可以基于故障发生时的迭代轮次的训练结果继续训练,无需基于大量样本数据重复训练,提高了训练效率。
下面以NLP领域的pangu_alpha模型为例,从管理节点100的角度,介绍该模型的故障文件保存以及基于故障文件的故障恢复过程。
参见图8所示的故障文件保存及故障恢复方法的信令流程图,该方法包括:
S802:用户触发创建训练任务的操作。
S804:管理节点100中的MindX DL组件调用驱动和接口进行业务面故障检测。当检测到故障后,执行S812。
S806:管理节点100中的fault detect组件通过故障预警算法进行预测,获得预测结果。当预测结果为预设时间段发生故障时,执行S807;当预测结果为预设时间段不发生故障时,执行S808。
S807:管理节点100中的fault detect组件在预测的时间点,通过捕获集群通信信号、编译信号、运行信号、运行管理器信号中的一种或多种,根据捕获的上述信号进行故障检测,获得故障检测结果。
S808:管理节点100中的fault detect组件捕获集群通信信号、编译信号、运行信号、运行管理器信号中的一种或多种,根据捕获的上述信号进行故障检测,获得故障检测结果。当故障检测结果为训练任务发生故障时,执行S810。
S810:管理节点100中的fault detect组件向MindX DL组件上报告警消息。
S812:管理节点100中的MindX DL组件向control engine发送第一通知消息。
该第一通知消息用于通知训练任务发生故障。进一步地,第一通知消息还可以携带训练任务的任务类型,以便于control engine能够感知训练任务的任务类型。
S814:管理节点100中的control engine根据训练任务的任务类型向restoremanager发送保存策略。
S816:管理节点100中的restore manager按照保存策略,保存故障文件。
在该方法中,restore manager可以屏蔽底层深度学习框架308的差异,按照保存策略保存故障文件。例如,restore manager可以获取训练任务发生故障时的epoch和step,并获取模型的权重、超参数,将上述epoch、step、权重、超参数等信息写入ckpt文件进行保存。
其中,训练任务采用支持动态编译的框架时,restore manager还可以按照保存策略,保存图编译结果,以便于restore manager后续结合该图编译结果进行故障恢复。
S818:管理节点100中的restore manager将故障文件写入HUB。
具体地,restore manager可以采用分布式存储方式,将故障文件写入HUB,如此可以实现故障文件的可靠性备份,降低故障文件丢失概率。
需要说明的是,执行本实施例的故障文件保存方法也可以不执行S818。例如,restore manager可以将故障文件在本地进行备份,或者通过其他方式进行备份。
S820:管理节点100中的restore manager向control engine返回备份完成通知。
可选地,restore manager返回备份完成通知,以便于control engine启动后续流程。进一步地,restore manager还可以指示管理节点100中的MindX DL组件重调度训练任务。在一些实施例中,restore manager也可以不执行上述步骤。
S822:管理节点100中的MindX DL组件重调度训练任务。
具体地,MindX DL组件可以基于restore manager的指示,重调度训练任务。在一些实施例中,MindX DL组件也可以通过轮询确定故障文件是否备份完成,当确定故障文件备份完成时,重调度训练任务。
S824:管理节点100中的MindX DL组件向control engine发送第二通知消息。
该第二通知消息用于通知训练任务被MindX DL组件重新调度。进一步地,第二通知消息还可以携带训练任务的任务类型。
需要说明的是,本实施例是以MindX DL组件进行示例说明。在本申请实施例其他可能的实现方式中,管理节点100也可以安装其他类型的分布式调度组件时,该训练任务也可以被其他类型的分布式调度组件所调度。
S826:管理节点100中的control engine指示restore manager进行故障恢复。
具体地,control engine可以向restore manager发送恢复指令,以使restoremanager根据该恢复指令,执行后续流程,恢复训练任务。
S828:管理节点100中的restore manager从HUB获取故障文件。
其中,任务类型为数据并行训练类型时,恢复策略可以是触发单个ckpt文件进行恢复;任务类型为模型并行训练类型时,恢复策略可以为触发多个ckpt文件(例如是保存的所有非故障卡的ckpt文件)进行恢复。管理节点100中的restore manager可以根据任务类型,按需获取ckpt文件。
进一步地,任务类型为数据并行训练类型,且训练任务采用的深度学习框架308为支持静态编译的框架时,管理节点100中的restore manager还可以从HUB中获取图编译结果。
其中,故障文件在本地备份,或者通过其他方式备份时,restore manager也可以从本地或其他位置获取故障文件。
S830:管理节点100中的restore manager根据所述故障文件,恢复所述训练任务。
具体地,故障文件包括ckpt文件,该ckpt文件中写入有epoch、step、weights、loss、optimizer和LR等信息,管理节点100中的restore manager可以加载ckpt文件,并读取ckpt文件中相应字段的字段值,基于该字段值,恢复续训的数据和模型,从而恢复训练任务。
在该方法中,管理节点100可以实现训练任务级别的故障检测,并在检测到训练任务发生故障后进行故障文件保存,该故障文件包括训练任务发生故障时的epoch和/或step,管理节点100基于该epoch和/或step恢复训练任务,可以避免故障发生时所在step或epoch的迭代结果丢失,分布式系统10无需基于大量样本数据重复训练,提高了训练效率。
而且,该方法解耦了深度学习框架308和故障文件保存装置310,针对采用不同深度学习框架308的训练任务,故障文件保存装置310均可以用于对该训练任务进行故障恢复,具有较好的兼容性。此外,该方法还解耦了不同任务类型的保存及恢复机制,用户无需关注任务类型,接口友好,降低了用户的使用成本。
上文结合图1至图8对本申请实施例提供的故障文件保存方法进行了详细介绍,下面将结合附图对本申请实施例提供的装置进行介绍。
参见图9所示的故障文件保存装置310的结构示意图,该装置310可以是软件装置,该软件装置可以部署在管理节点100中,该装置310包括:
通信模块902,用于从所述多个训练节点200中的至少一个训练节点200获取实时信号,所述实时信号用于表征所述至少一个训练节点200的状态;
检测模块904,用于根据所述实时信号进行故障检测;
保存模块906,用于检测到故障后进行故障文件保存,所述故障文件用于恢复所述训练任务。
其中,图9和图3B是从不同角度对故障文件保存装置310进行了划分,例如通信模块902和检测模块904可以对应于图3B中的故障检测组件3102,保存模块906可以对应于图3B中的修复管理组件3106。
在一些可能的实现方式中,所述实时信号包括以下一种或多种:
集群通信信号、编译信号、运行信号、运行管理器信号。
在一些可能的实现方式中,所述装置310还包括:
预测模块908,用于通过故障预警算法对所述训练任务进行故障预测,得到预测结果;
所述检测模块904具体用于:
根据所述预测结果,从所述多个训练节点200中的至少一个训练节点200获取实时信号。
其中,预测模块908和检测模块904可以共同对应于图3B中的故障检测组件3102,以实现对训练节点200(包括host 22和device 24)进行故障检测。
在一些可能的实现方式中,所述保存模块906具体用于:
确定所述训练任务的任务类型;
按照与所述任务类型对应的保存策略,进行故障文件保存。
其中,保存模块906可以对应于图3B中的控制引擎3104和修复管理组件3106,以实现按照保存策略,进行故障文件保存。
在一些可能的实现方式中,所述多个训练节点200中的每个训练节点200包括至少一个加速卡,所述训练任务的任务类型为数据并行训练类型时,所述保存策略为保存所述至少一个加速卡中任一个非故障卡上的故障文件;所述训练任务的任务类型为模型并行训练类型时,所述保存策略为保存所述至少一个加速卡中多个非故障卡上的故障文件。
在一些可能的实现方式中,所述训练任务的任务类型为数据并行训练类型时,所述保存策略为:
当所述多个训练节点200中用于聚合通信的目标加速卡为非故障卡时,保存所述目标加速卡上的故障文件;
当所述多个训练节点200中用于聚合通信的目标加速卡为故障卡时,保存所述多个训练节点200中的非故障节点中网络带宽最大的节点的加速卡上的故障文件。
在一些可能的实现方式中,所述装置310还包括:
恢复模块909,用于在所述故障文件保存完毕后,重调度所述训练任务,加载所述故障文件。
其中,恢复模块902可以对应于图3B中的修复管理组件3106,以实现重调度训练任务至新的训练节点200,并加载故障文件,从而恢复训练任务。
在一些可能的实现方式中,所述恢复模块909具体用于:
根据与所述训练任务的任务类型对应的恢复策略,加载所述故障文件。
在一些可能的实现方式中,所述故障文件包括以下信息:迭代轮次、权重、损失和超参数。
在一些可能的实现方式中,所述故障文件还包括所述训练任务的图编译结果。
根据本申请实施例的故障文件保存装置310可对应于执行本申请实施例中描述的方法,并且故障文件保存装置310的各个模块/单元的上述和其它操作和/或功能分别为了实现图3所示实施例中的各个方法的相应流程,为了简洁,在此不再赘述。
本申请实施例还提供了一种管理节点100。该管理节点100可以是服务器,例如是云服务器或者物理服务器。其中,云服务器是指云环境中的计算设备。云环境指示云服务提供商拥有的,用于提供计算、存储、通信资源的中心计算设备集群。物理服务器具体可以是独立服务器,该物理服务器的配置和性能通常被使用者独享。在一些实施例中,管理节点100也可以是终端,包括但不限于台式机、笔记本电脑或者智能手机。该管理节点100具体用于实现如图9所示实施例中故障文件保存装置310的功能。
图10提供了一种管理节点100的硬件结构图,如图10所示,管理节点100包括总线1001、中央处理器1002、通信接口1003、存储器1004和多个加速卡1005。处理器1002、存储器1004、通信接口1003、加速卡1005之间通过总线1001通信。
总线1001可以是外设部件互连标准(peripheral component interconnect,PCI)总线或扩展工业标准结构(extended industry standard architecture,EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图10中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
中央处理器1002可以为x86架构的CPU,也可以为高级精简指令集机器(AdvancedRISC Machine,ARM)架构的CPU,或者是其他架构的CPU,本实施例对此不作限制。
通信接口1003用于与外部通信。例如,通信接口1003用于从多个训练节点200中的至少一个训练节点200获取实时信号,以及在检测到故障后,获取故障文件进行故障文件保存等等。
存储器1004可以包括易失性存储器(volatile memory),例如随机存取存储器(random access memory,RAM)。存储器1004还可以包括非易失性存储器(non-volatilememory),例如只读存储器(read-only memory,ROM),快闪存储器,硬盘驱动器(hard diskdrive,HDD)或固态驱动器(solid state drive,SSD)。
加速卡1005可以包括NPU或者GPU。上文均以加速卡105包括NPU进行示例说明。需要说明的是,当管理节点100为专用于执行管理功能的节点时,管理节点100也可以不包括上述加速卡1005。
存储器1004中存储有计算机可读指令,处理器1002执行该计算机可读指令,以使得管理节点100执行前述故障文件保存方法(或实现前述故障文件保存装置310的功能)。
具体地,在实现图9所示系统的实施例的情况下,且图9中所描述的故障文件保存装置310的各模块如通信模块902、检测模块904、保存模块906、预测模块908和恢复模块909的功能为通过软件实现的情况下,执行图9中各模块的功能所需的软件或程序代码可以存储在管理节点100中的至少一个存储器1004中。至少一个处理器1002执行存储器1004中存储的程序代码,以使得管理节点100执行前述故障文件保存方法。
本申请实施例还提供了一种计算机可读存储介质。所述计算机可读存储介质可以是计算设备能够存储的任何可用介质或者是包含一个或多个可用介质的数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘)等。该计算机可读存储介质包括指令,所述指令指示管理节点100执行上故障文件保存方法。
本申请实施例还提供了一种计算机程序产品。所述计算机程序产品包括一个或多个计算机指令。在计算设备如管理节点100上加载和执行所述计算机指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算设备或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算设备或数据中心进行传输。所述计算机程序产品可以为一个软件安装包,在需要使用前述故障文件保存方法的任一方法的情况下,可以下载该计算机程序产品并在管理节点100上执行该计算机程序产品。
上述各个附图对应的流程或结构的描述各有侧重,某个流程或结构中没有详述的部分,可以参见其他流程或结构的相关描述。
Claims (21)
1.一种故障文件保存方法,其特征在于,应用于分布式系统,所述分布式系统包括管理节点和多个训练节点,所述多个训练节点用于协同执行训练任务,所述方法包括:
所述管理节点从所述多个训练节点中的至少一个训练节点获取实时信号,所述实时信号用于表征所述至少一个训练节点的状态;
所述管理节点根据所述实时信号进行故障检测;
所述管理节点检测到故障后进行故障文件保存,所述故障文件用于恢复所述训练任务;
所述管理节点进行故障文件保存,包括:
所述管理节点确定所述训练任务的任务类型;
所述管理节点按照与所述任务类型对应的保存策略,进行故障文件保存。
2.根据权利要求1所述的方法,其特征在于,所述实时信号包括以下一种或多种:
集群通信信号、编译信号、运行信号、运行管理器信号。
3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
所述管理节点通过故障预警算法对所述训练任务进行故障预测,得到预测结果;
所述管理节点从所述多个训练节点中的至少一个训练节点获取实时信号,包括:
所述管理节点根据所述预测结果,从所述多个训练节点中的至少一个训练节点获取实时信号。
4.根据权利要求1至3任一项所述的方法,其特征在于,所述多个训练节点中的每个训练节点包括至少一个加速卡,所述训练任务的任务类型为数据并行训练类型时,所述保存策略为保存所述至少一个加速卡中任一个非故障卡上的故障文件;所述训练任务的任务类型为模型并行训练类型时,所述保存策略为保存所述至少一个加速卡中多个非故障卡上的故障文件。
5.根据权利要求4所述的方法,其特征在于,所述训练任务的任务类型为数据并行训练类型时,所述保存所述至少一个加速卡中任一个非故障卡上的故障文件,包括:
当所述多个训练节点中用于聚合通信的目标加速卡为非故障卡时,保存所述目标加速卡上的故障文件;
当所述多个训练节点中用于聚合通信的目标加速卡为故障卡时,保存所述多个训练节点中的非故障节点中网络带宽最大的节点的加速卡上的故障文件。
6.根据权利要求1至5任一项所述的方法,其特征在于,所述方法还包括:
在所述故障文件保存完毕后,所述管理节点重调度所述训练任务,加载所述故障文件。
7.根据权利要求6所述的方法,其特征在于,所述管理节点加载所述故障文件,包括:
所述管理节点根据与所述训练任务的任务类型对应的恢复策略,加载所述故障文件。
8.根据权利要求1至7任一项所述的方法,其特征在于,所述故障文件包括以下信息:迭代轮次、权重、损失和超参数。
9.根据权利要求8所述的方法,其特征在于,所述故障文件还包括所述训练任务的图编译结果。
10.一种故障文件保存装置,其特征在于,应用于分布式系统,所述分布式系统包括管理节点和多个训练节点,所述多个训练节点用于协同执行训练任务,所述装置部署于所述管理节点,所述装置包括:
通信模块,用于从所述多个训练节点中的至少一个训练节点获取实时信号,所述实时信号用于表征所述至少一个训练节点的状态;
检测模块,用于根据所述实时信号进行故障检测;
保存模块,用于检测到故障后进行故障文件保存,所述故障文件用于恢复所述训练任务;
所述保存模块具体用于:
确定所述训练任务的任务类型;
按照与所述任务类型对应的保存策略,进行故障文件保存。
11.根据权利要求10所述的装置,其特征在于,所述实时信号包括以下一种或多种:
集群通信信号、编译信号、运行信号、运行管理器信号。
12.根据权利要求10或11所述的装置,其特征在于,所述装置还包括:
预测模块,用于通过故障预警算法对所述训练任务进行故障预测,得到预测结果;
所述检测模块具体用于:
根据所述预测结果,从所述多个训练节点中的至少一个训练节点获取实时信号。
13.根据权利要求10至12任一项所述的装置,其特征在于,所述多个训练节点中的每个训练节点包括至少一个加速卡,所述训练任务的任务类型为数据并行训练类型时,所述保存策略为保存所述至少一个加速卡中任一个非故障卡上的故障文件;所述训练任务的任务类型为模型并行训练类型时,所述保存策略为保存所述至少一个加速卡中多个非故障卡上的故障文件。
14.根据权利要求13所述的装置,其特征在于,所述训练任务的任务类型为数据并行训练类型时,所述保存策略为:
当所述多个训练节点中用于聚合通信的目标加速卡为非故障卡时,保存所述目标加速卡上的故障文件;
当所述多个训练节点中用于聚合通信的目标加速卡为故障卡时,保存所述多个训练节点中的非故障节点中网络带宽最大的节点的加速卡上的故障文件。
15.根据权利要求10至14任一项所述的装置,其特征在于,所述装置还包括:
恢复模块,用于在所述故障文件保存完毕后,重调度所述训练任务,加载所述故障文件。
16.根据权利要求15所述的装置,其特征在于,所述恢复模块具体用于:
根据与所述训练任务的任务类型对应的恢复策略,加载所述故障文件。
17.根据权利要求10至16任一项所述的装置,其特征在于,所述故障文件包括以下信息:迭代轮次、权重、损失和超参数。
18.根据权利要求17所述的装置,其特征在于,所述故障文件还包括所述训练任务的图编译结果。
19.一种管理节点,其特征在于,应用于分布式系统,所述分布式系统包括所述管理节点和多个训练节点,所述多个训练节点用于协同执行训练任务,所述管理节点包括至少一个处理器和至少一个存储器,所述至少一个存储器中存储有计算机可读指令,所述至少一个处理器执行所述计算机可读指令,使得所述管理节点执行如权利要求1至10任一项所述的方法。
20.一种分布式系统,其特征在于,所述分布式系统包括管理节点和多个训练节点;
所述多个训练节点,用于协同执行训练任务;
所述管理节点,用于从所述多个训练节点中的至少一个训练节点获取实时信号,所述实时信号用于表征所述至少一个训练节点的状态,根据所述实时信号进行故障检测,检测到故障后进行故障文件保存,所述故障文件用于恢复所述训练任务。
21.一种计算机可读存储介质,其特征在于,包括计算机可读指令,当所述计算机可读指令在管理节点上运行时,使得所述管理节点执行如权利要求1至9任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210197961.0A CN114968947B (zh) | 2022-03-01 | 2022-03-01 | 一种故障文件保存方法及相关装置 |
PCT/CN2023/078980 WO2023165512A1 (zh) | 2022-03-01 | 2023-03-01 | 一种故障文件保存方法及相关装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210197961.0A CN114968947B (zh) | 2022-03-01 | 2022-03-01 | 一种故障文件保存方法及相关装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114968947A CN114968947A (zh) | 2022-08-30 |
CN114968947B true CN114968947B (zh) | 2023-05-09 |
Family
ID=82976197
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210197961.0A Active CN114968947B (zh) | 2022-03-01 | 2022-03-01 | 一种故障文件保存方法及相关装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN114968947B (zh) |
WO (1) | WO2023165512A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114968947B (zh) * | 2022-03-01 | 2023-05-09 | 华为技术有限公司 | 一种故障文件保存方法及相关装置 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105095008B (zh) * | 2015-08-25 | 2018-04-17 | 国电南瑞科技股份有限公司 | 一种适用于集群系统的分布式任务故障冗余方法 |
CN105515847A (zh) * | 2015-12-02 | 2016-04-20 | 深圳Tcl数字技术有限公司 | 终端故障处理方法、装置及系统 |
US11003992B2 (en) * | 2017-10-16 | 2021-05-11 | Facebook, Inc. | Distributed training and prediction using elastic resources |
CN107909035B (zh) * | 2017-11-16 | 2021-05-28 | 国家电网公司 | 一种准实时故障录波文件的读取及分析系统 |
CN111679953B (zh) * | 2020-06-09 | 2022-04-12 | 平安科技(深圳)有限公司 | 基于人工智能的故障节点识别方法、装置、设备和介质 |
CN113505014B (zh) * | 2021-06-09 | 2022-05-27 | 荣耀终端有限公司 | 一种故障诊断文件获取方法及装置 |
CN113569987A (zh) * | 2021-08-19 | 2021-10-29 | 北京沃东天骏信息技术有限公司 | 模型训练方法和装置 |
CN114968947B (zh) * | 2022-03-01 | 2023-05-09 | 华为技术有限公司 | 一种故障文件保存方法及相关装置 |
-
2022
- 2022-03-01 CN CN202210197961.0A patent/CN114968947B/zh active Active
-
2023
- 2023-03-01 WO PCT/CN2023/078980 patent/WO2023165512A1/zh unknown
Also Published As
Publication number | Publication date |
---|---|
CN114968947A (zh) | 2022-08-30 |
WO2023165512A1 (zh) | 2023-09-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9542296B1 (en) | Disk replacement using a predictive statistical model | |
US10152382B2 (en) | Method and system for monitoring virtual machine cluster | |
US11210185B2 (en) | Method and system for data recovery in a data system | |
CN107016480B (zh) | 任务调度方法、装置及系统 | |
US11368506B2 (en) | Fault handling for computer nodes in stream computing system | |
US10073739B2 (en) | Methods, apparatus and system for selective duplication of subtasks | |
US20140280766A1 (en) | Method and System for Event State Management in Stream Processing | |
US20180246751A1 (en) | Techniques to select virtual machines for migration | |
CN107735767B (zh) | 用于虚拟机迁移的装置和方法 | |
US9535754B1 (en) | Dynamic provisioning of computing resources | |
CN103201724A (zh) | 在高可用性虚拟机环境中提供高可用性应用程序 | |
Zhao et al. | Exploring reliability of exascale systems through simulations. | |
US9229839B2 (en) | Implementing rate controls to limit timeout-based faults | |
EP3304450A1 (en) | Automated network control | |
Bilal et al. | Fault tolerance in the cloud | |
CN111682981B (zh) | 一种基于云平台性能的检查点间隔设置方法及装置 | |
US10255124B1 (en) | Determining abnormal conditions of host state from log files through Markov modeling | |
Bai et al. | Analyzing software rejuvenation techniques in a virtualized system: Service provider and user views | |
WO2023165512A1 (zh) | 一种故障文件保存方法及相关装置 | |
CN103235754B (zh) | 分布式文件系统中请求的处理方法和装置 | |
US12019520B2 (en) | Electronic device and method with on-demand accelerator checkpointing | |
Alonso et al. | Predicting web server crashes: A case study in comparing prediction algorithms | |
CN112580816A (zh) | 机器学习训练资源管理 | |
CN111274111A (zh) | 一种用于微服务老化的预测与抗衰方法 | |
US20220019461A1 (en) | Platform health engine in infrastructure processing unit |
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 |