Entraîner des modèles de recommandation
Cet article comprend deux exemples de modèles de recommandation basés sur le deep learning sur Databricks. Comparés aux modèles de recommandation traditionnels, les modèles de deep learning peuvent obtenir des résultats de meilleure qualité et monter en charge pour de plus grandes quantités de données. À mesure que ces modèles continuent d'évoluer, Databricks fournit un cadre pour l'entraînement efficace de modèles de recommandation à grande échelle capables de gérer des centaines de millions d'utilisateurs.
Un système de recommandation général peut être considéré comme un funnel avec les étapes présentées dans le diagramme.

Certains modèles, tels que le modèle à deux tours, sont plus performants en tant que modèles de récupération. Ces modèles sont plus petits et peuvent fonctionner efficacement sur des millions de points de données. D'autres modèles, tels que DLRM ou DeepFM, fonctionnent mieux comme modèles de reclassement. Ces modèles peuvent ingérer plus de données, sont plus grands et peuvent fournir des recommandations précises.
Exigences
Databricks Runtime 14.3 LTS ML
Outils
Les exemples de cet article illustrent les outils suivants :
- TorchDistributor: TorchDistributor est un framework qui vous permet d'exécuter l'entraînement de modèles PyTorch à grande échelle sur Databricks. Il utilise Spark pour l'orchestration et peut monter en charge jusqu'au nombre de GPU disponibles dans votre cluster.
- MLflow: MLflow vous permet de suivre les paramètres, les métriques et les points de contrôle du modèle.
- TorchRec: Les systèmes de recommandation modernes utilisent des tables de correspondance d'embedding pour gérer des millions d'utilisateurs et d'éléments afin de générer des recommandations de haute qualité. Des tailles d'embedding plus grandes améliorent les performances du modèle mais nécessitent une mémoire GPU substantielle et des configurations multi-GPU. TorchRec fournit un cadre pour monter en charge les modèles de recommandation et les tables de correspondance sur plusieurs GPU, ce qui le rend idéal pour les grands embeddings.
Exemple : Recommandations de films utilisant une architecture de modèle à deux tours
Le modèle à deux tours est conçu pour gérer des tâches de personnalisation à grande échelle en traitant les données utilisateur et élément séparément avant de les combiner. Il est capable de générer efficacement des centaines ou des milliers de recommandations de qualité décente. Le modèle s'attend généralement à trois entrées : une fonctionnalité user_id, une fonctionnalité product_id et un label binaire définissant si l'interaction <utilisateur, produit> était positive (l'utilisateur a acheté le produit) ou négative (l'utilisateur a attribué une étoile au produit). Les sorties du modèle sont des incorporations pour les utilisateurs et les éléments, qui sont ensuite généralement combinées (souvent à l'aide d'un produit scalaire ou d'une similarité cosinus) pour prédire les interactions utilisateur-élément.
Étant donné que le modèle à deux tours fournit des intégrations pour les utilisateurs et les produits, vous pouvez placer ces intégrations dans un index vectoriel, tel que Databricks AI Search, et effectuer des opérations de type recherche de similarité sur les utilisateurs et les éléments. Par exemple, vous pouvez placer tous les éléments dans un magasin de vecteurs, et pour chaque utilisateur, interroger le magasin de vecteurs afin de trouver les cent éléments les plus pertinents dont les intégrations sont similaires à celles de l'utilisateur.
L'exemple de Notebook suivant implémente la formation du modèle à deux tours en utilisant le dataset « Learning from Sets of Items » pour prédire la probabilité qu'un utilisateur attribue une note élevée à un certain film. Il utilise Mosaic StreamingDataset pour le chargement distribué de données, TorchDistributor pour l’entraînement distribué de modèles et MLflow pour le suivi et la journalisation des modèles.
Notebook de modèle de recommandation à deux tours
Ce Notebook est également disponible sur Databricks Marketplace : Notebook de modèle à deux tours
- Les entrées pour le modèle à deux tours sont le plus souvent les fonctionnalités catégorielles user_id et product_id. Le modèle peut être modifié pour prendre en charge plusieurs vecteurs de fonctionnalités pour les utilisateurs et les produits.
- Les sorties du modèle à deux tours sont généralement des valeurs binaires indiquant si l'utilisateur aura une interaction positive ou négative avec le produit. Le modèle peut être modifié pour d'autres applications telles que la régression, la classification multi-classes et les probabilités pour plusieurs actions de l'utilisateur (par exemple, ignorer ou acheter). Les sorties complexes doivent être implémentées avec soin, car des objectifs concurrents peuvent dégrader la qualité des embeddings générés par le modèle.
Exemple : Entraînez une architecture DLRM à l'aide d'un dataset synthétique
Le DLRM est une architecture de réseau de neurones à la pointe de la technologie, conçue spécifiquement pour les systèmes de personnalisation et de recommandation. Il combine des entrées catégorielles et numériques pour modéliser efficacement les interactions utilisateur-élément et prédire les préférences de l’utilisateur. Les DLRM attendent généralement des entrées qui comprennent à la fois des caractéristiques éparses (telles que l'identifiant d'utilisateur, l'identifiant d'article, la localisation géographique ou la catégorie de produit) et des caractéristiques denses (telles que l'âge de l'utilisateur ou le prix de l'article). La sortie d'un DLRM est généralement une prédiction de l'engagement utilisateur, comme les taux de clics ou la probabilité d'achat.
Les DLRM offrent un cadre hautement personnalisable capable de gérer des données à grande échelle, ce qui les rend adaptés aux tâches de recommandation complexes dans divers domaines. Étant donné qu'il s'agit d'un modèle plus volumineux que l'architecture à deux tours, ce modèle est souvent utilisé dans la phase de reclassement.
Le Notebook d'exemple suivant construit un modèle DLRM pour prédire les étiquettes binaires à l'aide de features denses (numériques) et de features éparses (catégorielles). Il utilise un dataset synthétique pour entraîner le modèle, le Mosaic StreamingDataset pour le chargement distribué des données, TorchDistributor pour l'entraînement distribué du modèle, et MLflow pour le suivi et la journalisation du modèle.
Notebook DLRM
Ce Notebook est également disponible sur le Databricks Marketplace : Notebook DLRM.
Comparaison des modèles à deux tours et DLRM
Le tableau présente quelques lignes directrices pour sélectionner le modèle de recommandation à utiliser.
Type de modèle | Taille du dataset nécessaire pour l’entraînement | Taille du modèle | Types d’entrée pris en charge | Types de sortie pris en charge | Cas d’utilisation |
|---|---|---|---|---|---|
Deux tours | Plus petit | Plus petit | Habituellement deux fonctionnalités (user_id, product_id) | Principalement la classification binaire et la génération d'intégrations | Générer des centaines ou des milliers de recommandations possibles |
DLRM | Plus grand | Plus grand | Diverses caractéristiques catégorielles et denses (user_id, gender, geographic_location, product_id, product_category, …) | Classification multi-classes, régression, autres | Récupération granulaire (recommandant des dizaines d'éléments très pertinents) |
En résumé, le modèle à deux tours est mieux utilisé pour générer des milliers de recommandations de bonne qualité très efficacement. Un exemple pourrait être des recommandations de films d'un fournisseur de câble. Le modèle DLRM est mieux utilisé pour générer des recommandations très spécifiques basées sur plus de données. Un exemple pourrait être un détaillant qui souhaite présenter à un client un plus petit nombre d'articles qu'il est très probable qu'il achète.