すべてのプロダクト
Search
ドキュメントセンター

Platform For AI:FeatureStore のベストプラクティス

最終更新日:Jan 22, 2026

この Topic では、他の Alibaba Cloud プロダクトを使用せずに、FeatureStore の SDK (ソフトウェア開発キット) を使用して推薦システムの特徴を管理する方法について説明します。

背景情報

推薦システムは、ユーザーの興味やプリファレンスに基づいて、パーソナライズされたコンテンツやプロダクトを提案します。推薦システムの重要なステップは、ユーザーとアイテムの特徴を抽出し、構成することです。このドキュメントでは、FeatureStore を使用して推薦システムを構築し、FeatureStore SDK のさまざまなバージョンで特徴データを管理する方法を説明します。

FeatureStore の詳細については、「FeatureStore の概要」をご参照ください。

構成や使用中にご不明な点がある場合は、DingTalk グループ (ID: 34415007523) にご参加いただくことで、技術サポートをご利用いただけます。

前提条件

開始する前に、以下の準備を完了してください。

依存プロダクト

具体的な操作

Platform for AI (PAI)

  • PAI サービスが有効化され、PAI ワークスペースが作成されていること。詳細については、「PAI の有効化とデフォルトワークスペースの作成」をご参照ください。

  • ご利用の Alibaba Cloud アカウントの AccessKey ID と AccessKey Secret が取得されていること。詳細については、「AccessKey の作成」をご参照ください。

    ローカル環境変数を設定して、AccessKey ID と AccessKey Secret を保存します。詳細については、「環境変数の設定」をご参照ください。

MaxCompute

FeatureDB

DataWorks

  • DataWorks サービスが有効化されていること。

  • DataWorks ワークスペースが作成されていること。詳細については、「ワークスペースの作成」をご参照ください。

  • 専用スケジューリングリソースグループが購入され、作成した DataWorks ワークスペースにアタッチされていること。詳細については、「専用スケジューリングリソースグループの使用」をご参照ください。

  • 作成した PAI ワークスペースに MaxCompute データソースが設定されていること。詳細については、「データソースの設定」をご参照ください。

  • 作成した PAI ワークスペースに MaxCompute コンピュートエンジンがアタッチされていること。詳細については、「MaxCompute エンジンのアタッチ」をご参照ください。

  • 作成した PAI ワークスペースに Hologres コンピュートエンジンがアタッチされていること。詳細については、「Hologres コンピュートエンジンのアタッチ」をご参照ください。

1. データの準備

データテーブルの同期

一般的な推薦シナリオでは、ユーザー特徴テーブルアイテム特徴テーブルラベルテーブルの 3 つのデータテーブルを準備する必要があります。

練習のため、pai_online_project MaxCompute プロジェクトにサンプルとしてユーザー、アイテム、ラベルのテーブルを用意しました。ユーザーテーブルとアイテムテーブルは、それぞれパーティションあたり約 100,000 件のデータエントリを含み、MaxCompute で約 70 MB のストレージを占有します。ラベルテーブルは、パーティションあたり約 450,000 件のデータエントリを含み、MaxCompute で約 5 MB のストレージを占有します。

DataWorks で SQL コマンドを実行して、pai_online_project プロジェクトからご自身の MaxCompute プロジェクトにユーザー、アイテム、ラベルのテーブルを同期します。以下の手順に従ってください:

  1. DataWorks コンソールにログインします。

  2. 左側のナビゲーションウィンドウで、[データ開発・運用保守] > [データ開発] の順にクリックします。

  3. 作成した DataWorks ワークスペースを選択し、[データスタジオへ移動] をクリックします。

  4. [作成] にカーソルを合わせ、[ノードの作成] > [MaxCompute] > [MaxCompute SQL] を選択します。表示されるダイアログボックスで、ノードパラメーターを設定します。

    パラメーター

    推奨値

    タイプ

    MaxCompute SQL

    パス

    ビジネスフロー/ワークフロー/MaxCompute

    [名前]

    カスタム名を入力します。

  5. [OK] をクリックします。

  6. 新しいノードエリアで、以下の SQL コマンドを実行して、pai_online_project プロジェクトからご自身の MaxCompute プロジェクトにユーザー、アイテム、ラベルのテーブルを同期します。[リソースグループ] で、作成した専用リソースグループを選択します。

    ユーザーテーブルの同期:rec_sln_demo_user_table_preprocess_all_feature_v1(クリックして詳細を表示)

    CREATE TABLE IF NOT EXISTS rec_sln_demo_user_table_preprocess_all_feature_v1
    like pai_online_project.rec_sln_demo_user_table_preprocess_all_feature_v1
    STORED AS ALIORC  
    LIFECYCLE 90;
    
    INSERT OVERWRITE TABLE rec_sln_demo_user_table_preprocess_all_feature_v1 PARTITION (ds)
    SELECT *
    FROM pai_online_project.rec_sln_demo_user_table_preprocess_all_feature_v1
    WHERE ds >= '20231022' and ds <='20231024';

    コマンドを実行すると、以下の 3 つのパーティションでデータが利用可能になります:

    • ds=20231022

    • ds=20231023

    • ds=20231024

    アイテムテーブルの同期:rec_sln_demo_item_table_preprocess_all_feature_v1(クリックして詳細を表示)

    CREATE TABLE IF NOT EXISTS rec_sln_demo_item_table_preprocess_all_feature_v1
    like pai_online_project.rec_sln_demo_item_table_preprocess_all_feature_v1
    STORED AS ALIORC  
    LIFECYCLE 90;
    
    INSERT OVERWRITE TABLE rec_sln_demo_item_table_preprocess_all_feature_v1 PARTITION(ds)
    SELECT *
    FROM pai_online_project.rec_sln_demo_item_table_preprocess_all_feature_v1
    WHERE ds >= '20231022' and ds <='20231024';

    コマンドを実行すると、以下の 3 つのパーティションでデータが利用可能になります:

    • ds=20231022

    • ds=20231023

    • ds=20231024

    ラベルテーブルの同期:rec_sln_demo_label_table(クリックして詳細を表示)

    CREATE TABLE IF NOT EXISTS rec_sln_demo_label_table
    like pai_online_project.rec_sln_demo_label_table
    STORED AS ALIORC  
    LIFECYCLE 90;
    
    INSERT OVERWRITE TABLE rec_sln_demo_label_table PARTITION (ds)
    SELECT *
    FROM pai_online_project.rec_sln_demo_label_table
    WHERE ds >= '20231022' and ds <='20231024';

    コマンドを実行すると、以下の 3 つのパーティションでデータが利用可能になります:

    • ds=20231022

    • ds=20231023

    • ds=20231024

これらの手順を完了すると、ワークスペースでユーザーテーブル 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 では、MaxComputeFeatureDB を例として使用します。

  1. PAI コンソールにログインします。左側のナビゲーションウィンドウで、Data Preparation > FeatureStore の順にクリックします。

  2. ワークスペースを選択し、[FeatureStore に入る] をクリックします。

  3. MaxCompute データソースを設定します。

    1. Store タブで、Create Store をクリックします。表示されるダイアログボックスで、MaxCompute データソースのパラメーターを設定します。

      パラメーター

      推奨値

      タイプ

      MaxCompute

      名前

      カスタム名を入力します。

      [MaxCompute プロジェクト名]

      作成した MaxCompute プロジェクトを選択します。

    2. 権限付与文をコピーします。次に、[今すぐ移動] をクリックして DataWorks に移動します。DataWorks で文を実行して、必要な権限を付与します。

      説明

      権限付与操作には、アカウントに管理者権限が必要です。詳細については、「コマンドを使用したユーザー権限の管理」または「コンソールでのユーザー権限の管理」をご参照ください。

    3. 設定が完了したら、[送信] をクリックします。

  4. FeatureDB データソースを設定します。

    1. すでに FeatureDB データソースを作成している場合は、このステップをスキップできます。

    2. Store タブで、Create Store をクリックします。表示されるダイアログボックスで、FeatureDB データソースのパラメーターを設定します。

      パラメーター

      推奨値

      [タイプ]

      FeatureDB (初めて使用する場合は、画面の指示に従って FeatureDB を有効化してください)

      名前

      カスタム名はサポートされていません。デフォルト値は feature_db です。

      ユーザー名

      ユーザー名を設定します。

      パスワード

      パスワードを設定します。

      高速 VPC 接続 (オプション)

      設定が成功すると、VPC 内の FeatureStore SDK を使用して、PrivateLink 接続経由で FeatureDB に直接アクセスできます。これにより、データの読み書きパフォーマンスが向上し、アクセスレイテンシが短縮されます。

      VPC

      オンライン FeatureStore サービスが配置されている VPC を選択します。

      ゾーンと vSwitch

      ゾーンと vSwitch を選択します。オンラインサービスのマシンが配置されているゾーンの vSwitch を選択してください。ビジネスの高可用性と安定性を確保するために、少なくとも 2 つのゾーンで vSwitch を選択することを推奨します。

    3. 設定が完了したら、Submit をクリックします。

2. FeatureStore プロジェクトの作成と登録

FeatureStore プロジェクトは、コンソールまたは SDK を使用して作成および登録できます。トレーニングセットのエクスポートやデータの同期など、後続の操作には SDK が必要となるため、初期設定にコンソールを使用する場合でも、FeatureStore Python SDK をインストールする必要があります。

方法 1:コンソールの使用

  1. FeatureStore プロジェクトを作成します。

    1. PAI コンソールにログインします。左側のナビゲーションウィンドウで、Data Preparation > FeatureStore の順にクリックします。

    2. ワークスペースを選択し、[FeatureStore に入る] をクリックします。

    3. Create Project をクリックします。表示されるダイアログボックスで、プロジェクトのパラメーターを設定します。

      パラメーター

      推奨値

      Name

      カスタム名を入力します。この Topic では、fs_demo を例として使用します。

      Description

      カスタムの説明を入力します。

      Offline Store

      作成した MaxCompute データソースを選択します。

      Online Store

      作成した FeatureDB データソースを選択します。

    4. [送信] をクリックして FeatureStore プロジェクトを作成します。

  2. 特徴エンティティを作成します。

    1. FeatureStore の Projects ページで、プロジェクト名をクリックしてプロジェクト詳細ページを開きます。

    2. Feature Entity タブで、Create Feature Entity をクリックします。表示されるダイアログボックスで、ユーザー特徴エンティティのパラメーターを設定します。

      パラメーター

      推奨値

      Feature Entity Name

      カスタム名を入力します。この Topic では、user を例として使用します。

      参加 ID

      user_id

    3. Submit をクリックします。

    4. Create Feature Entity をクリックします。表示されるダイアログボックスで、アイテム特徴エンティティのパラメーターを設定します。

      パラメーター

      推奨値

      Feature Entity Name

      カスタム名を入力します。この Topic では、item を例として使用します。

      結合 ID

      item_id

    5. [送信] をクリックして特徴エンティティを作成します。

  3. 特徴ビューを作成します。

    1. プロジェクト詳細ページの 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

      デフォルト値を保持します。

    2. Submit をクリックします。

    3. 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

      デフォルト値を保持します。

    4. 設定が完了したら、Submit をクリックして特徴ビューを作成します。

  4. ラベルテーブルを作成します。

    1. プロジェクト詳細ページの [ラベルテーブル] タブで、Create Label Table をクリックします。表示されるダイアログボックスで、ラベルテーブル情報を設定します。

      パラメーター

      推奨値

      Store

      作成した MaxCompute データソースを選択します。

      Table Name

      準備したラベルテーブルを選択します:rec_sln_demo_label_table

    2. Submit をクリックします。

  5. モデル特徴を作成します。

    1. プロジェクト詳細ページの Model Features タブで、Create Model Feature をクリックします。表示されるダイアログボックスで、モデル特徴のパラメーターを設定します。

      パラメーター

      推奨値

      Model Feature Name

      カスタム名を入力します。この Topic では、fs_rank_v1 を例として使用します。

      Select Feature

      作成したユーザーおよびアイテムの特徴ビューを選択します。

      Label Table Name

      作成したラベルテーブルを選択します:rec_sln_demo_label_table

    2. Submit をクリックしてモデル特徴を作成します。

    3. モデル特徴リストページで、モデルの右側にある Details をクリックします。

    4. 表示される Model Feature Details ダイアログボックスの Basic Information タブで、Export Table Name を表示できます。これは fs_demo_fs_rank_v1_trainning_set です。このテーブルは、後続の特徴生成およびモデルトレーニングに使用されます。

  6. FeatureStore Python SDK をインストールします。詳細については、「FeatureStore を使用して推薦システムの特徴を管理する」をご参照ください。

方法 2:FeatureStore Python SDK の使用

  1. DataWorks コンソールにログインします。

  2. 左側のナビゲーションウィンドウで、[リソースグループ] をクリックします。

  3. [専用リソースグループ] タブで、[目的][データスケジューリング] のリソースグループを見つけます。そのスケジューリングリソースの横にある image.png アイコンをクリックし、[運用保守アシスタント] を選択します。

  4. [コマンドの作成] をクリックします。表示されるダイアログボックスで、コマンドのパラメーターを設定します。

    パラメーター

    推奨値

    コマンド名

    カスタム名を入力します。この 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

    タイムアウト

    カスタム時間を設定します。

  5. [作成] をクリックしてコマンドを作成します。

  6. [コマンドの実行] をクリックします。表示されるダイアログボックスで、[実行] をクリックします。

  7. [更新] をクリックして最新の実行ステータスを表示できます。ステータスが [成功] に変わると、インストールは完了です。

SDK の使用に関する詳細な手順については、「DSW ギャラリー」をご参照ください。

3. データ同期ノードの実行

サービスを公開する前に、定期的にデータ同期ノードを実行して、オフラインストアからオンラインストアにデータを同期する必要があります。オンラインサービスは、リアルタイムでオンラインストアからデータを読み取ります。この例では、ユーザーおよびアイテムの特徴テーブルの定期的な同期タスクを設定する方法を説明します。

  1. DataWorks コンソールにログインします。

  2. 左側のナビゲーションウィンドウで、[データ開発・運用保守] > [データ開発] の順にクリックします。

  3. 作成した DataWorks ワークスペースを選択し、[データ開発に入る] をクリックします。

  4. ユーザーテーブルの定期的な同期を設定します。

    1. [作成] にカーソルを合わせ、[新規ノード] > [MaxCompute] > [PyODPS 3] を選択します。

    2. 以下の内容をスクリプトにコピーして、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()
      
    3. 右側のナビゲーションウィンドウで、[スケジューリング設定] をクリックします。表示されるダイアログボックスで、スケジューリングパラメーターを設定します。

      パラメーター

      推奨値

      [スケジューリングパラメーター]

      [パラメーター名]

      dt

      [パラメーター値]

      $[yyyymmdd-1]

      [リソースプロパティ]

      [スケジューリングリソースグループ]

      作成した専用リソースグループを選択します。

      [スケジューリングの依存関係]

      作成したユーザーテーブルを選択します。

    4. ノードを設定してテストした後、ノード設定を保存して送信します。

    5. データバックフィル操作を実行します。詳細については、「データテーブルの同期」をご参照ください。

  5. アイテムテーブルの定期的な同期を設定します。

    1. [作成] にカーソルを合わせ、[新規ノード] > [MaxCompute] > [PyODPS 3] を選択します。表示されるダイアログボックスで、ノードパラメーターを設定します。

    2. [確認] をクリックします。

    3. 以下の内容をスクリプトにコピーします。

      item_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 = 'item_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()
    4. 右側のナビゲーションウィンドウで、[スケジューリング設定] をクリックします。表示されるダイアログボックスで、スケジューリングパラメーターを設定します。

      パラメータ

      推奨値

      スケジューリングパラメータ

      パラメータ名

      dt

      パラメータ値

      $[yyyymmdd-1]

      リソースプロパティ

      スケジューリングリソースグループ

      作成した専用リソースグループを選択します。

      スケジューリング依存関係

      作成したアイテムテーブルを選択します。

    5. ノードを設定してテストした後、ノード設定を保存して送信します。

    6. データバックフィル操作を実行します。詳細については、「データテーブルの同期」をご参照ください。

  6. 同期が完了したら、Hologres で最新の同期済み特徴データを表示できます。

4. トレーニングセットスクリプトのエクスポート

  1. DataWorks コンソールにログインします。

  2. 左側のナビゲーションウィンドウで、[データ開発・運用保守] > [データ開発] の順にクリックします。

  3. 作成した DataWorks ワークスペースを選択し、[データ開発に入る] をクリックします。

  4. [作成] にカーソルを合わせ、[新規ノード] > [MaxCompute] > [PyODPS 3] を選択します。表示されるダイアログボックスで、ノードパラメーターを設定します。

    パラメーター

    推奨値

    エンジンインスタンス

    作成した MaxCompute エンジンを選択します。

    ノードタイプ

    PyODPS 3

    パス

    ビジネスフロー/ワークフロー/MaxCompute

    名前

    カスタム名を入力します。

  5. [確認] をクリックします。

  6. 以下の内容をスクリプトにコピーします。

    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)
  7. 右側のナビゲーションウィンドウで、[スケジューリング設定] をクリックします。表示されるダイアログボックスで、スケジューリングパラメーターを設定します。

    パラメーター

    推奨値

    スケジューリングパラメーター

    パラメーター名

    dt

    パラメーター値

    $[yyyymmdd-1]

    リソースプロパティ

    [スケジューリングリソースグループ]

    作成した専用リソースグループを選択します。

    スケジューリング依存関係

    作成したユーザーおよびアイテムテーブルを選択します。

  8. ノードを設定してテストした後、ノード設定を保存して送信します。

  9. データバックフィル操作を実行します。詳細については、「データテーブルの同期」をご参照ください。

5. SDK のインストールと使用

Python SDK

詳細については、「FeatureStore Python SDK を使用して推薦システムを構築する」をご参照ください。

Go SDK

FeatureStore Go SDK はオープンソースです。詳細については、「aliyun-pai-featurestore-go-sdk」をご参照ください。

  1. インストール

    次のコマンドを実行して、FeatureStore Go SDK をインストールします。

    go get github.com/aliyun/aliyun-pai-featurestore-go-sdk/v2
  2. 使用方法

    1. 次のコマンドを実行して、クライアントを初期化します。

      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 からの接続を要求します。

    2. 特徴ビューから特徴データを取得します。

      // 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"     
      } 
      ]
    3. モデル特徴から特徴データを取得します。

      モデル特徴は複数の特徴エンティティに関連付けることができます。複数の結合 ID を提供して、対応する特徴をまとめて取得できます。

      この例では、join_iduser_iditem_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 データソースを例として使用します。

  1. 次のコードを実行して、環境変数をロードし、サービスを初期化します。

    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");
    }
  2. regionIdaccessIdaccessKey、およびプロジェクト名を設定する構成クラスを作成します。

    Configuration cf = new Configuration("cn-hangzhou",Constants.accessId,Constants.accessKey,"ele28");
    cf.setDomain(Constants.host);// Note: The default environment is a VPC environment
  3. クライアントを初期化します。

    ApiClient apiClient = new ApiClient(cf);
    // FS client
    FeatureStoreClient featureStoreClient = new FeatureStoreClient(apiClient);
  4. プロジェクトを取得します。この例では、ele28 という名前のプロジェクトを使用します。

    Project project=featureStoreClient.getProject("ele28");
    if(project==null){
        throw new RuntimeException("Project not found");
    }
  5. プロジェクトの特徴ビューを取得します。この例では、mc_test という名前の特徴ビューを使用します。

    FeatureView featureView=project.getFeatureView("mc_test");
    if (featureView == null) {
        throw  new RuntimeException("FeatureView not found");
    }
  6. 特徴ビューに基づいてオンライン特徴データを取得します。

    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) 
    ---------------
  7. モデルを取得します。

    Model model=project.getModelFeature("model_t1");
    if(model==null){
        throw new RuntimeException("Model not found");
    }
    1. モデル特徴からデータを取得します。

      このモデル特徴は、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"));
    2. モデル特徴から、ユーザー特徴エンティティに関連するすべての特徴データを取得します。

      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 パフォーマンスメトリックが向上し、応答時間が安定し、タイムアウトリクエストが大幅に削減されます。これらの改善により、推薦サービスの全体的な信頼性とユーザーエクスペリエンスが向上します。

関連ドキュメント