Elastic-Agent(断点续训相关接口)

Note

  • Elastic Agent组件已经日落,相关资料将于2026年12月30日的版本删除。
  • 内部接口严禁调用。

mindx_elastic.__version__

获取Elastic Agent版本号。

输入值:空

返回值:Elastic Agent版本号

使用样例如下:

import mindx_elastic
mindx_elastic.__version__

mindx_elastic.api.patch_torch_methods(内部接口,严禁调用)

功能说明

在构建训练镜像安装Elastic Agent时,使用sed -i '/import os/i import mindx_elastic.api' $(pip3.7 show torch | grep Location | awk -F ' ' '{print $2}')/torch/distributed/run.py命令后,Elastic Agent组件会在导入Torch的Elastic模块时执行mindx_elastic.api.patch_torch_methods接口,使patch自动生效。

Elastic Agent组件会对torch.distributed.elastic.agent.server.api.SimpleElasticAgent._invoke_run、torch.distributed.launcher.api.launch_agent、torch.distributed.elastic.agent.server.api.SimpleElasticAgent._initialize_workers等方法打patch,额外提供昇腾NPU设备的故障检测与恢复功能。

mindx_elastic.recover_manager.DLRecoverManager(内部接口,严禁调用)

DLRecoverManager类提供进程级恢复和进程级在线恢复相关接口。客户端以Python包形式import到客户端代码中。

Note

DLRecoverManager类提供的接口可能抛出Exception异常,调用方自行捕获异常、处理异常。

__init__(self, info: pb.ClientInfo, server_addr: str, secure_conn: bool = True, cert_path: str = "")

构造DLRecoverManager,用于后续的通信。

表 1 参数说明

参数 类型 说明
info pb.ClientInfo

info.ip:str类型,客户端IP(暂未使用,预留)。

info.port:str类型,客户端端口(暂未使用,预留)。

info.taskId:str类型,任务ID。

info.role:str类型,客户端角色。

server_addr str 服务端地址

register(self, request: pb.ClientInfo) -> pb.Status

注册客户端,服务端为request指定的任务做恢复前的初始化操作。

表 2 参数说明

参数 类型 说明
request pb.ClientInfo

request.ip:str类型,客户端IP(暂未使用,预留)。

request.port:str类型,客户端端口(暂未使用,预留)。

request.taskId:str类型,任务ID。

request.role:str类型,客户端角色。

表 3 返回值说明

返回值类型 说明
Status

Status.info:str类型,返回信息描述

Status.code:int类型,0表示成功,其他值表示失败。关于返回码的详细说明请参见返回码说明

start_subscribe(self)

客户端和服务端建立gRPC长链接,服务端将通过该长链接与客户端单向通信。比如发生故障时,服务端给客户端发送停止训练、全局故障rank信息等。

init_clusterd(self)

客户端初始化ClusterD服务端状态,保证后续任务正常注册、建立链接。

report_stop_complete(code: int, msg: str, fault_ranks: dict) -> int

客户端给服务端上报任务的进程停止完成。一般是在客户端收到服务端的停止训练信号后,客户端停止训练任务的进程,然后给服务端上报任务的进程停止完成。

表 1 参数说明

参数 类型 说明
code int 状态码
msg str 返回信息
fault_ranks dict 故障进程Rank

表 2 返回值说明

返回值类型 说明
int 0表示成功,其他返回值表示失败。关于返回码的详细说明请参见返回码说明

report_recover_strategy(fault_ranks: dict, strategy_list: list) -> int

客户端给服务端上报客户端支持的恢复策略,供服务端选择最佳恢复策略,服务端再通过start_subscribe构建的长链接下发给客户端。

表 1 参数说明

参数 类型 说明
fault_ranks dict 故障进程Rank
strategy_list list 恢复策略列表

表 2 返回值说明

返回值类型 说明
int 0表示成功,其他返回值表示失败。关于返回码的详细说明请参见返回码说明

report_recover_status(code: int, msg: str, fault_ranks: dict, strategy: str) -> int

客户端给服务端上报任务恢复状态。

表 1 参数说明

参数 类型 说明
code int类型 状态码
msg str 返回信息
fault_ranks dict 故障进程Rank
strategy str 修复策略

表 2 返回值说明

返回值类型 说明
int 0表示成功,其他返回值表示失败。关于返回码的详细说明请参见返回码说明

report_process_fault(fault_ranks: dict) -> int

客户端上报任务进程业务面故障。客户端先发现故障时,给服务端上报业务面故障所在的rank的信息。

表 1 参数说明

参数 类型 说明
fault_ranks dict 故障进程Rank

表 2 返回值说明

返回值类型 说明
int 0表示成功,其他返回值表示失败。关于返回码的详细说明请参见返回码说明

返回码说明

Elastic-Agent返回码如表1所示。

表 1 Elastic-Agent返回码

返回码 含义
OK 0 接口调用正常。
UnRegistry 400 Job ID未注册。
OrderMix 401 请求不符合状态机顺序。
JobNotExist 402 Job ID不存在。
ProcessRescheduleOff 403 未打开进程级恢复开关。
ProcessNotReady 404 训练进程未拉起。
RecoverableRetryError 405 恢复失败,失败原因为clean device失败。
UnRecoverableRetryError 406 恢复失败,失败原因为stop device失败。
DumpError 407 临终遗言保存失败。
UnInit 408 未调用初始化。
ClientError 499 其他失败原因。
OutOfMaxServeJobs 500 超过最大服务任务数。
OperateConfigMapError 501 操作ConfigMap失败。
OperatePodGroupError 502 操作PodGroup失败。
ScheduleTimeout 503 Pod调度超时。
SignalQueueBusy 504 控制信号入队失败。
EventQueueBusy 505 状态机事件入队失败。
ControllerEventCancel 506 状态机已退出。
WaitReportTimeout 507 等待客户端调用接口超时。
WaitPlatStrategyTimeout 508 等待AI平台准备恢复策略超时。
WriteConfirmFaultOrWaitPlatResultFault 509 AI平台故障信息错误。
ServerInnerError 599 服务端内部错误。