Compilar uma API de recomendação em tempo real no Azure

Azure Cosmos DB
Azure Databricks
AKS (Serviço de Kubernetes do Azure)
Azure Machine Learning

Essa arquitetura de referência mostra como treinar um modelo de recomendação usando o Azure Databricks e implantá-lo como uma API usando o Azure Cosmos DB, o Azure Machine Learning e o Serviço de Kubernetes do Azure (AKS). Para obter uma implementação de referência dessa arquitetura, consulte Como criar uma API de Recomendação em tempo real no GitHub.

Arquitetura

Diagrama mostrando arquitetura de um modelo de machine learning para treinamento de recomendações de filmes.

Baixe um Arquivo Visio dessa arquitetura.

Essa arquitetura de referência é para treinar e implantar uma API de serviço de recomendação em tempo real que pode recomendar os 10 melhores filmes para cada usuário.

Fluxo de dados

  1. Acompanhar comportamentos do usuário. Por exemplo, um serviço de back-end pode registrar quando um usuário classifica um filme ou clica em um artigo de notícias ou produto.
  2. Carregar os dados no Azure Databricks de uma fonte de dados disponível.
  3. Preparar os dados e dividi-los em conjuntos de treinamento e teste para treinar o modelo. (Este guia descreve opções para dividir os dados.)
  4. Ajustar o modelo Filtragem Colaborativa do Spark aos dados.
  5. Avaliar a qualidade do modelo usando métricas de classificação e priorização. (Esse guia fornece detalhes sobre as métricas com as quais você pode avaliar suas recomendações.)
  6. Calcular previamente as 10 principais recomendações por usuário e armazená-las como cache no Azure Cosmos DB.
  7. Implantar um serviço de API no AKS usando as APIs do Azure Machine Learning para colocar a API em contêineres e implantá-la.
  8. Quando o serviço de back-end recebe uma solicitação de um usuário, chamar a API de recomendações hospedada no AKS para obter as 10 principais recomendações e exibi-las para o usuário.

Componentes

  • Azure Databricks. O Databricks é um ambiente de desenvolvimento usado para preparar os dados de entrada e treinar o modelo de recomendação em um cluster Spark. O Azure Databricks também fornece um workspace interativo para ser executado e colaborar em notebooks em caso de tarefas de processamento de dados ou de aprendizado de máquina.
  • AKS (Serviço de Kubernetes do Azure). O AKS é usado para implantar e operacionalizar uma API de serviço do modelo de machine learning em um cluster do Kubernetes. O AKS hospeda o modelo em contêineres, fornecendo escalabilidade que atende a seus requisitos de taxa de transferência, gerenciamento de identidade e de acesso, registro em log e monitoramento de integridade.
  • Azure Cosmos DB. O Cosmos DB é um serviço de banco de dados distribuído globalmente usado para armazenar os 10 principais filmes recomendados para cada usuário. O Azure Cosmos DB é adequado para o cenário porque oferece baixa latência (10 ms no 99º percentil) para ler os primeiros itens recomendados para determinado usuário.
  • Machine Learning. Esse serviço é usado para controlar e gerenciar modelos de machine learning e, em seguida, empacotar e implantar esses modelos em um ambiente escalonável do AKS.
  • Recomendações da Microsoft. Esse repositório de software livre contém códigos de utilitários e exemplos para que os usuários possam começar a compilar, avaliar e operacionalizar um sistema de recomendação.

Detalhes do cenário

Esta arquitetura pode ser adaptada para a maioria dos cenários de mecanismo de recomendação, incluindo recomendações de produtos, filmes e notícias.

Possíveis casos de uso

Cenário: uma organização de mídia deseja fornecer recomendações de vídeos ou filmes aos usuários. Ao fornecer recomendações personalizadas, a organização atende a várias metas de negócios, incluindo maior taxa de cliques, maior participação no site e maior satisfação do usuário.

Essa solução é otimizada para o setor de varejo e para as indústrias de mídia e entretenimento.

Considerações

Estas considerações implementam os pilares do Azure Well-Architected Framework, que é um conjunto de princípios de orientação que podem ser usados para aprimorar a qualidade de uma carga de trabalho. Para obter mais informações, confira Microsoft Azure Well-Architected Framework.

A pontuação em lote de modelos spark no Azure Databricks descreve uma arquitetura de referência que usa o Spark e o Azure Databricks para executar processos de pontuação em lote agendados. Recomendamos essa abordagem para gerar novas recomendações.

Eficiência de desempenho

A eficiência do desempenho é a capacidade de dimensionar sua carga de trabalho para atender às demandas colocadas por usuários de maneira eficiente. Para saber mais, confira Visão geral do pilar de eficiência de desempenho.

O desempenho é uma consideração essencial para obter recomendações em tempo real, porque as recomendações geralmente estão no caminho crítico da solicitação que um usuário faz em seu site.

A combinação do AKS com o Azure Cosmos DB permite que essa arquitetura forneça um bom ponto de partida para oferecer recomendações a uma carga de trabalho de médio porte com o mínimo de sobrecarga. Em um teste de carga com 200 usuários simultâneos, esta arquitetura fornece recomendações com uma média de latência de cerca de 60 ms e tem desempenho a uma taxa de transferência de 180 solicitações por segundo. O teste de carga foi executado com a configuração de implantação padrão (um cluster do AKS 3x D3 v2 com 12 vCPUs, 42 GB de memória e 11.000 RUs (unidades de solicitação) por segundo provisionado para o Azure Cosmos DB).

Gráfico do desempenho

Gráfico da taxa de transferência

O Azure Cosmos DB é recomendado por sua distribuição global turnkey e por sua utilidade em atender a todos os requisitos de banco de dados que seu aplicativo possa ter. Para reduzir um pouco a latência, considere usar o Cache do Azure para Redis em vez do Azure Cosmos DB para servir pesquisas. O Cache do Azure para Redis pode aprimorar o desempenho de sistemas que dependem bastante de dados em armazenamentos de back-end.

Escalabilidade

Se você não planeja usar o Spark ou tem uma carga de trabalho menor que não precisa de distribuição, considere usar a Máquina Virtual de Ciência de Dados (DSVM) em vez do Azure Databricks. A DSVM é uma máquina virtual do Azure com estruturas e ferramentas de aprendizado profundo para aprendizado de máquina e ciência de dados. Da mesma forma que no Azure Databricks, qualquer modelo que você criar em uma DSVM poderá ser operacionalizado como um serviço no AKS por meio do Azure Machine Learning.

Durante o treinamento, provisione um cluster Spark de tamanho fixo maior no Azure Databricks ou configure o dimensionamento automático. Quando o dimensionamento automático estiver habilitado, o Databricks monitorará a carga no seu cluster e escalará e reduzirá verticalmente quando necessário. Provisione ou escale horizontalmente um cluster maior se você tiver uma quantidade grande de dados e desejar reduzir a quantidade de tempo que leva as tarefas de preparação ou modelagem de dados.

Dimensione o cluster do AKS para atender aos requisitos de desempenho e taxa de transferência. Aumente o número de pods para utilizar totalmente o cluster e escale os nós do cluster para atender à demanda de seu serviço. Você também pode definir o dimensionamento automático em um cluster do AKS. Para saber mais, confira Implantar um modelo em um cluster do Serviço de Kubernetes do Azure.

Para gerenciar o desempenho do Azure Cosmos DB, estime o número de leituras por segundo e provisione o número necessário de RUs por segundo (taxa de transferência). Use as melhores práticas de particionamento e dimensionamento horizontal.

Otimização de custo

A otimização de custos é a análise de maneiras de reduzir as despesas desnecessárias e melhorar a eficiência operacional. Para obter mais informações, confira Visão geral do pilar de otimização de custo.

Os principais geradores de custo no cenário em questão são:

  • O tamanho do cluster do Azure Databricks necessário para treinamento.
  • O tamanho do cluster do AKS necessário para atender às necessidades de desempenho.
  • As RUs do Azure Cosmos DB provisionadas para atender às necessidades de desempenho.

Gerencie os custos do Azure Databricks fazendo a readaptação com menor frequência e desligando o cluster Spark quando ele não estiver em uso. Os custos do AKS e do Azure Cosmos DB estão vinculados à taxa de transferência e ao desempenho exigidos pelo seu site e serão escalados e reduzidos verticalmente dependendo do volume do tráfego em seu site.

Implantar este cenário

Para implantar essa arquitetura, siga as instruções do Azure Databricks no documento de instalação. Resumidamente, as instruções exigem que você:

  1. Crie um workspace do Azure Databricks.
  2. Crie um cluster com a seguinte configuração no Azure Databricks:
    • Modo do cluster: padrão
    • Versão do Databricks Runtime:4.3 (inclui o Apache Spark 2.3.1, Scala 2.11)
    • Versão do Python: 3
    • Tipo de driver: Standard_DS3_v2
    • Tipo de trabalho: Standard_DS3_v2 (mínimo e máximo, conforme necessário)
    • Término obrigatório: (conforme necessário)
    • Configuração do Spark: (conforme necessário)
    • Variáveis de ambiente: (conforme necessário)
  3. Crie um token de acesso pessoal no workspace do Azure Databricks. Confira a documentação de autenticação do Azure Databricks para obter detalhes.
  4. Clone o repositório do Microsoft Recommenders em um ambiente em que você pode executar scripts (por exemplo, seu computador local).
  5. Siga as instruções de Instalação rápida para instalar as bibliotecas relevantes no Azure Databricks.
  6. Siga as instruções de Instalação rápida para preparar o Azure Databricks para operacionalização.
  7. Importe o notebook Operacionalização de Filmes por ALS no workspace. Depois de fazer login no workspace do Azure Databricks, faça o seguinte:
    1. Clique em Página Inicial no lado esquerdo do workspace.
    2. Clique com o botão direito do mouse no espaço em branco no diretório inicial. Selecione Importar.
    3. Selecione a URL e cole o seguinte no campo de texto: https://github.com/Microsoft/Recommenders/blob/main/examples/05_operationalize/als_movie_o16n.ipynb
    4. Clique em Importar.
  8. Abra o notebook no Azure Databricks e anexe o cluster configurado.
  9. Execute o notebook para criar os recursos do Azure necessários para criar uma API de recomendação que fornece as 10 principais recomendações de filmes para determinado usuário.

Colaboradores

Esse artigo é mantido pela Microsoft. Ele foi originalmente escrito pelos colaboradores a seguir.

Principais autores:

Para ver perfis não públicos do LinkedIn, entre no LinkedIn.

Próximas etapas