我正在将 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 代码。我怎样才能做到呢?有什么想法吗?
以下是如何使用 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
或
在门户中
输出:
不会立即取消,稍后取消请求成功后会进入
Inprogress
状态。