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

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

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

Если вы предпочитаете работать без кода, можно также настроить обучение AutoML без кода в Студии машинного обучения Azure.

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

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

Чтобы установить пакет SDK:

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

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

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

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

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

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 см. в статье о mltable how-to

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

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

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

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

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

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

Узнайте больше о создании вычислительных ресурсов с помощью пакета SDK версии 2 (или CLI версии 2) Python.

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

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

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

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
)

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

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

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

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

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

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

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

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

С использованием дополнительных алгоритмов ниже.

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

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

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

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

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

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

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

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

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

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

  • Для классификации текста многозначная метка в настоящее время является единственной основной поддерживаемой метрикой.

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

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

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

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

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 может быть лучшим выбором, так как измеряет корреляцию между реальными значениями и прогнозами.

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

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

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

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

Metric Пример (-ы) использования
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 Определяет продолжительность выполнения эксперимента в минутах. Если это не указано, общее время ожидания задания по умолчанию составляет 6 дней (8640 минут). Чтобы указать время ожидания меньше или равно 1 часу (60 минут), убедитесь, что размер набора данных не превышает 10 000 000 (столбец времени строк) или результаты ошибки.

Это время ожидания включает настройку, функции и учебные запуски, но не включает ensembling и объяснимость модели выполняется в конце процесса, так как эти действия должны произойти после завершения всех испытаний (дочерних заданий).
trial_timeout_minutes Максимальное время в минутах, в течение которого каждое испытание (дочернее задание) может выполняться до завершения. Если значение не указано, используется значение, равное 1 месяцу или 43 200 минутам.
enable_early_termination Следует ли завершать задание, если оценка не улучшается за короткое время.
max_trials Максимальное количество проб или запусков каждого из них с различным сочетанием алгоритмов и гиперпараметров, которые необходимо попробовать во время задания AutoML. Если значение, не указано, по умолчанию используется 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 в рабочих процессах MLOps, можно добавить шаги задания AutoML в конвейеры Машинное обучение Azure. Это позволяет автоматизировать весь рабочий процесс, подключив скрипты подготовки данных к AutoML, а затем зарегистрировав и проверив полученную оптимальную модель.

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

# 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 в конвейеры проверка из репозитория примеров.

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

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

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

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

Примечание.

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

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

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

Свойство Description
training_mode Указывает режим обучения; distributed или non_distributed. По умолчанию — non_distributed.
max_nodes Количество узлов, используемых для обучения каждой пробной версией AutoML. Этот параметр должен быть больше или равен 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
)

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

Следующие шаги