Создание API рекомендаций в режиме реального времени в AzureBuild a real-time recommendation API on Azure

В этой эталонной архитектуре показано, как обучить модель рекомендаций с помощью Azure Databricks и развернуть ее как API с помощью Azure Cosmos DB, Машинного обучения Azure и Службы Azure Kubernetes (AKS).This reference architecture shows how to train a recommendation model using Azure Databricks and deploy it as an API by using Azure Cosmos DB, Azure Machine Learning, and Azure Kubernetes Service (AKS). Эту архитектуру можно подготовить к использованию для большинства сценариев механизма рекомендаций, включая рекомендации для продуктов, фильмов и новостей.This architecture can be generalized for most recommendation engine scenarios, including recommendations for products, movies, and news.

Ссылка на эту архитектуру доступна на GitHub.A reference implementation for this architecture is available on GitHub.

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

Сценарий: Медиа-организация хочет предоставить своим пользователям рекомендации по фильмам или видео.Scenario: A media organization wants to provide movie or video recommendations to its users. Предоставляя персональные рекомендации, организация достигает несколько бизнес-целей, включая повышение коэффициента переходов, рост популярности сайта и повышение удовлетворенности пользователей.By providing personalized recommendations, the organization meets several business goals, including increased click-through rates, increased engagement on site, and higher user satisfaction.

Эта эталонная архитектура предназначена для обучения и развертывания API службы рекомендаций в режиме реального времени, которая может предоставить 10 лучших рекомендаций по фильмам для данного пользователя.This reference architecture is for training and deploying a real-time recommender service API that can provide the top 10 movie recommendations for a given user.

Поток данных для этой модели рекомендаций выглядит следующим образом.The data flow for this recommendation model is as follows:

  1. Отслеживание поведения пользователя.Track user behaviors. Например, серверная служба может регистрировать, когда пользователь оценивает фильм, щелкает продукт или новостную статью.For example, a backend service might log when a user rates a movie or clicks a product or news article.

  2. Загрузка данных в Azure Databricks из доступного источника данных.Load the data into Azure Databricks from an available data source.

  3. Подготовка данных и их разделение на наборы для обучения и тестирования модели.Prepare the data and split it into training and testing sets to train the model. этом руководстве описаны параметры для разделения данных).(This guide describes options for splitting data.)

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

  5. Оцените качество модели, используя рейтинг и метрики ранжирования.Evaluate the quality of the model using rating and ranking metrics. этом руководстве содержатся сведения о метриках, по которым вы можете оценивать рекомендации).(This guide provides details about the metrics you can evaluate your recommender on.)

  6. Предварительно вычислите 10 рекомендаций для каждого пользователя и сохраните их в виде кэша в Azure Cosmos DB.Precompute the top 10 recommendations per user and store as a cache in Azure Cosmos DB.

  7. Разверните службу API в AKS с помощью API Машинного обучения Azure для контейнеризации и развертывания API.Deploy an API service to AKS using the Azure Machine Learning APIs to containerize and deploy the API.

  8. Когда серверная служба получит запрос от пользователя, вызовите API рекомендаций, размещенный в AKS, чтобы получить 10 лучших рекомендаций и отобразить их пользователю.When the backend service gets a request from a user, call the recommendations API hosted in AKS to get the top 10 recommendations and display them to the user.

ArchitectureArchitecture

Эта архитектура состоит из следующих компонентов.This architecture consists of the following components:

Azure Databricks.Azure Databricks. Databricks – это среда разработки, используемая для подготовки входных данных и обучения модели рекомендаций в кластере Spark.Databricks is a development environment used to prepare input data and train the recommender model on a Spark cluster. Azure Databricks также предоставляет интерактивную рабочую область для запуска и совместной работы над записными книжками для любых задач обработки данных или машинного обучения.Azure Databricks also provides an interactive workspace to run and collaborate on notebooks for any data processing or machine learning tasks.

Служба Azure Kubernetes (AKS).Azure Kubernetes Service (AKS). AKS используется для развертывания и эксплуатации API службы модели машинного обучения в кластере Kubernetes.AKS is used to deploy and operationalize a machine learning model service API on a Kubernetes cluster. AKS поддерживает контейнерную модель, обеспечивая масштабируемость, соответствующую вашим требованиям к пропускной способности, управлению идентификацией и доступом, а также ведению журналов и мониторингу работоспособности.AKS hosts the containerized model, providing scalability that meets your throughput requirements, identity and access management, and logging and health monitoring.

Azure Космос DB.Azure Cosmos DB. Cosmos DB – это глобально распределенная служба базы данных, используемая для хранения 10 лучших рекомендуемых фильмов для каждого пользователя.Cosmos DB is a globally distributed database service used to store the top 10 recommended movies for each user. Azure Cosmos DB хорошо подходит для этого сценария, поскольку обеспечивает низкую задержку (10 мс при 99-м процентиле) для чтения 10 рекомендуемых элементов для данного пользователя.Azure Cosmos DB is well-suited for this scenario, because it provides low latency (10 ms at 99th percentile) to read the top recommended items for a given user.

Лазурное машинное обучение.Azure Machine Learning. Эта служба используется для отслеживания и управления моделями машинного обучения, а затем для упаковки и развертывания этих моделей в масштабируемой среде AKS.This service is used to track and manage machine learning models, and then package and deploy these models to a scalable AKS environment.

Microsoft Recommenders.Microsoft Recommenders. Этот репозиторий с открытым исходным кодом содержит служебный код и примеры, которые помогут пользователям начать создавать, оценивать и вводить в действие систему рекомендаций.This open-source repository contains utility code and samples to help users get started in building, evaluating, and operationalizing a recommender system.

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

Производительность является основным фактором для рекомендаций в режиме реального времени, потому что рекомендации обычно находятся на критическом пути запроса, который пользователь делает на вашем сайте.Performance is a primary consideration for real-time recommendations, because recommendations usually fall in the critical path of the request a user makes on your site.

Сочетание AKS и Azure Cosmos DB позволяет этой архитектуре формировать хорошую отправную точку для рекомендаций для рабочей нагрузки среднего размера с минимальными издержками.The combination of AKS and Azure Cosmos DB enables this architecture to provide a good starting point to provide recommendations for a medium-sized workload with minimal overhead. При нагрузочном тесте с 200 одновременными пользователями эта архитектура предоставляет рекомендации со средней задержкой около 60 мс и пропускной способностью 180 запросов в секунду.Under a load test with 200 concurrent users, this architecture provides recommendations at a median latency of about 60 ms and performs at a throughput of 180 requests per second. Нагрузочный тест был выполнен с использованием конфигурации развертывания по умолчанию (кластер 3x AKS D3 v2 с 12 виртуальными ЦП, 42 ГБ памяти и 11 000 единиц запросов (RU) в секунду, выделенных для Azure Cosmos DB).The load test was run against the default deployment configuration (a 3x D3 v2 AKS cluster with 12 vCPUs, 42 GB of memory, and 11,000 Request Units (RUs) per second provisioned for Azure Cosmos DB).

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

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

Azure Cosmos DB рекомендуется из-за ее удобства и возможности глобального распределения при удовлетворении любых требований к базе данных, которые есть у вашего приложения.Azure Cosmos DB is recommended for its turnkey global distribution and usefulness in meeting any database requirements your app has. Для немного более быстрой задержкирассмотрите возможность использования Кэша Azure для Redis вместо Azure Cosmos DB для поиска.For slightly faster latency, consider using Azure Cache for Redis instead of Azure Cosmos DB to serve lookups. Azure Cache для Redis может повысить производительность систем, которые в значительной степени зависят от данных в магазинах бэк-энда.Azure Cache for Redis can improve performance of systems that rely highly on data in back-end stores.

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

Если вы не планируете использовать Spark или у вас меньшая рабочая нагрузка, где не нужно распределение, рекомендуем использовать виртуальную машину для обработки и анализа данных (DSVM) вместо Azure Databricks.If you don't plan to use Spark, or you have a smaller workload where you don't need distribution, consider using Data Science Virtual Machine (DSVM) instead of Azure Databricks. DSVM – это виртуальная машина Azure с платформами для глубинного обучения и средствами для машинного обучения, обработки и анализа данных.DSVM is an Azure virtual machine with deep learning frameworks and tools for machine learning and data science. Как и в случае с Azure Databricks, любую модель, созданную в DSVM, можно использовать в качестве службы в AKS с помощью Машинного обучения Azure.As with Azure Databricks, any model you create in a DSVM can be operationalized as a service on AKS via Azure Machine Learning.

Во время обучения выделите больший кластер Spark фиксированного размера в Azure Databricks или настройте автомасштабирование.During training, provision a larger fixed-size Spark cluster in Azure Databricks or configure autoscaling. Если автомасштабирование включено, Databricks отслеживает нагрузку на ваш кластер и при необходимости масштабирует его.When autoscaling is enabled, Databricks monitors the load on your cluster and scales up and downs when required. Подготовьте или масштабируйте более крупный кластер, если у вас большой объем данных и вы хотите сократить время, необходимое для подготовки данных или моделирования задач.Provision or scale out a larger cluster if you have a large data size and you want to reduce the amount of time it takes for data preparation or modeling tasks.

Масштабируйте кластер AKS в соответствии с вашими требованиями к производительности и пропускной способности.Scale the AKS cluster to meet your performance and throughput requirements. Будьте внимательны при увеличении количества модулей, чтобы полностью использовать кластер, и при масштабировании узлов кластера, чтобы соответствовать требованиям вашей службы.Take care to scale up the number of pods to fully utilize the cluster, and to scale the nodes of the cluster to meet the demand of your service. Дополнительные сведения о том, как масштабировать кластер в соответствии с требованиями к производительности и пропускной способности службы рекомендации, см. в статье Масштабирование кластеров службы контейнеров Azure.For more information on how to scale your cluster to meet the performance and throughput requirements of your recommender service, see Scaling Azure Container Service Clusters.

Чтобы управлять производительностью Azure Cosmos DB, оцените необходимое количество операций чтения в секунду и укажите количество EЗ в секунду (пропускная способность).To manage Azure Cosmos DB performance, estimate the number of reads required per second, and provision the number of RUs per second (throughput) needed. Следуйте рекомендациям для секционирования и горизонтального масштабирования.Use best practices for partitioning and horizontal scaling.

Рекомендации по стоимостиCost considerations

Основными аргументами стоимости в этом сценарии являются:The main drivers of cost in this scenario are:

  • размер кластера Azure Databricks, необходимый для обучения;The Azure Databricks cluster size required for training.
  • размер кластера AKS, необходимый для выполнения требований к производительности;The AKS cluster size required to meet your performance requirements.
  • ЕЗ Azure Cosmos DB предоставлены в соответствии с вашими требованиями к производительности.Azure Cosmos DB RUs provisioned to meet your performance requirements.

Управляйте стоимостью Azure Databricks, реже проходя переподготовку и отключая кластер Spark, когда он не используется.Manage the Azure Databricks costs by retraining less frequently and turning off the Spark cluster when not in use. Стоимость AKS и Azure Cosmos DB привязана к пропускной способности и производительности, которые требуются вашему сайту. Она будет увеличиваться и уменьшаться в зависимости от объема трафика на вашем сайте.The AKS and Azure Cosmos DB costs are tied to the throughput and performance required by your site and will scale up and down depending on the volume of traffic to your site.

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

Чтобы развернуть эту архитектуру, следуйте инструкциям Azure Databricks в документе настройки.To deploy this architecture, follow the Azure Databricks instructions in the setup document. Короче говоря, инструкции требуют от вас:Briefly, the instructions require you to:

  1. Создайте рабочее пространство Azure Databricks.Create an Azure Databricks workspace.

  2. Создание нового кластера со следующей конфигурацией в Azure Databricks:Create a new cluster with the following configuration in Azure Databricks:

    • Режим кластера: СтандартныйCluster mode: Standard
    • Databricks Runtime Версия: 4.3 (включает Apache Spark 2.3.1, Scala 2.11)Databricks Runtime Version: 4.3 (includes Apache Spark 2.3.1, Scala 2.11)
    • Python Версия: 3Python Version: 3
    • Тип драйвера: Стандартный_DS3_v2Driver Type: Standard_DS3_v2
    • Тип работника:_Стандартный_DS3 v2 (мин и макс по мере необходимости)Worker Type: Standard_DS3_v2 (min and max as required)
    • Автоматическое завершение работы: при необходимостиAuto Termination: (as required)
    • Конфигурация Spark: при необходимостиSpark Config: (as required)
    • Переменные среды: при необходимостиEnvironment Variables: (as required)
  3. Создайте токен для личного доступа в рабочем пространстве Azure Databricks.Create a personal access token within the Azure Databricks workspace. Подробную информацию можно узнать из документации по аутентификации Azure Databricks.See the Azure Databricks authentication documentation for details.

  4. Клонируйте репозиторий Рекомендаций Майкрософт в среду, где можно выполнять скрипты (например, локальный компьютер).Clone the Microsoft Recommenders repository into an environment where you can execute scripts (for example, your local computer).

  5. Следуйте инструкциям по настройке быстрой установки для установки соответствующих библиотек на Azure Databricks.Follow the Quick install setup instructions to install the relevant libraries on Azure Databricks.

  6. Следуйте инструкциям по настройке быстрой установки для подготовки azure Databricks к эксплуатации.Follow the Quick install setup instructions to prepare Azure Databricks for operationalization.

  7. Импортируйте блокнот ALS Movie Operationalization в рабочее пространство.Import the ALS Movie Operationalization notebook into your workspace. После входа в рабочее пространство Azure Databricks сделайте следующее:After logging into your Azure Databricks Workspace, do the following:

    а.a. Нажмите Главная на левой стороне рабочего пространства.Click Home on the left side of the workspace.

    b.b. Нажмите правой кнопкой мыши на белом пространстве в вашем домашнем каталоге.Right-click on white space in your home directory. Выберите Импортировать.Select Import.

    c.c. Выберите URLи вставьте следующее в текстовое поле:https://github.com/Microsoft/Recommenders/blob/master/notebooks/05_operationalize/als_movie_o16n.ipynbSelect URL, and paste the following into the text field: https://github.com/Microsoft/Recommenders/blob/master/notebooks/05_operationalize/als_movie_o16n.ipynb

    d.d. Щелкните Импорт.Click Import.

  8. Откройте блокнот в Azure Databricks и прикрепите настроенный кластер.Open the notebook within Azure Databricks and attach the configured cluster.

  9. Запустите блокнот для создания ресурсов Azure, необходимых для создания API рекомендаций, который предоставляет рекомендации для топ-10 фильмов для данного пользователя.Run the notebook to create the Azure resources required to create a recommendation API that provides the top-10 movie recommendations for a given user.

Мы также создали эталонную архитектуру, которая использует Spark и Azure Databricks для выполнения запланированных процессов оценки пакетов.We have also built a reference architecture that uses Spark and Azure Databricks to execute scheduled batch-scoring processes. Посмотрите эту эталонную архитектуру, чтобы понять рекомендуемый подход для регулярного создания новых рекомендаций.See that reference architecture to understand a recommended approach for generating new recommendations routinely.