Utilisez un jeu de données public pour démarrer rapidement avec PAI-Rec. Configurez les fonctionnalités clés d'un algorithme de recommandation personnalisé, telles que l'ingénierie des fonctionnalités, le rappel et le classement fin, puis générez et déployez le code dans le flux de travail correspondant sur DataWorks.
Prérequis
Avant de commencer, effectuez les opérations suivantes :
Activez PAI. Pour plus de détails, consultez la rubrique Activer PAI et créer un espace de travail par défaut.
Créez un VPC et un vSwitch. Pour plus de détails, consultez la rubrique Créer un VPC avec un bloc CIDR IPv4.
Activez PAI-FeatureStore. Pour plus de détails, consultez la section Prérequis de la rubrique Créer une source de données. L'activation de Hologres n'est pas requise. Pour la source de données, sélectionnez FeatureDB. Pour plus de détails, consultez la rubrique Créer une source de données en ligne : FeatureDB.
Activez MaxCompute et créez un projet MaxCompute nommé project_mc. Pour plus de détails, consultez les rubriques Activer MaxCompute et Créer un projet MaxCompute.
Créez un bucket OSS. Pour plus de détails, consultez la rubrique Créer un bucket.
-
Créez un espace de travail DataWorks. Pour plus de détails, consultez la rubrique Créer un espace de travail.
Achetez un groupe de ressources Serverless pour DataWorks. Pour plus de détails, consultez la rubrique Utiliser un groupe de ressources Serverless. Ce groupe de ressources synchronise les données pour PAI-FeatureStore et exécute les commandes eascmd afin de créer et de mettre à jour le service PAI-EAS.
-
Configurez les sources de données DataWorks :
Créez et liez une source de données OSS. Pour plus de détails, consultez la rubrique Gestion des sources de données.
Créez et liez une source de données MaxCompute. Pour plus de détails, consultez la rubrique Lier un moteur de calcul MaxCompute.
Créez un projet FeatureStore et des entités de fonctionnalités. Ignorez cette étape si vous utilisez un groupe de ressources Serverless. Si vous utilisez un groupe de ressources dédié pour DataWorks, vous devez installer le SDK Python FeatureStore sur le groupe de ressources. Pour plus de détails, consultez les rubriques Étape 2 : Créer et enregistrer un FeatureStore et Installer le SDK Python FeatureStore.
Activez Realtime Compute for Apache Flink. Pour plus de détails, consultez la rubrique Activer Realtime Compute for Apache Flink. Remarque : définissez le type de stockage sur bucket OSS, et non sur Fully Managed Storage. Assurez-vous que le bucket OSS pour Flink est identique à celui configuré dans PAI-Rec. Flink enregistre les données de comportement utilisateur en temps réel et calcule les fonctionnalités utilisateur en temps réel.
Si vous choisissez ultérieurement d'utiliser EasyRec (framework TensorFlow), l'entraînement s'exécute par défaut sur MaxCompute.
Si vous choisissez ultérieurement d'utiliser TorchEasyRec (framework PyTorch), l'entraînement s'exécute par défaut sur PAI-DLC. Pour télécharger les données MaxCompute sur PAI-DLC, vous devez activer Data Transmission Service (consultez la rubrique Acheter et utiliser un groupe de ressources dédié pour Data Transmission Service).
1. Créer une instance PAI-Rec
Connectez-vous à la page d'accueil de PAI-Rec et cliquez sur Buy Now.
-
Sur la page d'achat de l'instance PAI-Rec, configurez les paramètres suivants et cliquez sur Buy Now.
Paramètre
Description
Region and availability zone
Région où votre service est déployé.
Service Type
Pour cette solution, sélectionnez Standard Edition et activez la fonctionnalité Recommendation Solution Customization.
Connectez-vous à la console PAI-Rec. Dans le coin supérieur gauche de la barre de menus supérieure, sélectionnez une région.
Dans le volet de navigation de gauche, choisissez Instance list. Cliquez sur le nom de l'instance pour accéder à la page des détails de l'instance.
-
Dans la section Procedure, cliquez sur Cloud Service Configuration. Vous accédez ainsi à la page System Configuration > Cloud Service Configuration. Cliquez sur Edit, configurez les paramètres suivants, puis cliquez sur Exit.
Dans le volet de navigation de gauche, choisissez System Configuration > Permissions. Sous l'onglet Services, vérifiez que chaque produit cloud est correctement autorisé.
2. Cloner le jeu de données public
1. Synchroniser les tables
Cette solution accepte les données d'entrée de deux manières :
Clonez les données pour une fenêtre temporelle fixe à partir du projet
pai_online_project. Cette méthode ne prend pas en charge la planification routinière.Utilisez un script Python pour générer les données. Vous pouvez exécuter une tâche dans DataWorks pour générer ces données pour une période spécifique.
Pour planifier la génération quotidienne des données et l'entraînement des modèles, utilisez la deuxième méthode. Déployez le code Python spécifié pour générer les données. Pour plus d'informations, consultez l'onglet Generate data using code.
Fenêtre temporelle fixe
PAI-Rec met à disposition trois tables courantes pour les algorithmes de recommandation dans le projet pai_online_project, accessible publiquement :
Table utilisateur :
pai_online_project.rec_sln_demo_user_tableTable élément :
pai_online_project.rec_sln_demo_item_tableTable comportement :
pai_online_project.rec_sln_demo_behavior_table
Les données sont générées aléatoirement à des fins de démonstration ; par conséquent, les métriques issues de l'entraînement, telles que l'AUC, seront faibles. Exécutez des commandes SQL dans DataWorks pour synchroniser les données des tables depuis le projet pai_online_project vers votre projet DataWorks, par exemple DataWorks_a. Procédez comme suit :
Connectez-vous à la console DataWorks. Dans la barre de menus supérieure, sélectionnez une région.
Dans le volet de navigation de gauche, cliquez sur Data Development and O&M > Data Development.
Sélectionnez l'espace de travail DataWorks que vous avez créé et cliquez sur Go To Data Development.
-
Placez le curseur sur Create et choisissez Create Node > MaxCompute > ODPS SQL. Configurez les paramètres selon le tableau ci-dessous, puis cliquez sur Confirm.
Dans l'éditeur du nouveau nœud, collez et exécutez le code suivant pour synchroniser les tables utilisateur, élément et comportement depuis le projet
pai_online_projectvers votre projet MaxCompute, par exempleproject_mc. Le code nécessite une fenêtre de données de 100 jours. Pour définir cette fenêtre de manière à ce qu'elle se termine la veille, accédez à la section Scheduling Parameters, cliquez sur Add Parameter et ajoutez deux paramètres :bizdateavec la valeur$[yyyymmdd-1]etbizdate_100avec la valeur$[yyyymmdd-100].
CREATE TABLE IF NOT EXISTS rec_sln_demo_user_table_v1(
user_id BIGINT COMMENT 'Unique user ID',
gender STRING COMMENT 'Gender',
age BIGINT COMMENT 'Age',
city STRING COMMENT 'City',
item_cnt BIGINT COMMENT 'Number of created items',
follow_cnt BIGINT COMMENT 'Number of follows',
follower_cnt BIGINT COMMENT 'Number of followers',
register_time BIGINT COMMENT 'Registration time',
tags STRING COMMENT 'User tags'
) PARTITIONED BY (ds STRING) STORED AS ALIORC;
INSERT OVERWRITE TABLE rec_sln_demo_user_table_v1 PARTITION(ds)
SELECT *
FROM pai_online_project.rec_sln_demo_user_table
WHERE ds >= "${bizdate_100}" and ds <= "${bizdate}";
CREATE TABLE IF NOT EXISTS rec_sln_demo_item_table_v1(
item_id BIGINT COMMENT 'Item ID',
duration DOUBLE COMMENT 'Video duration',
title STRING COMMENT 'Title',
category STRING COMMENT 'Primary tag',
author BIGINT COMMENT 'Author',
click_count BIGINT COMMENT 'Total clicks',
praise_count BIGINT COMMENT 'Total likes',
pub_time BIGINT COMMENT 'Publication time'
) PARTITIONED BY (ds STRING) STORED AS ALIORC;
INSERT OVERWRITE TABLE rec_sln_demo_item_table_v1 PARTITION(ds)
SELECT *
FROM pai_online_project.rec_sln_demo_item_table
WHERE ds >= "${bizdate_100}" and ds <= "${bizdate}";
CREATE TABLE IF NOT EXISTS rec_sln_demo_behavior_table_v1(
request_id STRING COMMENT 'Instrumentation ID/Request ID',
user_id STRING COMMENT 'Unique user ID',
exp_id STRING COMMENT 'Experiment ID',
page STRING COMMENT 'Page',
net_type STRING COMMENT 'Network type',
event_time BIGINT COMMENT 'Behavior time',
item_id STRING COMMENT 'Item ID',
event STRING COMMENT 'Behavior type',
playtime DOUBLE COMMENT 'Playback/Read duration'
) PARTITIONED BY (ds STRING) STORED AS ALIORC;
INSERT OVERWRITE TABLE rec_sln_demo_behavior_table_v1 PARTITION(ds)
SELECT *
FROM pai_online_project.rec_sln_demo_behavior_table
WHERE ds >= "${bizdate_100}" and ds <= "${bizdate}";
Génération de code
La planification périodique des tâches n'est pas prise en charge pour les données à fenêtre temporelle fixe. Pour exécuter des tâches planifiées, vous devez déployer un script Python afin de générer les données. Procédez comme suit :
Dans la console DataWorks, créez un nœud PyODPS 3. Pour plus d'informations, consultez Création et gestion de nœuds MaxComputeCréer et gérer des nœuds MaxCompute.
Téléchargez create_data.py et collez son contenu dans le nœud PyODPS 3.
-
Cliquez sur Configure Scheduling à droite, configurez les paramètres suivants, puis cliquez sur Enregistrer
et Soumettre
dans le coin supérieur droit.-
Configurez les paramètres de planification :
-
Définissez le paramètre
$user_table_namesurrec_sln_demo_user_table.Définissez le paramètre
$item_table_namesurrec_sln_demo_item_table.Définissez le paramètre
$behavior_table_namesurrec_sln_demo_behavior_table.Outre les paramètres de nom de table, vous devez également ajouter un paramètre pour la date métier.
Ce paramètre est nommé bizdate.
Définissez sa valeur sur
$[yyyymmdd-1].
-
Configurez une dépendance de planification.
-
Accédez à Operation Center et choisissez .
Dans la colonne Actions de la tâche cible, choisissez .
-
Dans le panneau Backfill Data, définissez une date métier et cliquez sur Submit and Go.
La plage de temps optimale pour le remplissage rétroactif des données est de 60 jours. Nous vous recommandons de définir la date métier sur
Task scheduled date - 60afin de garantir l'intégrité des données.
2. Configurer les nœuds de dépendance
Pour assurer la génération et le déploiement fluides du code, ajoutez trois nœuds de code SQL à votre projet DataWorks. Définissez les dépendances de planification de ces nœuds sur le nœud racine de l'espace de travail, puis publiez les nœuds.
-
Survolez l'option Create et choisissez Create Node > General-purpose > Virtual Node. Créez trois nœuds virtuels avec la configuration de ressource suivante, puis cliquez sur Confirm.
-
Pour chaque nœud virtuel, définissez son contenu sur
select 1;. Ensuite, cliquez sur Configure Scheduling à droite et configurez les paramètres suivants :Dans la section Time property, définissez la propriété Rerun property sur Rerun When Succeeded Or Failed.
-
Dans la section Scheduling dependencies > Upstream dependencies, saisissez le nom de votre espace de travail DataWorks, sélectionnez le nœud avec le suffixe _root, puis cliquez sur Add.
Appliquez ces paramètres aux trois nœuds virtuels.
Cliquez sur l'icône
située à côté de chaque nœud virtuel pour le soumettre.
3. Enregistrer les données
Pour configurer l'ingénierie des fonctionnalités, ainsi que les algorithmes de rappel et de classement dans la solution de recommandation personnalisée, commencez par enregistrer les trois tables qui ont été synchronisées avec votre projet DataWorks.
Connectez-vous à la console PAI-Rec. Dans la barre de menus supérieure, sélectionnez une région.
Dans le volet de navigation de gauche, choisissez Instance List. Cliquez sur le nom de l'instance pour ouvrir la page des détails de l'instance.
-
Dans le volet de navigation de gauche, choisissez Recommendation Solution Customization > Data Registration. Sous l'onglet MaxCompute Table, cliquez sur Create Data Table. Ajoutez une table utilisateur, une table d'éléments et une table de comportement comme décrit dans le tableau suivant, puis cliquez sur Import.
Paramètre
Description
Exemple
Projet MaxCompute
Sélectionnez votre projet MaxCompute.
project_mc
Table MaxCompute
Sélectionnez les tables de données synchronisées avec votre espace de travail DataWorks.
table utilisateur : rec_sln_demo_user_table_v1
table d'éléments : rec_sln_demo_item_table_v1
table de comportement : rec_sln_demo_behavior_table_v1
nom de la table de données
Saisissez un nom personnalisé.
table utilisateur
table d'éléments
table de comportement
4. Créer un scénario de recommandation
Avant de configurer une tâche de recommandation, créez un scénario de recommandation. Pour une explication des scénarios de recommandation et des ID de trafic, consultez la rubrique Concepts de base.
Dans le volet de navigation de gauche, cliquez sur Recommendation Scenario. Cliquez sur Create Scenario, configurez le nouveau scénario selon le tableau suivant, puis cliquez sur Determine.
5. Configurer une solution algorithmique
Pour configurer entièrement un scénario réel, utilisez les configurations de rappel et de classement fin suivantes :
Rappel des éléments les plus populaires (global hot recall) : sélectionne les k éléments les plus populaires à partir des données de journal.
Rappel de secours des éléments les plus populaires (global hot fallback recall) : utilise Redis comme solution de secours pour éviter les réponses vides de l'API de recommandation.
Rappel des éléments populaires par groupe (grouped hot recall) : rappelle les éléments par groupes (par exemple, ville, sexe) pour fournir des recommandations plus précises des éléments populaires.
Rappel etrec u2i : utilise l'algorithme de filtrage collaboratif etrec.
Rappel Swing u2i (facultatif) : utilise l'algorithme Swing.
Rappel à froid (cold-start recall, facultatif) : gère les scénarios de démarrage à froid à l'aide de l'algorithme DropoutNet.
Classement fin : utilise MultiTower pour le classement mono-objectif et DBMTL pour le classement multi-objectifs.
Vous ne devez activer des algorithmes tels que le rappel vectoriel ou le rappel PDN qu'une fois que le rappel initial couvre la plupart de vos candidats. Le rappel vectoriel nécessite un moteur de rappel vectoriel. FeatureDB ne prend pas en charge le rappel vectoriel ; cette configuration n'est donc pas incluse dans cet exemple.
Pour simplifier le processus, cet exemple utilise uniquement le rappel des éléments les plus populaires (global hot recall) et la stratégie de rappel u2i issue de la rubrique RECommender (eTREC, une implémentation du filtrage collaboratif) pour le rappel, ainsi que le classement fin pour le tri.
-
Dans le volet de navigation de gauche, choisissez Recommendation Solution Customization > Solution Configurations. Sélectionnez le scénario que vous avez créé, cliquez sur Create Recommendation Solution, fournissez la configuration de ressource suivante, puis cliquez sur Save and Go to Algorithm Solution Configuration.
Conservez les valeurs par défaut pour les paramètres non spécifiés. Pour plus d'informations, consultez la rubrique Configuration de la table de données.
-
Dans le nœud Configure Table, cliquez sur Add à côté de la table de données cible. Configurez les partitions, les événements, les fonctionnalités et les horodatages pour la table des journaux de comportement, la table des utilisateurs et la table des articles comme détaillé dans les sections suivantes. Cliquez sur Next.
Vous pouvez conserver les valeurs par défaut pour tous les paramètres non décrits. Pour plus d'informations, consultez la section Configuration des tables de données.
-
Dans le nœud Configure Feature, configurez les paramètres comme indiqué dans le tableau suivant, cliquez sur Generate Feature, définissez une version de fonctionnalité, puis cliquez sur Next.
Après avoir cliqué sur Generate Feature, le système déduit diverses caractéristiques statistiques pour les utilisateurs et les éléments. Cette solution utilise les caractéristiques déduites par défaut, mais vous pouvez les modifier en fonction de vos besoins métier. Pour plus d'informations, consultez la rubrique Configuration des fonctionnalités.
-
Dans le nœud Retrieval Configuration, cliquez sur Add à côté de la catégorie cible, configurez les paramètres, cliquez sur Confirm, puis cliquez sur Next.
Pour démarrer rapidement, configurez les options global hot recall et etrec u2i recall. Les autres méthodes sont fournies à titre de référence.
pour actualiser la liste et vérifier l'état du déploiement.