Создание API рекомендаций в режиме реального времени в Azure

Cosmos DB
Databricks
Служба Kubernetes
Машинное обучение

В этой эталонной архитектуре показано, как обучить модель рекомендаций с помощью Azure Databricks и развернуть ее как API с помощью Azure Cosmos DB, Машинного обучения Azure и Службы Azure Kubernetes (AKS). Эту архитектуру можно подготовить к использованию для большинства сценариев механизма рекомендаций, включая рекомендации для продуктов, фильмов и новостей.

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

Архитектура модели машинного обучения для создания рекомендаций к фильмам

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

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

Поток данных для этой модели рекомендаций выглядит следующим образом.

  1. Отслеживание поведения пользователя. Например, серверная служба может регистрировать, когда пользователь оценивает фильм, щелкает продукт или новостную статью.

  2. Загрузка данных в Azure Databricks из доступного источника данных.

  3. Подготовка данных и их разделение на наборы для обучения и тестирования модели. (В этом руководстве описаны параметры для разделения данных).

  4. Настройте модель Spark Collaborative Filtering согласно данным.

  5. Оцените качество модели, используя рейтинг и метрики ранжирования. (В этом руководстве содержатся сведения о метриках, по которым вы можете оценивать рекомендации).

  6. Предварительно вычислите 10 рекомендаций для каждого пользователя и сохраните их в виде кэша в Azure Cosmos DB.

  7. Разверните службу API в AKS с помощью API Машинного обучения Azure для контейнеризации и развертывания API.

  8. Когда серверная служба получит запрос от пользователя, вызовите API рекомендаций, размещенный в AKS, чтобы получить 10 лучших рекомендаций и отобразить их пользователю.

Architecture

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

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

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

Azure Cosmos DB. Cosmos DB – это глобально распределенная служба базы данных, используемая для хранения 10 лучших рекомендуемых фильмов для каждого пользователя. Azure Cosmos DB хорошо подходит для этого сценария, поскольку обеспечивает низкую задержку (10 мс при 99-м процентиле) для чтения 10 рекомендуемых элементов для данного пользователя.

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

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

Вопросы производительности

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

Сочетание AKS и Azure Cosmos DB позволяет этой архитектуре формировать хорошую отправную точку для рекомендаций для рабочей нагрузки среднего размера с минимальными издержками. При нагрузочном тесте с 200 одновременными пользователями эта архитектура предоставляет рекомендации со средней задержкой около 60 мс и пропускной способностью 180 запросов в секунду. Нагрузочный тест был выполнен с использованием конфигурации развертывания по умолчанию (кластер 3x AKS D3 v2 с 12 виртуальными ЦП, 42 ГБ памяти и 11 000 единиц запросов (RU) в секунду, выделенных для Azure Cosmos DB).

График производительности

График пропускной способности

Azure Cosmos DB рекомендуется из-за ее удобства и возможности глобального распределения при удовлетворении любых требований к базе данных, которые есть у вашего приложения. для более быстрой задержкирекомендуется использовать кэш Azure для Redis вместо Azure Cosmos DB для обслуживания уточняющих запросов. Кэш Azure для Redis может повысить производительность систем, которые сильно полагаются на данные в внутренних хранилищах.

Вопросы масштабируемости

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

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

Масштабируйте кластер AKS в соответствии с вашими требованиями к производительности и пропускной способности. Будьте внимательны при увеличении количества модулей, чтобы полностью использовать кластер, и при масштабировании узлов кластера, чтобы соответствовать требованиям вашей службы. Вы также можете задать автоматическое масштабирование в кластере AKS. см. статью развертывание модели в кластере службы Kubernetes Azure.

Чтобы управлять производительностью Azure Cosmos DB, оцените необходимое количество операций чтения в секунду и укажите количество EЗ в секунду (пропускная способность). Следуйте рекомендациям для секционирования и горизонтального масштабирования.

Рекомендации по затратам

Основными аргументами стоимости в этом сценарии являются:

  • размер кластера Azure Databricks, необходимый для обучения;
  • размер кластера AKS, необходимый для выполнения требований к производительности;
  • ЕЗ Azure Cosmos DB предоставлены в соответствии с вашими требованиями к производительности.

Управляйте стоимостью Azure Databricks, реже проходя переподготовку и отключая кластер Spark, когда он не используется. Стоимость AKS и Azure Cosmos DB привязана к пропускной способности и производительности, которые требуются вашему сайту. Она будет увеличиваться и уменьшаться в зависимости от объема трафика на вашем сайте.

Развертывание решения

Чтобы развернуть эту архитектуру, следуйте инструкциям по Azure Databricks в документе по установке. Краткое руководство требует следующих действий:

  1. Создайте рабочую область Azure Databricks.

  2. Создайте новый кластер со следующей конфигурацией в Azure Databricks:

    • Режим кластера: Стандартный
    • Databricks Runtime версия: 4,3 (включает Apache Spark 2.3.1, Scala 2,11)
    • Версия Python: 3
    • Тип драйвера: Standard_DS3_v2
    • Тип рабочего процесса: Standard_DS3_v2 (минимальное и максимальное в соответствии с требованиями)
    • Автоматическое завершение работы: при необходимости
    • Конфигурация Spark: при необходимости
    • Переменные среды: при необходимости
  3. Создайте личный маркер доступа в рабочей области Azure Databricks. Дополнительные сведения см. в документации по проверке подлинности Azure Databricks.

  4. Клонировать репозиторий рекомендаций Майкрософт в среду, в которой можно выполнять сценарии (например, локальный компьютер).

  5. Следуйте инструкциям по настройке быстрой установки, чтобы установить соответствующие библиотеки на Azure Databricks.

  6. Следуйте инструкциям по настройке быстрой установки, чтобы подготовить Azure Databricks к работе.

  7. Импортируйте записную книжку для Кроме фильмов в рабочую область. После входа в рабочую область Azure Databricks выполните следующие действия.

    а. Щелкните Домашняя страница в левой части рабочей области.

    b. Щелкните правой кнопкой мыши пробелы в домашнем каталоге. Выберите Импортировать.

    c. Выберите URL-адреси вставьте следующий текст в текстовое поле:

    Г. Щелкните Импорт.

  8. Откройте записную книжку в Azure Databricks и присоедините настроенный кластер.

  9. Запустите записную книжку, чтобы создать ресурсы Azure, необходимые для создания API рекомендаций, предоставляющего первые 10 рекомендаций по фильмам для данного пользователя.

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