Изменить

Поделиться через


Многие модели машинного обучения в масштабе с Машинное обучение Azure

Фабрика данных Azure
Azure Data Lake
Azure Databricks
Машинное обучение Azure
Azure Synapse Analytics

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

Архитектура

Схема архитектуры для многих моделей машинного обучения в масштабе Azure с Машинное обучение Azure.

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

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

  1. прием данных :

    • Фабрика данных Azure извлекает данные из исходной базы данных и копирует его в Azure Data Lake Storage.
    • Затем данные хранятся в хранилище данных Машинного обучения в виде табличного набора данных.
  2. Конвейер Model-Training:

    1. подготовка данных:
      • Конвейер обучения извлекает данные из хранилища данных и преобразует его дальше по мере необходимости.
      • Данные группируются в наборы данных для обучения моделей.
    2. обучение моделей :
      • Конвейер обучает модели для всех наборов данных, созданных во время подготовки данных.
      • Он использует класс ParallelRunStep для параллельного обучения нескольких моделей.
      • После обучения конвейер регистрирует модели в Машинном обучении вместе с их метриками тестирования.
  3. Конвейер Model-Promotion:

    1. оценка моделей:
      • Конвейер повышения уровня оценивает обученные модели перед перемещением их в рабочую среду.
      • Конвейер DevOps применяет бизнес-логику, чтобы определить, соответствует ли модель критериям развертывания (например, проверка точности при тестировании данных превышает 80%).
    2. регистрировать модели:
      • Конвейер повышения уровня регистрирует подходящие модели в рабочей рабочей области Машинного обучения.
  4. Конвейер Batch-Scoring модели :

    1. подготовка данных:
      • Конвейер пакетной оценки извлекает данные из хранилища данных и преобразует каждый файл дальше по мере необходимости.
      • Данные группируются в наборы данных для оценки.
    2. модели оценки :
      • Конвейер использует класс ParallelRunStep для параллельной оценки нескольких наборов данных.
      • Он определяет соответствующую модель для каждого набора данных в Машинном обучении путем поиска тегов модели.
      • Модель загружается и используется для оценки набора данных.
      • Класс DataTransferStep используется для записи результатов обратно в Azure Data Lake.
      • Затем прогнозы передаются из Azure Data Lake в Synapse SQL для обслуживания.
  5. оценка Real-Time:

    • Для обеспечения оценки в режиме реального времени используется управляемая конечная точка Online.
    • Из-за большого количества моделей они загружаются по запросу, а не предварительно загружены.
  6. Результаты:

    1. Прогнозы. Конвейер пакетной оценки сохраняет прогнозы в SQL.
    2. Метрики. Power BI подключается к прогнозам модели для получения и агрегирования результатов, которые будут представлены.

Компоненты

  • Фабрике данных Azure — это облачная служба интеграции данных, которая позволяет создавать управляемые данными рабочие процессы для оркестрации и автоматизации перемещения и преобразования данных. В этой архитектуре фабрика данных Azure используется для приема корпоративных данных и сторонних метаданных в Azure Data Lake Storage.

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

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

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

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

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

  • Azure Synapse Analytics — это служба аналитики, которая объединяет интеграцию данных, корпоративное хранилище данных и аналитику больших данных. Он используется в этой архитектуре для хранения результатов пакетной оценки, что позволяет эффективно запрашивать и извлекать прогнозы для создания отчетов или анализа. Synapse SQL специально используется для обслуживания прогнозов для подчиненных приложений и включения средств визуализации, таких как Power BI, для доступа к агрегированным результатам.

  • База данных SQL Azure — это полностью управляемая реляционная база данных как услуга. В этой архитектуре база данных SQL Azure используется для хранения структурированных данных, которые могут запрашиваться или анализироваться в рамках конвейера данных.

  • Azure DevOps — это набор служб для разработчиков, который обеспечивает комплексное управление жизненным циклом приложений и инфраструктуры. Она включает средства для отслеживания работы, управления версиями, сборки и CI/CD, управления пакетами и тестирования решений. В этой архитектуре Azure DevOps используется для управления конвейерами CI/CD для автоматизации повышения, тестирования и развертывания в рабочих средах.

  • Microsoft Power BI — это набор программных служб, приложений и соединителей, которые работают вместе, чтобы превратить несвязанные источники данных в согласованные, визуально привлекательные и интерактивные сведения. В этой архитектуре Power BI подключается к Synapse SQL для получения и представления прогнозов и агрегированных метрик с помощью интерактивных панелей мониторинга.

Альтернативные варианты

  • Исходные данные могут поступать из любой базы данных.
  • Службу Azure Kubernetes (AKS) можно использовать для вывода в режиме реального времени вместо управляемых конечных точек Online. AKS позволяет развертывать контейнерные модели и обеспечивает больший контроль над развертыванием, что позволяет динамической загрузке моделей обрабатывать входящие запросы без исчерпания ресурсов.

Подробности сценария

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

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

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

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

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

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

  • Секции данных. Секционирование данных — основной фактор реализации шаблона использования большого числа моделей. Если требуется использовать отдельную модель для каждого магазина, набор данных будет содержать все данные для одного магазина. При этом наборов данных будет столько же, сколько магазинов. Если вы хотите выполнить моделирование продуктов по магазинам, то для каждого сочетания продукта и магазина будет использоваться отдельный набор данных. В зависимости от формата исходных данных может быть легко секционировать данные, или может потребоваться обширный перетасовка и преобразование данных. Spark и Synapse SQL очень хорошо масштабируются для таких задач, а Pandas в Python не очень подходит для их выполнения, так как работает только в одном узле и процессе.
  • Управление моделями. Конвейеры обучения и оценки определяют и вызывают нужную модель для каждого набора данных. Для этого они вычисляют теги, характеризующие набор данных, а затем с помощью этих тегов выполняют поиск соответствующей модели. Теги определяют ключ секции данных и версию модели, а также могут предоставлять другие сведения.
  • Выбор правильной архитектуры:
    • Spark будет подходящим вариантом, если в конвейере обучения применяются сложные требования к преобразованию и группированию данных. Решение предоставляет гибкие методы разделения и группирования данных по комбинациям характеристик, таким как "продукт — магазин" или "расположение — продукт". Результаты можно разместить в кадре данных Spark для использования на дальнейших этапах.
    • Когда алгоритмы обучения и оценки машинного обучения просты, вы можете секционировать данные с помощью библиотек, таких как scikit-learn. В таких случаях может не потребоваться Spark, поэтому при установке Azure Synapse или Azure Databricks можно избежать возможных сложностей.
    • Когда наборы данных для обучения уже созданы ( например, они находятся в отдельных файлах или в отдельных строках или столбцах) не требуется Spark для сложных преобразований данных.
    • Решение Машинного обучения и вычислительных кластеров обеспечивает высокую степень универсальности для ситуаций, требующих сложной настройки. Например, вы можете использовать пользовательский контейнер Docker или скачивать файлы либо предварительно обученные модели. Компьютерное зрение и глубокое обучение при обработке естественного языка (NLP) — это примеры областей применения, в которых может потребоваться такая универсальность.
  • Отдельные репозитории для моделей. Чтобы защитить развернутые модели, рекомендуем хранить их в собственном репозитории, который не затрагивают конвейеры обучения и тестирования.
  • Класс ParallelRunStep. Класс Python ParallelRunStep является эффективным выбором для выполнения обучения и вывода многих моделей. Он может секционирование данных различными способами, а затем применять скрипт машинного обучения к элементам секции параллельно. Как и другие формы обучения Машинное обучение, можно указать настраиваемую среду обучения с доступом к пакетам Индекса пакетов Python (PyPI) или более расширенной пользовательской среде Docker для конфигураций, требующих более стандартного PyPI. Для выбора доступно множество ЦП и GPU.
  • Вывод по сети: если конвейер загружает и кэширует все модели в начале, модели могут исчерпать память контейнера. Поэтому загружайте модели по требованию в методе запуска, даже если это может привести к значительному увеличению задержки.

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

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

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

  • Обслуживающие модели обучаются ежедневно, чтобы оставаться актуальными.
  • Для набора данных в 40 миллионов строк с 10 тысячами комбинаций магазинов и продуктов обучение Azure Databricks с применением кластера, который подготовлен с 12 виртуальными машинами, использующими экземпляры Ls16_v2, занимает около 30 минут.
  • Пакетная оценка с тем же набором данных занимает около 20 минут.
  • С помощью Машинного обучения можно выполнять развертывание в режиме реального времени. Выберите подходящий тип виртуальной машины и размер кластера для требуемого объема запросов.
  • Кластер AKS автоматически масштабируется по мере необходимости. В результате в среднем остаются активными два узла в месяц.

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

Соавторы

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

Автор субъекта:

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