ParallelRunConfig Класс
Определяет конфигурацию для объекта ParallelRunStep.
Пример использования ParallelRunStep приведен в записной книжке: https://aka.ms/batch-inference-notebooks.
Руководство по устранению неполадок приведено в https://aka.ms/prstsg. Там можно найти дополнительные ссылки.
Инициализируйте объект конфигурации.
- Наследование
-
azureml.pipeline.core._parallel_run_config_base._ParallelRunConfigBaseParallelRunConfig
Конструктор
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. |
entry_script
Обязательно
|
Пользовательский скрипт, который будет выполняться параллельно на нескольких узлах. Это значение указывается в качестве пути к локальному файлу. Если указан |
error_threshold
Обязательно
|
Количество ошибок записи для TabularDataset и сбоев чтения файлов для FileDataset, которые следует игнорировать во время обработки. Если число ошибок превышает это значение, задание будет прервано. Пороговое значение количества ошибок применяется к общему объему входных данных, а не к отдельным мини-пакетам, которые передаются в метод run(). Диапазон значений — [-1, int. max]. -1 указывает на игнорирование всех ошибок во время обработки. |
output_action
Обязательно
|
Способ упорядочения выходных данных. Текущие поддерживаемые значения: append_row и summary_only.
|
compute_target
Обязательно
|
AmlCompute или
str
Целевой объект вычислений, используемый для выполнения ParallelRunStep. Этот параметр можно указать как целевой объект вычислений или имя целевого объекта вычислений в рабочей области. |
node_count
Обязательно
|
Количество узлов в целевом объекте вычислений, используемых для выполнения ParallelRunStep. |
process_count_per_node
|
Количество рабочих процессов на узел для параллельного выполнения начального сценария.
Для компьютера с GPU значение по умолчанию равно 1.
Для компьютера с графическим ЦП значение по умолчанию равно количеству ядер.
Рабочий процесс будет многократно вызывать Default value: None
|
mini_batch_size
|
Для входных данных FileDataset значением этого поля является число файлов, которые может обработать пользовательский скрипт в одном вызове метода run(). Для входных данных TabularDataset значение этого поля представляет приблизительный размер данных, которые может обработать пользовательский скрипт в одном вызове метода run(). Примеры значений: 1024, 1024 КБ, 10 МБ и 1 ГБ. (Необязательно. Значение по умолчанию — 10 файлов для FileDataset и 1 МБ для TabularDataset.) Default value: None
|
source_directory
|
Путь к папке, содержащей Default value: None
|
description
|
Описание пакетной службы, используемой в целях отображения. Default value: None
|
logging_level
|
Строка имени уровня ведения журнала, которая определена в параметре "logging". Возможные значения: "WARNING" (Предупреждение), "INFO" (Информация) и "DEBUG" (Отладка). (Необязательно. Значение по умолчанию — "INFO".) Default value: INFO
|
run_invocation_timeout
|
Время ожидания в секундах для каждого вызова метода run(). (Необязательно. Значение по умолчанию — 60.) Default value: 60
|
run_max_try
|
Максимальное количество попыток для мини-пакета с ошибкой или истечением времени ожидания. Диапазон значений — [1, int.max]. Значение по умолчанию равно 3. Мини-пакет с количеством выводов из очереди, превышающим это значение, не будет обрабатываться повторно и будет удален напрямую. Default value: 3
|
append_row_file_name
|
Имя выходного файла, если Default value: None
|
allowed_failed_count
|
Количество мини-пакетов с ошибкой, которые не должны учитываться во время обработки. Если число мини-пакетов с ошибкой превышает это значение, задание будет прервано. Это пороговое значение предназначено для всех входных данных, а не для отдельного мини-пакета, отправленного в метод 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. |
entry_script
Обязательно
|
Пользовательский скрипт, который будет выполняться параллельно на нескольких узлах. Это значение указывается в качестве пути к локальному файлу. Если указан |
error_threshold
Обязательно
|
Количество ошибок записи для TabularDataset и сбоев чтения файлов для FileDataset, которые следует игнорировать во время обработки. Если число ошибок превышает это значение, задание будет прервано. Пороговое значение количества ошибок применяется к общему объему входных данных, а не к отдельным мини-пакетам, которые передаются в метод run(). Диапазон значений — [-1, int. max]. -1 указывает на игнорирование всех ошибок во время обработки. |
output_action
Обязательно
|
Способ упорядочения выходных данных. Текущие поддерживаемые значения: append_row и summary_only.
|
compute_target
Обязательно
|
AmlCompute или
str
Целевой объект вычислений, используемый для выполнения ParallelRunStep. Этот параметр можно указать как целевой объект вычислений или имя целевого объекта вычислений в рабочей области. |
node_count
Обязательно
|
Количество узлов в целевом объекте вычислений, используемых для выполнения ParallelRunStep. |
process_count_per_node
Обязательно
|
Количество рабочих процессов на узел для параллельного выполнения начального сценария.
Для компьютера GPU значение по умолчанию равно 1.
Для компьютера ЦП значением по умолчанию является количество ядер.
Рабочий процесс будет многократно вызывать |
mini_batch_size
Обязательно
|
Для входных данных FileDataset значением этого поля является число файлов, которые может обработать пользовательский скрипт в одном вызове метода run(). Для входных данных TabularDataset значение этого поля представляет приблизительный размер данных, которые может обработать пользовательский скрипт в одном вызове метода run(). Примеры значений: 1024, 1024 КБ, 10 МБ и 1 ГБ. (Необязательно. Значение по умолчанию — 10 файлов для FileDataset и 1 МБ для TabularDataset.) |
source_directory
Обязательно
|
Путь к папке, содержащей |
description
Обязательно
|
Описание пакетной службы, используемой в целях отображения. |
logging_level
Обязательно
|
Строка имени уровня ведения журнала, которая определена в параметре "logging". Возможные значения: "WARNING" (Предупреждение), "INFO" (Информация) и "DEBUG" (Отладка). (Необязательно. Значение по умолчанию — "INFO".) |
run_invocation_timeout
Обязательно
|
Время ожидания в секундах для каждого вызова метода run(). (Необязательно. Значение по умолчанию — 60.) |
run_max_try
Обязательно
|
Максимальное количество попыток для мини-пакета с ошибкой или истечением времени ожидания. Диапазон значений — [1, int.max]. Значение по умолчанию равно 3. Мини-пакет с количеством выводов из очереди, превышающим это значение, не будет обрабатываться повторно и будет удален напрямую. |
append_row_file_name
Обязательно
|
Имя выходного файла, если |
allowed_failed_count
Обязательно
|
Количество мини-пакетов с ошибкой, которые не должны учитываться во время обработки. Если число мини-пакетов с ошибкой превышает это значение, задание будет прервано. Это пороговое значение предназначено для всех входных данных, а не для отдельного мини-пакета, отправленного в метод 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 для вывода пакетов рассматриваются в следующих статьях:
Учебник. Создание конвейеров Машинного обучения Azure для оценки пакета. В этой статье показано, как использовать эти два класса для асинхронной оценки пакета в конвейере и включать конечную точку REST для запуска конвейера.
Запуск пакетного вывода для больших объемов данных с помощью Машинного обучения Azure. В этой статье показано, как обрабатывать большие объемы данных асинхронно и параллельно с помощью пользовательского скрипта вывода и предварительно обученной модели классификации изображений, основанной на наборе данных MNIST.
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
Обязательно
|
Путь, из которого загружается конфигурация. |
save_to_yaml
Экспорт данных конфигурации параллельного выполнения в файл YAML.
save_to_yaml(path)
Параметры
Имя | Описание |
---|---|
path
Обязательно
|
Путь для сохраняемого файла. |