Настройка гиперпараметров для моделей машинного обучения в Python

Хранилище BLOB-объектов
Реестр контейнеров
Машинное обучение
Служба хранилища
Виртуальные машины для обработки и анализа данных

В этой эталонной архитектуре показаны рекомендации по настройке гиперпараметров моделей Python. Гиперпараметры — это настраиваемые параметры, позволяющие управлять процессом обучения модели. Машинное обучение Azure позволяет автоматизировать настройку гиперпараметров и выполнять эксперименты параллельно для эффективной оптимизации гиперпараметров.

В этой эталонной архитектуре рассматриваются два сценария: оптимизация гиперпараметров моделей scikit-learn и моделей глубокого обучения с графическими процессорами. Две эталонные реализации для этой архитектуры доступны на GitHub, одна для обучения моделей scikit-learn в моделях Azure и одна для обучения моделей глубокого обучения в моделях Azure.

Architecture diagram: tuning hyperparameters for Python models on Azure

Сценарий: сопоставление часто задаваемых вопросов о Stack Overflow

Проблема устранена в соответствии с часто задаваемыми вопросами (часто задаваемыми вопросами). В этом сценарии используется набор данных вопросов Stack Overflow , которые содержат исходные вопросы, помеченные тегами JavaScript, дублирующиеся вопросы и ответы на них. Он настраивает конвейер scikit-learn, чтобы предсказать вероятность того, что повторяющийся вопрос соответствует одному из исходных вопросов.

Обработка в этом сценарии конвейера Машинное обучение Azure состоит из следующих этапов:

  1. Обучающий скрипт Python отправляется в Машинное обучение Azure.

  2. Скрипт выполняется в контейнерах Docker, созданных на каждом узле.

  3. Этот скрипт извлекает данные для обучения и тестирования из служба хранилища Azure.

  4. Скрипт обучает модель из обучающих данных с помощью сочетания параметров обучения.

  5. Производительность модели оценивается на тестовых данных и записывается в служба хранилища Azure.

  6. Наиболее подходящая модель регистрируется в Машинное обучение Azure.

Сценарий: обнаружение вне запасов

В этом сценарии показано, как настроить модель RCNN маски обнаружения объектов, которую можно развернуть как веб-службу для предоставления прогнозов для пустых пространств на полках магазина. Изображения, похожие на полки магазинов розничной торговли, заполненные продуктами, используются для прогнозирования пустых пространств, чтобы помочь обнаружить из запасов продуктов, потенциально женившись на этих прогнозах с другими источниками информации, такими как планограммы и базы данных. В этом сценарии рассматривается только прогнозирование пустого пространства. Используемый набор данных распространяется по лицензии CC-BY 4.0 .

Обработка в этом сценарии включает в себя следующие действия.

  1. Обучающий скрипт Python отправляется в Машинное обучение Azure.

  2. Скрипт выполняется в контейнерах Docker, созданных на каждом узле, извлекая пользовательский образ, хранящийся в Реестр контейнеров Azure.

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

  4. Производительность модели оценивается на тестовых данных и записывается в служба хранилища Azure.

  5. Наиболее подходящая модель регистрируется в Машинное обучение Azure.

Другие рекомендации по распределенному обучению моделей глубокого обучения с графическими процессорами см. в статье Распределенное обучение моделей глубокого обучения в Azure.

Архитектура

Эта архитектура состоит из нескольких облачных служб Azure, которые позволяют масштабировать ресурсы в соответствии с вашими потребностями. Ниже описаны службы и их роли в этом решении.

Microsoft Виртуальная машина для обработки и анализа данных (DSVM) — это образ виртуальной машины, настроенный с помощью средств для аналитики данных и машинного обучения. Доступны обе версии Windows Server и Linux. В этой эталонной реализации используются выпуски DSVM linux в Ubuntu.

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

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

Реестр контейнеров Azure хранит образы для всех типов развертываний контейнеров Docker. Эти контейнеры создаются на каждом узле и используются для запуска скрипта Python для обучения. Образ, используемый в кластере вычислений Машинное обучение, создается Машинное обучение в записных книжках для локального запуска и настройки гиперпараметров, а затем отправляется в реестр контейнеров.

Хранилище BLOB-объектов Azure получает обучающие и тестовые наборы данных из Машинное обучение, используемых скриптом Python для обучения. Хранилище подключается в качестве виртуального диска на каждом узле кластера Вычислительной среды Машинного обучения.

Рекомендации по производительности

Каждый набор гиперпараметров выполняется на одном узле целевого объекта вычислений Машинное обучение. Для сценария 1 каждый узел — это виртуальная машина уровня "Стандартный D4 версии 2", которая имеет четыре ядра. В этом сценарии используется классификатор LightGBM для машинного обучения — платформы повышения градиента. Это программное обеспечение может работать на всех четырех ядрах одновременно, ускоряя каждый запуск с коэффициентом до четырех. Таким образом, весь запуск настройки гиперпараметров занимает до четверти времени, необходимого для запуска в целевом объекте вычислений Машинное обучение на основе виртуальных машин Standard D1 версии 2, которые имеют только одно ядро. Для сценария 2 каждый узел является стандартным NC6 с одним GPU, а каждый запуск настройки гиперпараметров будет использовать один GPU на каждом узле.

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

Мониторинг и ведение журнала запросов

Отправьте конфигурацию запуска HyperDrive , чтобы вернуть объект Run, который можно использовать для мониторинга хода выполнения. Отслеживайте ход выполнения с помощью мини-приложения Jupyter RunDetails или с помощью портал Azure.

Мини-приложение Jupyter RunDetails

Используйте объект Run с мини-приложением RunDetails Jupyter , чтобы удобно отслеживать ход выполнения в очереди и при выполнении дочерних заданий. Здесь также показаны значения первичной статистики, в которую они регистрируются в режиме реального времени.

Портал Azure

Печать объекта Run для отображения ссылки на страницу запуска в портал Azure следующим образом:

Run object used to display a link to the run information in Azure portal

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

Рекомендации по затратам

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

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

Дополнительные сведения о Машинное обучение Azure и затратах см. в разделе "Планирование управления затратами на Машинное обучение Azure".

Вопросы безопасности

Ограничение доступа к хранилищу BLOB-объектов Azure

В этой архитектуре для доступа к хранилищу BLOB-объектов используются ключи учетной записи хранения. Для дальнейшего управления и защиты рекомендуется использовать подписанный URL-адрес (SAS). Таким образом можно предоставить ограниченный доступ к объектам в хранилище без необходимости жесткого кодирования ключей учетной записи или сохранения их в виде открытого текста. Использование SAS также гарантирует, что в учетной записи хранения обеспечено надлежащее управление, а доступ предоставляется только пользователям, которым он необходим.

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

Шифрование данных во время хранения и передачи

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

Защита данных в виртуальной сети

Для рабочих развертываний рассмотрите возможность развертывания кластера в подсети указанной виртуальной сети. Подсеть позволяет вычислительным узлам кластера безопасно взаимодействовать с другими виртуальными машинами или локальной сетью. Вы также можете использовать конечные точки службы с хранилищем BLOB-объектов для предоставления доступа из виртуальной сети или использования NFS с одним узлом в виртуальной сети с Машинное обучение Azure.

Развертывание

Чтобы развернуть эталонную реализацию для этой архитектуры, выполните действия, описанные в репозитории GitHub:

Дальнейшие действия

Связанные статьи центра архитектуры Azure:

Дополнительные сведения об обучении: