Поделиться через


PipelineParameter Класс

Определяет параметр в выполнении конвейера.

Объекты PipelineParameter позволяют создавать универсальные конвейеры, которые можно повторно отправить позже, используя различные значения параметров.

Инициализация параметров конвейера.

Наследование
builtins.object
PipelineParameter

Конструктор

PipelineParameter(name, default_value)

Параметры

Имя Описание
name
Обязательно
str

Имя параметра конвейера.

default_value
Обязательно

Значение по умолчанию имени параметра конвейера.

name
Обязательно
str

Имя параметра конвейера.

default_value
Обязательно

Значение по умолчанию имени параметра конвейера.

Комментарии

Объекты PipelineParameter можно добавить в любой этап при создании Конвейера. При повторной отправке конвейера можно указать значения этих параметров.

Пример добавления PipelineParameter в этап выглядит следующим образом:


   from azureml.pipeline.steps import PythonScriptStep
   from azureml.pipeline.core import PipelineParameter

   pipeline_param = PipelineParameter(name="pipeline_arg", default_value="default_val")
   train_step = PythonScriptStep(script_name="train.py",
                                 arguments=["--param1", pipeline_param],
                                 target=compute_target,
                                 source_directory=project_folder)

В этом примере в аргументы PythonScriptStep был добавлен объект PipelineParameter с именем pipeline_arg. При выполнении скрипта Python значение PipelineParameter будет предоставлено через аргументы командной строки. Этот объект PipelineParameter можно также добавить в другие этапы в конвейере, чтобы передать общие значения в несколько этапов конвейера. Для конвейеров можно указать несколько объектов PipelineParameter.

Отправить этот конвейер и указать значение для объекта PipelineParameter с именем pipeline_arg можно следующим образом:


   pipeline = Pipeline(workspace=ws, steps=[train_step])
   pipeline_run = Experiment(ws, 'train').submit(pipeline, pipeline_parameters={"pipeline_arg": "test_value"})

Примечание. Если параметр pipeline_arg не указан в словаре pipeline_parameters, используется значение по умолчанию PipelineParameter, предоставляемое при создании конвейера (в данном случае значение по умолчанию — default_val).

Многострочные параметры нельзя использовать в качестве объектов PipelineParameter.

Объекты PipelineParameter можно также использовать с DataPath и DataPathComputeBinding для указания входных данных этапа. Это позволяет запускать конвейер с различными входными данными.

Ниже приведен пример использования пути к данным (DataPath) с объектами PipelineParameter:


   from azureml.core.datastore import Datastore
   from azureml.data.datapath import DataPath, DataPathComputeBinding
   from azureml.pipeline.steps import PythonScriptStep
   from azureml.pipeline.core import PipelineParameter

   datastore = Datastore(workspace=workspace, name="workspaceblobstore")
   datapath = DataPath(datastore=datastore, path_on_datastore='input_data')
   data_path_pipeline_param = (PipelineParameter(name="input_data", default_value=datapath),
                               DataPathComputeBinding(mode='mount'))

   train_step = PythonScriptStep(script_name="train.py",
                                 arguments=["--input", data_path_pipeline_param],
                                 inputs=[data_path_pipeline_param],
                                 compute_target=compute_target,
                                 source_directory=project_folder)

В этом случае значение по умолчанию параметра input_data ссылается на файл input_data, хранящийся в workspaceblobstore. Если конвейер отправляется без указания значения для этого объекта PipelineParameter, то используется значение по умолчанию. Вот как можно отправить этот конвейер и указать значение для объекта PipelineParameter с именем input_data:


   from azureml.pipeline.core import Pipeline
   from azureml.data.datapath import DataPath

   pipeline = Pipeline(workspace=ws, steps=[train_step])
   new_data_path = DataPath(datastore=datastore, path_on_datastore='new_input_data')
   pipeline_run = experiment.submit(pipeline,
                                    pipeline_parameters={"input_data": new_data_path})