0

我正在尝试使用 Python SDK 在 Azure ML 上设置 ML 管道。我已经编写了从 DockerFile 创建自定义环境的脚本,如下所示

from azureml.core import Environment
from azureml.core.environment import ImageBuildDetails
from other_modules import workspace, env_name, dockerfile

custom_env : Environment = Environment.from_dockerfile(name=env_name, dockerfile=dockerfile)
                      
custom_env.register(workspace=workspace)

build : ImageBuildDetails = custom_env.build(workspace=workspace)

build.wait_for_completion()

但是,ImageBuildDetails该方法返回的对象build在执行最后一行时总是超时wait_for_completion(),......可能是由于我无法更改的网络限制。

那么,我怎样才能通过 SDK 以一种不完全依赖于返回ImageBuildDetails对象的方式检查构建状态呢?

4

1 回答 1

0

我的第一个建议是使用:

build.wait_for_completion(show_output=True)

这将帮助您更好地调试而不是假设您有网络问题,因为图像可能需要很长时间才能构建,并且根据我创建环境的经验,您很可能遇到与 Dockerfile 相关的问题。

一个不错的替代选择是在本地构建您的 docker 映像,并可选择将其推送到与工作区关联的容器注册表:

from azureml.core import Environment
myenv = Environment(name="myenv")
registered_env = myenv.register(workspace)
registered_env.build_local(workspace, useDocker=True, pushImageToWorkspaceAcr=True)

然而,另一种首选方法是从环境规范 YAML 文件创建环境对象:

from_conda_specification(name, file_path)

https://docs.microsoft.com/en-us/azure/machine-learning/how-to-use-environments#use-conda-dependencies-or-pip-requirements-files

这应该返回Environmentand 以验证它是否已创建:

for name,env in ws.environments.items():
    print("Name {} \t version {}".format(name,env.version))

restored_environment = Environment.get(workspace=ws,name="myenv",version="1")

print("Attributes of restored environment")
restored_environment

于 2022-01-07T12:01:56.490 回答