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


ParallelRunConfig Класс

Определяет конфигурацию объекта ParallelRunStep .

Пример использования ParallelRunStep см. в записной книжке https://aka.ms/batch-inference-notebooks.

Руководство по устранению неполадок см. в разделе https://aka.ms/prstsg. Здесь можно найти дополнительные ссылки.

Инициализировать объект конфигурации.

Конструктор

ParallelRunConfig(environment, entry_script, error_threshold, output_action, compute_target, node_count, process_count_per_node=None, mini_batch_size=None, source_directory=None, description=None, logging_level='INFO', run_invocation_timeout=60, run_max_try=3, append_row_file_name=None, allowed_failed_count=None, allowed_failed_percent=None, partition_keys=None, environment_variables=None)

Параметры

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

Определение среды, которое настраивает среду Python. Его можно настроить для использования существующей среды Python или настройки временной среды для эксперимента. Определение среды отвечает за определение необходимых зависимостей приложений, таких как conda или pip packages.

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

Пользовательский скрипт, который будет выполняться параллельно на нескольких узлах. Это указано как локальный путь к файлу. Если source_directory задано, entry_script то это относительный путь внутри каталога. В противном случае это может быть любой путь, доступный на компьютере. Entry_script должен содержать две функции: init()эта функция должна использоваться для любой дорогостоящей или обычной подготовки к последующим выводам, например десериализации и загрузке модели в глобальный объект. run(mini_batch): метод, который необходимо параллелизировать. Каждый вызов будет иметь один мини-пакет. "mini_batch": пакетное вывод вызовет метод выполнения и передает список или кадр данных Pandas в качестве аргумента методу. Каждая запись в min_batch будет путь к файлу, если входные данные — FileDataset, кадр данных Pandas, если входные данные являются табличным набором Данных. Метод run() должен возвращать кадр данных Pandas или массив. Для append_row output_action эти возвращаемые элементы добавляются в общий выходной файл. Для summary_only содержимое элементов игнорируется. Для всех выходных действий каждый возвращаемый выходной элемент указывает на одно успешное вывод входного элемента в входной мини-пакете. Каждый параллельный рабочий процесс будет вызывать инициализацию один раз, а затем циклировать функцию запуска до обработки всех мини-пакетов.

error_threshold
Обязательно
int

Количество сбоев записей и TabularDataset сбоев файлов для FileDataset этого следует игнорировать во время обработки. Если число ошибок превышает это значение, задание будет прервано. Порог ошибки — для всего входного и не для отдельных мини-пакетов, отправляемых в метод run(). Диапазон равен [-1, int.max]. -1 указывает на пропуск всех сбоев во время обработки.

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

Порядок организации выходных данных. Текущие поддерживаемые значения: "append_row" и "summary_only".

  1. "append_row" — все значения, выходные вызовы метода run() будут агрегированы в один уникальный файл с именем parallel_run_step.txt который создается в выходном расположении.
  2. "summary_only" — сценарий пользователя, как ожидается, будет хранить выходные данные. Выходные строки по-прежнему ожидаются для каждого успешно обработанного входного элемента. Система использует эти выходные данные только для вычисления порогового значения ошибки (игнорируя фактическое значение строки).
compute_target
Обязательно
AmlCompute или str

Целевой объект вычислений для выполнения ParallelRunStep. Этот параметр может быть указан как целевой объект вычислений или имя целевого объекта вычислений в рабочей области.

node_count
Обязательно
int

Число узлов в целевом объекте вычислений, используемого для запуска ParallelRunStep.

process_count_per_node
int

Количество рабочих процессов на узел для параллельного запуска скрипта записи. Для компьютера GPU значение по умолчанию равно 1. Для компьютера ЦП значение по умолчанию — это число ядер. Рабочий процесс будет многократно вызывать run(), передавая полученный мини-пакет. Общее число рабочих процессов в задании равно process_count_per_node * node_count, что определяет максимальное число run() для параллельного выполнения.

Default value: None
mini_batch_size

Для входных данных FileDataset это поле — это количество файлов, которые пользователь может обрабатывать в одном вызове run(). Для входных данных TabularDataset это поле является приблизительным размером данных, которые пользователь может обрабатывать в одном вызове run(). Примеры значений: 1024, 1024 КБ, 10 МБ и 1 ГБ. (необязательно, значение по умолчанию — 10 файлов для FileDataset и 1 МБ для TabularDataset.)

Default value: None
source_directory
str

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

Default value: None
description
str

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

Default value: None
logging_level
str

Строка имени уровня ведения журнала, определяемая в разделе "Ведение журнала". Возможные значения: WARNING, INFO и DEBUG. (необязательно, значение по умолчанию — INFO.)

Default value: INFO
run_invocation_timeout
int

Время ожидания в секундах для каждого вызова метода run(). (необязательно, значение по умолчанию — 60.)

Default value: 60
run_max_try
int

Максимальное количество попыток для мини-пакета сбоем или тайм-аута. Диапазон равен [1, int.max]. Значение по умолчанию равно 3. Мини-пакет с деqueue числом больше, чем это не будет обработано снова и будет удален напрямую.

Default value: 3
append_row_file_name
str

Имя выходного файла, если output_action задано значение "append_row". (необязательно, значение по умолчанию —parallel_run_step.txt')

Default value: None
allowed_failed_count
int

Количество неудачных мини-пакетов, которые следует игнорировать во время обработки. Если неудачное число превышает это значение, задание будет прервано. Это пороговое значение предназначено для всего ввода, а не отдельного мини-пакета, отправленного методу run(). Диапазон равен [-1, int.max]. -1 указывает на пропуск всех сбоев во время обработки. Мини-пакет может завершиться ошибкой при первом обработке, а затем успешно выполнить вторую попытку. Проверка между первым и вторым временем подсчитывает ее как неудачную. Проверка после второго раза не подсчитывает ее как неудачную. Аргумент –error_threshold, –allowed_failed_count и –allowed_failed_percent могут работать вместе. Если несколько указанных, задание будет прервано, если оно превышает любой из них.

Default value: None
allowed_failed_percent

Процент неудачных мини-пакетов, которые следует игнорировать во время обработки. Если неудачный процент превышает это значение, задание будет прервано. Это пороговое значение предназначено для всего ввода, а не отдельного мини-пакета, отправленного методу run(). Диапазон равен [0, 100]. 100 или 100.0 указывает на пропуск всех сбоев во время обработки. Проверка начинается после планирования всех мини-пакетов. Аргумент –error_threshold, –allowed_failed_count и –allowed_failed_percent могут работать вместе. Если несколько указанных, задание будет прервано, если оно превышает любой из них.

Default value: None
partition_keys

Ключи, используемые для секционирования набора данных на мини-пакеты. Если этот параметр указан, данные с одним и тем же ключом будут секционированы в один мини-пакет. Если указаны оба partition_keys и mini_batch_size, возникает ошибка. Он должен быть списком элементов str каждый из которых является ключом, используемым для секционирования входного набора данных. Однако при повышении до PipelineParameter значения по умолчанию должны быть строкой дампа json списка, так как тип списка пока не поддерживается в PipelineParameter. Входные данные должны быть секционированы, а partition_keys должны быть подмножеством ключей каждого входного набора данных для работы.

Default value: None
environment_variables

Словарь имен и значений переменных среды. Эти переменные среды задаются в процессе выполнения пользовательского скрипта.

Default value: None
environment
Обязательно

Определение среды, которое настраивает среду Python. Его можно настроить для использования существующей среды Python или настройки временной среды для эксперимента. Определение среды отвечает за определение необходимых зависимостей приложений, таких как conda или pip packages.

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

Пользовательский скрипт, который будет выполняться параллельно на нескольких узлах. Это указано как локальный путь к файлу. Если source_directory задано, entry_script то это относительный путь внутри каталога. В противном случае это может быть любой путь, доступный на компьютере. Entry_script должен содержать две функции: init()эта функция должна использоваться для любой дорогостоящей или обычной подготовки к последующим выводам, например десериализации и загрузке модели в глобальный объект. run(mini_batch): метод, который необходимо параллелизировать. Каждый вызов будет иметь один мини-пакет. "mini_batch": пакетное вывод вызовет метод выполнения и передает список или кадр данных Pandas в качестве аргумента методу. Каждая запись в min_batch будет путь к файлу, если входные данные — FileDataset, кадр данных Pandas, если входные данные являются табличным набором Данных. Метод run() должен возвращать кадр данных Pandas или массив. Для append_row output_action эти возвращаемые элементы добавляются в общий выходной файл. Для summary_only содержимое элементов игнорируется. Для всех выходных действий каждый возвращаемый выходной элемент указывает на одно успешное вывод входного элемента в входной мини-пакете. Каждый параллельный рабочий процесс будет вызывать инициализацию один раз, а затем циклировать функцию запуска до обработки всех мини-пакетов.

error_threshold
Обязательно
int

Количество сбоев записей и TabularDataset сбоев файлов для FileDataset этого следует игнорировать во время обработки. Если число ошибок превышает это значение, задание будет прервано. Порог ошибки — для всего входного и не для отдельных мини-пакетов, отправляемых в метод run(). Диапазон равен [-1, int.max]. -1 указывает на пропуск всех сбоев во время обработки.

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

Порядок организации выходных данных. Текущие поддерживаемые значения: "append_row" и "summary_only".

  1. "append_row" — все значения, выходные вызовы метода run() будут агрегированы в один уникальный файл с именем parallel_run_step.txt который создается в выходном расположении.
  2. "summary_only" — сценарий пользователя, как ожидается, будет хранить выходные данные. Выходные строки по-прежнему ожидаются для каждого успешно обработанного входного элемента. Система использует эти выходные данные только для вычисления порогового значения ошибки (игнорируя фактическое значение строки).
compute_target
Обязательно
AmlCompute или str

Целевой объект вычислений для выполнения ParallelRunStep. Этот параметр может быть указан как целевой объект вычислений или имя целевого объекта вычислений в рабочей области.

node_count
Обязательно
int

Число узлов в целевом объекте вычислений, используемого для запуска ParallelRunStep.

process_count_per_node
Обязательно
int

Количество рабочих процессов на узел для параллельного запуска скрипта записи. Для компьютера GPU значение по умолчанию равно 1. Для компьютера ЦП значение по умолчанию — это число ядер. Рабочий процесс будет многократно вызывать run(), передавая полученный мини-пакет. Общее число рабочих процессов в задании равно process_count_per_node * node_count, что определяет максимальное число run() для параллельного выполнения.

mini_batch_size
Обязательно
str или int

Для входных данных FileDataset это поле — это количество файлов, которые пользователь может обрабатывать в одном вызове run(). Для входных данных TabularDataset это поле является приблизительным размером данных, которые пользователь может обрабатывать в одном вызове run(). Примеры значений: 1024, 1024 КБ, 10 МБ и 1 ГБ. (необязательно, значение по умолчанию — 10 файлов для FileDataset и 1 МБ для TabularDataset.)

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

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

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

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

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

Строка имени уровня ведения журнала, определяемая в разделе "Ведение журнала". Возможные значения: WARNING, INFO и DEBUG. (необязательно, значение по умолчанию — INFO.)

run_invocation_timeout
Обязательно
int

Время ожидания в секундах для каждого вызова метода run(). (необязательно, значение по умолчанию — 60.)

run_max_try
Обязательно
int

Максимальное количество попыток для мини-пакета сбоем или тайм-аута. Диапазон равен [1, int.max]. Значение по умолчанию равно 3. Мини-пакет с деqueue числом больше, чем это не будет обработано снова и будет удален напрямую.

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

Имя выходного файла, если output_action задано значение "append_row". (необязательно, значение по умолчанию —parallel_run_step.txt')

allowed_failed_count
Обязательно
int

Количество неудачных мини-пакетов, которые следует игнорировать во время обработки. Если неудачное число превышает это значение, задание будет прервано. Это пороговое значение предназначено для всего ввода, а не отдельного мини-пакета, отправленного методу run(). Диапазон равен [-1, int.max]. -1 указывает на пропуск всех сбоев во время обработки. Мини-пакет может завершиться ошибкой при первом обработке, а затем успешно выполнить вторую попытку. Проверка между первым и вторым временем подсчитывает ее как неудачную. Проверка после второго раза не подсчитывает ее как неудачную. Аргумент –error_threshold, –allowed_failed_count и –allowed_failed_percent могут работать вместе. Если несколько указанных, задание будет прервано, если оно превышает любой из них.

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

Процент неудачных мини-пакетов, которые следует игнорировать во время обработки. Если неудачный процент превышает это значение, задание будет прервано. Это пороговое значение предназначено для всего ввода, а не отдельного мини-пакета, отправленного методу run(). Диапазон равен [0, 100]. 100 или 100.0 указывает на пропуск всех сбоев во время обработки. Проверка начинается после планирования всех мини-пакетов. Аргумент –error_threshold, –allowed_failed_count и –allowed_failed_percent могут работать вместе. Если несколько указанных, задание будет прервано, если оно превышает любой из них.

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

Ключи, используемые для секционирования набора данных на мини-пакеты. Если этот параметр указан, данные с одним и тем же ключом будут секционированы в один мини-пакет. Если указаны оба partition_keys и mini_batch_size, возникает ошибка. Он должен быть списком элементов str каждый из которых является ключом, используемым для секционирования входного набора данных. Однако при повышении до PipelineParameter значения по умолчанию должны быть строкой дампа json списка, так как тип списка пока не поддерживается в PipelineParameter. Входные данные должны быть секционированы, а partition_keys должны быть подмножеством ключей каждого входного набора данных для работы.

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

Словарь имен и значений переменных среды. Эти переменные среды задаются в процессе выполнения пользовательского скрипта.

Комментарии

Класс ParallelRunConfig используется для предоставления конфигурации для ParallelRunStep класса. ParallelRunConfig и ParallelRunStep можно использовать вместе для параллельной обработки больших объемов данных. Распространенные варианты использования — это обучение модели ML (Машинного обучения) или запуск автономного вывода для создания прогнозов на основе пакета наблюдений. ParallelRunStep работает, разбивая данные на пакеты, которые обрабатываются параллельно. Размер пакета, количество узлов и другие настраиваемые параметры для ускорения параллельной обработки можно контролировать с помощью ParallelRunConfig класса. ParallelRunStep может работать с TabularDataset входными данными или FileDataset как входные данные.

Чтобы использовать ParallelRunStep и ParallelRunConfig, выполните следующие действия.

  • Создайте объект, чтобы указать, как выполняется пакетная ParallelRunConfig обработка, с параметрами для управления размером пакета, количеством узлов на целевой объект вычислений и ссылкой на настраиваемый скрипт Python.

  • Создайте объект ParallelRunStep, использующий объект ParallelRunConfig, определяет входные и выходные данные для шага.

  • Используйте настроенный объект ParallelRunStep так Pipeline же, как и в других типах шагов конвейера.

Примеры работы с классами ParallelRunStep и ParallelRunConfig для пакетного вывода рассматриваются в следующих статьях:


   from azureml.pipeline.steps import ParallelRunStep, ParallelRunConfig

   parallel_run_config = ParallelRunConfig(
       source_directory=scripts_folder,
       entry_script=script_file,
       mini_batch_size="5",        # or partition_keys=["key1", "key2"], which is another way to partition the
                                   # input to mini-batches, refer to the parameter description for details
       error_threshold=10,         # Optional, allowed failed count on mini batch items
       allowed_failed_count=15,    # Optional, allowed failed count on mini batches
       allowed_failed_percent=10,  # Optional, allowed failed percent on mini batches
       run_max_try=3,
       output_action="append_row",
       environment=batch_env,
       compute_target=compute_target,
       node_count=2)

   parallelrun_step = ParallelRunStep(
       name="predict-digits-mnist",
       parallel_run_config=parallel_run_config,
       inputs=[ named_mnist_ds ],
       output=output_dir,
       arguments=[ "--extra_arg", "example_value" ],
       allow_reuse=True
   )

Дополнительные сведения об этом примере см. в записной книжке https://aka.ms/batch-inference-notebooks.

Методы

load_yaml

Загрузка данных конфигурации параллельного запуска из YAML-файла.

save_to_yaml

Экспорт данных конфигурации параллельного запуска в YAML-файл.

load_yaml

Загрузка данных конфигурации параллельного запуска из YAML-файла.

static load_yaml(workspace, path)

Параметры

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

Рабочая область для чтения данных конфигурации из.

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

Путь к загрузке конфигурации из.

save_to_yaml

Экспорт данных конфигурации параллельного запуска в YAML-файл.

save_to_yaml(path)

Параметры

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

Путь к сохранению файла.