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


PipelineStep Класс

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

Конвейеры состоят из нескольких этапов, которые являются отдельными вычислительными единицами. Каждый шаг может выполняться независимо и использовать изолированные вычислительные ресурсы. У каждого этапа обычно есть собственные именованные входные и выходные данные, а также параметры.

Класс PipelineStep — это базовый класс, который наследуют другие встроенные классы этапов для распространенных сценариев, такие как PythonScriptStep, DataTransferStep и HyperDriveStep.

Общие сведения о том, как связаны конвейеры и этапы, см. в статье Что такое конвейеры Машинного обучения Azure?.

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

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

Конструктор

PipelineStep(name, inputs, outputs, arguments=None, fix_port_name_collisions=False, resource_inputs=None)

Параметры

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

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

inputs
list
Обязательно

Список входных данных этапа.

outputs
list
Обязательно

Список выходных данных этапа.

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

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

fix_port_name_collisions
bool
значение по умолчанию: False

Указывает, следует ли исправлять конфликты имен. Если значение True, и у входного и выходного параметров одинаковые имена, к имени входного параметра добавляется префикс INPUT. Значение по умолчанию — False.

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

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

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

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

inputs
list
Обязательно

Список входных данных этапа.

outputs
list
Обязательно

Список выходных данных этапа.

arguments
list
Обязательно

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

fix_port_name_collisions
bool
Обязательно

Указывает, следует ли исправлять конфликты имен. Если значение True, и у входного и выходного параметров одинаковые имена, к имени входного параметра добавляется префикс INPUT. Значение по умолчанию — False.

resource_inputs
list
Обязательно

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

Комментарии

PipelineStep — это единица выполнения, для которой обычно требуется цель выполнения (целевой объект вычислений), сценарий с необязательными аргументами и входными данными, и которая может формировать выходные данные. Для этапа также можно передавать ряд других специальных параметров.

Этапы конвейера можно настроить вместе, чтобы создать класс Pipeline, который представляет собой общий и многократно используемый рабочий процесс Машинного обучения Azure. На каждом этапе конвейера можно настроить повторное использование результатов предыдущих выполнений, если содержимое этапа (скрипты и зависимости), а также входные данные и параметры не меняются. При повторном использовании этапа вместо отправки задания для вычисления немедленно предоставляются результаты предыдущего выполнения для последующих этапов.

Конвейеры Машинного обучения Azure предоставляют встроенные действия для распространенных сценариев. Примеры см. в описании пакета steps и класса AutoMLStep. Общие сведения о создании конвейера на основе предварительно сформированных этапов см. в статье https://aka.ms/pl-first-pipeline.

Предварительно сформированные этапы, производные от PipelineStep, — это этапы, которые используются в одном конвейере. Если рабочий процесс использования машинного обучения применяется для создания этапов, которые можно использовать для управления версиями и в разных конвейерах, применяйте класс Module.

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

  • Для отдельных этапов рекомендуется использовать отдельные расположения source_directory. Если все скрипты для этапов конвейера находятся в одном каталоге, хэш этого каталога изменяется каждый раз, когда изменяется один из сценариев. Это приводит к повторному выполнению всех этапов. Пример использования отдельных каталогов для разных этапов см. в статье https://aka.ms/pl-get-started.

  • Поддержка отдельных папок для сценариев и зависимых файлов для каждого этапа помогает уменьшить размер моментального снимка, создаваемого для каждого этапа, так как в таком снимке сохраняется только определенная папка. Поскольку изменение любого файла в каталоге source_directory этапа запускают повторную отправку моментального снимка, ведение отдельных папок для этапов помогает повторно использовать этапы в конвейере, так как при отсутствии изменений в каталоге source_directory этапа используется предыдущее выполнение этого этапа.

  • Если данные, используемые в этапе, находятся в хранилище данных, а у параметра allow_reuse значение True, изменение данных не будет обнаружено. Если данные отправляются в составе моментального снимка (в каталог source_directory шага), хэш изменится и будет запущено повторное выполнение. Поэтому такой способ не рекомендуется.

Методы

create_input_output_bindings

Создание входных и выходных привязок из входных и выходных данных этапа.

create_module_def

Создание объекта определения модуля, описывающего этап.

create_node

Создание узла для графа конвейера на основе этого этапа.

get_source_directory

Получение исходного каталога для этапа и проверка существования скрипта.

resolve_input_arguments

Сопоставление входных и выходных данных с аргументами для формирования строки аргумента.

run_after

Выполнение этого этапа после указанного этапа.

validate_arguments

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

create_input_output_bindings

Создание входных и выходных привязок из входных и выходных данных этапа.

create_input_output_bindings(inputs, outputs, default_datastore, resource_inputs=None)

Параметры

inputs
list
Обязательно

Список входных данных этапа.

outputs
list
Обязательно

Список выходных данных этапа.

default_datastore
AbstractAzureStorageDatastore или AzureDataLakeDatastore
Обязательно

Хранилище данных по умолчанию.

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

Список входных данных, которые используются как ресурсы. Ресурсы загружаются в папку сценариев и позволяют изменять поведение сценария во время выполнения.

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

Кортеж входных и выходных привязок.

Возвращаемый тип

create_module_def

Создание объекта определения модуля, описывающего этап.

create_module_def(execution_type, input_bindings, output_bindings, param_defs=None, create_sequencing_ports=True, allow_reuse=True, version=None, module_type=None, arguments=None, runconfig=None, cloud_settings=None)

Параметры

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

Тип выполнения класса модуля.

input_bindings
list
Обязательно

Входные привязки этапа.

output_bindings
list
Обязательно

Выходные привязки этапа.

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

Определения параметров этапа.

create_sequencing_ports
bool
значение по умолчанию: True

Указывает, будут ли порты виртуализации создаваться для модуля.

allow_reuse
bool
значение по умолчанию: True

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

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

Версия модуля.

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

Тип модуля, который будет создаваться подходящей службой. В настоящее время поддерживаются только два типа: None и BatchInferencing. module_type отличается от execution_type, где указывается, какой тип серверной службы используется для выполнения этого модуля.

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

Список аргументов с заметками для использования при вызове этого модуля

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

Файл runconfig, который будет использоваться для python_script_step.

cloud_settings
<xref:azureml.pipeline.core._restclients.aeva.models.CloudSettings>
значение по умолчанию: None

Параметры, которые будут использоваться для облаков

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

Объект определения модуля.

Возвращаемый тип

create_node

Создание узла для графа конвейера на основе этого этапа.

abstract create_node(graph, default_datastore, context)

Параметры

graph
Graph
Обязательно

Граф, в который добавляется узел.

default_datastore
AbstractAzureStorageDatastore или AzureDataLakeDatastore
Обязательно

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

context
<xref:azureml.pipeline.core._GraphContext>
Обязательно

Объект контекста графа.

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

Созданный узел.

Возвращаемый тип

get_source_directory

Получение исходного каталога для этапа и проверка существования скрипта.

get_source_directory(context, source_directory, script_name)

Параметры

context
<xref:azureml.pipeline.core._GraphContext>
Обязательно

Объект контекста графа.

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

Исходный каталог для этапа.

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

Имя скрипта для этапа.

hash_paths
list
Обязательно

Хэш-пути, которые используются при определении отпечатка модуля.

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

Исходный каталог и хэш-пути.

Возвращаемый тип

resolve_input_arguments

Сопоставление входных и выходных данных с аргументами для формирования строки аргумента.

static resolve_input_arguments(arguments, inputs, outputs, params)

Параметры

arguments
list
Обязательно

Список аргументов скрипта.

inputs
list
Обязательно

Список входных данных этапа.

outputs
list
Обязательно

Список выходных данных этапа.

params
list
Обязательно

Список параметров этапа.

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

Возвращает кортеж из двух элементов. Первый — это неструктурированный список элементов для обработанных аргументов. Второй — список структурированных аргументов (_InputArgument, _OutputArgument, _ParameterArgument и _StringArgument).

Возвращаемый тип

run_after

Выполнение этого этапа после указанного этапа.

run_after(step)

Параметры

step
PipelineStep
Обязательно

Этап конвейера, который необходимо выполнить перед этим этапом.

Комментарии

Если после завершения этапов 1 и 2 нужно выполнить, скажем, этап 3, можно использовать следующее:


   step3.run_after(step1)
   step3.run_after(step2)

validate_arguments

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

static validate_arguments(arguments, inputs, outputs)

Параметры

arguments
list
Обязательно

Список аргументов этапа.

inputs
list
Обязательно

Список входных данных этапа.

outputs
list
Обязательно

Список выходных данных этапа.