PipelineData Класс

Представляет промежуточные данные в конвейере Машинного обучения Azure.

Данные, применяемые в конвейере, могут создаваться на одном этапе и использоваться на другом за счет предоставления объекта PipelineData в качестве выходных данных одного этапа и входных данных для одного или нескольких последующих этапов.

Примечание. Если вы используете данные конвейера, убедитесь, что используемый каталог существовал.

Пример Python для проверки существования каталога: предположим, у вас есть порт вывода с именем output_folder на одном этапе конвейера и в этой папке необходимо записать данные в относительный путь.


   import os
   os.makedirs(args.output_folder, exist_ok=True)
   f = open(args.output_folder + '/relative_path/file_name', 'w+')

PipelineData использует базовый объект DataReference, который больше не рекомендуется задействовать для обеспечения доступа к данным и их доставки. Вместо этого используйте OutputFileDatasetConfig. Пример можно найти здесь: Конвейер, использующий OutputFileDatasetConfig.

Инициализация PipelineData.

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

Конструктор

PipelineData(name, datastore=None, output_name=None, output_mode='mount', output_path_on_compute=None, output_overwrite=None, data_type=None, is_directory=None, pipeline_output_name=None, training_output=None)

Параметры

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

Имя объекта PipelineData, которое может содержать только буквы, цифры и символы подчеркивания.

Имена PipelineData используются для обнаружения выходных данных этапа. После завершения выполнения конвейера можно использовать имя этапа с именем выходных данных для доступа к определенным выходным данным. Имена должны быть уникальными в пределах одного этапа в конвейере.

datastore

Хранилище данных, в котором будет размещаться PipelineData. Если не задано, используется хранилище данных по умолчанию.

значение по умолчанию: None
output_name
str

При значении None используется имя выходных данных. Может содержать только буквы, цифры и символы подчеркивания.

значение по умолчанию: None
output_mode
str

Указывает, будет ли этап создания использовать для доступа к данным метод "отправка" или "подключение".

значение по умолчанию: mount
output_path_on_compute
str

Для output_mode = "upload" (отправка), этот параметр представляет путь, в который модуль записывает выходные данные.

значение по умолчанию: None
output_overwrite

Для output_mode = "upload" (отправка), этот параметр указывает, следует ли перезаписывать существующие данные.

значение по умолчанию: None
data_type
str

Необязательный элемент. Тип данных можно использовать для указания ожидаемого типа выходных данных, а также для детализации способа использования данных соответствующими этапами. Это может быть любая определяемая пользователем строка.

значение по умолчанию: None
is_directory

Указывает, являются ли данные каталогом или отдельным файлом. Применяется только для определения типа данных, используемых серверной частью Azure ML, если параметр data_type не указан. Значение по умолчанию — False.

значение по умолчанию: None
pipeline_output_name

Если он указан, выходные данные будут доступны с помощью PipelineRun.get_pipeline_output(). Имена выходных данных конвейера должны быть уникальными в рамках конвейера.

значение по умолчанию: None
training_output

Определяет выходные данные для результатов обучения. Это необходимо только для конкретных видов обучения с различными типами выходных данных, таким как метрики и модели. Например, результат AutoMLStep — создание метрик и модели. Можно также определить конкретную итерацию или метрику обучения, используемую для получения оптимальной модели. Для HyperDriveStep можно также определить конкретные файлы модели, которые будут включаться в выходные данные.

значение по умолчанию: None
name
Обязательно
str

Имя объекта PipelineData, которое может содержать только буквы, цифры и символы подчеркивания.

Имена PipelineData используются для обнаружения выходных данных этапа. После завершения выполнения конвейера можно использовать имя этапа с именем выходных данных для доступа к определенным выходным данным. Имена должны быть уникальными в пределах одного этапа в конвейере.

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

Хранилище данных, в котором будет размещаться PipelineData. Если не задано, используется хранилище данных по умолчанию.

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

При значении None используется имя выходных данных. может содержать только буквы, цифры и символы подчеркивания.

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

Указывает, будет ли этап создания использовать для доступа к данным метод "отправка" или "подключение".

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

Для output_mode = "upload" (отправка), этот параметр представляет путь, в который модуль записывает выходные данные.

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

Для output_mode = "upload" (отправка), этот параметр указывает, следует ли перезаписывать существующие данные.

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

Необязательный элемент. Тип данных можно использовать для указания ожидаемого типа выходных данных, а также для детализации способа использования данных соответствующими этапами. Это может быть любая определяемая пользователем строка.

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

Указывает, являются ли данные каталогом или отдельным файлом. Применяется только для определения типа данных, используемых серверной частью Azure ML, если параметр data_type не указан. Значение по умолчанию — False.

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

Если он указан, выходные данные будут доступны с помощью PipelineRun.get_pipeline_output(). Имена выходных данных конвейера должны быть уникальными в рамках конвейера.

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

Определяет выходные данные для результатов обучения. Это необходимо только для конкретных видов обучения с различными типами выходных данных, таким как метрики и модели. Например, результат AutoMLStep — создание метрик и модели. Можно также определить конкретную итерацию или метрику обучения, используемую для получения оптимальной модели. Для HyperDriveStep можно также определить конкретные файлы модели, которые будут включаться в выходные данные.

Комментарии

PipelineData представляют собой выходные данные, которые будут выдаваться при выполнении этапа. Использование PipelineData при создании этапов для описания файлов или каталогов, которые будут созданы на этапе. Эти выходные данные будут добавлены в указанное хранилище данных с возможностью их последующего извлечения и просмотра.

Например, следующий этап конвейера создает один набор выходных данных с именем "модель":


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

   datastore = ws.get_default_datastore()
   step_output = PipelineData("model", datastore=datastore)
   step = PythonScriptStep(script_name="train.py",
                           arguments=["--model", step_output],
                           outputs=[step_output],
                           compute_target=aml_compute,
                           source_directory=source_directory)

В этом случае скрипт train.py будет записывать создаваемую им модель, в расположение, предоставленное скрипту через аргумент –model.

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

Например, этап обучения конвейера зависит от выходных данных process_step_output этапа процесса конвейера:


   from azureml.pipeline.core import Pipeline, PipelineData
   from azureml.pipeline.steps import PythonScriptStep

   datastore = ws.get_default_datastore()
   process_step_output = PipelineData("processed_data", datastore=datastore)
   process_step = PythonScriptStep(script_name="process.py",
                                   arguments=["--data_for_train", process_step_output],
                                   outputs=[process_step_output],
                                   compute_target=aml_compute,
                                   source_directory=process_directory)
   train_step = PythonScriptStep(script_name="train.py",
                                 arguments=["--data_for_train", process_step_output],
                                 inputs=[process_step_output],
                                 compute_target=aml_compute,
                                 source_directory=train_directory)

   pipeline = Pipeline(workspace=ws, steps=[process_step, train_step])

Будет создан конвейер с двумя этапами. В первую очередь выполняется этап обработки, а после его завершения выполняется этап обучения. Azure ML предоставит на этап обучения выходные данные, созданные на этапе обработки.

Дополнительные примеры использования PipelineData для создания конвейера: https://aka.ms/pl-data-dep.

Для поддерживаемых типов вычислений PipelineData можно также использовать для указания способа создания и использования данных в выполнении. Поддерживаются два метода:

  • Подключение (по умолчанию): входные или выходные данные подключаются к локальному хранилищу на вычислительном узле, а переменная среды задается посредством указания пути к этим данным ($AZUREML _DATAREFERENCE_name). Для удобства можно передать объект PipelineData в скрипт в качестве одного из аргументов, например с помощью параметра arguments в PythonScriptStep, и объект будет разрешаться в путь к данным. Для выходных данных скрипт вычислений должен создать файл или каталог по этому выходному пути. Чтобы просмотреть значение переменной среды, используемой при передаче объекта конвейера в качестве аргумента, используйте метод get_env_variable_name.

  • Отправка: укажите output_path_on_compute, соответствующий файлу или каталогу, который будет создан скриптом. (В этом случае переменные среды не используются.)

Методы

as_dataset

Повышение уровня промежуточных выходных данных до набора данных.

Этот набор данных будет существовать после выполнения этапа. Обратите внимание, что выходные данные должны быть преобразованы в набор данных, чтобы последующие входные данные использовались в качестве набора данных. Если as_dataset не вызывается для выходных данных, а вызывается только для входных данных, это будет NOOP, а входные данные не будут использоваться в качестве набора данных. В приведенном ниже примере кода показано правильное использование as_dataset:


   # as_dataset is called here and is passed to both the output and input of the next step.
   pipeline_data = PipelineData('output').as_dataset()

   step1 = PythonScriptStep(..., outputs=[pipeline_data])
   step2 = PythonScriptStep(..., inputs=[pipeline_data])
as_download

Использование PipelineData для скачивания.

as_input

Создание InputPortBinding и указание имени входных данных (но используется режим по умолчанию).

as_mount

Использование PipelineData для подключения.

create_input_binding

Создание входной привязки.

get_env_variable_name

Возвращение имени переменной среды для данных PipelineData.

as_dataset

Повышение уровня промежуточных выходных данных до набора данных.

Этот набор данных будет существовать после выполнения этапа. Обратите внимание, что выходные данные должны быть преобразованы в набор данных, чтобы последующие входные данные использовались в качестве набора данных. Если as_dataset не вызывается для выходных данных, а вызывается только для входных данных, это будет NOOP, а входные данные не будут использоваться в качестве набора данных. В приведенном ниже примере кода показано правильное использование as_dataset:


   # as_dataset is called here and is passed to both the output and input of the next step.
   pipeline_data = PipelineData('output').as_dataset()

   step1 = PythonScriptStep(..., outputs=[pipeline_data])
   step2 = PythonScriptStep(..., inputs=[pipeline_data])
as_dataset()

Возвращаемое значение

Тип Описание

Промежуточные выходные данные в виде набора данных.

as_download

Использование PipelineData для скачивания.

as_download(input_name=None, path_on_compute=None, overwrite=None)

Параметры

Имя Описание
input_name
str

Указание имени для этих входных данных.

значение по умолчанию: None
path_on_compute
str

Путь к вычислению для загрузки.

значение по умолчанию: None
overwrite

Указание необходимости перезаписи существующих данных.

значение по умолчанию: None

Возвращаемое значение

Тип Описание

InputPortBinding с данными PipelineData в качестве источника.

as_input

Создание InputPortBinding и указание имени входных данных (но используется режим по умолчанию).

as_input(input_name)

Параметры

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

Указание имени для этих входных данных.

Возвращаемое значение

Тип Описание

InputPortBinding с данными PipelineData в качестве источника.

as_mount

Использование PipelineData для подключения.

as_mount(input_name=None)

Параметры

Имя Описание
input_name
str

Указание имени для этих входных данных.

значение по умолчанию: None

Возвращаемое значение

Тип Описание

InputPortBinding с данными PipelineData в качестве источника.

create_input_binding

Создание входной привязки.

create_input_binding(input_name=None, mode=None, path_on_compute=None, overwrite=None)

Параметры

Имя Описание
input_name
str

Имя входа.

значение по умолчанию: None
mode
str

Режим для доступа к PipelineData — "mount" (подключение) или "download" (загрузка).

значение по умолчанию: None
path_on_compute
str

Для режима загрузки указывает путь к вычислительному ресурсу, в котором будут размещаться данные.

значение по умолчанию: None
overwrite

Для режима загрузки указывает, следует ли перезаписывать существующие данные.

значение по умолчанию: None

Возвращаемое значение

Тип Описание

InputPortBinding с данными PipelineData в качестве источника.

get_env_variable_name

Возвращение имени переменной среды для данных PipelineData.

get_env_variable_name()

Возвращаемое значение

Тип Описание
str

Имя переменной среды.

Атрибуты

data_type

Тип данных, которые будут созданы.

Возвращаемое значение

Тип Описание
str

Имя типа данных.

datastore

Хранилище данных, в котором будет размещаться PipelineData.

Возвращаемое значение

Тип Описание

Объект хранилища данных.

name

Имя объекта PipelineData.

Возвращаемое значение

Тип Описание
str

Название