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.objectPipelineData
Конструктор
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
- AbstractAzureStorageDatastore или AzureDataLakeDatastore
Хранилище данных, в котором будет размещаться PipelineData. Если не задано, используется хранилище данных по умолчанию.
- output_name
- str
При значении None используется имя выходных данных. Может содержать только буквы, цифры и символы подчеркивания.
- output_mode
- str
Указывает, будет ли этап создания использовать для доступа к данным метод "отправка" или "подключение".
- output_path_on_compute
- str
Для output_mode
= "upload" (отправка), этот параметр представляет путь, в который модуль записывает выходные данные.
- output_overwrite
- bool
Для output_mode
= "upload" (отправка), этот параметр указывает, следует ли перезаписывать существующие данные.
- data_type
- str
Необязательный элемент. Тип данных можно использовать для указания ожидаемого типа выходных данных, а также для детализации способа использования данных соответствующими этапами. Это может быть любая определяемая пользователем строка.
- is_directory
- bool
Указывает, являются ли данные каталогом или отдельным файлом. Применяется только для определения типа данных, используемых серверной частью Azure ML, если параметр data_type
не указан. Значение по умолчанию — False.
- pipeline_output_name
Если он указан, выходные данные будут доступны с помощью PipelineRun.get_pipeline_output()
. Имена выходных данных конвейера должны быть уникальными в рамках конвейера.
- training_output
- TrainingOutput
Определяет выходные данные для результатов обучения. Это необходимо только для конкретных видов обучения с различными типами выходных данных, таким как метрики и модели. Например, результат AutoMLStep — создание метрик и модели. Можно также определить конкретную итерацию или метрику обучения, используемую для получения оптимальной модели. Для HyperDriveStep можно также определить конкретные файлы модели, которые будут включаться в выходные данные.
- name
- str
Имя объекта PipelineData, которое может содержать только буквы, цифры и символы подчеркивания.
Имена PipelineData используются для обнаружения выходных данных этапа. После завершения выполнения конвейера можно использовать имя этапа с именем выходных данных для доступа к определенным выходным данным. Имена должны быть уникальными в пределах одного этапа в конвейере.
- datastore
- AbstractAzureStorageDatastore или AzureDataLakeDatastore
Хранилище данных, в котором будет размещаться PipelineData. Если не задано, используется хранилище данных по умолчанию.
- output_name
- str
При значении None используется имя выходных данных. может содержать только буквы, цифры и символы подчеркивания.
- output_mode
- str
Указывает, будет ли этап создания использовать для доступа к данным метод "отправка" или "подключение".
- output_path_on_compute
- str
Для output_mode
= "upload" (отправка), этот параметр представляет путь, в который модуль записывает выходные данные.
- output_overwrite
- bool
Для output_mode
= "upload" (отправка), этот параметр указывает, следует ли перезаписывать существующие данные.
- data_type
- str
Необязательный элемент. Тип данных можно использовать для указания ожидаемого типа выходных данных, а также для детализации способа использования данных соответствующими этапами. Это может быть любая определяемая пользователем строка.
- is_directory
- bool
Указывает, являются ли данные каталогом или отдельным файлом. Применяется только для определения типа данных, используемых серверной частью Azure ML, если параметр data_type
не указан. Значение по умолчанию — False.
- pipeline_output_name
- str
Если он указан, выходные данные будут доступны с помощью PipelineRun.get_pipeline_output()
. Имена выходных данных конвейера должны быть уникальными в рамках конвейера.
- training_output
- TrainingOutput
Определяет выходные данные для результатов обучения. Это необходимо только для конкретных видов обучения с различными типами выходных данных, таким как метрики и модели. Например, результат 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_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)
Параметры
Возвращаемое значение
InputPortBinding с данными PipelineData в качестве источника.
Возвращаемый тип
as_input
Создание InputPortBinding и указание имени входных данных (но используется режим по умолчанию).
as_input(input_name)
Параметры
Возвращаемое значение
InputPortBinding с данными PipelineData в качестве источника.
Возвращаемый тип
as_mount
Использование PipelineData для подключения.
as_mount(input_name=None)
Параметры
Возвращаемое значение
InputPortBinding с данными PipelineData в качестве источника.
Возвращаемый тип
create_input_binding
Создание входной привязки.
create_input_binding(input_name=None, mode=None, path_on_compute=None, overwrite=None)
Параметры
- mode
- str
Режим для доступа к PipelineData — "mount" (подключение) или "download" (загрузка).
- path_on_compute
- str
Для режима загрузки указывает путь к вычислительному ресурсу, в котором будут размещаться данные.
- overwrite
- bool
Для режима загрузки указывает, следует ли перезаписывать существующие данные.
Возвращаемое значение
InputPortBinding с данными PipelineData в качестве источника.
Возвращаемый тип
get_env_variable_name
Возвращение имени переменной среды для данных PipelineData.
get_env_variable_name()
Возвращаемое значение
Имя переменной среды.
Возвращаемый тип
Атрибуты
data_type
datastore
Хранилище данных, в котором будет размещаться PipelineData.
Возвращаемое значение
Объект хранилища данных.
Возвращаемый тип
name
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по