Cette rubrique explique comment utiliser le kit de développement logiciel (SDK) FeatureStore pour gérer les features dans un système de recommandation, sans recourir à d'autres produits Alibaba Cloud.
Contexte
Un système de recommandation propose du contenu ou des produits personnalisés aux utilisateurs en fonction de leurs intérêts et préférences. Une étape cruciale dans la mise en place d'un tel système consiste à extraire et configurer les features pour les utilisateurs et les éléments. Ce document montre comment construire un système de recommandation à l'aide de FeatureStore et gérer les données de feature avec différentes versions du SDK FeatureStore.
Pour plus d'informations sur FeatureStore, consultez la rubrique Présentation de FeatureStore.
Si vous avez des questions lors de la configuration ou de l'utilisation, rejoignez notre groupe DingTalk (ID : 34415007523) pour obtenir une assistance technique.
Prérequis
Avant de commencer, effectuez les préparations suivantes.
|
Produit dépendant |
Opération spécifique |
|
Platform for AI (PAI) |
|
|
MaxCompute |
|
|
FeatureDB |
|
|
DataWorks |
|
1. Préparer les données
Synchroniser les tables de données
Dans un scénario de recommandation classique, vous devez préparer trois tables de données : une table de features utilisateur, une table de features d'élément et une table de labels.
À des fins de pratique, nous avons préparé des exemples de tables utilisateur, élément et label dans le projet MaxCompute pai_online_project. Les tables utilisateur et élément contiennent chacune environ 100 000 entrées de données par partition et occupent environ 70 Mo de stockage dans MaxCompute. La table de labels contient environ 450 000 entrées de données par partition et occupe environ 5 Mo de stockage dans MaxCompute.
Exécutez des commandes SQL dans DataWorks pour synchroniser les tables utilisateur, élément et label du projet pai_online_project vers votre propre projet MaxCompute. Suivez ces étapes :
Connectez-vous à la console DataWorks.
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 Studio.
-
Placez le curseur sur Create et choisissez Create Node > MaxCompute > MaxCompute SQL. Dans la boîte de dialogue qui s'affiche, configurez les paramètres du nœud.
Paramètre
Valeur suggérée
Type
MaxCompute SQL
Path
Business Flow/Workflow/MaxCompute
Name
Saisissez un nom personnalisé.
Cliquez sur OK.
-
Dans la zone du nouveau nœud, exécutez les commandes SQL suivantes pour synchroniser les tables utilisateur, élément et label du projet pai_online_project vers votre propre projet MaxCompute. Pour Resource Group, sélectionnez le groupe de ressources exclusif que vous avez créé.
Synchroniser la table utilisateur : rec_sln_demo_user_table_preprocess_all_feature_v1 (Cliquez pour plus de détails)
Synchroniser la table d'éléments : rec_sln_demo_item_table_preprocess_all_feature_v1 (Cliquez pour plus de détails)
Synchroniser la table de labels : rec_sln_demo_label_table (Cliquez pour plus de détails)
Une fois ces étapes terminées, vous pouvez afficher la table utilisateur rec_sln_demo_user_table_preprocess_all_feature_v1, la table d'éléments rec_sln_demo_item_table_preprocess_all_feature_v1 et la table de labels rec_sln_demo_label_table dans votre espace de travail. Ces trois tables servent d'exemples pour les opérations suivantes.
Configurer les sources de données
FeatureStore nécessite généralement deux sources de données : un magasin hors ligne (MaxCompute) et un magasin en ligne (FeatureDB, Hologres ou TableStore). Cette rubrique utilise MaxCompute et FeatureDB comme exemples.
Connectez-vous à la console PAI. Dans le volet de navigation de gauche, cliquez sur Data Preparation > FeatureStore.
Sélectionnez un espace de travail et cliquez sur Enter FeatureStore.
-
Configurez la source de données MaxCompute.
-
Sous l'onglet Store, cliquez sur Create Store. Dans la boîte de dialogue qui s'affiche, configurez les paramètres de la source de données MaxCompute.
Paramètre
Valeur suggérée
Type
MaxCompute
Name
Saisissez un nom personnalisé.
MaxCompute Project Name
Sélectionnez le projet MaxCompute que vous avez créé.
-
Copiez l'instruction d'autorisation. Cliquez ensuite sur Accéder maintenant pour accéder à DataWorks. Exécutez l'instruction dans DataWorks pour accorder les autorisations requises.
RemarqueL'opération d'autorisation nécessite que votre compte dispose des autorisations d'administrateur. Pour plus d'informations, consultez les rubriques Gérer les autorisations utilisateur à l'aide de commandes ou Gérer les autorisations utilisateur dans la console.
Une fois la configuration terminée, cliquez sur Submit.
-
-
Configurez la source de données FeatureDB.
Si vous avez déjà créé une source de données FeatureDB, vous pouvez ignorer cette étape.
-
Sous l'onglet Store, cliquez sur Create Store. Dans la boîte de dialogue qui s'affiche, configurez les paramètres de la source de données FeatureDB.
Paramètre
Valeur suggérée
Type
FeatureDB (si c'est la première fois que vous l'utilisez, suivez les instructions à l'écran pour activer FeatureDB)
Name
Les noms personnalisés ne sont pas pris en charge. La valeur par défaut est feature_db.
Username
Définissez un nom d'utilisateur.
Password
Définissez un mot de passe.
High-speed VPC Connection (Optional)
Une fois la configuration réussie, vous pouvez utiliser le SDK FeatureStore dans un VPC pour accéder directement à FeatureDB via une connexion PrivateLink. Cela améliore les performances de lecture et d'écriture des données et réduit la latence d'accès.
VPC
Sélectionnez le VPC où se trouve votre service FeatureStore en ligne.
Zone and vSwitch
Sélectionnez une zone et un vSwitch. Assurez-vous de sélectionner le vSwitch dans la zone où se trouve votre machine de service en ligne. Nous vous recommandons de sélectionner des vSwitches dans au moins deux zones pour garantir la haute disponibilité et la stabilité de votre activité.
Une fois la configuration terminée, cliquez sur Submit.
2. Créer et enregistrer un projet FeatureStore
Vous pouvez créer et enregistrer un projet FeatureStore à l'aide de la console ou d'un SDK. Le SDK étant requis pour les opérations ultérieures, telles que l'exportation d'un ensemble d'entraînement et la synchronisation des données, vous devez installer le SDK Python FeatureStore même si vous utilisez la console pour la configuration initiale.
Méthode 1 : Utiliser la console
-
Créez un projet FeatureStore.
Connectez-vous à la console PAI. Dans le volet de navigation de gauche, cliquez sur Data Preparation > FeatureStore.
Sélectionnez un espace de travail et cliquez sur Enter FeatureStore.
-
Cliquez sur Create Project. Dans la boîte de dialogue qui s'affiche, configurez les paramètres du projet.
Parameter
Suggested value
Name
Saisissez un nom personnalisé. Cette rubrique utilise fs_demo à titre d'exemple.
Description
Saisissez une description personnalisée.
Offline Store
Sélectionnez la source de données MaxCompute que vous avez créée.
Online Store
Sélectionnez la source de données FeatureDB que vous avez créée.
Cliquez sur Submit pour créer le projet FeatureStore.
-
Créez une entité de fonctionnalité.
Sur la page Projects de FeatureStore, cliquez sur le nom du projet pour ouvrir la page des détails du projet.
-
Sous l'onglet Feature Entity, cliquez sur Create Feature Entity. Dans la boîte de dialogue qui s'affiche, configurez les paramètres de l'entité de fonctionnalité utilisateur.
Parameter
Suggested value
Feature Entity Name
Saisissez un nom personnalisé. Cette rubrique utilise user à titre d'exemple.
Join Id
user_id
Cliquez sur Submit.
-
Cliquez sur Create Feature Entity. Dans la boîte de dialogue qui s'affiche, configurez les paramètres de l'entité de fonctionnalité d'élément.
Parameter
Suggested value
Feature Entity Name
Saisissez un nom personnalisé. Cette rubrique utilise item à titre d'exemple.
Join Id
item_id
Cliquez sur Submit pour créer l'entité de fonctionnalité.
-
Créez une vue de fonctionnalité.
-
Sous l'onglet Feature View de la page des détails du projet, cliquez sur Create Feature View. Dans la boîte de dialogue qui s'affiche, configurez les paramètres de la vue de fonctionnalité utilisateur.
Parameter
Suggested value
View Name
Saisissez un nom personnalisé. Cette rubrique utilise user_table_preprocess_all_feature_v1 à titre d'exemple.
Type
Offline
Write Mode
Use Offline Table
Store
Sélectionnez la source de données MaxCompute que vous avez créée.
Feature Table
Sélectionnez la table utilisateur que vous avez préparée : rec_sln_demo_user_table_preprocess_all_feature_v1.
Feature Field
Sélectionnez la clé primaire user_id.
Synchronize Online Feature Table
Yes
Feature Entity
user
Feature Lifecycle
Conservez la valeur par défaut.
Cliquez sur Submit.
-
Cliquez sur Create Feature View. Dans la boîte de dialogue qui s'affiche, configurez la vue de fonctionnalité d'élément.
Parameter
Suggested value
View Name
Saisissez un nom personnalisé. Cette rubrique utilise item_table_preprocess_all_feature_v1 à titre d'exemple.
Type
Offline
Write Mode
Use Offline Table
Store
Sélectionnez la source de données MaxCompute que vous avez créée.
Feature Table
Sélectionnez la table d'éléments que vous avez préparée : rec_sln_demo_item_table_preprocess_all_feature_v1.
Feature Field
Sélectionnez la clé primaire item_id.
Synchronize Online Feature Table
Yes
Feature Entity
item
Feature Lifecycle
Conservez la valeur par défaut.
Une fois la configuration terminée, cliquez sur Submit pour créer la vue de fonctionnalité.
-
-
Créez une table d'étiquettes.
-
Sous l'onglet Label Table de la page des détails du projet, cliquez sur Create Label Table. Dans la boîte de dialogue qui s'affiche, configurez les informations de la table d'étiquettes.
Parameter
Suggested value
Store
Sélectionnez la source de données MaxCompute que vous avez créée.
Table Name
Sélectionnez la table d'étiquettes que vous avez préparée : rec_sln_demo_label_table.
Cliquez sur Submit.
-
-
Créez une fonctionnalité de modèle.
-
Sous l'onglet Model Features de la page des détails du projet, cliquez sur Create Model Feature. Dans la boîte de dialogue qui s'affiche, configurez les paramètres de la fonctionnalité de modèle.
Parameter
Suggested value
Model Feature Name
Saisissez un nom personnalisé. Cette rubrique utilise fs_rank_v1 à titre d'exemple.
Select Feature
Sélectionnez les vues de fonctionnalités utilisateur et d'élément que vous avez créées.
Label Table Name
Sélectionnez la table d'étiquettes que vous avez créée : rec_sln_demo_label_table.
Cliquez sur Submit pour créer la fonctionnalité de modèle.
Sur la page de liste des fonctionnalités de modèle, cliquez sur Details à droite de votre modèle.
Dans la boîte de dialogue Model Feature Details qui s'affiche, sous l'onglet Basic Information, vous pouvez consulter le champ Export Table Name, dont la valeur est fs_demo_fs_rank_v1_trainning_set. Cette table est utilisée pour la production ultérieure de fonctionnalités et l'entraînement du modèle.
-
Installez le SDK Python FeatureStore. Pour plus d'informations, consultez Utiliser FeatureStore pour gérer les fonctionnalités dans un système de recommandation.
Méthode 2 : Utiliser le SDK Python FeatureStore
Connectez-vous à la console DataWorks.
Dans le volet de navigation de gauche, cliquez sur Resource Groups.
Sous l'onglet Exclusive Resource Groups, repérez le groupe de ressources dont l'Purpose est Data Scheduling. Cliquez sur l'icône
située à côté de sa ressource de planification et sélectionnez O&M Assistant.-
Cliquez sur Create Command. Dans la boîte de dialogue qui s'affiche, configurez les paramètres de la commande.
Parameter
Suggested value
Command Name
Saisissez un nom personnalisé. Cette rubrique utilise install à titre d'exemple.
Command Type
Manual Input (pip Command Cannot Be Used To Install Third-party Packages)
Command Content
/home/tops/bin/pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple https://feature-store-py.oss-cn-beijing.aliyuncs.com/package/feature_store_py-2.0.2-py3-none-any.whlTimeout
Définissez une durée personnalisée.
Cliquez sur Create pour créer la commande.
Cliquez sur Run Command. Dans la boîte de dialogue qui s'affiche, cliquez sur Run.
Vous pouvez cliquer sur Refresh pour afficher le dernier état d'exécution. Lorsque l'état passe à Success, l'installation est terminée.
Pour connaître les étapes détaillées d'utilisation du SDK, consultez la galerie DSW.
3. Exécuter le nœud de synchronisation des données
Avant de publier votre service, vous devez exécuter régulièrement le nœud de synchronisation des données afin de synchroniser les données du magasin hors ligne vers le magasin en ligne. Le service en ligne lit ensuite les données du magasin en ligne en temps réel. Cet exemple montre comment configurer une tâche de synchronisation récurrente pour les tables de caractéristiques utilisateur et article.
Connectez-vous à la console DataWorks.
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.
-
Configurez la synchronisation récurrente pour la table utilisateur.
Placez le curseur sur Create, puis choisissez New Node > MaxCompute > PyODPS 3.
-
Copiez le contenu suivant dans le script pour finaliser la synchronisation récurrente de user_table_preprocess_all_feature_v1.
from feature_store_py.fs_client import FeatureStoreClient import datetime from feature_store_py.fs_datasource import MaxComputeDataSource import sys from odps.accounts import StsAccount cur_day = args['dt'] print('cur_day = ', cur_day) access_key_id = o.account.access_id access_key_secret = o.account.secret_access_key sts_token = None endpoint = 'paifeaturestore-vpc.cn-beijing.aliyuncs.com' if isinstance(o.account, StsAccount): sts_token = o.account.sts_token fs = FeatureStoreClient(access_key_id=access_key_id, access_key_secret=access_key_secret, security_token=sts_token, endpoint=endpoint) cur_project_name = 'fs_demo' project = fs.get_project(cur_project_name) feature_view_name = 'user_table_preprocess_all_feature_v1' batch_feature_view = project.get_feature_view(feature_view_name) task = batch_feature_view.publish_table(partitions={'ds':cur_day}, mode='Overwrite', offline_to_online=True) task.wait() task.print_summary() -
Dans le volet de navigation de droite, cliquez sur Scheduling Configuration. Dans la boîte de dialogue qui s'affiche, configurez les paramètres de planification.
Parameter
Suggested value
Scheduling Parameters
Parameter Name
dt
Parameter Value
$[yyyymmdd-1]
Resource Properties
Scheduling Resource Group
Select the exclusive resource group you created.
Scheduling Dependencies
Select the user table you created.
Une fois le nœud configuré et testé, enregistrez et soumettez la configuration du nœud.
Effectuez une opération de remplissage des données. Pour plus d'informations, consultez Synchroniser les tables de données.
-
Configurez la synchronisation récurrente pour la table article.
Placez le curseur sur Create, puis choisissez New Node > MaxCompute > PyODPS 3. Dans la boîte de dialogue qui s'affiche, configurez les paramètres du nœud.
Cliquez sur Confirm.
-
Copiez le contenu suivant dans le script.
Synchronisation routine pour item_table_preprocess_all_feature_v1 (Cliquez pour afficher les détails)
-
Dans le volet de navigation de droite, cliquez sur Scheduling Configuration. Dans la boîte de dialogue qui s'affiche, configurez les paramètres de planification.
Parameter
Suggested value
Scheduling Parameters
Parameter Name
dt
Parameter Value
$[yyyymmdd-1]
Resource Properties
Scheduling Resource Group
Select the exclusive resource group you created.
Scheduling Dependencies
Select the item table you created.
Une fois le nœud configuré et testé, enregistrez et soumettez la configuration du nœud.
Effectuez une opération de remplissage des données. Pour plus d'informations, consultez Synchroniser les tables de données.
Une fois la synchronisation terminée, vous pouvez consulter les dernières données de caractéristiques synchronisées dans Hologres.
4. Exporter le script de jeu d'entraînement
Connectez-vous à la console DataWorks.
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 > PyODPS 3. Dans la boîte de dialogue qui s'affiche, configurez les paramètres du nœud.
Parameter
Suggested value
Engine Instance
Sélectionnez le moteur MaxCompute que vous avez créé.
Node Type
PyODPS 3
Path
Business Flow/Workflow/MaxCompute
Name
Saisissez un nom personnalisé.
Cliquez sur Confirm.
-
Copiez le contenu suivant dans le script.
from feature_store_py.fs_client import FeatureStoreClient from feature_store_py.fs_project import FeatureStoreProject from feature_store_py.fs_datasource import LabelInput, MaxComputeDataSource, TrainingSetOutput from feature_store_py.fs_features import FeatureSelector from feature_store_py.fs_config import LabelInputConfig, PartitionConfig, FeatureViewConfig from feature_store_py.fs_config import TrainSetOutputConfig, EASDeployConfig import datetime import sys from odps.accounts import StsAccount cur_day = args['dt'] print('cur_day = ', cur_day) offset = datetime.timedelta(days=-1) pre_day = (datetime.datetime.strptime(cur_day, "%Y%m%d") + offset).strftime('%Y%m%d') print('pre_day = ', pre_day) access_key_id = o.account.access_id access_key_secret = o.account.secret_access_key sts_token = None endpoint = 'paifeaturestore-vpc.cn-beijing.aliyuncs.com' if isinstance(o.account, StsAccount): sts_token = o.account.sts_token fs = FeatureStoreClient(access_key_id=access_key_id, access_key_secret=access_key_secret, security_token=sts_token, endpoint=endpoint) cur_project_name = 'fs_demo' project = fs.get_project(cur_project_name) label_partitions = PartitionConfig(name = 'ds', value = cur_day) label_input_config = LabelInputConfig(partition_config=label_partitions) user_partitions = PartitionConfig(name = 'ds', value = pre_day) feature_view_user_config = FeatureViewConfig(name = 'user_table_preprocess_all_feature_v1', partition_config=user_partitions) item_partitions = PartitionConfig(name = 'ds', value = pre_day) feature_view_item_config = FeatureViewConfig(name = 'item_table_preprocess_all_feature_v1', partition_config=item_partitions) feature_view_config_list = [feature_view_user_config, feature_view_item_config] train_set_partitions = PartitionConfig(name = 'ds', value = cur_day) train_set_output_config = TrainSetOutputConfig(partition_config=train_set_partitions) model_name = 'fs_rank_v1' cur_model = project.get_model(model_name) task = cur_model.export_train_set(label_input_config, feature_view_config_list, train_set_output_config) task.wait() print("task_summary = ", task.task_summary) -
Dans le volet de navigation de droite, cliquez sur Scheduling Configuration. Dans la boîte de dialogue qui s'affiche, configurez les paramètres de planification.
Parameter
Suggested value
Scheduling Parameters
Parameter Name
dt
Parameter Value
$[yyyymmdd-1]
Resource Properties
Scheduling Resource Group
Select the exclusive resource group you created.
Scheduling Dependencies
Select the user and item tables you created.
Une fois le nœud configuré et testé, enregistrez et soumettez la configuration du nœud.
Effectuez une opération de remplissage des données. Pour plus d'informations, consultez Synchroniser les tables de données.
5. Installation et utilisation du SDK
Python SDK
Pour plus d'informations, consultez la rubrique Utilisation du SDK FeatureStore Python pour construire un système de recommandation.
Go SDK
Le SDK FeatureStore Go est open source. Pour plus d'informations, reportez-vous au dépôt aliyun-pai-featurestore-go-sdk.
-
Installation
Exécutez la commande suivante pour installer le SDK FeatureStore Go.
go get github.com/aliyun/aliyun-pai-featurestore-go-sdk/v2 -
Utilisation
-
Exécutez la commande suivante pour initialiser le client.
accessId := os.Getenv("AccessId") accessKey := os.Getenv("AccessKey") regionId := "cn-hangzhou" projectName := "fs_test_ots" client, err := NewFeatureStoreClient(regionId, accessId, accessKey, projectName)RemarqueLe SDK se connecte directement à la source de données en ligne. Par conséquent, le client doit s'exécuter dans un environnement VPC. Par exemple, Hologres exige que les connexions proviennent d'un VPC spécifique.
-
Récupérez les données de fonctionnalités depuis une vue de fonctionnalités (feature view).
// get project by name project, err := client.GetProject("fs_test_ots") if err != nil { // t.Fatal(err) } // get featureview by name user_feature_view := project.GetFeatureView("user_fea") if user_feature_view == nil { // t.Fatal("feature view not exist") } // get online features features, err := user_feature_view.GetOnlineFeatures([]interface{}{"100043186", "100060369"}, []string{"*"}, nil)Ici,
[]string{"*"}signifie que toutes les fonctionnalités de la vue sont récupérées. Vous pouvez également spécifier les noms des fonctionnalités que vous souhaitez obtenir.Voici un exemple des données renvoyées :
[ { "city":"Hefei", "follow_cnt":1, "gender":"male", "user_id":"100043186" }, { "city":"", "follow_cnt":5, "gender":"male", "user_id":"100060369" } ] -
Récupérez les données de fonctionnalités à partir d'une fonctionnalité de modèle (model feature).
Une fonctionnalité de modèle peut être associée à plusieurs entités de fonctionnalités. Vous pouvez fournir plusieurs ID de jointure pour récupérer les fonctionnalités correspondantes simultanément.
Cet exemple utilise trois ID de jointure :
join_id,user_idetitem_id. Lors de l'extraction des fonctionnalités, vous devez fournir une valeur pour chaque ID de jointure.// get project by name project, err := client.GetProject("fs_test_ots") if err != nil { // t.Fatal(err) } // get ModelFeature by name model_feature := project.GetModelFeature("rank") if model_feature == nil { // t.Fatal("model feature not exist") } // get online features features, err := model_feature.GetOnlineFeatures(map[string][]interface{}{"user_id": {"100000676", "100004208"}, "item_id":{"238038872", "264025480"}} )Voici un exemple des données renvoyées :
[ { "age":26, "author":100015828, "category":"14", "city":"Shenyang", "duration":63, "gender":"male", "item_id":"238038872", "user_id":"100000676" }, { "age":23, "author":100015828, "category":"15", "city":"Xi'an", "duration":22, "gender":"male", "item_id":"264025480", "user_id":"100004208" } ]Vous pouvez également spécifier une entité de fonctionnalité afin de récupérer l'ensemble de ses caractéristiques associées.
Voici un exemple des données renvoyées :
[ { "age":26, "city":"Shenyang", "gender":"male", "user_id":"100000676" }, { "age":23, "city":"Xi'an", "gender":"male", "user_id":"100004208" } ]
-
Java SDK
Le SDK FeatureStore Java est open source. Pour plus d'informations, reportez-vous au dépôt aliyun-pai-featurestore-java-sdk.
Cette section prend pour exemple une source de données Hologres.
-
Exécutez le code suivant pour charger les variables d'environnement et initialiser le service.
public static String accessId = ""; public static String accessKey = ""; // Configure the host based on the region public static String host = ""; // Get the accessId and accessKey from the configured local environment variables static { accessId = System.getenv("ACCESS_KEY_ID"); accessKey = System.getenv("ACCESS_KEY_SECRET"); } -
Créez une classe de configuration qui définit les paramètres
regionId,accessId,accessKeyainsi que le nom du projet.Configuration cf = new Configuration("cn-hangzhou",Constants.accessId,Constants.accessKey,"ele28"); cf.setDomain(Constants.host);// Note: The default environment is a VPC environment -
Initialisez le client.
ApiClient apiClient = new ApiClient(cf); // FS client FeatureStoreClient featureStoreClient = new FeatureStoreClient(apiClient); -
Récupérez le projet. Cet exemple utilise un projet nommé ele28.
Project project=featureStoreClient.getProject("ele28"); if(project==null){ throw new RuntimeException("Project not found"); } -
Récupérez la vue de fonctionnalités du projet. Cet exemple utilise une vue de fonctionnalités nommée mc_test.
FeatureView featureView=project.getFeatureView("mc_test"); if (featureView == null) { throw new RuntimeException("FeatureView not found"); } -
Récupérez les données de fonctionnalités en ligne basées sur la vue de fonctionnalités.
Map<String,String> m1=new HashMap<>(); m1.put("gender","gender1"); // Create an alias user_id='100027781'(FS_INT64) age='28'(FS_INT64) city='null'(FS_STRING) item_cnt='0'(FS_INT64) follow_cnt='0'(FS_INT64) follower_cnt='2'(FS_INT64) register_time='1697641608'(FS_INT64) tags='0'(FS_STRING) gender1='female'(FS_STRING) ---------------Pour récupérer les fonctionnalités en ligne, l'utilisation de
String[]{"*"}permet d'obtenir toutes les propriétés. Vous avez également la possibilité de spécifier certaines propriétés afin de ne récupérer qu'un sous-ensemble des informations.FeatureResult featureResult1=featureView.getOnlineFeatures(new String[]{"100017768","100027781","100072534"},new String[]{"*"},m1);Affichez les informations relatives aux fonctionnalités.
while(featureResult1.next()){ System.out.println("---------------"); // Feature name for(String m:featureResult1.getFeatureFields()){ System.out.print(String.format("%s=%s(%s) ",m,featureResult1.getObject(m),featureResult1.getType(m))); } System.out.println("---------------"); }Les données suivantes sont renvoyées.
--------------- user_id='100017768'(FS_INT64) age='28'(FS_INT64) city='Dongguan'(FS_STRING) item_cnt='1'(FS_INT64) follow_cnt='1'(FS_INT64) follower_cnt='0'(FS_INT64) register_time='1697202320'(FS_INT64) tags='1,2'(FS_STRING) gender1='female'(FS_STRING) --------------- -
Récupérez le modèle.
Model model=project.getModelFeature("model_t1"); if(model==null){ throw new RuntimeException("Model not found"); }-
Récupérez les données depuis la fonctionnalité de modèle.
Cette fonctionnalité de modèle utilise deux ID de jointure : user_id et item_id. Le nombre de valeurs fournies doit correspondre au nombre d'ID de jointure. Cet exemple fournit une valeur pour chaque ID de jointure.
Map<String, List<String>> m2=new HashMap<>(); m2.put("user_id",Arrays.asList("101683057")); m2.put("item_id",Arrays.asList("203665415")); -
Récupérez toutes les données de fonctionnalités liées à l'entité de fonctionnalité utilisateur depuis la fonctionnalité de modèle.
FeatureResult featureResult2 = model.getOnlineFeaturesWithEntity(m2,"user");Les données suivantes sont renvoyées.
--------------- user_id='101683057' age='28' city='Shenzhen' follower_cnt='234' follow_cnt='0' gender='male' item_cnt='0' register_time='1696407642' tags='2' item_id='203665415' author='132920407' category='14' click_count='0' duration='18.0' praise_count='10' pub_time='1698218997' title='#Idiom Story' ---------------
-
Cpp SDK
Le SDK FeatureStore C++ est actuellement intégré au processeur EasyRec. Il est spécifiquement optimisé pour l'extraction de fonctionnalités, la gestion du cache et les opérations de lecture, offrant ainsi une solution haute performance et à faible latence adaptée aux scénarios de recommandation à grande échelle.
Utilisation de la mémoire : lors du traitement de données de fonctionnalités complexes et volumineuses, la consommation de mémoire est considérablement réduite. Les économies de mémoire sont d'autant plus significatives que la charge de fonctionnalités est élevée.
Temps d'extraction des fonctionnalités : au lieu de tirer les fonctionnalités depuis des magasins en ligne (tels que FeatureDB et Hologres), le SDK les extrait directement depuis MaxCompute vers le cache du Elastic Algorithm Service (EAS). Cela réduit considérablement le temps de chargement des fonctionnalités. De plus, MaxCompute offre une meilleure stabilité et extensibilité, ce qui diminue la charge imposée aux magasins en ligne lors des opérations de mise à l'échelle.
Temps de scoring du modèle : l'utilisation de ce SDK améliore la métrique de performance TP100 pour le scoring des modèles, stabilise les temps de réponse et réduit significativement le nombre de requêtes expirées. Ces améliorations renforcent la fiabilité globale et l'expérience utilisateur du service de recommandation.
Références
FeatureStore peut également être utilisé conjointement avec d'autres produits cloud pour construire un système de recommandation. Pour plus d'informations, consultez la rubrique Utilisation de FeatureStore pour gérer les fonctionnalités dans un système de recommandation.