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

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

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

Архитектура

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

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

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

Поток данных

  1. Отслеживание поведения пользователя. Например, серверная служба может вести журнал, когда пользователь оценивает фильм или щелкает продукт или новостную статью.
  2. Загрузка данных в Azure Databricks из доступного источника данных.
  3. Подготовка данных и их разделение на наборы для обучения и тестирования модели. (В этом руководстве описаны параметры для разделения данных).
  4. Настройте модель Spark Collaborative Filtering согласно данным.
  5. Оцените качество модели, используя рейтинг и метрики ранжирования. (В этом руководстве содержатся сведения о метриках, которые можно использовать для оценки рекомендателя.)
  6. Предварительно вычислите 10 рекомендаций для каждого пользователя и сохраните их в виде кэша в Azure Cosmos DB.
  7. Развертывание службы API в AKS с помощью API машинного обучения для контейнеризации и развертывания API.
  8. Когда серверная служба получает запрос от пользователя, вызовите API рекомендаций, размещенный в AKS, чтобы получить первые 10 рекомендаций и отобразить их пользователю.

Компоненты

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

Сведения о сценарии

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

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

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

Это решение оптимизировано для розничной торговли, а также для медиа и индустрии развлечений.

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

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

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

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

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

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

Сочетание 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 с помощью Машинного обучения.

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

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

Чтобы управлять производительностью 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: 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. Импортируйте записную книжку ALS Movie Operationalization в рабочую область. После входа в рабочую область Azure Databricks выполните следующие действия.
    1. Щелкните Главная в левой части рабочей области.
    2. Щелкните правой кнопкой мыши пробел в домашнем каталоге. Выберите Импортировать.
    3. Выберите URL-адрес и вставьте в текстовое поле следующее: https://github.com/Microsoft/Recommenders/blob/master/examples/05_operationalize/als_movie_o16n.ipynb
    4. Щелкните Импорт.
  8. Откройте записную книжку в Azure Databricks и подключите настроенный кластер.
  9. Запустите записную книжку, чтобы создать ресурсы Azure, необходимые для создания API рекомендаций, который предоставляет 10 лучших рекомендаций по фильмам для данного пользователя.

Соавторы

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

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

  • Мигель Фиерро | Руководитель Специалист по обработке и анализу данных субъекта
  • | Никхил Джоглекар Product Manager, алгоритмы Azure и обработка данных
  • | Ле Чжан Специалист по обработке и анализу данных

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

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