Personalização escalonável no AzureScalable personalization on Azure

As recomendações são um fator de receita principal para muitas empresas e são usadas em diferentes tipos de setores, incluindo varejo, notícias e mídia.Recommendations are a main revenue driver for many businesses and are used in different kinds of industries, including retail, news, and media. Com a disponibilidade de grandes quantidades de dados, agora você pode fornecer recomendações altamente relevantes usando o aprendizado de máquina.With the availability of large amounts of data, you can now provide highly relevant recommendations using machine learning.

Há dois tipos principais de sistemas de recomendação: filtragem colaborativa e baseada em conteúdo.There are two main types of recommendation systems: collaborative filtering and content-based. A filtragem colaborativa identifica padrões semelhantes no comportamento do cliente e recomenda itens com os quais outros clientes similares interagem.Collaborative filtering identifies similar patterns in customer behavior and recommends items that other similar customers have interacted with. A recomendação baseada em conteúdo usa informações sobre os itens para aprender as preferências do cliente e recomenda itens que compartilham Propriedades com itens com os quais um cliente interagiu anteriormente.Content-based recommendation uses information about the items to learn customer preferences and recommends items that share properties with items that a customer has previously interacted with. A abordagem descrita neste documento enfoca o sistema de recomendação baseado em conteúdo.The approach described in this document focuses on the content-based recommendation system.

Este cenário de exemplo mostra como sua empresa pode usar o aprendizado de máquina para automatizar a personalização baseada em conteúdo para seus clientes.This example scenario shows how your business can use machine learning to automate content-based personalization for your customers. Em um alto nível, usamos Azure Databricks para treinar um modelo que prevê a probabilidade de um usuário se envolver com um item.At a high level, we use Azure Databricks to train a model that predicts the probability a user will engage with an item. Esse modelo é implantado para produção como um serviço de previsão usando o [serviço kubernetes do Azure].That model is deployed to production as a prediction service using Azure Kubernetes Service. Por sua vez, você pode usar essa previsão para criar recomendações personalizadas por meio da classificação de itens com base no conteúdo que um usuário tem mais probabilidade de consumir.In turn, you can use this prediction to create personalized recommendations by ranking items based on the content that a user is most likely to consume.

Casos de uso relevantesRelevant use cases

Esse cenário é relevante para os seguintes casos de uso:This scenario is relevant to the following use cases:

  • Recomendações de conteúdo em um site ou em um aplicativo móvel.Content recommendations on a website or in a mobile application.
  • Recomendação de produtos em um site de comércio eletrônico.Product recommendation on an e-commerce site.
  • Recomendação de anúncio exibida em um site.Displayed ad recommendation on a website.

ArquiteturaArchitecture

Diagrama de arquitetura de personalização escalonável

Este cenário aborda o treinamento, a avaliação e a implantação de um modelo de aprendizado de máquina para a personalização baseada em conteúdo no Apache Spark usando Azure Databricks.This scenario covers the training, evaluation, and deployment of a machine learning model for content-based personalization on Apache Spark using Azure Databricks. Nesse caso, um modelo é treinado com um algoritmo de classificação supervisionado em um conjunto de um DataSet que contém recursos de usuário e item.In this case, a model is trained with a supervised classification algorithm on a dataset containing user and item features. O rótulo de cada exemplo é um valor binário que indica que o usuário envolvido (por exemplo, clicou) em um item.The label for each example is a binary value indicating that the user engaged with (for example, clicked) an item. Esse cenário aborda um subconjunto das etapas necessárias para uma carga de trabalho completa do sistema de recomendação de ponta a ponta.This scenario covers a subset of the steps required for a full end-to-end recommendation system workload. O contexto mais amplo desse cenário é baseado em um site de comércio eletrônico genérico com um front-end que serve para alterar rapidamente o conteúdo para seus usuários.The broader context of this scenario is based on a generic e-commerce website with a front end that serves rapidly changing content to its users. Este site usa cookies e perfis de usuário para personalizar o conteúdo para esse usuário.This website uses cookies and user profiles to personalize the content for that user. Junto com os perfis de usuário, o site pode ter informações sobre cada item que ele serve para cada usuário.Along with user profiles, the website may have information about every item it serves to each user. Depois que os dados estiverem disponíveis, as etapas a seguir serão executadas para criar e colocar em operação um sistema de recomendação:Once that data is available, the following steps are executed to build and operationalize a recommendation system:

  1. Os conjuntos de dados de usuário e item distintos são pré-processados e associados, o que resulta em uma mistura de recursos numéricos e categóricos a serem usados para prever interações de item de usuário (cliques).The sets of distinct user and item data are preprocessed and joined, which results in a mixture of numeric and categorical features to be used for predicting user-item interactions (clicks). Esta tabela é carregada no armazenamento de BLOBs do Azure.This table is uploaded to Azure Blob Storage. Para fins de demonstração, o conjunto de Criteo exibir desafio de publicidade é usado.For demonstration purposes, the Criteo display advertising challenge dataset is used. Esse conjunto de resultados corresponde à tabela anônima descrita, pois contém um rótulo binário para cliques de usuário observados, 13 recursos numéricos e outros 26 recursos categóricos.This dataset matches the described anonymized table, as it contains a binary label for observed user clicks, 13 numerical features, and an additional 26 categorical features.
  2. A biblioteca MMLSpark fornece a capacidade de treinar um classificador LightGBM em Azure Databricks para prever a probabilidade de clique como uma função dos recursos numéricos e categóricos que foram criados na etapa anterior.The MMLSpark library provides the ability to train a LightGBM classifier on Azure Databricks to predict the click probability as a function of the numeric and categorical features that were created in the previous step. O LightGBM é um algoritmo de aprendizado de máquina altamente eficiente e o MMLSpark permite o treinamento distribuído de modelos de LightGBM em grandes conjuntos de altos.LightGBM is a highly efficient machine learning algorithm, and MMLSpark enables distributed training of LightGBM models over large datasets.
  3. O classificador treinado é serializado e armazenado no registro de modelo do Azure.The trained classifier is serialized and stored in the Azure Model Registry. Com o registro de modelo do Azure, você pode armazenar e organizar diferentes versões do modelo (por exemplo, com base em dados mais recentes ou hiperparâmetros diferentes) em um espaço de trabalho Azure Machine Learning (Azure ML).With Azure Model Registry, you can store and organize different versions of the model (for example, based on newer data or different hyperparameters) within an Azure Machine Learning (Azure ML) Workspace.
  4. Um script de serviço é definido usando a biblioteca do MML Spark servindo para fornecer previsões do modelo treinado.A serving script is defined using the MML Spark Serving library to provide predictions from the trained model.
  5. O Azure ML é usado para criar uma imagem do Docker no registro de contêiner do Azure que contém a imagem com o script de Pontuação e todas as dependências necessárias para servir previsões.Azure ML is used to create a Docker image in the Azure Container Registry that holds the image with the scoring script and all necessary dependencies for serving predictions.
  6. O Azure ML também é usado para provisionar a computação para servir previsões.Azure ML is also used to provision the compute for serving predictions. Um cluster kubernetes é configurado usando o AKs ( [serviço kubernetes do Azure] ) com o número de nós necessários para lidar com a carga esperada.A Kubernetes cluster is configured using Azure Kubernetes Service (AKS) with the number of nodes needed to handle expected load. O tamanho da máquina virtual pode ser ajustado com base nos requisitos de computação e memória do modelo.The virtual machine size can be adjusted based on the model's computation and memory requirements.
  7. O serviço de pontuação é implantado como um serviço Web no cluster AKS.The scoring service is deployed as a web service on the AKS cluster. O serviço fornece um ponto de extremidade onde os recursos de usuário e item podem ser enviados para receber a probabilidade prevista de um clique para esse usuário e item.The service provides an endpoint where user and item features can be sent to receive the predicted probability of a click for that user and item.

ComponentesComponents

Essa arquitetura usa os seguintes componentes:This architecture makes use of the following components:

  • O armazenamento de BLOBs do Azure é um serviço de armazenamento otimizado para armazenar grandes quantidades de dados não estruturados.Azure Blob Storage is a storage service optimized for storing massive amounts of unstructured data. Nesse caso, os dados de entrada são armazenados aqui.In this case, the input data is stored here.
  • Azure Databricks é um cluster de Apache Spark gerenciado para treinamento e avaliação do modelo.Azure Databricks is a managed Apache Spark cluster for model training and evaluation. Também usamos o MMLSpark, uma estrutura baseada em Spark projetada para aprendizado de máquina em larga escala.We also use MMLSpark, a Spark-based framework designed for large-scale machine learning.
  • O registro de contêiner do Azure é usado para empacotar o script de Pontuação como uma imagem de contêiner, que é usada para servir o modelo em produção.Azure Container Registry is used to package the scoring script as a container image, which is used to serve the model in production.
  • O [serviço kubernetes do Azure] é usado para implantar o modelo treinado nos serviços Web ou de aplicativo.Azure Kubernetes Service is used to deploy the trained model to web or app services.
  • Azure Machine Learning é usado neste cenário para registrar o modelo de aprendizado de máquina e implantar o AKs.Azure Machine Learning is used in this scenario to register the machine learning model and to deploy AKS.
  • Os recomendados da Microsoft são um repositório de software livre que contém exemplos e código do utilitário.Microsoft Recommenders is an open-source repository that contains utility code and samples. Com esse repositório, os usuários podem começar a criar, avaliar e colocar em operação um sistema de recomendação.With this repository, users can start to build, evaluate, and operationalize a recommender system.

ConsideraçõesConsiderations

EscalabilidadeScalability

Para treinamento, você pode dimensionar Azure Databricks para cima ou para baixo com base no tamanho dos dados usados e na computação necessária para o treinamento do modelo.For training, you can scale Azure Databricks up or down based on the size of the data used and the compute necessary for model training. Para dimensionar, você pode ajustar o número total de núcleos ou a quantidade de memória disponível para o cluster.To scale, you can adjust the total number of cores or amount of memory available to the cluster. Basta editar o número ou o tipo de máquinas virtuais (VMS) usadas.Just edit the number or type of Virtual Machines (VMs) used. O conjunto de Criteo contém 45,8 milhões linhas neste exemplo; Ele foi treinado em alguns minutos em um cluster com 10 VMs L8s padrão.The Criteo dataset contains 45.8 million rows in this example; it was trained in a few minutes on a cluster with 10 standard L8s VMs.

Para a implantação, você pode dimensionar os recursos de computação com base na carga esperada para o serviço de Pontuação e os requisitos de latência.For deployment, you can scale the compute resources based on the expected load for the scoring service and latency requirements. O serviço de Pontuação usa o MML Spark servindo de execução separadamente em cada nó no cluster kubernetes.The scoring service uses MML Spark Serving running separately on each node in the Kubernetes cluster. Com essa prática, você pode transferir diretamente a transformação de recurso e o pipeline de previsão de modelo desenvolvido em Azure Databricks para o lado de produção.With this practice, you can seamlessly transfer the feature transformation and model prediction pipeline developed on Azure Databricks to the production side. Ele também remove a necessidade de pré-calcular pontuações para todas as combinações de usuários e itens possíveis, o que pode ser difícil se você estiver usando recursos de usuário dinâmicos, como a hora do dia.It also removes the need to precompute scores for all possible user and item combinations, which might be difficult if you're using dynamic user features, such as time of day.

DisponibilidadeAvailability

As tarefas de Machine Learning são divididas em dois componentes de recurso: recursos para treinamento e recursos para implantação de produção.Machine learning tasks are split into two resource components: resources for training, and resources for production deployment. Os recursos necessários para o treinamento geralmente não precisam de alta disponibilidade, pois as solicitações de produção ao vivo não atingem diretamente esses recursos.Resources required for training generally don't need high availability, as live production requests don't directly hit these resources. Os recursos necessários para o serviço precisam ter alta disponibilidade para atender às solicitações do cliente.Resources required for serving need to have high availability to serve customer requests.

O treinamento no Azure Databricks pode ocorrer em qualquer uma das regiões com um SLA ( contrato de nível de serviço ) para dar suporte às suas necessidades.Training on Azure Databricks can happen on any one of the regions with a service level agreement (SLA) to support your needs. Para a implantação de produção, o [serviço kubernetes do Azure] é usado para fornecer uma ampla disponibilidade geográfica com esse SLA.For production deployment, Azure Kubernetes Service is used to provide broad geographic availability with this SLA.

SegurançaSecurity

Esse cenário pode usar Azure Active Directory (Azure AD) para autenticar usuários no espaço de trabalho Azure Databricks e no cluster kubernetes do Azure .This scenario can use Azure Active Directory (Azure AD) to authenticate users to the Azure Databricks workspace and the Azure Kubernetes cluster. As permissões podem ser gerenciadas por meio da autenticação do Azure AD ou do controle de acesso baseado em função.Permissions can be managed via Azure AD authentication or role-based access control.

Implantar este cenárioDeploy this scenario

Pré-requisitosPrerequisites

Você deve ter uma conta do Azure já criada.You must have an existing Azure account.

Passo a passoWalkthrough

Todo o código para esse cenário está disponível no repositório de recomendados da Microsoft .All the code for this scenario is available in the Microsoft Recommenders repository.

Para executar os blocos de anotações para treinamento e implantação do modelo de recomendação no Azure Databricks:To run the notebooks for training and deploying the recommendation model on Azure Databricks:

  1. Crie um espaço de trabalho Azure Databricks do portal do Azure.Create an Azure Databricks workspace from the Azure portal.
  2. Siga as instruções de instalação para instalar utilitários do repositório de [recomendadores da Microsoft] em um cluster dentro de seu espaço de trabalho.Follow the setup instructions to install utilities from the Microsoft Recommenders repository on a cluster within your workspace.
    1. Inclua a --mmlspark opção no script de instalação para que o MMLSpark seja instalado.Include the --mmlspark option in the install script to have MMLSpark installed.
    2. Além disso, o MMLSpark exige que o dimensionamento automático seja desabilitado na configuração do cluster.Also, MMLSpark requires autoscaling to be disabled in the Cluster setup.
  3. Importe o notebook de treinamento para seu espaço de trabalho.Import the training notebook into your workspace. Depois de fazer logon em seu espaço de trabalho do Azure Databricks :After logging into your Azure Databricks Workspace:
    1. Selecione página inicial no lado esquerdo do espaço de trabalho.Select Home on the left side of the workspace.
    2. Clique com o botão direito do mouse em espaço em branco em seu diretório base.Right-click whitespace in your home directory.
    3. Selecione Importar.Select Import.
    4. Selecione URLe cole a seguinte cadeia de caracteres no campo de texto: https://aka.ms/recommenders/lgbm-criteo-training .Select URL, and paste the following string into the text field: https://aka.ms/recommenders/lgbm-criteo-training.
    5. Selecione Importar.Select Import.
  4. Repita a etapa 3 para o bloco de anotações de operacionalização aqui: https://aka.ms/recommenders/lgbm-criteo-o16n .Repeat step 3 for the operationalization notebook here: https://aka.ms/recommenders/lgbm-criteo-o16n.
  5. Selecione o bloco de anotações para abri-lo, anexe o cluster configurado e execute o bloco de anotações.Select the notebook to open it, attach the configured cluster, and execute the notebook.

PreçosPricing

Para entender melhor o custo da execução desse cenário no Azure, fornecemos um avaliador de preços com base nas seguintes suposições:To better understand the cost of running this scenario on Azure, we provide a pricing estimator based on the following assumptions:

  • Os dados de treinamento são da mesma escala que o exemplo de DataSet usado (45,8 milhões linhas).Training data is of the same scale as the example dataset used (45.8 million rows).
  • O treinamento precisa ocorrer diariamente para atualizar o modelo de serviço.Training needs to happen daily to update the serving model.
  • O treinamento ocorrerá em Azure Databricks usando um cluster provisionado com 12 VMs usando instâncias de L8s .Training will occur on Azure Databricks using a cluster provisioned with 12 VMs using L8s instances.
  • O treinamento levará uma hora, incluindo processamento de recursos e treinamento de modelo, além de validação.Training will take an hour, including feature processing and model training plus validation.
  • Azure Machine Learning será usado para implantar o modelo no AKs com um pequeno cluster de três nós usando instâncias D3 .Azure Machine Learning will be used to deploy the model to AKS with a small three-node cluster using D3 instances.
  • O cluster AKS será dimensionamento automático conforme necessário, fazendo com que dois nós por mês estejam ativos em média.AKS cluster will autoscale as needed, resulting in two nodes per month being active on average.

Para ver como os preços diferem para seu caso de uso, altere as variáveis para que correspondam ao tamanho de dados esperado e atendendo aos requisitos de carga.To see how pricing differs for your use case, change the variables to match your expected data size and serving load requirements. Para tamanhos de dados de treinamento maiores ou menores, o tamanho do cluster do databricks pode ser aumentado ou reduzido, respectivamente.For larger or smaller training data sizes, the size of the Databricks cluster can be increased or reduced, respectively. Para lidar com números maiores de usuários simultâneos durante o serviço de modelo, o cluster AKS deve ser aumentado.To handle larger numbers of concurrent users during model serving, the AKS cluster should be increased. Para obter mais informações sobre o dimensionamento de AKS para dar suporte a requisitos de latência e carga, examine o bloco de anotações de operacionalização.For more information on scaling AKS to support latency and load requirements, review the operationalization notebook.

Próximas etapasNext steps