在 Azure ML sdk v2 中“从内部”取消当前管道作业

问题描述 投票:0回答:1

我正在将 sdk v1 机器学习管道移植到 SDK v2。我们有一个步骤,在某些条件下,取消整个管道作业(即其他步骤不会运行)。它的代码是这样的:

from azureml.core import Run
from azureml.pipeline.core import PipelineRun

run = Run.get_context()
ws = run.experiment.workspace
pipeline_run = PipelineRun(run.experiment, run.parent.id)
if condition:
    pipeline_run.cancel()

我找不到使用 Python SDK v2 执行类似操作的方法。我不想混合 v1 和 v2 代码。我怎样才能做到呢?有什么想法吗?

python azure azure-machine-learning-service azureml-python-sdk azure-ml-pipelines
1个回答
0
投票

以下是如何使用 sdk v2 取消作业。

首先使用下面的代码创建一个客户端对象。

from azure.identity import DefaultAzureCredential, InteractiveBrowserCredential
from azure.ai.ml import MLClient

try:
    credential = DefaultAzureCredential()
    # Check if given credential can get token successfully.
    credential.get_token("https://management.azure.com/.default")
except Exception as ex:
    # Fall back to InteractiveBrowserCredential in case DefaultAzureCredential not work
    credential = InteractiveBrowserCredential()


ml_client = MLClient(
    credential, subscription_id, resource_group, workspace
)

接下来,取消作业。

ml_client.jobs.begin_cancel(<pipeline_job.name or run_id>)

您可以在提交作业后从对象返回中获取作业名称,如下所示

pipeline_job = ml_client.jobs.create_or_update(
    pipeline_job, experiment_name="today"
)
pipeline_job.name

enter image description here

在门户中

enter image description here

输出:

enter image description here

不会立即取消,稍后取消请求成功后会进入

Inprogress
状态。

© www.soinside.com 2019 - 2024. All rights reserved.