このトピックでは、FeatureStore SDKを使用して、他のAlibaba Cloudサービスを使用せずにレコメンデーションシステムの機能を管理する方法について説明します。
背景情報
推薦システムは、ユーザの関心及び好みに基づいて、個人化されたコンテンツ又は製品をユーザに推薦できる。 ユーザまたはアイテムの特徴抽出および構成は、推奨システムの性能に重要である。 このトピックでは、FeatureStoreを使用してレコメンデーションシステムを構築し、レコメンデーションシステムでさまざまなバージョンのFeatureStore SDKを使用してFeatureStoreが機能データを管理する方法を理解するためのソリューションを提供します。
FeatureStoreの詳細については、「概要」をご参照ください。
FeatureStoreの使用時にご質問がある場合は、DingTalkグループ (ID 34415007523) に参加してテクニカルサポートを行います。
前提条件
このトピックで説明する操作を実行する前に、次の表で説明する要件が満たされていることを確認してください。
サービス | 説明 |
Platform for AI (PAI) |
|
MaxCompute |
|
Hologres |
|
DataWorks |
|
1. データの準備
シミュレートされたテーブルからのデータの同期
ほとんどのレコメンデーションシナリオでは、user feature table、item feature table、label tableのテーブルを用意する必要があります。
この例では、MaxComputeプロジェクトpai_online_project内の、ユーザーテーブル、アイテムテーブル、およびラベルテーブルを含む3つのシミュレートされたテーブルが使用されます。 ユーザーテーブルとアイテムテーブルの各パーティションには、約100,000のデータレコードが含まれ、MaxComputeプロジェクトでは約70 MBのストレージ容量を占めます。 ラベルテーブルの各パーティションには、約450,000のデータレコードが含まれ、MaxComputeプロジェクトでは約5 MBのストレージ容量を占めます。
DataWorksでSQL文を実行して、ユーザーテーブル、アイテムテーブル、およびラベルテーブルのデータをpai_online_projectプロジェクトからMaxComputeプロジェクトに同期する必要があります。 シミュレートされたテーブルのデータを同期するには、次の手順を実行します。
DataWorks コンソールにログインします。
左側のナビゲーションウィンドウで、[データ開発とガバナンス] > [DataStudio] を選択します。
[DataStudio] ページで、作成したDataWorksワークスペースを選択し、[DataStudioに移動] をクリックします。
ポインタを [作成] に移動し、[ノードの作成] > [MaxCompute] > [ODPS SQL] を選択します。 [ノードの作成] ダイアログボックスで、次の表に示すノードパラメーターを設定します。
パラメーター
説明
エンジンインスタンス
作成したMaxCompute計算エンジンインスタンスを選択します。
ノードタイプ
[ノードタイプ] ドロップダウンリストから [ODPS SQL] を選択します。
パス
ビジネスフロー> ワークフロー> MaxComputeを選択します。
名前
カスタム名を指定します。
[確認]をクリックします。
作成したノードのタブで、次の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を表示できます。 これらのテーブルは、以降の操作で使用されます。
データストアの設定
ほとんどの場合、MaxComputeプロジェクトなどのオフラインデータストアと、FeatureStoreでHologresインスタンス、GraphComputeインスタンス、Tablestoreインスタンスなどのオンラインデータストアを設定する必要があります。 この例では、MaxComputeプロジェクトはオフラインデータストアとして設定され、Hologresインスタンスはオンラインデータストアとして設定されています。
PAI コンソールにログインします。 左側のナビゲーションウィンドウで、[データの準備] > [FeatureStore] を選択します。
FeatureStoreページで、ドロップダウンリストからワークスペースを選択し、[FeatureStoreの入力] をクリックします。
MaxComputeデータストアを設定します。
[ストア] タブで、[ストアの作成] をクリックします。 [ストアの作成] パネルで、MaxComputeデータストアの次の表に示すパラメーターを設定します。
パラメーター
説明
タイプ
[タイプ] ドロップダウンリストから [MaxCompute] を選択します。
名前
カスタム名を指定します。
MaxComputeプロジェクト名
作成したMaxComputeプロジェクトを選択します。
承認ステートメントをコピーし、[移動] をクリックしてデータをHologresインスタンスに同期します。 DataWorksでコピーされたステートメントを実行すると、HologresインスタンスはMaxComputeプロジェクトのデータを同期する権限が付与されます。
説明Hologresインスタンスに権限を付与するには、アカウントに管理者権限があることを確認します。 詳細については、「コマンドを使用したユーザー権限の管理」または「MaxComputeコンソールでのユーザー権限の管理」をご参照ください。
[送信] をクリックします。
Hologresデータストアを設定します。
[ストア] タブで、[ストアの作成] をクリックします。 ストアの作成パネルで、次の表に示すパラメーターをHologresデータストアに設定します。
パラメーター
説明
タイプ
タイプドロップダウンリストからHologresを選択します。
名前
カスタム名を指定します。
インスタンスID
作成したHologresインスタンスを選択します。
データベース名
Hologresインスタンスで作成したデータベースを選択します。
[送信] をクリックします。
Hologresインスタンスへのアクセス権限を付与します。 詳細については、「データソースの設定」をご参照ください。
2. プロジェクトを作成し、FeatureStoreでフィーチャテーブルを登録する
ビジネス要件に基づいて、PAIコンソールまたはFeatureStore SDKを使用して、プロジェクトを作成し、FeatureStoreで機能テーブルを登録できます。 FeatureStore SDKを使用して、トレーニングデータセットをエクスポートし、データを同期する必要があります。 したがって、プロジェクトを作成してPAIコンソールで機能テーブルを登録した後でも、FeatureStore SDK for Pythonをインストールする必要があります。
方法1: PAIコンソールを使用する
FeatureStoreでプロジェクトを作成します。
PAI コンソールにログインします。 左側のナビゲーションウィンドウで、[データの準備] > [FeatureStore] を選択します。
FeatureStoreページで、ドロップダウンリストからワークスペースを選択し、[FeatureStoreの入力] をクリックします。
[プロジェクトの作成] をクリックします。 [プロジェクトの作成] ページで、次の表に示すプロジェクトパラメーターを設定します。
パラメーター
説明
名前
カスタム名を指定します。 この例では、fs_demoが使用されています。
説明
カスタム説明を入力します。
Offline Store (オフラインストア)
設定したMaxComputeデータストアを選択します。
オンラインストア (オンラインストア)
設定したHologresデータストアを選択します。
[送信] をクリックします。
フィーチャーエンティティを作成します。
FeatureStoreページで、作成したプロジェクトを見つけ、プロジェクト名をクリックして [プロジェクトの詳細] ページに移動します。
[フィーチャーエンティティ] タブで、[フィーチャーエンティティの作成] をクリックします。 [フィーチャーエンティティの作成] パネルで、次の表に示すパラメーターをユーザーフィーチャーエンティティに設定します。
パラメーター
説明
機能エンティティ名
カスタム名を指定します。 この例では、userが使用されます。
Join Id
このパラメーターをuser_idに設定します。
[送信] をクリックします。
[機能エンティティの作成] をクリックします。 [フィーチャーエンティティの作成] パネルで、アイテムフィーチャーエンティティの次の表に示すパラメーターを設定します。
パラメーター
説明
機能エンティティ名
カスタム名を指定します。 この例では、itemが使用されます。
Join Id
このパラメーターをitem_idに設定します。
[送信] をクリックします。
フィーチャビューを作成します。
[プロジェクトの詳細] ページの [機能ビュー] タブで、[機能ビューの作成] をクリックします。 [フィーチャービューの作成] パネルで、次の表に示すパラメーターをユーザーフィーチャービューに設定します。
パラメーター
説明
表示名
カスタム名を指定します。 この例では、user_table_preprocess_all_feature_v1が使用されています。
タイプ
[オフライン] を選択します。
書き込みモード
[オフラインテーブルの使用] を選択します。
ストア
設定したMaxComputeデータストアを選択します。
機能テーブル
準備したユーザーテーブルrec_sln_demo_user_table_preprocess_all_feature_v1を選択します。
Featureフィールド
user_id主キーフィールドを選択します。
オンライン機能テーブルの同期
[はい] を選択します。
機能エンティティ
ユーザーを選択します。
機能ライフサイクル
デフォルト値を使用します。
[送信] をクリックします。
[機能ビューの作成] をクリックします。 [フィーチャビューの作成] パネルで、アイテムフィーチャビューの次の表に示すパラメーターを設定します。
パラメーター
説明
表示名
カスタム名を指定します。 この例では、item_table_preprocess_all_feature_v1が使用されています。
タイプ
[オフライン] を選択します。
書き込みモード
[オフラインテーブルの使用] を選択します。
ストア
設定したMaxComputeデータストアを選択します。
機能テーブル
準備したアイテムテーブルrec_sln_demo_item_table_preprocess_all_feature_v1を選択します。
Featureフィールド
item_id主キーフィールドを選択します。
オンライン機能テーブルの同期
[はい] を選択します。
機能エンティティ
アイテムを選択します。
機能ライフサイクル
デフォルト値を使用します。
[送信] をクリックします。
ラベルテーブルを作成します。
[プロジェクトの詳細] ページの [ラベルテーブル] タブで、[ラベルテーブルの作成] をクリックします。 [ラベルテーブルの作成] パネルで、ラベルテーブルの次の表に示すパラメーターを設定します。
パラメーター
説明
ストア
設定したMaxComputeデータストアを選択します。
テーブル名
準備したラベルテーブルrec_sln_demo_label_tableを選択します。
[送信] をクリックします。
モデルフィーチャーを作成します。
[プロジェクトの詳細] ページの [モデルフィーチャ] タブで、[モデルフィーチャの作成] をクリックします。 [モデルフィーチャーの作成] パネルで、次の表に示すパラメーターをモデルフィーチャーに設定します。
パラメーター
説明
モデル機能名
カスタム名を指定します。 この例では、fs_rank_v1が使用されます。
フィーチャーの選択
作成したユーザーフィーチャビューとアイテムフィーチャビューを選択します。
ラベルテーブル名
作成したラベルテーブルrec_sln_demo_label_tableを選択します。
[送信] をクリックします。
[モデルフィーチャ] タブで、作成したモデルフィーチャを見つけ、モデルフィーチャの名前をクリックします。
[モデル機能の詳細] パネルの [基本情報] タブで、[テーブル名のエクスポート] パラメーターの値を表示します。 この例では、Export Table Nameパラメーターの値はfs_demo_fs_rank_v1_trainning_setです。 このテーブルを使用して、フィーチャを生成し、モデルをトレーニングできます。
Python用FeatureStore SDKをインストールします。 詳細については、このトピックの「FeatureStoreを使用してレコメンデーションシステムの機能を管理する」を参照してください。
方法2: Python用のFeatureStore SDKの使用
DataWorks コンソールにログインします。
左側のナビゲーションウィンドウで [リソースグループ] をクリックします。
[排他的リソースグループ] タブで、管理するリソースグループを見つけます。 [操作] 列のアイコンの上にポインターを移動し、[O&Mアシスタント] を選択します。
[コマンドの作成] をクリックします。 [コマンドの作成] パネルで、次の表に示すコマンドパラメーターを設定します。
パラメーター
説明
Command Name
カスタム名を指定します。 この例では、installが使用されます。
Command Type
[手動インストール] (pipコマンドを実行してサードパーティパッケージをインストールすることはできません) を選択します。
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-1.3.1-py3-none-any.whl
タイムアウト
タイムアウト期間を指定します。
[作成] をクリックします。
[コマンドの実行] をクリックします。 表示されるメッセージで、[実行] をクリックします。
コマンドの最新のステータスを表示するには、[更新] をクリックします。 コマンドの状態が [成功] に変わると、FeatureStore SDKがインストールされます。
FeatureStore SDKの使用方法の詳細については、「DSWギャラリー」をご参照ください。
3. ルーチンデータ同期ノードの設定
モデルを公開する前に、定期的なデータ同期ノードを設定して、オフラインデータストアからオンラインデータストアにデータを定期的に同期する必要があります。 その後、オンラインデータストアからデータをリアルタイムで読み取ることができます。 この例では、ユーザーテーブルとアイテムテーブルのデータを定期的に同期させる必要があります。 ルーチンデータ同期ノードを設定するには、次の手順を実行します。
DataWorks コンソールにログインします。
左側のナビゲーションウィンドウで、[データ開発とガバナンス] > [DataStudio] を選択します。
[DataStudio] ページで、作成したDataWorksワークスペースを選択し、[DataStudioに移動] をクリックします。
ユーザーテーブルのデータを定期的に同期します。
ポインタを [作成] に移動し、[ノードの作成] > [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 cur_day = args['dt'] print('cur_day = ', cur_day) access_key_id = o.account.access_id access_key_secret = o.account.secret_access_key fs = FeatureStoreClient(access_key_id=access_key_id, access_key_secret=access_key_secret, region='cn-beijing') 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') task.wait() task.print_summary()
タブの右側にある [プロパティ] をクリックします。 [プロパティ] パネルで、次の表に示すスケジューリングパラメーターを設定します。
パラメーター
説明
スケジューリングパラメーター
パラメーター名
このパラメーターをdtに設定します。
パラメーター値
このパラメーターを $[yyyymmdd-1] に設定します。
リソースグループ
リソースグループ
作成した排他的リソースグループを選択します。
依存関係
作成したユーザーテーブルを選択します。
ノードの設定とテストが完了したら、ノードの設定を保存して送信します。
ノードのデータを埋め戻します。 詳細については、このトピックの「データテーブルの同期」セクションをご参照ください。
アイテムテーブルのデータを定期的に同期します。
ポインタを [作成] に移動し、[ノードの作成] > [MaxCompute] > [PyODPS 3] を選択します。 [ノードの作成] ダイアログボックスで、ノードパラメーターを設定します。
[確認]をクリックします。
次のコードをコードエディターにコピーします。
item_table_preprocess_all_feature_v1フィーチャービューからデータを同期する (クリックして詳細を表示)
タブの右側にある [プロパティ] をクリックします。 [プロパティ] パネルで、次の表に示すスケジューリングパラメーターを設定します。
パラメーター
説明
スケジューリングパラメーター
パラメーター名
このパラメーターをdtに設定します。
パラメーター値
このパラメーター $[yyyymmdd-1] を設定します。
リソースグループ
リソースグループ
作成した排他的リソースグループを選択します。
依存関係
作成したアイテムテーブルを選択します。
ノードの設定とテストが完了したら、ノードの設定を保存して送信します。
ノードのデータを埋め戻します。 詳細については、このトピックの「データテーブルの同期」セクションをご参照ください。
データが同期されたら、同期された最新の機能をHologresデータストアで表示します。
4. トレーニングデータセットのエクスポートExport a training dataset
DataWorks コンソールにログインします。
左側のナビゲーションウィンドウで、[データ開発とガバナンス] > [DataStudio] を選択します。
[DataStudio] ページで、作成したDataWorksワークスペースを選択し、[DataStudioに移動] をクリックします。
ポインタを [作成] に移動し、[ノードの作成] > [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 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 fs = FeatureStoreClient(access_key_id=access_key_id, access_key_secret=access_key_secret, region='cn-beijing') 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。 FeatureStore SDKのインストールと使用
Go用のFeatureStore SDK
FeatureStore SDK for Goはオープンソースです。 詳細については、「aliyun-pai-featurestore-go-sdk」をご参照ください。
FeatureStore SDK for Goのインストール
次のコードを実行して、FeatureStore SDK for Goをインストールします。
go get github.com/aliyun/aliyun-pai-featurestore-go-sdk/v2
FeatureStore SDK for Goの使用
次のコマンドを実行して、クライアントを初期化します。
accessId := os.Getenv("AccessId") accessKey := os.Getenv("AccessKey") regionId := "cn-hangzhou" projectName := "fs_test_ots" client, err := NewFeatureStoreClient(regionId, accessId, accessKey, projectName)
説明FeatureStore SDKがオンラインデータストアに直接接続できるようにするには、FeatureStoreクライアントを仮想プライベートクラウド (VPC) で実行する必要があります。 たとえば、FeatureStore SDKは、特定のVPC経由でのみHologresインスタンスまたはGraphComputeインスタンスにアクセスできます。
フィーチャビューからフィーチャを取得します。
// 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を指定して、対応するフィーチャを一度に取得できます。
次のサンプルコードでは、
user_id
とitem_id
の2つのjoin 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用FeatureStore SDK
FeatureStore SDK for Javaはオープンソースです。 詳細については、「aliyun-pai-featurestore-java-sdk」をご参照ください。
この例では、Hologresデータストアが使用されています。
次のコードを実行して環境変数をロードし、サービスを初期化します。
public static String accessId = ""; public static String accessKey = ""; # Configure the host based on the region in which the service resides. public static String host = ""; # Obtain the AccessKey ID and AccessKey secret from the configured environment variables. static { accessId = System.getenv("ACCESS_KEY_ID"); accessKey = System.getenv("ACCESS_KEY_SECRET"); }
リージョンID、AccessKey ID、AccessKeyシークレット、およびプロジェクト名を含むConfigurationクラスを初期化します。
Configuration cf = new Configuration("cn-hangzhou",Constants.accessId,Constants.accessKey,"ele28"); cf.setDomain(Constants.host);// By default, the VPC environment is used.
クライアントを初期化します。
ApiClient apiClient = new ApiClient(cf); # Initialize the FeatureStore 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"); // Configure 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("---------------"); # Specify the 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を指定します。 user_idに指定する値の数は、item_idと同じである必要があります。 この例では、user_idとitem_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' ---------------
C ++ 用のFeatureStore SDK
FeatureStore SDK for C ++ は、スコアリングサービスとしてデプロイされたEasyRecプロセッサと統合されています。 FeatureStore SDK for C ++ は、機能抽出、キャッシュ管理、および読み取り操作に最適化されており、大規模な推奨シナリオに対応する高性能で低遅延のソリューションを提供します。 FeatureStore SDK for C ++ には、次の機能があります。
メモリ使用量の削減: FeatureStore SDK for C ++ を使用して大量の複雑なフィーチャデータを処理すると、特にフィーチャの負荷が高い場合に、メモリ使用量が大幅に削減されます。
高速化された機能抽出: FeatureStore SDK for C ++ は、HologresインスタンスやGraphComputeインスタンスなどのオンラインデータストアから機能データを抽出する代わりに、MaxComputeデータストアからEASキャッシュに機能データを抽出します。 これにより、特徴データをロードするのに必要な時間が短縮される。 さらに、MaxComputeはより高い安定性とより優れた拡張性を提供し、オンラインストレージのスケールアップによる影響を軽減します。
モデルスコアの改善: FeatureStore SDK for C ++ は、tp100スコアリング指標をさらに改善し、より安定した応答時間をサポートし、タイムアウト要求の数を削減します。 これにより、推奨サービスの信頼性とユーザーエクスペリエンスが向上します。
関連ドキュメント
FeatureStoreを他のAlibaba Cloudサービスとともに使用して、レコメンデーションシステムを構築できます。 詳細については、「FeatureStoreを使用したレコメンデーションシステムの機能の管理」をご参照ください。