Compartilhar via


Treinar modelos de recomendação

Este artigo inclui dois exemplos de modelos de recomendação baseados em aprendizado profundo no Azure Databricks. Em comparação com os modelos de recomendação tradicionais, os modelos de aprendizado profundo podem obter resultados de maior qualidade e ser dimensionados para grandes quantidades de dados. À medida que esses modelos continuam a evoluir, o Databricks fornece uma estrutura para treinar efetivamente modelos de recomendação em larga escala capazes de lidar com centenas de milhões de usuários.

Um sistema de recomendação geral pode ser exibido como um funil com os estágios mostrados no diagrama.

diagrama de arquitetura do sistema de recomendação

Alguns modelos, como o modelo de duas torres, têm um desempenho melhor como modelos de recuperação. Esses modelos são menores e podem operar efetivamente em milhões de pontos de dados. Outros modelos, como DLRM ou DeepFM, têm um desempenho melhor como modelos de reclassificador. Esses modelos podem receber mais dados, são maiores e podem fornecer recomendações refinadas.

Requisitos

Databricks Runtime 14.3 LTS para ML

Ferramentas

Os exemplos neste artigo ilustram as seguintes ferramentas:

  • TorchDistributor: TorchDistributor é uma estrutura que permite executar o treinamento de modelo PyTorch em larga escala no Databricks. Ele usa o Spark para orquestração e pode ser dimensionado para quantas GPUs estiverem disponíveis em seu cluster.
  • Mosaic StreamingDataset: o StreamingDataset melhora o desempenho e a escalabilidade do treinamento em grandes conjuntos de dados no Databricks usando recursos como pré-busca e intercalação.
  • MLflow: o Mlflow permite que você acompanhe parâmetros, métricas e pontos de verificação de modelo.
  • TorchRec: os sistemas de recomendação modernos usam tabelas de pesquisa de inserção para lidar com milhões de usuários e itens e gerar recomendações de alta qualidade. Tamanhos de inserção maiores melhoram o desempenho do modelo, mas exigem memória de GPU substancial e configurações de várias GPUs. O TorchRec fornece uma estrutura para dimensionar modelos de recomendação e tabelas de pesquisa em várias GPUs, tornando-o ideal para incorporações grandes.

Exemplo: recomendações de filme usando uma arquitetura de modelo de duas torres

O modelo de duas torres foi projetado para lidar com tarefas de personalização em larga escala processando dados de usuário e item separadamente antes de combiná-los. Ele é capaz de gerar com eficiência centenas ou milhares de recomendações de qualidade decentes. O modelo geralmente espera três entradas: um recurso user_id, um recurso product_id e um rótulo binário definindo se a interação <usuário, produto> foi positiva (o usuário comprou o produto) ou negativa (o usuário deu ao produto uma classificação de uma estrela). As saídas do modelo são inserções para usuários e itens, que geralmente são combinados (geralmente usando um produto de ponto ou similaridade de cosseno) para prever interações entre usuários e itens.

Como o modelo de duas torres fornece inserções para usuários e produtos, você pode colocar essas inserções em um banco de dados de vetor, como o Databricks Vector Store, e executar operações semelhantes à pesquisa de similaridade nos usuários e itens. Por exemplo, você pode colocar todos os itens em um repositório de vetores e, para cada usuário, consultar o repositório de vetores para localizar os cem itens principais cujas inserções são semelhantes às do usuário.

O notebook de exemplo a seguir implementa o treinamento de modelo de duas torres usando o conjunto de dados "Aprender com conjuntos de itens" para prever a probabilidade de que um usuário dê uma classificação alta a um determinado filme. Ele usa o Mosaic StreamingDataset para carregamento de dados distribuídos, o TorchDistributor para treinamento de modelo distribuído e o Mlflow para acompanhamento de modelos e registro em log.

Notebook de modelo de recomendação de duas torres

Obter notebook

Este notebook também está disponível no Databricks Marketplace: notebook de modelo de duas torres

Observação

  • Geralmente, as entradas do modelo de duas torres são os recursos categóricos user_id e product_id. O modelo pode ser modificado para dar suporte a vários vetores de recursos para usuários e produtos.
  • Geralmente, as saídas do modelo de duas torres são valores binários que indicam se o usuário terá uma interação positiva ou negativa com o produto. O modelo pode ser modificado para outras aplicações, como regressão, classificação de várias classes e probabilidades de várias ações do usuário (por exemplo, dispensar ou comprar). Saídas complexas devem ser implementadas com cuidado, pois os objetivos concorrentes podem degradar a qualidade das inserções geradas pelo modelo.

Exemplo: treinar uma arquitetura DLRM usando um conjunto de dados sintético

A DLRM é uma arquitetura de rede neural de última geração projetada especificamente para sistemas de personalização e recomendação. Ela combina entradas categóricas e numéricas para modelar efetivamente interações entre itens de usuário e prever preferências do usuário. As DLRMs geralmente esperam entradas que incluem recursos esparsos (como ID de usuário, ID de item, localização geográfica ou categoria de produto) e recursos densos (como idade do usuário ou preço do item). A saída de uma DLRM normalmente é uma previsão de participação do usuário, como taxas de clique ou probabilidade de compra.

As DLRMs oferecem uma estrutura altamente personalizável que pode lidar com dados em grande escala, tornando-as adequadas para tarefas de recomendação complexas em vários domínios. Como é um modelo maior do que a arquitetura de duas torres, este modelo geralmente é usado no estágio de reclassificador.

O notebook de exemplo a seguir cria um modelo DLRM para prever rótulos binários usando recursos densos (numéricos) e recursos esparsos (categóricos). Ele usa um conjunto de dados sintético para treinar o modelo, o Mosaic StreamingDataset para carregamento de dados distribuídos, o TorchDistributor para treinamento de modelo distribuído e o Mlflow para acompanhamento e registro em log de modelos.

Notebook DLRM

Obter notebook

Este notebook também está disponível no Databricks Marketplace: notebook DLRM.

Comparação de modelos de duas torres e DLRM

A tabela mostra algumas diretrizes para selecionar qual modelo de recomendação usar.

Tipo de modelo Tamanho do conjunto de dados necessário para treinamento Tamanho do modelo Tipos de entrada com suporte Tipos de saída compatíveis Casos de uso
Duas torres Menor Menor Normalmente, dois recursos (user_id, product_id) Geração principalmente de classificação binária e inserções Gerando centenas ou milhares de recomendações possíveis
DLRM Maior Maior Várias características categóricas e densas (user_id, gênero, geographic_location, product_id, product_category, ...) Classificação de várias classes, regressão, outros Recuperação refinada (recomendação de dezenas de itens altamente relevantes)

Em resumo, o modelo de duas torres é melhor usado para gerar milhares de recomendações de boa qualidade com muita eficiência. Um exemplo pode ser recomendações de filme de um provedor de TV a cabo. O modelo DLRM é melhor usado para gerar recomendações muito específicas com base em mais dados. Um exemplo pode ser um varejista que deseja apresentar a um cliente um número menor de itens que eles são altamente propensos a comprar.