gpt4 book ai didi

azure - 检索 Azure ML v2 的当前作业

转载 作者:行者123 更新时间:2023-12-02 06:16:33 30 4
gpt4 key购买 nike

使用 v2 Azure ML Python SDK (azure-ai-ml) 如何获取当前正在运行的作业的实例?

在 v1 (azureml-core) 中我会这样做:

from azureml.core import Run

run = Run.get_context()
if isinstance(run, Run):
print("Running on compute...")

v2 SDK 上的等效项是什么?

最佳答案

v2 中的内容比 v1 中涉及的内容更多一些。原因是 v2 明确区分了控制平面(启动/停止作业、部署计算等)和数据平面(运行数据科学代码、从存储加载数据等)。

作业可以执行控制平面操作,但它们需要使用用户明确分配给作业的正确身份来执行此操作。

首先让我向您展示如何执行此操作的代码。此脚本创建一个 MLClient,然后使用该客户端连接到服务,以检索作业的元数据,并从中提取提交作业的用户的名称:

# control_plane.py
from azure.ai.ml import MLClient
from azure.ai.ml.identity import AzureMLOnBehalfOfCredential
import os

def get_ml_client():
uri = os.environ["MLFLOW_TRACKING_URI"]
uri_segments = uri.split("/")
subscription_id = uri_segments[uri_segments.index("subscriptions") + 1]
resource_group_name = uri_segments[uri_segments.index("resourceGroups") + 1]
workspace_name = uri_segments[uri_segments.index("workspaces") + 1]
credential = AzureMLOnBehalfOfCredential()
client = MLClient(
credential=credential,
subscription_id=subscription_id,
resource_group_name=resource_group_name,
workspace_name=workspace_name,
)
return client

ml_client = get_ml_client()
this_job = ml_client.jobs.get(os.environ["MLFLOW_RUN_ID"])
print("This job was created by:", this_job.creation_context.created_by)

如您所见,代码使用了特殊的 AzureMLOnBehalfOfCredential创建 MLClient。您在本地使用的选项( AzureCliCredentialInteractiveBrowserCredential )不适用于远程作业,因为您未通过 az login 进行身份验证。或通过远程运行上的浏览器提示。为了使您的凭据在远程作业上可用,您需要使用 user_identity 运行该作业。并且您需要使用AzureMLOnBehalfOfCredential从环境中检索相应的凭证。类。

那么,如何使用 user_identity 运行作业?下面是实现它的 yaml:

$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
type: command
command: |
pip install azure-ai-ml
python control_plane.py
code: code
environment:
image: library/python:latest
compute: azureml:cpu-cluster
identity:
type: user_identity

注意 identity部分在底部。另请注意,我很懒,安装 azureml-ai-ml sdk 作为工作的一部分。在实际设置中,我当然会创建一个安装了该软件包的环境。

以下是身份类型的有效设置:

  • aml_token :这是默认设置,不允许您访问控制平面
  • managedmanaged_identity :这意味着作业将在给定的托管身份(也称为计算身份)下运行。这可以在您的工作中通过 azure.identity.ManagedIdentityCredential 访问。当然,您需要为所选的计算身份提供访问工作区的权限,以便能够读取作业信息。
  • user_identity :这将以提交用户的身份运行作业。它与 azure.ai.ml.identity.AzureMLOnBehalfOfCredential 一起使用凭据如上所示。

因此,对于您的用例,您有 2 个选择:

  1. 您可以使用 user_identity 运行该作业并使用 AzureMLOnBehalfOfCredential用于创建 MLClient 的类
  2. 您可以使用托管身份创建计算,并授予其访问工作区的权限,然后使用 managed_identity 运行作业。并使用 ManagedIdentityCredential用于创建 MLClient 的类

关于azure - 检索 Azure ML v2 的当前作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74717490/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com