Modelos de recomendação de comboios
Este artigo inclui dois exemplos de modelos de recomendação baseados em aprendizagem profunda no Azure 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 maiores 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 visto como um funil com as etapas mostradas 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 em milhões de pontos de dados. Outros modelos, como DLRM ou DeepFM, têm melhor desempenho como modelos de reclassificação. Esses modelos podem receber mais dados, são maiores e podem fornecer recomendações refinadas.
Requisitos
Databricks Runtime 14,3 LTS ML
Ferramentas
Os exemplos neste artigo ilustram as seguintes ferramentas:
- TorchDistributor: TorchDistributor é uma estrutura que permite executar treinamento de modelo PyTorch em larga escala em Databricks. Ele usa o Spark para orquestração e pode ser dimensionado para quantas GPUs estiverem disponíveis em seu cluster.
- Mosaic StreamingDataset: 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 rastrear parâmetros, métricas e pontos de verificação de modelo.
- TorchRec: Os sistemas de recomendação modernos usam tabelas de pesquisa incorporadas para lidar com milhões de usuários e itens para gerar recomendações de alta qualidade. Tamanhos de incorporação maiores melhoram o desempenho do modelo, mas exigem memória GPU substancial e configurações multi-GPU. O TorchRec fornece uma estrutura para dimensionar modelos de recomendação e tabelas de pesquisa em várias GPUs, tornando-o ideal para grandes incorporações.
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 em grande escala, processando dados do usuário e do item separadamente antes de combiná-los. É capaz de gerar eficientemente 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 que define se a interação do <usuário com o 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 incorporações para usuários e itens, que geralmente são combinados (geralmente usando um produto ponto ou semelhança de cosseno) para prever interações usuário-item.
Como o modelo de duas torres fornece incorporações para usuários e produtos, você pode colocar essas incorporações em um banco de dados vetorial, como o Databricks Vetor Store, e executar operações semelhantes à pesquisa de semelhança 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 encontrar os cem principais itens cujas incorporações são semelhantes às do usuário.
O bloco de anotações de exemplo a seguir implementa o treinamento de modelo de duas torres usando o conjunto de dados "Aprendendo com conjuntos de itens" para prever a probabilidade de um usuário classificar um determinado filme altamente. Ele usa Mosaic StreamingDataset para carregamento de dados distribuídos, TorchDistributor para treinamento de modelo distribuído e Mlflow para rastreamento e registro de modelos.
Notebook modelo de recomendação de duas torres
Este notebook também está disponível no Databricks Marketplace: Notebook modelo de duas torres
Nota
- As entradas para o modelo de duas torres são, na maioria das vezes, as características categóricas user_id e product_id. O modelo pode ser modificado para suportar vários vetores de recursos para usuários e produtos.
- As saídas para o modelo de duas torres geralmente 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 outros aplicativos, como regressão, classificação de várias classes e probabilidades para várias ações do usuário (por exemplo, dispensar ou comprar). Saídas complexas devem ser implementadas com cuidado, pois objetivos concorrentes podem degradar a qualidade das incorporações geradas pelo modelo.
Exemplo: Treinar uma arquitetura DLRM usando um conjunto de dados sintético
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 efetivamente as interações usuário-item e prever as preferências do usuário. Os DLRMs geralmente esperam entradas que incluem recursos esparsos (como ID do usuário, ID do item, localização geográfica ou categoria do produto) e recursos densos (como idade do usuário ou preço do item). A saída 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 em grande escala, tornando-os adequados para tarefas de recomendação complexas em vários domínios. Por ser um modelo maior do que a arquitetura de duas torres, este modelo é frequentemente usado na fase de reclassificação.
O bloco de anotações 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, TorchDistributor para treinamento de modelo distribuído e Mlflow para rastreamento e registro de modelos.
Notebook DLRM
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 suportados | Tipos de saída suportados | Casos de utilização |
---|---|---|---|---|---|
Duas torres | Menor | Menor | Geralmente dois recursos (user_id, product_id) | Principalmente classificação binária e geração de incorporações | Gerando centenas ou milhares de recomendações possíveis |
DLRM | Maior | Maior | Várias características categóricas e densas (user_id, sexo, geographic_location, product_id, product_category, ...) | Classificação multiclasse, regressão, outros | Recuperação refinada (recomendando dezenas de itens altamente relevantes) |
Em resumo, o modelo de duas torres é melhor usado para gerar milhares de recomendações de boa qualidade de forma muito eficiente. Um exemplo pode ser recomendações de filmes de um provedor de 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 ele tem grande probabilidade de comprar.