Vertex AI Feature Store を使用する

このドキュメントでは、Vertex AI SDK for ABAP を使用して Vertex AI Feature Store を使用して、オンライン ストアの同期、オンライン ストアからの特徴の提供、エンティティまたはエンベディングを使用したオンライン Feature Store の検索などのタスクを実行する方法について説明します。

Vertex AI Feature Store は、マネージド クラウドネイティブ Feature Store サービスです。このサービスでは、ML の特徴管理とオンライン サービング プロセスが合理化されます。特徴データを BigQuery のテーブルまたはビューで管理し、

Vertex AI Feature Store の設定の一般的なワークフローでは、まず BigQuery で SAP データソースを準備し、特徴グループと特徴を作成してデータソースを登録し、オンライン ストアと特徴ビューのリソースを設定します。その後、特徴ビューから最新の特徴値をオンラインで提供したり、オンライン特徴ストアで類似性検索を実行したりできます。Vertex AI Feature Store の設定方法については、Vertex AI Feature Store をご覧ください。

Vertex AI Feature Store がオンライン サービングに対応したら、Vertex AI SDK for ABAP を使用して次のことができます。

  • モデル予測中のリアルタイム サービングに最新かつ正確な特徴値を提供するには、オンライン ストアを BigQuery の特徴データソースと同期します。
  • リアルタイム アプリケーションにオンライン ストアから特徴値を提供するには、オンライン ストアから特徴をサービングします。
  • オンライン ストアから意味的に類似または関連するエンティティのリストを取得するには、エンティティまたはエンベディングを使用して検索します。

始める前に

Vertex AI Feature Store で Vertex AI SDK for ABAP を使用する前に、自身または管理者が次の前提条件を満たしていることを確認してください。

Vertex AI Feature Store の ABAP クラスをインスタンス化する

ABAP アプリケーションで Vertex AI Feature Store を使用するには、クラス /GOOG/CL_FEATURE_STORE をインスタンス化します。

DATA(lo_client) = NEW /goog/cl_feature_store(
                          iv_key_name         = 'CLIENT_KEY'
                          iv_location         = 'LOCATION_ID'
                          iv_feature_store_id = 'FEATURE_ONLINE_STORE_NAME' ).

次のように置き換えます。

  • CLIENT_KEY: 認証用に構成されたクライアント キー。
  • LOCATION_ID: オンライン ストアがあるリージョン(us-central1 など)。
  • FEATURE_ONLINE_STORE_NAME: 特徴ビューを含むオンライン ショップの名前。

オンライン ショップを同期する

モデル予測中のリアルタイム サービング用に、オンライン ストアに最新かつ正確な特徴値が確実に存在するようにするには、オンライン ストアの特徴ビュー リソースを BigQuery の特徴データソースと同期する必要があります。

始める前に

Vertex AI Feature Store にはリージョン エンドポイントを介してアクセスするため、Vertex AI API への接続を確立するために RFC の宛先を作成する必要があります。次に、サービス マッピング テーブルで RFC 宛先を指定します。

  1. Vertex AI Feature Store が存在するリージョン エンドポイントを使用して、Vertex AI API の RFC デスティネーションを作成します。たとえば、Vertex AI Feature Store が us-east1 にある場合、ターゲット ホストのエンドポイントは us-east1-aiplatform.googleapis.com になります。リージョン エンドポイントの詳細については、サービス エンドポイントをご覧ください。RFC 宛先を作成するには、次の操作を行います。

    1. SAP GUI で、トランザクション コード SM59 を実行します。

    2. 新しい RFC 宛先を作成します。作成した RFC 宛先で接続タイプG - HTTP connection to external server に設定されていることを確認します。

    3. [技術的な設定] タブに移動して、次の詳細情報を入力します。

      • ターゲット ホスト: Vertex AI Feature Store が存在するリージョン エンドポイントを指定します。

      • サービス番号: 「443」と入力します。このポート番号は安全な通信に使用されます。

    4. [ログオンとセキュリティ] タブに移動し、[SSL 証明書] フィールドで [デフォルトの SSL クライアント(標準)] のオプションが設定されていることを確認します。

    5. 変更を保存します。

  2. Vertex AI API のサービス マッピング テーブルを構成します。

    1. SAP GUI で、トランザクション コード /GOOG/SDK_IMG を実行します。

      または、トランザクション コード SPRO を実行して、[SAP Reference IMG] をクリックします。

    2. [ABAP SDK for Google Cloud] > [Basic Settings] > [Configure Service Mapping] をクリックします。

    3. [New Entries] をクリックします。

    4. Vertex AI API の RFC 宛先を指定します。

      名前 サービス名 RFC 宛先
      認証用のクライアント キー。 aiplatform:v1 RFC 宛先の名前。
    5. 新しいエントリを保存します。

Vertex AI Feature Store を同期する

特徴ビューでデータ同期を開始するには、SYNC_FEATURE_DATA_TO_FS メソッドを使用します。

DATA(lv_feature_view_sync_id) = lo_client->sync_feature_data_to_fs(
                                             iv_feature_view_id = 'FEATURE_VIEW_NAME'
                                        )->get_feature_sync_id( ).

FEATURE_VIEW_NAME は、データ同期を開始する特徴ビューの名前に置き換えます。

このメソッドは、特徴ビューの同期 ID を返します。この ID を使用して、同期のステータスを確認できます。

Vertex AI Feature Store の同期のステータスを取得する

Vertex AI Feature Store の同期のステータスを取得するには、GET_FEATURE_SYNC_STATUS メソッドを使用します。

DATA(ls_status) = lo_client->get_feature_sync_status(
                               iv_feature_view_id     = 'FEATURE_VIEW_NAME'
                               iv_feature_sync_id     = 'FEATURE_VIEW_SYNC_ID'
              )->get_feature_sync_status( ).

次のように置き換えます。

  • FEATURE_VIEW_NAME: 同期ステータスを確認する特徴ビューの名前。
  • FEATURE_VIEW_SYNC_ID: Vertex AI Feature Store の同期から受信した特徴ビューの同期 ID。

    このメソッドは、C: CompleteR: RunningF: Failed のいずれかのステータスと、エラー メッセージ(存在する場合)を返します。

SAP バックグラウンド ジョブを使用して Vertex AI Feature Store を同期する

SAP バックグラウンド ジョブを使用して特徴ビューでデータ同期を開始するには、SYNC_FEATURE_DATA_TO_FS_BGJOB メソッドを使用します。

この方法では、SAP システムにバックグラウンド ジョブが作成されます。このジョブは、Feature Store の同期を開始し、30 秒ごとに Feature Store の同期ステータスを確認します。特徴ストアの同期ステータスが完了または失敗した場合、バックグラウンド ジョブはそれに応じてメッセージとともに完了します。Feature Store の同期が実行されている場合、バックグラウンド ジョブは指定された TIMEOUT 値まで実行されます。タイムアウト後、バックグラウンド ジョブは完了しますが、特徴ストアの同期は引き続き実行されます。

DATA(ls_bgjob_details) = lo_client->sync_feature_data_to_fs_bgjob(
                                      iv_feature_view_id = 'FEATURE_VIEW_NAME'
                                      iv_timeout         = TIMEOUT
                                 )->get_background_job_details( ).

次のように置き換えます。

  • FEATURE_VIEW_NAME: データ同期を手動で開始する特徴ビューの名前。
  • TIMEOUT: バックグラウンド ジョブがタイムアウトするまでの時間(秒)。これは Vertex AI Feature Store の同期には影響しません。

このメソッドは、バックグラウンド ジョブ名と対応する ID を返します。このジョブは SAP 内からモニタリングして、特徴ストアの同期ステータスを確認できます。

オンライン ストアから特徴をサービングする

商品レコメンデーションなどのリアルタイム アプリケーションでは、オンライン ストアから特徴値をサービングできます。オンライン ストアに構成されたオンライン サービングのタイプに応じて、次のいずれかの方法で特徴値をサービングできます。

  • Bigtable オンライン サービングを使用して特徴値を取得します。
  • パブリック エンドポイントで最適化されたオンライン サービングを使用して特徴値を取得します。
  • Private Service Connect エンドポイントで最適化されたオンライン サービングを使用して特徴値を取得します。

特徴値のサービングの詳細については、オンライン ストアから特徴をサービングするをご覧ください。

始める前に

オンライン ストアから特徴値の提供を開始する前に、オンライン ストアの詳細からパブリック エンドポイントのドメイン名を取得し、エンドポイントの RFC 宛先を作成し、サービス マッピング テーブルで RFC 宛先を指定する必要があります。

  1. オンライン ストアのパブリック エンドポイント ドメイン名を取得します。

    1. SAP GUI で、トランザクション コード /GOOG/SDK_IMG を実行します。

      または、トランザクション コード SPRO を実行して、[SAP Reference IMG] をクリックします。

    2. [ABAP SDK for Google Cloud] > [Utilities] > [Vertex AI SDK: Get RFC information for Feature Store and Vector Search] をクリックします。
    3. [Get Feature Store Details] を選択します。
    4. 次のパラメータを入力します。

      • Google Cloud キー名: Google Cloud に対する認証用のクライアント キー。
      • ロケーション: オンライン ストアが配置されているリージョン。
      • Feature Store ID: 特徴ビューを含むオンライン ストアの名前。
    5. [実行] をクリックして詳細を表示します。[Host] ラベルのパブリック エンドポイントのドメイン名をメモします。

  2. リージョン エンドポイント、パブリック エンドポイント ドメイン名、またはオンライン ストアの Private Service Connect エンドポイントの RFC 宛先を作成します。RFC 宛先を作成するには、次の操作を行います。

    1. SAP GUI で、トランザクション コード SM59 を実行します。

    2. 新しい RFC 宛先を作成します。作成した RFC 宛先で接続タイプG - HTTP connection to external server に設定されていることを確認します。

    3. [技術的な設定] タブに移動して、次の詳細情報を入力します。

      • ターゲット ホスト: Vertex AI Feature Store が存在するパブリック エンドポイントのドメイン名を指定します。

      • サービス番号: 「443」と入力します。このポート番号は安全な通信に使用されます。

    4. [ログオンとセキュリティ] タブに移動し、[SSL 証明書] フィールドで [デフォルトの SSL クライアント(標準)] のオプションが設定されていることを確認します。

    5. 変更を保存します。

  3. Vertex AI API のサービス マッピング テーブルを構成します。

    1. SAP GUI で、トランザクション コード /GOOG/SDK_IMG を実行します。

      または、トランザクション コード SPRO を実行して、[SAP Reference IMG] をクリックします。

    2. [ABAP SDK for Google Cloud] > [Basic Settings] > [Configure Service Mapping] をクリックします。

    3. [New Entries] をクリックします。

    4. Vertex AI API の RFC 宛先を指定します。

      名前 サービス名 RFC 宛先
      認証用のクライアント キー。 apiinvoker:v1 RFC 宛先の名前。
    5. 新しいエントリを保存します。

特徴値を取得する

Vertex AI Feature Store で、エンティティは、特徴をトラッキングする項目(顧客、商品、その他のデータポイントなど)を指します。各エンティティには、一連の特徴とそれに対応する値が関連付けられています。

単一のエンティティ ID を指定して特徴値を取得するには、メソッド SERVE_FEATURE_VALUES を使用します。

DATA(lt_features) = lo_client->serve_feature_values(
                         iv_feature_view_id = 'FEATURE_VIEW_NAME'
                             it_entity_id       = 'ENTITY_ID'
                )->get_features( ).

次のように置き換えます。

  • FEATURE_VIEW_NAME: 特徴値を処理する特徴ビューの名前。
  • ENTITY_ID: 最新の特徴値を処理する特徴レコードの ID 列の値。または、パーツの配列を指定してエンティティ ID を作成することもできます。ID 列が特徴ビューで定義されているのと同じ順序になっていることを確認します。

近似最近傍を検索する

最適化されたオンライン サービング用に作成されたオンライン ストアでは、ベクトル類似性検索を実行して、意味的に類似したエンティティまたは関連するエンティティのリストを取得できます。これは近似最近傍探索とも呼ばれます。エンティティ ID またはエンベディングに基づいて近似最近傍を検索できます。

始める前に

最適化されたオンライン サービング用のオンライン ストアを作成すると、Vertex AI Feature Store はオンライン ストア用のパブリック エンドポイント ドメイン名を生成します。オンライン ショップの特徴ビューから最近傍の検索を開始する前に、オンライン ショップの詳細からパブリック エンドポイント ドメイン名を取得し、エンドポイントの RFC 宛先を作成し、サービス マッピング テーブルで RFC 宛先を指定する必要があります。

  1. オンライン ストアのパブリック エンドポイント ドメイン名を取得します。

    1. SAP GUI で、トランザクション コード /GOOG/SDK_IMG を実行します。

      または、トランザクション コード SPRO を実行して、[SAP Reference IMG] をクリックします。

    2. [ABAP SDK for Google Cloud] > [Utilities] > [Vertex AI SDK: Get RFC information for Feature Store and Vector Search] をクリックします。
    3. [Feature Store の詳細を取得] を選択します。
    4. 次のパラメータを入力します。

      • Google Cloud キー名: Google Cloud に対する認証用のクライアント キー。
      • ロケーション: オンライン ストアが配置されているリージョン。
      • Feature Store ID: 特徴ビューを含むオンライン ストアの名前。
    5. [実行] をクリックして詳細を表示します。[Host] ラベルのパブリック エンドポイントのドメイン名をメモします。

  2. オンライン ストアのパブリック エンドポイント ドメイン名の RFC 宛先を作成します。

    1. SAP GUI で、トランザクション コード SM59 を実行します。

    2. 新しい RFC 宛先を作成します。作成した RFC 宛先で接続タイプG - HTTP connection to external server に設定されていることを確認します。

    3. [技術的な設定] タブに移動して、次の詳細情報を入力します。

      • ターゲット ホスト: オンライン ストアのパブリック エンドポイント ドメイン名を指定します。

      • サービス番号: 「443」と入力します。このポート番号は安全な通信に使用されます。

    4. [ログオンとセキュリティ] タブに移動し、[SSL 証明書] フィールドで [デフォルトの SSL クライアント(標準)] のオプションが設定されていることを確認します。

    5. 変更を保存します。

  3. Vertex AI API のサービス マッピング テーブルを構成します。

    1. SAP GUI で、トランザクション コード /GOOG/SDK_IMG を実行します。

      または、トランザクション コード SPRO を実行して、[SAP Reference IMG] をクリックします。

    2. [ABAP SDK for Google Cloud] > [Basic Settings] > [Configure Service Mapping] をクリックします。

    3. [New Entries] をクリックします。

    4. Vertex AI API の RFC 宛先を指定します。

      名前 サービス名 RFC 宛先
      認証用のクライアント キー。 apiinvoker:v1 RFC 宛先の名前。
    5. 新しいエントリを保存します。

エンベディングの最近傍の一致を取得する

エンベディングを指定して、意味的に関連するエンティティを検索できます。

エンベディングの最近傍を検索するには、SEARCH_USING_EMBEDDINGS メソッドを使用してリクエストを送信します。

DATA(lt_embeddings) = VALUE /goog/cl_aiplatform_v1=>ty_t_/goog/num_float( EMBEDDING_DATA ).

DATA(lt_neighbours) = lo_client->search_using_embeddings(
  EXPORTING
    iv_feature_view_id = 'FEATURE_VIEW_NAME'
    it_embeddings      = lt_embeddings
    is_search_params   = VALUE #( neighbor_count     = 'NEIGHBOR_COUNT'
                                  return_full_entity = 'RETURN_FULL_ENTITY' )
)->get_neighbours( ).

次のように置き換えます。

  • EMBEDDING_DATA: 近似最近傍を検索するエンベディング。エンベディングは、浮動小数点値の配列として表されます。
  • FEATURE_VIEW_NAME: 近似最近傍を検索する特徴ビューの名前。
  • NEIGHBOR_COUNT: 取得する近似最近傍の数。
  • RETURN_FULL_ENTITY: 省略可。レスポンスのエンティティの特徴を含めるかどうかを指定します。レスポンスにエンティティとともに特徴を含めるには、「ABAP_TRUE」と入力します。デフォルト値は ABAP_FALSE です。

エンティティの最近傍の一致を取得する

エンティティ ID を指定して、意味的に関連するエンティティを検索できます。

エンティティ ID の最近傍を検索するには、SEARCH_USING_ENTITY メソッドを使用してリクエストを送信します。

DATA(lt_neighbours) = lo_client->search_using_entity(
  EXPORTING
    iv_feature_view_id = 'FEATURE_VIEW_NAME'
    iv_entity_id       = 'ENTITY_ID'
    is_search_params   = VALUE #( neighbor_count     = 'NEIGHBOR_COUNT'
                                  return_full_entity = 'RETURN_FULL_ENTITY' )
)->get_neighbours( ).

次のように置き換えます。

  • FEATURE_VIEW_NAME: 近似最近傍を検索する特徴ビューの名前。
  • ENTITY_ID:: 近似最近傍探索を取得するエンティティのエンティティ ID。
  • NEIGHBOR_COUNT: 取得する近似最近傍の数。
  • RETURN_FULL_ENTITY: 省略可。レスポンスのエンティティの特徴を含めるかどうかを指定します。レスポンスにエンティティとともに特徴を含めるには、「ABAP_TRUE」と入力します。デフォルト値は ABAP_FALSE です。

次のステップ