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

Cosmos DB
Databricks
Serviço de Kubernetes
Machine Learning

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

Arquitetura

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

Baixe um Arquivo Visio dessa arquitetura.

Essa arquitetura de referência destina-se ao treinamento e à implantação de uma API de serviço de recomendação em tempo real que pode fornecer as 10 principais recomendações de filme para um usuário.

Fluxo de dados

  1. Acompanhar comportamentos do usuário. Por exemplo, um serviço de back-end pode fazer logon quando um usuário classifica um filme ou clica em um produto ou artigo de notícias.
  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. (Este guia fornece detalhes sobre as métricas que você pode usar para avaliar seu recomendador.)
  6. Calcular previamente as 10 principais recomendações por usuário e armazená-las como cache no Azure Cosmos DB.
  7. Implante um serviço de API no AKS usando as APIs do Machine Learning para conteinerizar e implantar a API.
  8. Quando o serviço de back-end receber uma solicitação de um usuário, chame a API de recomendações hospedada no AKS para obter as 10 principais recomendações e exibi-las ao 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 Azure 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 aumento das taxas de cliques, aumento do envolvimento em seu site e maior satisfação do usuário.

Essa solução é otimizada para o setor de varejo e para os setores de mídia e entretenimento.

Considerações

Essas 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 primária para recomendações em tempo real, pois as recomendações geralmente se enquadram no caminho crítico de uma solicitação de usuário 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 ligeiramente a latência, considere usar Cache do Azure para Redis em vez do Azure Cosmos DB para atender a pesquisas. Cache do Azure para Redis pode melhorar o desempenho de sistemas que dependem muito de dados em repositórios 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 um Máquina Virtual de Ciência de Dados (DSVM) em vez do Azure Databricks. Uma DSVM é uma máquina virtual do Azure com estruturas e ferramentas de aprendizado profundo para aprendizado de máquina e ciência de dados. Assim como acontece com o Azure Databricks, qualquer modelo criado em uma DSVM pode ser operacionalizado como um serviço no AKS por meio do 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 está habilitado, o Databricks monitora a carga em seu cluster e aumenta e reduz verticalmente conforme 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 de runtime do Databricks: 4.3 (inclui 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)
    • Terminação automática: (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 logon 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/master/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.

Autores principais:

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

Próximas etapas