Utilisez un jeu de données public pour configurer l'ingénierie des fonctionnalités, le rappel et le classement dans PAI-Rec, puis déployez le code généré vers DataWorks. L'approche modulaire vous permet de publier ou de retirer individuellement des composants sans affecter le reste du pipeline.
Pourquoi modulariser la personnalisation des solutions de recommandation ?
Les groupes de fonctionnalités simplifient l'itération des modèles.
La publication en un clic déploie le code et lance automatiquement le remplissage rétroactif des données.
Seul le module de classement remplit entièrement tous les composants requis (groupes de fonctionnalités, échantillons et modules de génération de fonctionnalités), ce qui réduit les retravaux dus aux erreurs d'ingénierie des fonctionnalités.
Prérequis
Effectuez les préparations suivantes :
Créer un bucket dans OSS.
Créez un VPC et un vSwitch. Créer un VPC avec un bloc CIDR IPv4.
Activez PAI-FeatureStore (consultez la section Prérequis dans Créer une source de données). N'activez pas Hologres. Sélectionnez FeatureDB comme source de données (Créer une source de données en ligne : FeatureDB).
Activer MaxCompute et Créer un projet MaxCompute nommé
project_mc.-
Guide d'achat et effectuez les opérations suivantes :
Créer un espace de travail dans DataWorks.
Achetez un groupe de ressources Serverless (Utiliser un groupe de ressources Serverless). Ce groupe de ressources synchronise les données pour PAI-FeatureStore et exécute les commandes
eascmdpour créer et mettre à jour les services PAI-EAS.-
Configurez les sources de données DataWorks :
Créez et liez une source de données OSS (Gestion des sources de données).
Créez et liez une source de données MaxCompute (Lier les ressources de calcul MaxCompute).
Créez un projet FeatureStore et une entité de fonctionnalité (Étape 2 : Créer et enregistrer FeatureStore). Ignorez cette étape si vous utilisez un groupe de ressources Serverless. Si vous utilisez un groupe de ressources dédié, installez le SDK Python FeatureStore sur le groupe de ressources (Installer le SDK Python FeatureStore).
Activer Realtime Compute for Apache Flink. Pour le paramètre Storage type, sélectionnez OSS bucket (et non Fully managed storage). Le bucket OSS doit correspondre à celui configuré pour 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 utilisez EasyRec (un framework basé sur TensorFlow), l'entraînement s'exécute par défaut sur MaxCompute.
Si vous utilisez TorchEasyRec (un framework basé sur PyTorch), l'entraînement s'exécute par défaut sur PAI-DLC. Pour télécharger les données MaxCompute sur PAI-DLC, activez Data Transmission Service (Acheter et utiliser un groupe de ressources Data Transmission Service dédié).
1. Créer une instance PAI-Rec et initialiser le service
Connectez-vous à la page d'accueil de la Plateforme de développement de systèmes de recommandation et cliquez sur Buy Now.
-
Sur la page d'achat de l'instance PAI-Rec, configurez les paramètres clés suivants, puis cliquez sur Buy Now.
Parameter
Description
Region and zone
La région où votre service cloud est déployé.
Service Type
Sélectionnez Standard Edition and enable Recommendation Solution Customization.
Connectez-vous à la Console de gestion 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 Instances, puis cliquez sur le nom de l'instance pour ouvrir la page des détails de l'instance.
-
Dans la section Procedure, cliquez sur Cloud Service Configuration pour ouvrir la page System Configuration > Cloud Service Configuration. Cliquez sur Edit, configurez les paramètres comme indiqué dans le tableau Resource configuration, puis cliquez sur Exit.
Dans le volet de navigation de gauche, choisissez System Configuration > Permissions. Sous l'onglet Services, vérifiez le statut d'autorisation de chaque service cloud.
2. Cloner le jeu de données public
1. Synchroniser la table de données
Deux options d'entrée de données sont disponibles :
Cloner les données depuis pai_online_project dans une fenêtre de temps fixe. Cette option ne prend pas en charge les tâches planifiées.
Utiliser un script Python pour générer des données. Vous pouvez exécuter la tâche dans DataWorks pour générer des données pour une plage de temps spécifiée.
Pour la génération quotidienne de données et l'entraînement de modèles planifiés, déployez plutôt un script Python. Consultez l'onglet Generate data using code.
Fixed time window
PAI-Rec prépare trois tables dans le projet public pai_online_project :
Table utilisateur :
pai_online_project.rec_sln_demo_user_tableTable d'éléments :
pai_online_project.rec_sln_demo_item_tableTable de comportement :
pai_online_project.rec_sln_demo_behavior_table
Les opérations suivantes utilisent ces trois tables. Étant donné que les données sont générées aléatoirement pour la simulation, les métriques d'entraînement telles que l'AUC peuvent être faibles. Exécutez les commandes SQL dans DataWorks pour synchroniser les données de table depuis pai_online_project vers votre projet DataWorks (par exemple, DataWorks_a) :
Connectez-vous à la console DataWorks et sélectionnez une région dans le coin supérieur gauche de la barre de menus supérieure.
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 Enter Data Development.
-
Placez le curseur sur Create, puis choisissez New node > MaxCompute > ODPS SQL. Configurez les paramètres comme décrit dans le tableau suivant, puis cliquez sur Confirm.
Dans l'éditeur du nouveau nœud, copiez et exécutez le code suivant pour synchroniser les tables utilisateur, d'éléments et de comportement depuis le projet
pai_online_projectvers votre projet MaxCompute (par exemple,project_mc). Avant d'exécuter le code, définissez des variables pour spécifier une fenêtre de données de 100 jours se terminant à la datebizdate. En général, vous devez définirbizdatesur la veille. Dans la zone Scheduling parameters, cliquez sur Add Parameter et ajoutez deux paramètres : bizdate avec la valeur$[yyyymmdd-1], et bizdate_100 avec la valeur$[yyyymmdd-100]. L'exécution du code suivant synchronise les données du projet publicpai_online_projectvers votre projet :
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 published items',
follow_cnt BIGINT COMMENT 'Number of followed accounts',
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 category',
author BIGINT COMMENT 'Author',
click_count BIGINT COMMENT 'Total clicks',
praise_count BIGINT COMMENT 'Total likes',
pub_time BIGINT COMMENT 'Publish 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 'Tracking 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 'Event time',
item_id STRING COMMENT 'Item ID',
event STRING COMMENT 'Event type',
playtime DOUBLE COMMENT 'Playback/Reading 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}";
Code generation
Les données à fenêtre de temps fixe ne prennent pas en charge les tâches planifiées. Pour exécuter des tâches selon un planning, déployez un script Python pour générer des données :
Dans la console DataWorks, créez un nœud PyODPS 3 (Créer et gérer des nœuds MaxCompute).
Téléchargez create_data.py, puis collez le contenu du fichier dans l'éditeur du nœud PyODPS 3.
-
Sur le côté droit de l'éditeur, cliquez sur Configure Scheduling et configurez les paramètres. Ensuite, cliquez sur les icônes Save
et Submit
dans le coin supérieur droit.-
Configurez les paramètres de planification :
-
Remarque sur la substitution de variables :
Dans les paramètres de planification, définissez l'argument
$user_table_namesurrec_sln_demo_user_table.Définissez l'argument
$item_table_namesurrec_sln_demo_item_table.Définissez l'argument
$behavior_table_namesurrec_sln_demo_behavior_table.Outre les trois arguments relatifs aux noms de table, le script utilise également un paramètre de planification
bizdate, transmis via la variable$bizdate.Configuration des paramètres :
Ajoutez un paramètre nommé
bizdateet définissez sa valeur sur$[yyyymmdd-1].
-
Configurez les dépendances de planification.
-
Cliquez sur Operation Center, puis sélectionnez .
Cliquez sur dans la colonne Actions de la tâche cible.
-
Dans le panneau Data Backfill, définissez l'horodatage des données, puis cliquez sur Submit and Navigate.
Pour une période de rétrocomplétion optimale de 60 jours, définissez l'horodatage des données sur
Scheduled Task Date - 60afin de garantir l'intégrité des données.
2. Configurer les nœuds de dépendance
Ajoutez trois nœuds virtuels à votre projet DataWorks avec des dépendances de planification sur le nœud racine, puis publiez-les :
-
Survolez l'option Create et sélectionnez new node > General-purpose > virtual node. Créez trois nœuds virtuels en utilisant la configuration de ressources suivante, puis cliquez sur Confirm.
-
Sélectionnez chaque nœud et définissez son contenu sur
select 1;. Ensuite, cliquez sur Configure Scheduling à droite et effectuez les paramètres suivants :Dans la section Time attributes, définissez l'attribut Rerun attribute sur Rerun node after success or failure.
-
Dans la section Scheduling dependencies > Ancestor Nodes, saisissez le nom de l'espace de travail DataWorks, sélectionnez le nœud portant le suffixe _root, puis cliquez sur Add.
Appliquez cette configuration de dépendance aux trois nœuds virtuels.
Cliquez sur l'icône
pour chaque nœud virtuel afin de soumettre le nœud.
3. Enregistrer les données
Enregistrez les trois tables synchronisées dans PAI-Rec avant de configurer l'ingénierie des fonctionnalités, la phase de rappel et le classement :
Connectez-vous à la console de gestion PAI-Rec et sélectionnez une région dans le coin supérieur gauche.
Dans le volet de navigation de gauche, cliquez sur Instances, puis cliquez sur le nom d'une instance pour ouvrir sa page de détails.
-
Dans le volet de navigation de gauche, accédez à Recommendation Solution Customization > Data Registration. Dans l'onglet MaxCompute Table, cliquez sur Create Data Table. Ajoutez une table utilisateur, une table d'éléments et une table de comportements en utilisant la configuration indiquée dans le tableau ci-dessous. Ensuite, cliquez sur Import.
Paramètre
Description
Exemple
Projet MaxCompute
Sélectionnez le projet MaxCompute que vous avez créé.
project_mc
Table MaxCompute
Sélectionnez les tables de données synchronisées vers 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 comportements : 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 comportements
4. Créer un scénario de recommandation
Créez un scénario de recommandation avant de configurer les tâches de recommandation. Pour les concepts de base et l'encodage du trafic, consultez la rubrique Concepts de base.
Dans le volet de navigation de gauche, cliquez sur Recommendation Scenario puis sur Create Scenario. Configurez un scénario de recommandation avec la configuration de ressources suivante et cliquez sur Determine.
5. Configurer un algorithme
Une configuration de production complète inclut les paramètres de rappel et de classement suivants :
Rappel global des éléments populaires : récupère les K éléments les plus populaires en fonction des données de journalisation.
Rappel groupé des éléments populaires : récupère des candidats populaires issus de groupes spécifiques, tels que la ville ou le genre, afin d'améliorer la pertinence.
Rappel Etrec u2i : utilise l'algorithme de filtrage collaboratif etrec.
Rappel Swing u2i (facultatif) : utilise l'algorithme Swing.
Rappel vectoriel (facultatif) : génère des candidats à l'aide du modèle Deep Structured Semantic Model (DSSM).
Classement fin : utilise le modèle MultiTower pour le classement mono-objectif et le modèle DBMTL pour le classement multi-objectif.
Les étapes suivantes couvrent le rappel global des éléments populaires et le rappel Etrec u2i issu de la rubrique RECommender (eTREC, une implémentation du filtrage collaboratif), ainsi que le classement fin. Étapes :
-
Dans le volet de navigation de gauche, choisissez Recommendation Solution Customization. Sélectionnez un scénario que vous avez créé, puis cliquez sur Create Modular Recommendation Solution. Créez une solution avec les configurations de ressources suivantes, puis cliquez sur Save and Go to Algorithm Solution Configuration.
Laissez les paramètres non spécifiés à leurs valeurs par défaut. Consultez la rubrique Configuration de la table de données.
-
Dans l'onglet Configure Table, cliquez sur Add à côté d'une table de données. Configurez la table des journaux de comportement, la table utilisateur et la table d'éléments en définissant leurs champs de partition, d'événement, de fonctionnalité et d'horodatage correspondants, puis cliquez sur Next.
Laissez les paramètres non spécifiés à leurs valeurs par défaut. Consultez la rubrique Configuration de la table de données.
-
Sous Feature Group Configuration, cliquez sur Add. Configurez les paramètres comme indiqué dans le tableau suivant. Définissez le nom et la version du module de fonctionnalités, et sélectionnez la table utilisateur, la table d'éléments et la table des journaux de comportement que vous avez configurées dans l'onglet Configure Table.
Cliquez sur Determine. Cette action génère diverses fonctionnalités statistiques pour les utilisateurs et les éléments. Cliquez sur Configure Feature pour ce groupe de fonctionnalités afin de consulter les fonctionnalités de validation. Pour cette solution, ne modifiez pas les fonctionnalités dérivées et conservez les paramètres par défaut. Vous pouvez modifier les fonctionnalités dérivées pour répondre aux besoins de votre entreprise (Feature Configuration). Cliquez sur Publish pour ce groupe de fonctionnalités, sélectionnez la date de partition des données la plus récente comme date d'exécution de la tâche, définissez le parallélisme maximal des tâches sur 10 et conservez les autres paramètres par défaut. Ensuite, cliquez sur Determine. Cette action génère un nœud, le déploie sur DataWorks et remplit les données par date. Attendez que l'état du module passe à Published avant de passer à l'étape suivante. Cliquez sur Online Details pour afficher plus d'informations sur le module. Dans la liste Data Refill Task List, vous pouvez vérifier l'état d'exécution de chaque tâche. Si une tâche échoue, cliquez sur View Task Node pour accéder à DataWorks et afficher les informations d'erreur détaillées. Après avoir corrigé le problème, recherchez le nœud dans la liste Data Refill Task List et cliquez sur Rerun. Une fois la tâche réussie, vous pouvez continuer.
-
Sous Label Table Configuration, ce module construit des cibles d'échantillon à partir de la table de comportement. Cliquez sur Add, choisissez Label Module comme type de module, saisissez un nom pour le module de libellé et sélectionnez le module de fonctionnalité que vous avez configuré à l'étape précédente. Cliquez sur Create à côté de Fine-grained ranking target settings (labels) et ajoutez les deux libellés suivants :
Cible 1 : Définissez Fine-grained ranking target name sur
is_click, définissez Fine-grained ranking target expression surmax(if(event='click',1,0))et sélectionnez CLASSIFICATION pour Target type.Cible 2 (notez que le « l » dans « ln » est en minuscule) : Définissez Fine-grained ranking target name sur
ln_playtime, définissez Fine-grained ranking target expression surln(sum(playtime)+1), définissez Fine-grained ranking target dependency suris_clicket sélectionnez REGRESSION pour Target type. Ensuite, cliquez sur OK.Après avoir cliqué sur Determine, publiez le module de la même manière que vous avez publié le module de fonctionnalité. Attendez que l'état passe à Published avant de passer à l'étape suivante.
Sous Sample Configuration, ce module associe les tables de cibles d'échantillon aux fonctionnalités et génère des fonctionnalités de modèle dans FeatureStore. Cliquez sur Add, choisissez Sample Module comme type de module, nommez la fonctionnalité du modèle et sélectionnez les modules de fonctionnalité et de libellé des étapes précédentes. Publiez le module et attendez que l'état passe à Published avant de passer à l'étape suivante.
Sous Feature Generation Configuration, ce module dérive des fonctionnalités supplémentaires à partir de toutes les fonctionnalités de la table d'échantillon. La configuration personnalisée n'est actuellement pas prise en charge. Cliquez sur Add, choisissez Feature Generation comme type de module, choisissez Ranking comme type de génération de fonctionnalités et sélectionnez le module de fonctionnalité de modèle de l'étape de configuration d'échantillon précédente. Attendez que l'état passe à Published avant de passer à l'étape suivante.
Sous Configure Sorting Method, cliquez sur Add dans la section de classement fin. Pour la sortie du module de fonctionnalité, sélectionnez le module de génération de fonctionnalités de l'étape précédente. Laissez les autres options avec leurs valeurs par défaut et cliquez sur Determine. Ensuite, publiez le module. Une fois que l'état passe à Published, le service de modèle est déployé sur PAI-EAS.
Sous Retrieval Configuration, cliquez sur Add à côté de la catégorie cible, configurez les paramètres, cliquez sur Confirm, puis Publish la configuration. Ce document inclut plusieurs méthodes de configuration de rappel. Pour terminer le déploiement rapidement, il vous suffit de configurer Global Hot Recall et etrec u2i Recall. Les autres méthodes, telles que le rappel vectoriel et le rappel métrique collaboratif, sont fournies à titre indicatif uniquement.