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


Настройка обучения AutoML для табличных данных с помощью интерфейса командной строки Машинное обучение Azure и пакета SDK для Python

ОБЛАСТЬ ПРИМЕНЕНИЯ:Расширение машинного обучения Azure CLI версии 2 (current)Python SDK azure-ai-ml версии 2 (current)

Из этой статьи вы узнаете, как настроить задание обучения автоматизированного машинного обучения (AutoML) с помощью пакета SDK для Python версии 2 Машинное обучение Azure. Автоматизированное машинное обучение выбирает алгоритм и гиперпараметры, а также создает модель, готовую для развертывания. В этой статье содержатся сведения о различных вариантах, которые можно использовать для настройки экспериментов автоматизированного машинного обучения.

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

Необходимые компоненты

Чтобы использовать сведения о пакете SDK, установите пакет SDK Машинное обучение Azure версии 2 для Python.

Чтобы установить пакет SDK, можно выполнить следующие действия.

  • Создайте вычислительный экземпляр, который уже имеет последнюю версию пакета SDK для Python Машинное обучение Azure и настроен для рабочих процессов машинного обучения. Дополнительные сведения см. в статье "Создание Машинное обучение Azure вычислительного экземпляра".
  • Установите пакет SDK на локальном компьютере.

Настройка рабочей области

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

Сведения о рабочей области используются в MLClient azure.ai.ml том, чтобы получить дескриптор необходимой Машинное обучение Azure рабочей области.

В следующем примере используется проверка подлинности Azure по умолчанию с конфигурацией рабочей области по умолчанию или конфигурацией из config.json файла в структуре папок. Если он не config.jsonнайден, необходимо вручную ввести идентификатор подписки, группу ресурсов и рабочую область при создании MLClient.

from azure.identity import DefaultAzureCredential
from azure.ai.ml import MLClient

credential = DefaultAzureCredential()
ml_client = None
try:
    ml_client = MLClient.from_config(credential)
except Exception as ex:
    print(ex)
    # Enter details of your Azure Machine Learning workspace
    subscription_id = "<SUBSCRIPTION_ID>"
    resource_group = "<RESOURCE_GROUP>"
    workspace = "<AZUREML_WORKSPACE_NAME>"
    ml_client = MLClient(credential, subscription_id, resource_group, workspace)

Указание источника данных и формата

Чтобы предоставить обучающие данные в пакете SDK версии 2, его необходимо передать в облако с помощью MLTable.

Требования к данным, отправляемым в MLTable:

  • Данные должны иметь табличный формат.
  • Значение для прогнозирования, целевого столбца должно находиться в данных.

Обучающие данные должны быть доступны из удаленной вычислительной среды. Автоматизированное машинное обучение версии 2 (пакет SDK для Python и CLI/YAML) принимает ресурсы данных MLTable (версия 2). Для обратной совместимости он также поддерживает табличные наборы данных версии 1 из версии 1, зарегистрированный табличный набор данных через те же свойства входного набора данных. Рекомендуется использовать MLTable, доступную в версии 2. В этом примере данные хранятся по локальному пути . /train_data/bank_marketing_train_data.csv.

Вы можете создать MLTable с помощью mltable Python SDK , как показано в следующем примере:

import mltable

paths = [
    {'file': './train_data/bank_marketing_train_data.csv'}
]

train_table = mltable.from_delimited_files(paths)
train_table.save('./train_data')

Этот код создает новый файл . /train_data/MLTable, содержащий формат файла и инструкции по загрузке.

Теперь в папке ./train_data есть файл определения MLTable, а также файл данных bank_marketing_train_data.csv.

Дополнительные сведения о MLTable см. в статье "Работа с таблицами в Машинное обучение Azure".

Обучение, проверка и тестирование данных

Можно указать отдельные обучающие данные и наборы данных проверки. Данные обучения должны быть предоставлены training_data параметру в функции фабрики автоматизированного задания машинного обучения.

Если явно не указать или n_cross_validation параметрvalidation_data, автоматизированное машинное обучение применяет методы по умолчанию, чтобы определить, как выполняется проверка. Это определение зависит от количества строк в наборе данных, назначенном в параметре training_data.

Объем данных обучения Метод проверки
Более 20 000 строк Применяется разделение данных обучения и проверки. Значение по умолчанию — использовать 10 % начального набора данных для обучения в качестве набора проверки. В свою очередь, этот набор проверки используется для вычисления метрик.
Не больше 20 000 строк Применяется подход перекрестной проверки. Стандартное количество сверток зависит от числа строк.
Если набор данных меньше 1000 строк, используются десять сверток.
Если строки равны или от 1000 до 20 000, используются три свертывания.

Вычисление для запуска эксперимента

Автоматические задания машинного обучения с помощью пакета SDK для Python версии 2 (или CLI версии 2) в настоящее время поддерживаются только в Машинное обучение Azure удаленном вычислительном кластере или вычислительном экземпляре. Дополнительные сведения о создании вычислений с помощью PYTHON SDKv2 или CLIv2 см. в статье "Обучение моделей с Машинное обучение Azure помощью интерфейса командной строки, пакета SDK и REST API".

Настройка параметров эксперимента

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

В следующем примере показаны необходимые параметры для задачи классификации, которая указывает точность в качестве основной метрики и пять разных перекрестных проверок.

from azure.ai.ml.constants import AssetTypes
from azure.ai.ml import automl, Input

# note that this is a code snippet -- you might have to modify the variable values to run it successfully

# make an Input object for the training data
my_training_data_input = Input(
    type=AssetTypes.MLTABLE, path="./data/training-mltable-folder"
)

# configure the classification job
classification_job = automl.classification(
    compute=my_compute_name,
    experiment_name=my_exp_name,
    training_data=my_training_data_input,
    target_column_name="y",
    primary_metric="accuracy",
    n_cross_validations=5,
    enable_model_explainability=True,
    tags={"my_custom_tag": "My custom value"}
)

# Limits are all optional
classification_job.set_limits(
    timeout_minutes=600, 
    trial_timeout_minutes=20, 
    max_trials=5,
    enable_early_termination=True,
)

# Training properties are optional
classification_job.set_training(
    blocked_training_algorithms=["logistic_regression"], 
    enable_onnx_compatible_models=True
)

Выбор типа задачи машинного обучения

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

Автоматизированное машинное обучение поддерживает различные типы задач:

  • Задачи на основе табличных данных

    • классификация данных
    • регрессия
    • прогноз
  • Задачи компьютерного зрения, включая

    • Классификация изображений
    • Обнаружение объектов
  • Задачи обработки естественного языка, включая

    • Классификация текстов
    • Распознавание сущностей

Дополнительные сведения см. в разделе "Типы задач". Дополнительные сведения о настройке заданий прогнозирования см. в разделе Настройка AutoML для обучения модели прогнозирования временных рядов.

Поддерживаемые алгоритмы

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

Метод задачи определяет список применяемых алгоритмов или моделей. Чтобы дополнительно изменить итерации с доступными моделями для включения или исключения, используйте allowed_training_algorithms параметры blocked_training_algorithms или параметры в training конфигурации задания.

В следующей таблице изучите поддерживаемые алгоритмы для каждой задачи машинного обучения.

Классификация Регрессия Прогнозирование временных рядов
Логистическая регрессия* Эластичная сеть* AutoARIMA
Упрощенный алгоритм GBM* Упрощенный алгоритм GBM* Prophet
Градиентное усиление* Градиентное усиление* Эластичная сеть
Дерево принятия решений* Дерево принятия решений* Упрощенный алгоритм GBM
Алгоритм "К ближайших соседей"* Алгоритм "К ближайших соседей"* Алгоритм "К ближайших соседей"
Линейная классификация опорных векторов* Лассо LARS* Дерево принятия решений
Классификация опорных векторов (SVC)* Стохастический градиентный спуск (SGD)* Arimax
Случайный лес* Случайный лес Лассо LARS
Крайне случайные деревья* Крайне случайные деревья* Крайне случайные деревья*
Xgboost* Xgboost* Случайный лес
Упрощенный алгоритм Байеса* Xgboost TCNForecaster
Стохастический градиентный спуск (SGD)* Стохастический градиентный спуск (SGD) Градиентное усиление
ЭкспоненциальнаяSmoothing
СезоннаяNaive
Average
Наивный
СезоннаяAverage

С другими алгоритмами:

Примеры записных книжек каждого типа задачи см. в разделе automl-standalone-jobs.

Основная метрика

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

Выбор основной метрики для оптимизации автоматического машинного обучения зависит от многих факторов. Рекомендуется выбрать метрику, которая лучше соответствует потребностям вашего бизнеса. Затем рассмотрите, подходит ли метрика для профиля набора данных, включая размер данных, диапазон и распределение классов. В следующих разделах приведены рекомендуемые основные метрики, исходя из типа задач и бизнес-сценария.

Дополнительные сведения о конкретных определениях этих метрик см. в статье "Оценка результатов эксперимента автоматизированного машинного обучения".

Метрики для сценариев многоклассовой классификации

Эти метрики применяются ко всем сценариям классификации, включая табличные данные, изображения или компьютерное зрение, а также текст обработки естественного языка (NLP-Text).

Метрики, зависящие от пороговых значений, например accuracyrecall_score_weighted, norm_macro_recallи precision_score_weighted могут не оптимизироваться для наборов данных, которые являются небольшими, имеют большое отклонение класса (дисбаланс класса), или если ожидаемое значение метрики очень близко к 0,0 или 1.0. В таких случаях AUC_weighted может быть лучшим выбором в качестве основной метрики. После завершения автоматического машинного обучения можно выбрать эффективную модель на основе метрики, наиболее подходящей для ваших бизнес-задач.

Метрика Примеры вариантов использования
accuracy Классификация изображений, анализ тональности, прогнозирование оттока клиентов
AUC_weighted Обнаружение мошенничества, классификация изображений, обнаружение аномалий или нежелательной почты
average_precision_score_weighted Анализ тональности
norm_macro_recall Прогнозирование оттока клиентов
precision_score_weighted

Метрики для сценариев многометочной классификации

Для классификации текста с несколькими метками в настоящее время "Точность" является единственной основной поддерживаемой метрикой.

Для классификации изображений с несколькими метками поддерживаются основные метрики в ClassificationMultilabelPrimaryMetrics перечислении.

Метрики для сценариев распознавания именованных сущностей NLP

Для распознавания именованных сущностей NLP (NER) в настоящее время "Точность" является единственной основной поддерживаемой метрикой.

Метрики для сценариев регрессии

r2_score, normalized_mean_absolute_errorи normalized_root_mean_squared_error все пытаются свести к минимуму ошибки прогнозирования. r2_score и normalized_root_mean_squared_error оба являются минимизацией средних квадратных ошибок при normalized_mean_absolute_error минимизации среднего абсолютного значения ошибок. Абсолютное значение обрабатывает ошибки на всех величинах, как и квадратные ошибки, имеют гораздо больший штраф за ошибки с большими абсолютными значениями. В зависимости от того, следует ли наказать больше ошибок, можно оптимизировать квадратную ошибку или абсолютную ошибку.

Основное различие между и normalized_root_mean_squared_error заключается в r2_score том, как они нормализуются и их смыслы. normalized_root_mean_squared_error представляет собой корень среднеквадратической погрешности, нормализованный по диапазону, и может быть интерпретирован как средняя величина ошибки для прогноза. r2_score представляет собой среднее значение ошибки, нормализованное с помощью оценки вариантности данных. Это доля вариантов, которые модель может захватывать.

Примечание.

r2_score и normalized_root_mean_squared_error также ведут себя как основные метрики. Если применяется фиксированный набор проверки, эти две метрики оптимизированы для одного целевого объекта, среднеквадратической ошибки и оптимизированы одной и той же моделью. Если доступен только набор обучения и применяется перекрестная проверка, они будут немного отличаться, так как нормализатор для normalized_root_mean_squared_error зафиксирован в диапазоне обучающего набора, но нормализатор для r2_score будет отличаться для каждой свертки, представляя собой вариантность для каждой свертки.

Если ранг, а не точное значение, имеет интерес, spearman_correlation может быть лучшим выбором. Он измеряет корреляцию ранжирования между реальными значениями и прогнозами.

Автоматизированное машинное обучение в настоящее время не поддерживает какие-либо основные метрики, которые измеряют относительную разницу между прогнозами и наблюдениями. Метрики, normalized_mean_absolute_errorи normalized_root_mean_squared_error все меры абсолютной разницыr2_score. Например, если прогноз отличается от наблюдения на 10 единиц, эти метрики вычисляют то же значение, если наблюдение составляет 20 единиц или 20 000 единиц. В отличие от этого, процентная разница, которая является относительной мерой, дает ошибки 50% и 0,05%, соответственно. Чтобы оптимизировать относительную разницу, можно запустить автоматизированное машинное обучение с поддерживаемой первичной метрикой, а затем выбрать модель с лучшим mean_absolute_percentage_error или root_mean_squared_log_error. Эти метрики не определены, если значения наблюдения равны нулю, поэтому они не всегда могут быть хорошим выбором.

Метрика Примеры вариантов использования
spearman_correlation
normalized_root_mean_squared_error Прогноз цен (на недвижимость или продукт), проверка прогнозируемой оценки
r2_score Задержка авиарейса, оценка зарплаты, время разрешения ошибки
normalized_mean_absolute_error

Метрики для сценариев прогнозирования временных рядов

Рекомендации аналогичны рекомендациям для сценариев регрессии.

Метрика Примеры вариантов использования
normalized_root_mean_squared_error Прогнозирование цен, оптимизация запасов, прогнозирование спроса
r2_score Прогнозирование цен, оптимизация запасов, прогнозирование спроса
normalized_mean_absolute_error

Метрики для сценариев обнаружения объектов на изображениях

Для обнаружения объектов изображений в перечислении поддерживаются ObjectDetectionPrimaryMetrics основные метрики.

Метрики для сценариев сегментации экземпляров изображений

Для сценариев сегментации экземпляра изображений в перечислении поддерживаются InstanceSegmentationPrimaryMetrics основные метрики.

Конструирование признаков

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

Примечание.

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

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

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

Конфигурация конструирования признаков Description
"mode": 'auto' Указывает, что в процессе предварительной обработки выполняются действия защиты данных и признаков автоматически. Это значение является настройкой по умолчанию.
"mode": 'off' Указывает, что шаг конструирования признаков не должен выполняться автоматически.
"mode": 'custom' Указывает, что следует использовать настраиваемый шаг конструирования признаков.

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

from azure.ai.ml.automl import ColumnTransformer

transformer_params = {
    "imputer": [
        ColumnTransformer(fields=["CACH"], parameters={"strategy": "most_frequent"}),
        ColumnTransformer(fields=["PRP"], parameters={"strategy": "most_frequent"}),
    ],
}
regression_job.set_featurization(
    mode="custom",
    transformer_params=transformer_params,
    blocked_transformers=["LabelEncoding"],
    column_name_and_types={"CHMIN": "Categorical"},
)

Условия выхода

Существует несколько вариантов, которые можно определить в set_limits() функции, чтобы завершить эксперимент до завершения задания.

Критерии описание
Нет условий Если вы не определяете параметры выхода, эксперимент продолжается до тех пор, пока не будет выполнен дальнейший прогресс на первичной метрии.
timeout Определяет продолжительность выполнения эксперимента в минутах. Если это не указано, общее время ожидания задания по умолчанию составляет шесть дней (8640 минут). Чтобы указать время ожидания меньше или равно 1 часу (60 минут), убедитесь, что размер набора данных не превышает 10 000 000 (столбец времени строк) или результаты ошибки.

Это время ожидания включает настройку, признаки и учебные запуски, но не включает ensembling и объяснение модели выполняется в конце процесса, так как эти действия должны произойти после выполнения всех испытаний (дочерних заданий).
trial_timeout_minutes Максимальное время в минутах, в течение которого каждое испытание (дочернее задание) может выполняться до завершения. Если значение не указано, используется значение, равное 1 месяцу или 43 200 минутам.
enable_early_termination Следует ли завершить работу, если оценка не улучшается в краткосрочной перспективе.
max_trials Максимальное количество проб или запусков каждого из них с различным сочетанием алгоритмов и гиперпараметров, которые необходимо попробовать во время задания. Если это не указано, по умолчанию используется 1000 пробных версий. Если используется enable_early_termination, количество используемых проб может быть меньше.
max_concurrent_trials Это максимальное количество испытаний (дочерних параметров), которые могут выполняться параллельно. Рекомендуется сопоставить это число с количеством узлов кластера.

Выполнение эксперимента

Отправьте эксперимент для выполнения и создания модели.

Примечание.

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

Предупреждение

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

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


# Submit the AutoML job
returned_job = ml_client.jobs.create_or_update(
    classification_job
)  # submit the job to the backend

print(f"Created job: {returned_job}")

# Get a URL for the status of the job
returned_job.services["Studio"].endpoint

Множественные дочерние запуски в кластерах

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

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

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

Настройка max_concurrent_iterations в limits конфигурации. Если оно не настроено, по умолчанию разрешено только одно параллельное выполнение итерация дочернего запуска и итерации для каждого эксперимента. Для вычислительного экземпляра max_concurrent_trials можно задать одинаковое количество ядер на виртуальной машине вычислительного экземпляра.

Изучение моделей и метрик

Автоматическое Машинное обучение позволяет отслеживать и оценивать результаты обучения.

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

Регистрация и развертывание моделей

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

Совет

Для зарегистрированных моделей можно использовать одно щелчок развертывания с помощью Студия машинного обучения Azure. См. статью "Развертывание модели".

Использование AutoML в конвейерах

Чтобы использовать автоматизированное машинное обучение в рабочих процессах машинного обучения, можно добавить шаги задания AutoML в конвейеры Машинное обучение Azure. Такой подход позволяет автоматизировать весь рабочий процесс, подключив скрипты подготовки данных к автоматизированному машинному обучению. Затем зарегистрируйте и проверьте полученную лучшая модель.

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

# Define pipeline
@pipeline(
    description="AutoML Classification Pipeline",
    )
def automl_classification(
    classification_train_data,
    classification_validation_data
):
    # define the automl classification task with automl function
    classification_node = classification(
        training_data=classification_train_data,
        validation_data=classification_validation_data,
        target_column_name="y",
        primary_metric="accuracy",
        # currently need to specify outputs "mlflow_model" explictly to reference it in following nodes 
        outputs={"best_model": Output(type="mlflow_model")},
    )
    # set limits and training
    classification_node.set_limits(max_trials=1)
    classification_node.set_training(
        enable_stack_ensemble=False,
        enable_vote_ensemble=False
    )

    command_func = command(
        inputs=dict(
            automl_output=Input(type="mlflow_model")
        ),
        command="ls ${{inputs.automl_output}}",
        environment="AzureML-sklearn-0.24-ubuntu18.04-py37-cpu:latest"
    )
    show_output = command_func(automl_output=classification_node.outputs.best_model)


pipeline_job = automl_classification(
    classification_train_data=Input(path="./training-mltable-folder/", type="mltable"),
    classification_validation_data=Input(path="./validation-mltable-folder/", type="mltable"),
)

# set pipeline level compute
pipeline_job.settings.default_compute = compute_name

# submit the pipeline job
returned_pipeline_job = ml_client.jobs.create_or_update(
    pipeline_job,
    experiment_name=experiment_name
)
returned_pipeline_job

# ...
# Note that this is a snippet from the bankmarketing example you can find in our examples repo -> https://github.com/Azure/azureml-examples/tree/main/sdk/python/jobs/pipelines/1h_automl_in_pipeline/automl-classification-bankmarketing-in-pipeline

Дополнительные примеры включения автоматизированного машинного обучения в конвейеры см . в репозитории примеров.

Использование AutoML в масштабе: распределенное обучение

Для сценариев больших данных автоматизированное машинное обучение поддерживает распределенное обучение для ограниченного набора моделей:

Распределенный алгоритм Поддерживаемые задачи Ограничение размера данных (приблизительное)
LightGBM Классификация, регрессия 1 TБ
TCNForecaster Прогнозирование 200 ГБ

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

Примечание.

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

Распределенное обучение для классификации и регрессии

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

Свойство Description
training_mode Указывает режим обучения: distributed или non_distributed. По умолчанию — non_distributed.
max_nodes Количество узлов, используемых для обучения для каждой пробной версии. Этот параметр должен быть больше или равен 4.

В следующем примере кода показан пример этих параметров для задания классификации:

from azure.ai.ml.constants import TabularTrainingMode

# Set the training mode to distributed
classification_job.set_training(
    allowed_training_algorithms=["LightGBM"],
    training_mode=TabularTrainingMode.DISTRIBUTED
)

# Distribute training across 4 nodes for each trial
classification_job.set_limits(
    max_nodes=4,
    # other limit settings
)

Примечание.

Распределенное обучение для задач классификации и регрессии в настоящее время не поддерживает несколько одновременных проб. Пробные версии модели выполняются последовательно с каждой пробной версией с помощью max_nodes узлов. Параметр max_concurrent_trials ограничения в настоящее время игнорируется.

Распределенное обучение для прогнозирования

Сведения о том, как распределенное обучение работает для задач прогнозирования, см . в статье "Прогнозирование в масштабе". Чтобы использовать распределенное обучение для прогнозирования, необходимо задать training_modeenable_dnn_trainingmax_nodesи при необходимости max_concurrent_trials свойства объекта задания.

Свойство Description
training_mode Указывает режим обучения; distributed или non_distributed. По умолчанию — non_distributed.
enable_dnn_training Пометка для включения моделей глубокой нейронной сети.
max_concurrent_trials Это значение — максимальное количество пробных моделей для параллельного обучения. По умолчанию равен 1.
max_nodes Общее количество узлов, используемых для обучения. Этот параметр должен быть больше или равен 2. Для задач прогнозирования каждая пробная модель обучена с помощью узлов $\text{max}\left(2, \text{floor}( \text{max_nodes} / \text{max_concurrent_trials}) \right)$.

В следующем примере кода показан пример этих параметров для задания прогнозирования:

from azure.ai.ml.constants import TabularTrainingMode

# Set the training mode to distributed
forecasting_job.set_training(
    enable_dnn_training=True,
    allowed_training_algorithms=["TCNForecaster"],
    training_mode=TabularTrainingMode.DISTRIBUTED
)

# Distribute training across 4 nodes
# Train 2 trial models in parallel => 2 nodes per trial
forecasting_job.set_limits(
    max_concurrent_trials=2,
    max_nodes=4,
    # other limit settings
)

Примеры полного кода конфигурации см. в предыдущих разделах по настройке и отправке заданий.