この Topic では、他の Alibaba Cloud プロダクトを使用せずに、FeatureStore の SDK (ソフトウェア開発キット) を使用して推薦システムの特徴を管理する方法について説明します。
背景情報
推薦システムは、ユーザーの興味やプリファレンスに基づいて、パーソナライズされたコンテンツやプロダクトを提案します。推薦システムの重要なステップは、ユーザーとアイテムの特徴を抽出し、構成することです。このドキュメントでは、FeatureStore を使用して推薦システムを構築し、FeatureStore SDK のさまざまなバージョンで特徴データを管理する方法を説明します。
FeatureStore の詳細については、「FeatureStore の概要」をご参照ください。
構成や使用中にご不明な点がある場合は、DingTalk グループ (ID: 34415007523) にご参加いただくことで、技術サポートをご利用いただけます。
前提条件
開始する前に、以下の準備を完了してください。
依存プロダクト | 具体的な操作 |
Platform for AI (PAI) |
|
MaxCompute |
|
FeatureDB |
|
DataWorks |
|
1. データの準備
データテーブルの同期
一般的な推薦シナリオでは、ユーザー特徴テーブル、アイテム特徴テーブル、ラベルテーブルの 3 つのデータテーブルを準備する必要があります。
練習のため、pai_online_project MaxCompute プロジェクトにサンプルとしてユーザー、アイテム、ラベルのテーブルを用意しました。ユーザーテーブルとアイテムテーブルは、それぞれパーティションあたり約 100,000 件のデータエントリを含み、MaxCompute で約 70 MB のストレージを占有します。ラベルテーブルは、パーティションあたり約 450,000 件のデータエントリを含み、MaxCompute で約 5 MB のストレージを占有します。
DataWorks で SQL コマンドを実行して、pai_online_project プロジェクトからご自身の MaxCompute プロジェクトにユーザー、アイテム、ラベルのテーブルを同期します。以下の手順に従ってください:
DataWorks コンソールにログインします。
左側のナビゲーションウィンドウで、[データ開発・運用保守] > [データ開発] の順にクリックします。
作成した DataWorks ワークスペースを選択し、[データスタジオへ移動] をクリックします。
[作成] にカーソルを合わせ、[ノードの作成] > [MaxCompute] > [MaxCompute SQL] を選択します。表示されるダイアログボックスで、ノードパラメーターを設定します。
パラメーター
推奨値
タイプ
MaxCompute SQL
パス
ビジネスフロー/ワークフロー/MaxCompute
[名前]
カスタム名を入力します。
[OK] をクリックします。
新しいノードエリアで、以下の SQL コマンドを実行して、pai_online_project プロジェクトからご自身の MaxCompute プロジェクトにユーザー、アイテム、ラベルのテーブルを同期します。[リソースグループ] で、作成した専用リソースグループを選択します。
ユーザーテーブルの同期:rec_sln_demo_user_table_preprocess_all_feature_v1(クリックして詳細を表示)
アイテムテーブルの同期:rec_sln_demo_item_table_preprocess_all_feature_v1(クリックして詳細を表示)
ラベルテーブルの同期:rec_sln_demo_label_table(クリックして詳細を表示)
これらの手順を完了すると、ワークスペースでユーザーテーブル rec_sln_demo_user_table_preprocess_all_feature_v1、アイテムテーブル rec_sln_demo_item_table_preprocess_all_feature_v1、およびラベルテーブル rec_sln_demo_label_table を表示できます。これら 3 つのテーブルは、以降の操作で例として使用されます。
データソースの設定
FeatureStore は通常、オフラインストア (MaxCompute) とオンラインストア (FeatureDB、Hologres、または TableStore) の 2 つのデータソースを必要とします。この Topic では、MaxCompute と FeatureDB を例として使用します。
PAI コンソールにログインします。左側のナビゲーションウィンドウで、Data Preparation > FeatureStore の順にクリックします。
ワークスペースを選択し、[FeatureStore に入る] をクリックします。
MaxCompute データソースを設定します。
Store タブで、Create Store をクリックします。表示されるダイアログボックスで、MaxCompute データソースのパラメーターを設定します。
パラメーター
推奨値
タイプ
MaxCompute
名前
カスタム名を入力します。
[MaxCompute プロジェクト名]
作成した MaxCompute プロジェクトを選択します。
権限付与文をコピーします。次に、[今すぐ移動] をクリックして DataWorks に移動します。DataWorks で文を実行して、必要な権限を付与します。
説明権限付与操作には、アカウントに管理者権限が必要です。詳細については、「コマンドを使用したユーザー権限の管理」または「コンソールでのユーザー権限の管理」をご参照ください。
設定が完了したら、[送信] をクリックします。
FeatureDB データソースを設定します。
すでに FeatureDB データソースを作成している場合は、このステップをスキップできます。
Store タブで、Create Store をクリックします。表示されるダイアログボックスで、FeatureDB データソースのパラメーターを設定します。
パラメーター
推奨値
[タイプ]
FeatureDB (初めて使用する場合は、画面の指示に従って FeatureDB を有効化してください)
名前
カスタム名はサポートされていません。デフォルト値は feature_db です。
ユーザー名
ユーザー名を設定します。
パスワード
パスワードを設定します。
高速 VPC 接続 (オプション)
設定が成功すると、VPC 内の FeatureStore SDK を使用して、PrivateLink 接続経由で FeatureDB に直接アクセスできます。これにより、データの読み書きパフォーマンスが向上し、アクセスレイテンシが短縮されます。
VPC
オンライン FeatureStore サービスが配置されている VPC を選択します。
ゾーンと vSwitch
ゾーンと vSwitch を選択します。オンラインサービスのマシンが配置されているゾーンの vSwitch を選択してください。ビジネスの高可用性と安定性を確保するために、少なくとも 2 つのゾーンで vSwitch を選択することを推奨します。
設定が完了したら、Submit をクリックします。
2. FeatureStore プロジェクトの作成と登録
FeatureStore プロジェクトは、コンソールまたは SDK を使用して作成および登録できます。トレーニングセットのエクスポートやデータの同期など、後続の操作には SDK が必要となるため、初期設定にコンソールを使用する場合でも、FeatureStore Python SDK をインストールする必要があります。
方法 1:コンソールの使用
FeatureStore プロジェクトを作成します。
PAI コンソールにログインします。左側のナビゲーションウィンドウで、Data Preparation > FeatureStore の順にクリックします。
ワークスペースを選択し、[FeatureStore に入る] をクリックします。
Create Project をクリックします。表示されるダイアログボックスで、プロジェクトのパラメーターを設定します。
パラメーター
推奨値
Name
カスタム名を入力します。この Topic では、fs_demo を例として使用します。
Description
カスタムの説明を入力します。
Offline Store
作成した MaxCompute データソースを選択します。
Online Store
作成した FeatureDB データソースを選択します。
[送信] をクリックして FeatureStore プロジェクトを作成します。
特徴エンティティを作成します。
FeatureStore の Projects ページで、プロジェクト名をクリックしてプロジェクト詳細ページを開きます。
Feature Entity タブで、Create Feature Entity をクリックします。表示されるダイアログボックスで、ユーザー特徴エンティティのパラメーターを設定します。
パラメーター
推奨値
Feature Entity Name
カスタム名を入力します。この Topic では、user を例として使用します。
参加 ID
user_id
Submit をクリックします。
Create Feature Entity をクリックします。表示されるダイアログボックスで、アイテム特徴エンティティのパラメーターを設定します。
パラメーター
推奨値
Feature Entity Name
カスタム名を入力します。この Topic では、item を例として使用します。
結合 ID
item_id
[送信] をクリックして特徴エンティティを作成します。
特徴ビューを作成します。
プロジェクト詳細ページの Feature View タブで、Create Feature View をクリックします。表示されるダイアログボックスで、ユーザー特徴ビューのパラメーターを設定します。
パラメーター
推奨値
View Name
カスタム名を入力します。この Topic では、user_table_preprocess_all_feature_v1 を例として使用します。
Type
Offline
Write Mode
Use Offline Table
Store
作成した MaxCompute データソースを選択します。
Feature Table
準備したユーザーテーブルを選択します:rec_sln_demo_user_table_preprocess_all_feature_v1。
Feature Field
user_id プライマリキーを選択します。
Synchronize Online Feature Table
Yes
Feature Entity
user
Feature Lifecycle
デフォルト値を保持します。
Submit をクリックします。
Create Feature View をクリックします。表示されるダイアログボックスで、アイテム特徴ビューを設定します。
パラメーター
推奨値
View Name
カスタム名を入力します。この Topic では、item_table_preprocess_all_feature_v1 を例として使用します。
Type
Offline
Write Mode
Use Offline Table
Store
作成した MaxCompute データソースを選択します。
Feature Table
準備したアイテムテーブルを選択します:rec_sln_demo_item_table_preprocess_all_feature_v1。
Feature Field
item_id プライマリキーを選択します。
Synchronize Online Feature Table
Yes
Feature Entity
item
Feature Lifecycle
デフォルト値を保持します。
設定が完了したら、Submit をクリックして特徴ビューを作成します。
ラベルテーブルを作成します。
プロジェクト詳細ページの [ラベルテーブル] タブで、Create Label Table をクリックします。表示されるダイアログボックスで、ラベルテーブル情報を設定します。
パラメーター
推奨値
Store
作成した MaxCompute データソースを選択します。
Table Name
準備したラベルテーブルを選択します:rec_sln_demo_label_table。
Submit をクリックします。
モデル特徴を作成します。
プロジェクト詳細ページの Model Features タブで、Create Model Feature をクリックします。表示されるダイアログボックスで、モデル特徴のパラメーターを設定します。
パラメーター
推奨値
Model Feature Name
カスタム名を入力します。この Topic では、fs_rank_v1 を例として使用します。
Select Feature
作成したユーザーおよびアイテムの特徴ビューを選択します。
Label Table Name
作成したラベルテーブルを選択します:rec_sln_demo_label_table。
Submit をクリックしてモデル特徴を作成します。
モデル特徴リストページで、モデルの右側にある Details をクリックします。
表示される Model Feature Details ダイアログボックスの Basic Information タブで、Export Table Name を表示できます。これは fs_demo_fs_rank_v1_trainning_set です。このテーブルは、後続の特徴生成およびモデルトレーニングに使用されます。
FeatureStore Python SDK をインストールします。詳細については、「FeatureStore を使用して推薦システムの特徴を管理する」をご参照ください。
方法 2:FeatureStore Python SDK の使用
DataWorks コンソールにログインします。
左側のナビゲーションウィンドウで、[リソースグループ] をクリックします。
[専用リソースグループ] タブで、[目的] が [データスケジューリング] のリソースグループを見つけます。そのスケジューリングリソースの横にある
アイコンをクリックし、[運用保守アシスタント] を選択します。[コマンドの作成] をクリックします。表示されるダイアログボックスで、コマンドのパラメーターを設定します。
パラメーター
推奨値
コマンド名
カスタム名を入力します。この Topic では、install を例として使用します。
コマンドタイプ
[手動入力 (pip コマンドを使用してサードパーティパッケージをインストールすることはできません)]
コマンド内容
/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.whlタイムアウト
カスタム時間を設定します。
[作成] をクリックしてコマンドを作成します。
[コマンドの実行] をクリックします。表示されるダイアログボックスで、[実行] をクリックします。
[更新] をクリックして最新の実行ステータスを表示できます。ステータスが [成功] に変わると、インストールは完了です。
SDK の使用に関する詳細な手順については、「DSW ギャラリー」をご参照ください。
3. データ同期ノードの実行
サービスを公開する前に、定期的にデータ同期ノードを実行して、オフラインストアからオンラインストアにデータを同期する必要があります。オンラインサービスは、リアルタイムでオンラインストアからデータを読み取ります。この例では、ユーザーおよびアイテムの特徴テーブルの定期的な同期タスクを設定する方法を説明します。
DataWorks コンソールにログインします。
左側のナビゲーションウィンドウで、[データ開発・運用保守] > [データ開発] の順にクリックします。
作成した DataWorks ワークスペースを選択し、[データ開発に入る] をクリックします。
ユーザーテーブルの定期的な同期を設定します。
[作成] にカーソルを合わせ、[新規ノード] > [MaxCompute] > [PyODPS 3] を選択します。
以下の内容をスクリプトにコピーして、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()右側のナビゲーションウィンドウで、[スケジューリング設定] をクリックします。表示されるダイアログボックスで、スケジューリングパラメーターを設定します。
パラメーター
推奨値
[スケジューリングパラメーター]
[パラメーター名]
dt
[パラメーター値]
$[yyyymmdd-1]
[リソースプロパティ]
[スケジューリングリソースグループ]
作成した専用リソースグループを選択します。
[スケジューリングの依存関係]
作成したユーザーテーブルを選択します。
ノードを設定してテストした後、ノード設定を保存して送信します。
データバックフィル操作を実行します。詳細については、「データテーブルの同期」をご参照ください。
アイテムテーブルの定期的な同期を設定します。
[作成] にカーソルを合わせ、[新規ノード] > [MaxCompute] > [PyODPS 3] を選択します。表示されるダイアログボックスで、ノードパラメーターを設定します。
[確認] をクリックします。
以下の内容をスクリプトにコピーします。
item_table_preprocess_all_feature_v1 の定期的な同期(クリックして詳細を表示)
右側のナビゲーションウィンドウで、[スケジューリング設定] をクリックします。表示されるダイアログボックスで、スケジューリングパラメーターを設定します。
パラメータ
推奨値
スケジューリングパラメータ
パラメータ名
dt
パラメータ値
$[yyyymmdd-1]
リソースプロパティ
スケジューリングリソースグループ
作成した専用リソースグループを選択します。
スケジューリング依存関係
作成したアイテムテーブルを選択します。
ノードを設定してテストした後、ノード設定を保存して送信します。
データバックフィル操作を実行します。詳細については、「データテーブルの同期」をご参照ください。
同期が完了したら、Hologres で最新の同期済み特徴データを表示できます。
4. トレーニングセットスクリプトのエクスポート
DataWorks コンソールにログインします。
左側のナビゲーションウィンドウで、[データ開発・運用保守] > [データ開発] の順にクリックします。
作成した DataWorks ワークスペースを選択し、[データ開発に入る] をクリックします。
[作成] にカーソルを合わせ、[新規ノード] > [MaxCompute] > [PyODPS 3] を選択します。表示されるダイアログボックスで、ノードパラメーターを設定します。
パラメーター
推奨値
エンジンインスタンス
作成した MaxCompute エンジンを選択します。
ノードタイプ
PyODPS 3
パス
ビジネスフロー/ワークフロー/MaxCompute
名前
カスタム名を入力します。
[確認] をクリックします。
以下の内容をスクリプトにコピーします。
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)右側のナビゲーションウィンドウで、[スケジューリング設定] をクリックします。表示されるダイアログボックスで、スケジューリングパラメーターを設定します。
パラメーター
推奨値
スケジューリングパラメーター
パラメーター名
dt
パラメーター値
$[yyyymmdd-1]
リソースプロパティ
[スケジューリングリソースグループ]
作成した専用リソースグループを選択します。
スケジューリング依存関係
作成したユーザーおよびアイテムテーブルを選択します。
ノードを設定してテストした後、ノード設定を保存して送信します。
データバックフィル操作を実行します。詳細については、「データテーブルの同期」をご参照ください。
5. SDK のインストールと使用
Python SDK
詳細については、「FeatureStore Python SDK を使用して推薦システムを構築する」をご参照ください。
Go SDK
FeatureStore Go SDK はオープンソースです。詳細については、「aliyun-pai-featurestore-go-sdk」をご参照ください。
インストール
次のコマンドを実行して、FeatureStore Go SDK をインストールします。
go get github.com/aliyun/aliyun-pai-featurestore-go-sdk/v2使用方法
次のコマンドを実行して、クライアントを初期化します。
accessId := os.Getenv("AccessId") accessKey := os.Getenv("AccessKey") regionId := "cn-hangzhou" projectName := "fs_test_ots" client, err := NewFeatureStoreClient(regionId, accessId, accessKey, projectName)説明SDK はオンラインデータソースに直接接続します。そのため、クライアントは VPC 環境で実行する必要があります。たとえば、Hologres は指定された VPC からの接続を要求します。
特徴ビューから特徴データを取得します。
// 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)ここで、
[]string{"*"}は、特徴ビュー内のすべての特徴を取得することを意味します。取得したい特徴の名前を指定することもできます。返されるデータのサンプルは次のとおりです:
[ { "city":"Hefei", "follow_cnt":1, "gender":"male", "user_id":"100043186" }, { "city":"", "follow_cnt":5, "gender":"male", "user_id":"100060369" } ]モデル特徴から特徴データを取得します。
モデル特徴は複数の特徴エンティティに関連付けることができます。複数の結合 ID を提供して、対応する特徴をまとめて取得できます。
この例では、
join_id、user_id、item_idの 3 つの結合 ID を使用します。特徴をフェッチする際には、各結合 ID に値を指定する必要があります。// 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"}} )返されるデータのサンプルは次のとおりです:
[ { "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" } ]特徴エンティティを指定して、その対応するすべての特徴を取得することもできます。
返されるデータのサンプルは次のとおりです:
[ { "age":26, "city":"Shenyang", "gender":"male", "user_id":"100000676" }, { "age":23, "city":"Xi'an", "gender":"male", "user_id":"100004208" } ]
Java SDK
FeatureStore Java SDK はオープンソースです。詳細については、「aliyun-pai-featurestore-java-sdk」をご参照ください。
このセクションでは、Hologres データソースを例として使用します。
次のコードを実行して、環境変数をロードし、サービスを初期化します。
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"); }regionId、accessId、accessKey、およびプロジェクト名を設定する構成クラスを作成します。Configuration cf = new Configuration("cn-hangzhou",Constants.accessId,Constants.accessKey,"ele28"); cf.setDomain(Constants.host);// Note: The default environment is a VPC environmentクライアントを初期化します。
ApiClient apiClient = new ApiClient(cf); // FS client FeatureStoreClient featureStoreClient = new FeatureStoreClient(apiClient);プロジェクトを取得します。この例では、ele28 という名前のプロジェクトを使用します。
Project project=featureStoreClient.getProject("ele28"); if(project==null){ throw new RuntimeException("Project not found"); }プロジェクトの特徴ビューを取得します。この例では、mc_test という名前の特徴ビューを使用します。
FeatureView featureView=project.getFeatureView("mc_test"); if (featureView == null) { throw new RuntimeException("FeatureView not found"); }特徴ビューに基づいてオンライン特徴データを取得します。
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) ---------------オンライン特徴を取得するために、
String[]{"*"}はすべてのプロパティを取得します。特定のプロパティを指定して、情報の一部のみを取得することもできます。FeatureResult featureResult1=featureView.getOnlineFeatures(new String[]{"100017768","100027781","100072534"},new String[]{"*"},m1);特徴情報を出力します。
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("---------------"); }次のデータが返されます。
--------------- 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) ---------------モデルを取得します。
Model model=project.getModelFeature("model_t1"); if(model==null){ throw new RuntimeException("Model not found"); }モデル特徴からデータを取得します。
このモデル特徴は、user_id と item_id の 2 つの結合 ID を使用します。提供する値の数は、結合 ID の数と一致する必要があります。この例では、各結合 ID に 1 つの値を指定します。
Map<String, List<String>> m2=new HashMap<>(); m2.put("user_id",Arrays.asList("101683057")); m2.put("item_id",Arrays.asList("203665415"));モデル特徴から、ユーザー特徴エンティティに関連するすべての特徴データを取得します。
FeatureResult featureResult2 = model.getOnlineFeaturesWithEntity(m2,"user");次のデータが返されます。
--------------- 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
FeatureStore C++ SDK は現在、EasyRec Processor に統合されています。大規模な推薦シナリオ向けにパフォーマンス専有型で低レイテンシのソリューションを提供するため、特徴抽出、キャッシュ管理、および読み取り操作に特化して最適化されています。
メモリ使用量:複雑で大規模な特徴データを扱う際、メモリ消費が大幅に削減されます。特徴の負荷が高いほど、メモリの節約効果は大きくなります。
特徴プル時間:SDK は、オンラインストア (FeatureDB や Hologres など) から特徴をプルする代わりに、MaxCompute から直接 Elastic Algorithm Service (EAS) キャッシュにプルします。これにより、特徴の読み込み時間が大幅に短縮されます。さらに、MaxCompute はより優れた安定性と拡張性を提供し、スケールアウト操作中のオンラインストアへの負荷を軽減します。
モデルスコアリング時間:この SDK を使用すると、モデルスコアリングの TP100 パフォーマンスメトリックが向上し、応答時間が安定し、タイムアウトリクエストが大幅に削減されます。これらの改善により、推薦サービスの全体的な信頼性とユーザーエクスペリエンスが向上します。
関連ドキュメント
FeatureStore は、他のクラウドプロダクトと組み合わせて推薦システムを構築することもできます。詳細については、「FeatureStore を使用して推薦システムの特徴を管理する」をご参照ください。