Azure Machine Learning pipeline任务失败时如何配置自动重试机制?
Azure Machine Learning Pipeline 任务失败原生重试配置方案
Azure ML Pipeline 本身内置了单步骤失败重试能力,无需依赖Logic App等外部组件,针对你使用PythonScriptStep的v1 SDK场景,以及后续可能用到的v2 SDK场景,配置方式分别如下:
SDK v1(PythonScriptStep 适用)
重试规则绑定在步骤对应的RunConfiguration对象中,配置示例如下:
from azureml.core.runconfig import RunConfiguration from azureml.pipeline.steps import PythonScriptStep # 初始化运行配置对象 run_config = RunConfiguration() # 定义重试策略 run_config.retry_policy = { "max_retries": 3, # 自定义最多重试次数 "retry_on": ["timeout", "service_error", "resource_exhausted"] } # 将带重试规则的配置传入PythonScriptStep your_step = PythonScriptStep( name="你的脚本步骤名称", script_name="你的脚本文件.py", source_directory="./你的脚本目录", runconfig=run_config, # 核心:传入重试配置 compute_target=你的计算集群对象 )
retry_on支持的触发重试的错误类型说明:
timeout:步骤运行超时触发重试service_error:网络波动、Azure ML服务端异常等非代码问题触发resource_exhausted:内存不足、计算资源配额不够等资源类问题触发- 如需所有非用户代码错误都触发重试,可直接设置为
["all_transient"]
SDK v2(升级后通用组件适用)
如果后续升级到Azure ML v2 SDK,重试参数可以直接在任务定义中配置:
from azure.ai.ml import command your_step = command( name="你的命令步骤名称", code="./你的脚本目录", command="python 你的脚本文件.py", compute=你的计算集群名称, retry=3, # 最多重试次数 retry_on=["timeout", "service_error"] )
注意事项
- 重试仅针对失败的单步骤执行,不会重新运行整个Pipeline中已经执行成功的其他步骤
- 如果你的步骤包含写入外部数据库、对象存储的操作,建议自行实现幂等逻辑,避免重试导致重复写入数据异常
- 重试间隔采用Azure ML默认的指数退避策略,无需手动配置间隔时间
内容的提问来源于stack exchange,提问作者GRW
相关产品推荐
相关产品推荐

