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

Azure Active Directory
Databricks
Фабрика данных
Хранилище BLOB-объектов

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

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

Архитектура

Diagram showing batch scoring of Apache Spark classification models on Azure Databricks.

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

Архитектура определяет поток данных, который полностью содержится в Azure Databricks на основе набора последовательно выполняемых записных книжек. Она содержит следующие компоненты.

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

Прием. Записная книжка для приема данных скачивает входные файлы данных в коллекцию наборов данных Databricks. В реальном сценарии поток данных с устройств Интернета вещей будет поступать в хранилище, доступное для Databricks, например экземпляр Azure SQL Server или хранилище BLOB-объектов Azure. Databricks поддерживает несколько источников данных.

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

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

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

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

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

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

  • 1a_raw-data_exploring.ipynb
  • 2a_feature_exploration.ipynb
  • 2b_model_testing.ipynb
  • 3b_model_scoring_evaluation.ipynb

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

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

Модель прогнозного обслуживания собирает данные с компьютеров и сохраняет зарегистрированные данные о сбоях компонентов. Затем модель может использоваться для отслеживания текущего состояния компонентов и прогнозирования, будет ли данный компонент завершать сбой в ближайшее время. Распространенные варианты использования и подходы к моделированию см. в руководстве по использованию Azure ИИ для создания решений прогнозного обслуживания.

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

  1. Прием данных из внешнего хранилища данных в хранилище данных Azure Databricks.

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

  3. Применение обученной модели для прогнозирования (классификация) сбоев компонентов путем преобразования данных в оценочный набор данных. Оценка данных с помощью модели Spark MLLib.

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

Записные книжки предоставляются в GitHub для выполнения каждой из этих задач.

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

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

  • поддержка единого входа с использованием учетных данных Azure Active Directory;
  • планировщик заданий для выполнения заданий рабочих конвейеров;
  • полностью интерактивная записная книжка с поддержкой совместной работы, панелей мониторинга и интерфейсов REST API;
  • неограниченное количество кластеров с возможностью масштабирования до любого размера;
  • широкий набор средств безопасности, управление доступом на основе ролей и журналы аудита.

Для взаимодействия с платформой Azure Databricks откройте интерфейс рабочей области Databricks в браузере или интерфейсе командной строки (CLI). Доступ к Databricks с помощью CLI возможен с любой платформы, которая поддерживает Python версий 2.7.9–3.6.

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

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

Особенности

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

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

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

Разработка более сложных запланированных конвейеров с помощью Фабрика данных Azure с Databricks Azure.

Память

В этой эталонной реализации данные хранятся непосредственно в хранилище Databricks, чтобы упростить систему. Однако в рабочей среде можно хранить данные в облачном хранилище данных, например Хранилище BLOB-объектов Azure. Databricks также поддерживает Azure Data Lake Store, Azure Synapse Analytics, Azure Cosmos DB, Apache Kafka и Apache Hadoop.

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

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

В общих случаях для оценки затрат используйте калькулятор цен Azure. Другие рекомендации описаны в разделе "Затраты" в Microsoft Azure Well-Architected Framework.

Azure Databricks — это предложение Spark ценовой категории "Премиум" с соответствующими ценами. Кроме того, существуют ценовые категории Databricks "Стандартный" и "Премиум".

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

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

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

Чтобы развернуть эту эталонную архитектуру, выполните действия, описанные в репозитории GitHub, чтобы создать масштабируемое решение для оценки моделей Spark в пакетной службе в Azure Databricks.

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