Использование подхода "многие модели" для масштабирования моделей машинного обучения

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

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

Архитектура

диаграмма, показывающая архитектуру многих моделей.

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

Поток данных

Следующий поток данных соответствует предыдущей схеме:

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

    1. Фабрика данных Azure извлекает данные из исходной базы данных и копирует его в Azure Data Lake Storage.

    2. Затем данные хранятся в хранилище данных Машинного обучения в виде табличного набора данных.

  2. Конвейер обучения моделей:

    1. Подготовка данных:

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

      2. Данные группируются в наборы данных для обучения моделей.

    2. Обучение моделей:

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

      2. Он использует класс ParallelRunStep для параллельного обучения нескольких моделей.

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

  3. Конвейер повышения уровня модели:

    1. Оценка моделей:

      1. Конвейер повышения уровня оценивает обученные модели перед их перемещением в рабочую среду.

      2. Конвейер DevOps с помощью бизнес-логики определяет, соответствует ли модель критериям развертывания. Например, это может убедиться, что точность тестирования данных превышает 80%.

    2. Регистр моделей:

      1. Конвейер повышения уровня регистрирует подходящие модели в рабочей рабочей области Машинного обучения.
  4. Конвейер пакетной оценки модели:

    1. Подготовка данных:

      1. Конвейер пакетной оценки извлекает данные из хранилища данных и преобразует каждый файл по мере необходимости.

      2. Данные группируются в наборы данных для оценки.

    2. модели оценки :

      1. Конвейер использует класс ParallelRunStep для параллельной оценки нескольких наборов данных.

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

      3. Модель загружается и используется для оценки набора данных.

      4. Класс DataTransferStep записывает результаты обратно в Azure Data Lake.

      5. Прогнозы передаются из Azure Data Lake в Synapse SQL для обслуживания.

      6. Управляемая конечная точка в Сети предоставляет оценку в режиме реального времени.

      7. Из-за большого количества моделей они загружаются по запросу, а не предварительно загружены.

  5. Результаты:

    • Прогнозы. Конвейер пакетной оценки сохраняет прогнозы в SQL.

    • метрик: Microsoft Power BI подключается к прогнозам модели для получения и агрегирования результатов для презентации.

Компоненты

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

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

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

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

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

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

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

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

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

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

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

  • Для исходных данных можно использовать любую базу данных.

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

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

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

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

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

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

  • Цепочка поставок. Для каждой комбинации склада и продукта дистрибьюторская компания должна оптимизировать инвентаризацию.

  • Рестораны: сеть с тысячами франшиз необходимо прогнозировать спрос на каждую франшизу.

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

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

  • секции данных: деление данных на секции важно для реализации многих моделей. Если требуется одна модель для каждого хранилища, каждый набор данных содержит все данные для одного хранилища, поэтому существует столько наборов данных, сколько есть. Если вы хотите моделировать продукты по магазинам, существует набор данных для каждого сочетания продуктов и магазинов. В зависимости от формата исходных данных может быть легко секционировать данные, или может потребоваться обширный перетасовка и преобразование данных. Spark и Synapse SQL хорошо масштабируется для этих задач, в то время как pandas Python не работает на одном узле и процессе.

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

  • Выбор правильной архитектуры:

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

    • Если алгоритмы обучения и оценки машинного обучения просты, вы можете секционировать данные с помощью библиотек, таких как scikit-learn. В этом сценарии может не потребоваться Spark, поэтому при установке Azure Synapse Analytics или Azure Databricks можно избежать возможных сложностей.

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

    • Решение "Машинное обучение и вычислительные кластеры" обеспечивает универсальность ситуаций, требующих сложной настройки. Например, можно использовать пользовательский контейнер Docker, скачать файлы или скачать предварительно обученные модели. Компьютерное зрение и глубокое обучение на естественном языке — это примеры приложений, которые могут требовать этого универсальности.

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

  • класс ParallelRunStep: класс Python ParallelRunStep является мощным вариантом для выполнения обучения и вывода моделей. Он может секционирование данных различными способами, а затем применять скрипт машинного обучения к элементам секции параллельно. Как и другие формы обучения машинного обучения, можно указать настраиваемую среду обучения, которая имеет доступ к пакетам Индекса пакетов Python (PyPI) или более расширенную настраиваемую среду Docker для конфигураций, требующих более стандартного PyPI. Для выбора доступно множество ЦП и GPU.

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

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

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

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

  • Обслуживающие модели обучаются ежедневно, чтобы оставаться актуальными.

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

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

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

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

Соавторы

Корпорация Майкрософт поддерживает эту статью. Следующие авторы написали эту статью.

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

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

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