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

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

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

Архитектура

Architecture diagram that shows the batch scoring of Python models on Azure

Скачайте файл Visio для этой архитектуры.

Workflow

Это руководство по архитектуре применимо как для потоковой передачи, так и для статических данных, при условии, что процесс приема адаптирован к типу данных. Следующие шаги и компоненты описывают прием этих двух типов данных.

Потоковая передача данных:

  1. Потоковая передача данных происходит из датчиков Интернета вещей, где новые события передаются с частыми интервалами.
  2. Входящие события потоковой передачи помещаются в очередь с помощью Центры событий Azure, а затем предварительно обрабатываются с помощью Azure Stream Analytics.
    • Центры событий Azure. Эта служба приема сообщений может принимать миллионы сообщений о событиях в секунду. В этой архитектуре датчики передают поток данных в концентратор событий.
    • Azure Stream Analytics. Подсистема обработки событий. Задание Stream Analytics считывает потоки данных из концентратора событий и обрабатывает их.

Статические данные.

  1. Статические наборы данных можно хранить в виде файлов в Azure Data Lake служба хранилища или в табличной форме в Azure Synapse или База данных SQL Azure.
  2. Фабрика данных Azure можно использовать для статистической обработки или предварительной обработки хранимого набора данных.

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

  1. Собранные и предварительно обработанные данные можно хранить в виде документов в Azure Data Lake служба хранилища или в табличной форме в Azure Synapse или База данных SQL Azure. Затем эти данные будут использоваться Машинное обучение Azure.
  2. Машинное обучение Azure используется для обучения, развертывания и управления моделями машинного обучения в большом масштабе. В контексте пакетной оценки Машинное обучение Azure создает кластер виртуальных машин с параметром автоматического масштабирования, где задания выполняются параллельно с скриптами Python.
  3. Модели развертываются как управляемые конечные точки пакетной службы, которые затем используются для пакетного вывода на больших объемах данных за период времени. Пакетные конечные точки получают указатели на данные и запускают задания асинхронно для параллельной обработки данных в кластерах вычислений.
  4. Результаты вывода можно хранить в виде документов в Azure Data Lake служба хранилища или в табличной форме в Azure Synapse или База данных SQL Azure.
  5. Визуализация. Результаты хранимой модели можно использовать с помощью пользовательских интерфейсов, таких как панели мониторинга Power BI, или с помощью пользовательских веб-приложений.

Компоненты

Рекомендации

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

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

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

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

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

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

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

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

Управление

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

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

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

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

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

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

Соавторы

Эта статья поддерживается корпорацией Майкрософт. Первоначально он был написан следующими участник.

Основные авторы:

Чтобы просмотреть недоступные профили LinkedIn, войдите в LinkedIn.

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

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

Модули Microsoft Learn.