Partilhar via


Treinar modelos de recomendação

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.

diagrama de arquitetura do sistema de recomendação

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 utilizadores e itens, que geralmente são combinadas (geralmente usando um produto escalar ou semelhança de cosseno) para prever interações entre utilizador e item.

Como o modelo de duas torres fornece incorporações para usuários e produtos, você pode colocar essas incorporações em um índice vetorial, como o Mosaic AI Vetor Search, 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 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 treino do modelo de duas torres usando o conjunto de dados "Aprendendo com conjuntos de itens" para prever a probabilidade de um usuário classificar bem um determinado filme. Ele usa o Mosaic StreamingDataset para carregamento de dados distribuídos, o TorchDistributor para treinamento de modelos distribuídos e o MLflow para rastreamento e registro de modelos.

Notebook modelo de recomendação de duas torres

Obter notebook

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.

DLRM Notebook

Obter notebook

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

Exemplo: Ajuste fino de modelos de embedding com o llm-foundry em computação de GPU sem servidor

Os modelos de embedding são um componente crítico dos sistemas modernos de recomendação, especialmente na fase de recuperação, onde permitem uma pesquisa eficiente de similaridade em milhões de itens. Enquanto o modelo de duas torres gera incorporações específicas para tarefas, modelos de incorporação pré-treinados podem ser ajustados para aplicações específicas de domínio, para melhorar a qualidade da recuperação.

O seguinte exemplo de caderno demonstra como usar a aprendizagem contrastiva para afinar um modelo de embedding ao estilo BERT em computação de GPU serverless (SGC). Utiliza a framework llm-foundry com o treinador do Composer para afinar modelos como gte-large-en-v1.5, trabalhando com dados armazenados em tabelas Delta. Este exemplo utiliza o Mosaic Streaming para converter dados para o formato Mosaic Data Shard (MDS) para carregamento distribuído de dados e MLflow para rastreamento e registo de modelos.

Ajuste fino de modelo de embedding notebook

Obter notebook

Nota

  • O modelo de embedding espera dados com colunas para query_text, positive_passage, e opcionalmente negative_passages.
  • Os embeddings finamente ajustados podem ser usados em lojas vetoriais para operações de pesquisa por similaridade, permitindo uma recuperação eficiente de itens relevantes para sistemas de recomendação.
  • Esta abordagem é particularmente útil quando precisa de adaptar um modelo de embedding de propósito geral ao seu domínio ou caso de uso específico.

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 duas características (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 detalhada (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.