Пакетная оценка моделей Python в Azure

Реестр контейнеров
Центры событий
Машинное обучение
База данных SQL
Stream Analytics

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

Эталонная реализация для этой архитектуры доступна на GitHub.

Архитектура

Diagram that shows the batch scoring of Python models on Azure.

Рабочий процесс

Эта архитектура состоит из следующих компонентов.

Центры событий Azure. Эта служба приема сообщений может принимать миллионы сообщений о событиях в секунду. В этой архитектуре датчики передают поток данных в концентратор событий.

Azure Stream Analytics. Подсистема обработки событий. Задание Stream Analytics считывает потоки данных из концентратора событий и обрабатывает их.

База данных SQL Azure. Данные показаний датчиков загружаются в Базу данных SQL. SQL — это знакомый способ хранения обработанных потоковых данных (которые являются табличными и структурированными), но также можно использовать другие хранилища данных.

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

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

Реестр контейнеров Azure. Скрипт оценки Python выполняется в контейнерах Docker, созданных на каждом узле кластера, где он считывает соответствующие данные датчика, создает прогнозы и сохраняет их в служба хранилища BLOB-объектов.

Компоненты

Сведения о решении

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

Потенциальные варианты использования

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

  1. Отправка показаний датчиков для приема в Центры событий Azure.
  2. Потоковая обработка и сохранение необработанных данных.
  3. Отправьте данные в кластер Машинное обучение, готовый к работе. Каждый узел в кластере выполняет задание оценки для определенного датчика.
  4. Выполните конвейер оценки, который выполняет задания оценки параллельно с помощью скриптов машинного обучения Python. Конвейер создается, публикуется и планируется к выполнению в течение определенного интервала времени.
  5. Создайте прогнозы и сохраните их в служба хранилища BLOB-объектов для последующего использования.

Особенности

Эти рекомендации реализуют основы платформы Azure Well-Architected Framework, которая представляет собой набор руководящих принципов, которые можно использовать для повышения качества рабочей нагрузки. Дополнительные сведения см. в разделе Microsoft Azure Well-Architected Framework.

Производительность

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

Параллелизация между виртуальными машинами и ядрами

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

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

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

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

Управление

  • Мониторинг заданий. Важно отслеживать ход выполнения заданий. Тем не менее, сложно отслеживать кластер активных узлов. Чтобы проверить состояние узлов в кластере, используйте портал Azure для управления рабочей областью Машинное обучение. Если узел неактивен или задание завершилось сбоем, журналы ошибок сохраняются в хранилище BLOB-объектов, а также доступны в разделе Pipelines. Для оптимизации мониторинга подключите журналы к Application Insights или запустите отдельные процессы для опроса состояния кластера и его заданий.
  • Ведение журнала. Машинное обучение регистрирует все stdout/stderr в связанную учетную запись служба хранилища Azure. С помощью средств навигации, например Обозревателя службы хранилища Azure, можно удобно просматривать файлы журнала.

Оптимизация затрат

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

Самые дорогие компоненты, используемые в этой эталонной архитектуре, – вычислительные ресурсы. Вычислительный кластер можно масштабировать в зависимости от заданий в очереди. Включите автоматическое масштабирование программным способом с помощью пакета SDK для Python, изменив конфигурацию подготовки вычислений. Или используйте Azure CLI , чтобы задать параметры автоматического масштабирования кластера.

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

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

Развертывание этого сценария

Для развертывания этой эталонной архитектуры, выполните действия, описанные в репозитории GitHub.

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

Документация по продуктам:

Модули Microsoft Learn: