如何在 ML Azure Pipeline 中使用环境

Posted

技术标签:

【中文标题】如何在 ML Azure Pipeline 中使用环境【英文标题】:How do I use an environment in an ML Azure Pipeline 【发布时间】:2020-06-15 18:50:38 【问题描述】:

背景

我从 conda environment.yml 加上一些 docker 配置和环境变量创建了一个 ML Workspace 环境。我可以从 Python 笔记本中访问它:

env = Environment.get(workspace=ws, name='my-environment', version='1')

我可以成功地使用它来运行 Python 脚本作为实验,即

runconfig = ScriptRunConfig(source_directory='script/', script='my-script.py', arguments=script_params)
runconfig.run_config.target = compute_target
runconfig.run_config.environment = env
run = exp.submit(runconfig)

问题

我现在想将这个相同的脚本作为管道运行,这样我就可以使用不同的参数触发多次运行。我创建了如下管道:

pipeline_step = PythonScriptStep(
    source_directory='script', script_name='my-script.py',
    arguments=['-a', param1, '-b', param2],
    compute_target=compute_target,
    runconfig=runconfig
)
steps = [pipeline_step]
pipeline = Pipeline(workspace=ws, steps=steps)
pipeline.validate()

当我尝试运行管道时:

pipeline_run = Experiment(ws, 'my_pipeline_run').submit(
    pipeline, pipeline_parameters=...
)

我收到以下错误:Response status code does not indicate success: 400 (Conda dependencies were not specified. Please make sure that all conda dependencies were specified i).

当我在 Azure 门户中查看管道运行时,似乎环境没有被拾取:我的 conda 依赖项都没有配置,因此代码没有运行。我做错了什么?

【问题讨论】:

【参考方案1】:

您快到了,但您需要使用RunConfiguration 而不是ScriptRunConfig。更多信息here

from azureml.core.runconfig import RunConfiguration

env = Environment.get(workspace=ws, name='my-environment', version='1')
# create a new runconfig object
runconfig = RunConfiguration()
runconfig.environment = env

pipeline_step = PythonScriptStep(
    source_directory='script', script_name='my-script.py',
    arguments=['-a', param1, '-b', param2],
    compute_target=compute_target,
    runconfig=runconfig
)

pipeline = Pipeline(workspace=ws, steps=[pipeline_step])

pipeline_run = Experiment(ws, 'my_pipeline_run').submit(pipeline)

【讨论】:

以上是关于如何在 ML Azure Pipeline 中使用环境的主要内容,如果未能解决你的问题,请参考以下文章

Azure ML Studio ML Pipeline - 异常:未找到临时文件

在群集上运行网格搜索 CV 时 Azure ML Pipeline 失败

如何从 Azure ML 管道脚本步骤注册模型

Azure Devops Pipeline YAML 中的 Git 标记名称

如何加载保存的 KMeans 模型(在 ML Pipeline 中)?

如何在 Azure Pipeline 上使用 Terraform 将文件上传到 Azure 存储?