ensinar modelos de recomendação
Este artigo inclui dois exemplos de modelos de recomendação baseados em aprendizagem profunda em Databricks. Em comparação com os modelos de recomendação tradicionais, os modelos de aprendizagem profunda podem alcançar resultados de maior qualidade e escalar para quantidades maiores de dados. À medida que esses modelos continuam a evoluir, a Databricks fornece uma estrutura para o treinamento eficaz de 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 visto como um funnel com os estágios mostrados no diagrama.
Alguns modelos, como o modelo de duas torres, têm melhor desempenho como modelos de recuperação. Esses modelos são menores e podem operar efetivamente com milhões de pontos de dados. Outros modelos, como o DLRM ou o DeepFM, têm melhor desempenho como modelos de reranking. Esses modelos podem receber mais dados, são maiores e podem fornecer recomendações refinadas.
Ferramentas
Os exemplos neste artigo ilustram as seguintes ferramentas:
TorchDistributorTorchDistributor é uma estrutura que permite ao senhor executar treinamento de modelos de grande escala PyTorch em Databricks. Ele usa Spark para orquestração e pode escalar 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 em Databricks usando recursos como prefetching e interleaving.
MLflow: O MLflow permite que o senhor rastreie parâmetros, métricas e pontos de verificação do modelo.
TorchRec: Os sistemas modernos de recomendação usam tabelas de pesquisa de incorporação para lidar com milhões de usuários e itens e gerar recomendações de alta qualidade. Tamanhos maiores de incorporação melhoram o desempenho do modelo, mas exigem memória de GPU substancial e configurações de várias GPUs. O TorchRec oferece uma estrutura para escalonar modelos de recomendação e tabelas de pesquisa em várias GPUs, o que o torna ideal para grandes embeddings.
Exemplo: Recomendações de filmes usando uma arquitetura de modelo de duas torres
O modelo de duas torres foi projetado para lidar com tarefas de personalização de grande escala, processando os dados do usuário e do item separadamente antes de combiná-los. Ele é capaz de gerar com eficiência centenas ou milhares de recomendações de qualidade decente. O modelo geralmente espera três entradas: Um recurso user_id, um recurso produto e um rótulo binário que define se a interação <user, produto> foi positiva (o usuário comprou o produto) ou negativa (o usuário deu ao produto uma classificação de uma estrela). Os resultados do modelo são embeddings para usuários e itens, que geralmente são combinados (geralmente usando um produto de ponto ou similaridade de cosseno) para prever as interações entre usuário e item.
Como o modelo de duas torres fornece embeddings para usuários e produtos, o senhor pode colocar esses embeddings em um banco de dados vetorial e realizar operações do tipo busca por similaridade nos usuários e itens. Por exemplo, o senhor poderia colocar todos os itens em um armazenamento de vetores e, para cada usuário, consultar o armazenamento de vetores para encontrar os cem principais itens cujos embeddings são semelhantes aos do usuário.
O exemplo a seguir Notebook implementa o treinamento do modelo de duas torres usando o "Learning from Sets of Items" dataset para prever a probabilidade de um usuário classificar um determinado filme como alto. Ele usa o Mosaic StreamingDataset para carregamento de dados distribuídos, o TorchDistributor para treinamento de modelos distribuídos e o Mlflow para acompanhamento e registro de modelos.
Este Notebook também está disponível no Databricks Marketplace: Modelo de duas torres Notebook
Observação
Os inputs para o modelo de duas torres são, na maioria das vezes, o recurso categórico user_id e produto. O modelo pode ser modificado para suportar vários vetores de recurso para usuários e produtos.
Os resultados do modelo de duas torres são geralmente 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). Os resultados complexos devem ser implementados com cuidado, pois os objetivos concorrentes podem degradar a qualidade dos embeddings gerados pelo modelo.
Exemplo: Ensinar uma arquitetura DLRM usando um dataset
O DLRM é uma arquitetura de rede neural de última geração projetada especificamente para sistemas de personalização e recomendação. Ele combina entradas categóricas e numéricas para modelar com eficiência as interações usuário-item e prever as preferências do usuário. Em geral, os DLRMs esperam inputs que incluam tanto recursos esparsos (como ID do usuário, ID do item, localização geográfica ou categoria do produto) quanto recursos densos (como idade do usuário ou preço do item). O resultado de um DLRM é normalmente uma previsão do envolvimento do usuário, como taxas de cliques ou probabilidade de compra.
Os DLRMs oferecem uma estrutura altamente personalizável que pode lidar com dados de grande escala, tornando-a adequada para tarefas de recomendação complexas em vários domínios. Por ser um modelo maior do que a arquitetura de duas torres, esse modelo é usado com frequência no estágio de reranking.
O exemplo a seguir Notebook cria um modelo DLRM para prever o rótulo binário usando recurso denso (numérico) e recurso esparso (categórico). Ele usa um dataset sintético para ensinar o modelo, o Mosaic StreamingDataset para carregamento de dados distribuídos, TorchDistributor para treinamento de modelos distribuídos e o Mlflow para acompanhamento e registro de modelos.
Este Notebook também está disponível em Databricks Marketplace: DLRM Notebook.
Comparação dos modelos de duas torres e DLRM
A tabela mostra algumas diretrizes para selecionar o modelo de recomendação a ser usado.
Tipo de modelo |
dataset tamanho necessário para treinamento |
Tamanho do modelo |
Tipos de entrada suportados |
Tipos de saída suportados |
Casos de uso |
---|---|---|---|---|---|
Duas torres |
Menor |
Menor |
Normalmente, dois recursos (user_id, produto) |
Principalmente classificação binária e geração de embeddings |
Geração de centenas ou milhares de recomendações possíveis |
DLRM |
Maior |
Maior |
Vários recursos categóricos e densos (user_id, gender, geographic_location, produto, produto, ...) |
Classificação multiclasse, 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 as recomendações de filmes de um provedor de TV a cabo. O modelo DLRM é melhor utilizado 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 ele tem grande probabilidade de comprar.