Как использовать среду в конвейере ML Azure - PullRequest
2 голосов
/ 03 марта 2020

Фон

Я создал среду ML Workspace из conda environment.yml плюс некоторые docker config и переменные среды. Я могу получить к нему доступ из 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 Ответ

2 голосов
/ 03 марта 2020

Вы почти у цели, но вам нужно использовать RunConfiguration вместо ScriptRunConfig. Подробнее здесь

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...