このドキュメントでは、Vertex AI SDK for ABAP を使用して、オンライン ストアの同期、オンライン ストアからの特徴のサービング、エンティティまたはエンベディングを使用したオンライン特徴ストアの検索などのタスクを実行するために Vertex AI Feature Store を使用する方法について説明します。
Vertex AI Feature Store は、クラウドネイティブのマネージド特徴ストアサービスです。このサービスでは、特徴データを BigQuery のテーブルまたはビューで管理することで、ML 特徴管理とオンライン サービング プロセスを効率化します。
一般的な 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 を使用する前に、自身または管理者が次の前提条件を満たしていることを確認してください。
- Google Cloud プロジェクトで Vertex AI API が有効になっている。
- SAP 環境に Vertex AI SDK for ABAP がインストールされている。
- Vertex AI API にアクセスするための認証が設定されている。
- オンライン特徴サービングが設定されている。オンライン ストアを作成し、このオンライン ストアを使用して、エンドツーエンドのワークフローで Vertex AI Feature Store を使用して BigQuery でデータをホストしてサービングする方法については、Vertex AI Feature Store の Jupyter Notebook チュートリアルをご覧ください。
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 宛先を指定します。
Vertex AI Feature Store が配置されているリージョン エンドポイントを使用して、Vertex AI API の RFC 宛先を作成します。たとえば Vertex AI Feature Store が
us-east1
に配置されている場合、ターゲット ホストのエンドポイントはus-east1-aiplatform.googleapis.com
になります。リージョン エンドポイントの詳細については、サービス エンドポイントをご覧ください。RFC 宛先を作成するには、次の操作を行います。SAP GUI で、トランザクション コード
SM59
を実行します。新しい RFC 宛先を作成します。作成した RFC 宛先で [Connection Type] が
G - HTTP connection to external server
に設定されていることを確認します。[Technical Settings] タブに移動して、次の詳細情報を入力します。
Target Host: Vertex AI Feature Store が存在するリージョン エンドポイントを指定します。
Service No.: 「
443
」と入力します。これは安全な通信に使用されるポート番号です。
[Logon & Security] タブに移動し、[SSL Certificate] フィールドで [DFAULT SSL Client (Standard)] オプションが設定されていることを確認します。
変更を保存します。
Vertex AI API のサービス マッピング テーブルを構成します。
SAP GUI で、トランザクション コード
/GOOG/SDK_IMG
を実行します。または、トランザクション コード
SPRO
を実行して、[SAP Reference IMG] をクリックします。[ABAP SDK for Google Cloud] > [Basic Settings] > [Configure Service Mapping] をクリックします。
[New Entries] をクリックします。
Vertex AI API の RFC 宛先を指定します。
名前 サービス名 RFC 宛先 認証用のクライアント キー。 aiplatform:v1
RFC 宛先の名前。 新しいエントリを保存します。
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: Complete
、R: Running
、F: Failed
のいずれかのステータスと、エラー メッセージ(存在する場合)を返します。
SAP バックグラウンド ジョブを使用して Vertex AI Feature Store を同期する
SAP バックグラウンド ジョブを使用して特徴ビューでデータ同期を開始するには、SYNC_FEATURE_DATA_TO_FS_BGJOB
メソッドを使用します。
このメソッドにより SAP システムに作成されるバックグラウンド ジョブは、Feature Store の同期を開始し、30 秒ごとに Feature Store 同期のステータスを確認します。Feature Store 同期のステータスが Completed(完了)または Failed(失敗)の場合、バックグラウンド ジョブは完了時に対応するメッセージを出力します。Feature Store の同期が実行中の場合、バックグラウンド ジョブは指定された TIMEOUT
値まで実行されます。タイムアウト後、バックグラウンド ジョブは完了しますが、Feature Store の同期は引き続き実行されます。
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 を返します。このジョブは、Feature Store 同期のステータスを確認するため SAP 内からモニタリングされます。
オンライン ストアから特徴をサービングする
プロダクト レコメンデーションなどのリアルタイム アプリケーションでは、オンライン ストアから特徴値をサービングできます。オンライン ストアに対して構成したオンライン サービングのタイプに応じて、次のいずれかの方法で特徴値をサービングできます。
- Bigtable オンライン サービングを使用して特徴値を取得する。
- パブリック エンドポイントで最適化されたオンライン サービングを使用して特徴値を取得する。
- Private Service Connect エンドポイントで最適化されたオンライン サービングを使用して特徴値を取得する。
特徴値のサービングの詳細については、オンライン ストアから特徴をサービングするをご覧ください。
始める前に
オンライン ストアから特徴値のサービングを開始する前に、オンライン ストアの詳細からパブリック エンドポイント ドメイン名を取得し、エンドポイントの RFC 宛先を作成し、サービス マッピング テーブルでその RFC 宛先を指定する必要があります。
オンライン ストアのパブリック エンドポイント ドメイン名を取得する
-
SAP GUI で、トランザクション コード
/GOOG/SDK_IMG
を実行します。または、トランザクション コード
SPRO
を実行して、[SAP Reference IMG] をクリックします。 - [ABAP SDK for Google Cloud] > [Utilities] > [Vertex AI SDK: Get RFC information for Feature Store and Vector Search] をクリックします。
- [Get Feature Store Details] を選択します。
次のパラメータを入力します。
- Google Cloud Key Name: Google Cloud に対する認証用のクライアント キー。
- Location: オンライン ストアが配置されているリージョン。
- Feature Store ID: 特徴ビューを含むオンライン ストアの名前。
[Execute] をクリックして詳細情報を表示します。[Host] ラベルのパブリック エンドポイント ドメイン名をメモします。
-
SAP GUI で、トランザクション コード
オンライン ストアのリージョン エンドポイント、パブリック エンドポイント ドメイン名、または Private Service Connect エンドポイントの RFC 宛先を作成します。RFC 宛先を作成するには、次の操作を行います。
SAP GUI で、トランザクション コード
SM59
を実行します。新しい RFC 宛先を作成します。作成した RFC 宛先で [Connection Type] が
G - HTTP connection to external server
に設定されていることを確認します。[Technical Settings] タブに移動して、次の詳細情報を入力します。
Target Host: Vertex AI Feature Store が配置されているパブリック エンドポイント ドメイン名を指定します。
Service No.: 「
443
」と入力します。これは安全な通信に使用されるポート番号です。
[Logon & Security] タブに移動し、[SSL Certificate] フィールドで [DFAULT SSL Client (Standard)] オプションが設定されていることを確認します。
変更を保存します。
Vertex AI API のサービス マッピング テーブルを構成します。
SAP GUI で、トランザクション コード
/GOOG/SDK_IMG
を実行します。または、トランザクション コード
SPRO
を実行して、[SAP Reference IMG] をクリックします。[ABAP SDK for Google Cloud] > [Basic Settings] > [Configure Service Mapping] をクリックします。
[New Entries] をクリックします。
Vertex AI API の RFC 宛先を指定します。
名前 サービス名 RFC 宛先 認証用のクライアント キー。 apiinvoker:v1
RFC 宛先の名前。 新しいエントリを保存します。
特徴値を取得する
Vertex AI Feature Store では、エンティティとは、特徴を追跡するアイテム(顧客、プロダクト、その他のデータポイントなど)を指します。各エンティティには、一連の特徴とそれに対応する値が関連付けられています。
1 つのエンティティ 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 宛先を指定する必要があります。
オンライン ストアのパブリック エンドポイント ドメイン名を取得する
-
SAP GUI で、トランザクション コード
/GOOG/SDK_IMG
を実行します。または、トランザクション コード
SPRO
を実行して、[SAP Reference IMG] をクリックします。 - [ABAP SDK for Google Cloud] > [Utilities] > [Vertex AI SDK: Get RFC information for Feature Store and Vector Search] をクリックします。
- [Get Feature Store Details] を選択します。
次のパラメータを入力します。
- Google Cloud Key Name: Google Cloud に対する認証用のクライアント キー。
- Location: オンライン ストアが配置されているリージョン。
- Feature Store ID: 特徴ビューを含むオンライン ストアの名前。
[Execute] をクリックして詳細情報を表示します。[Host] ラベルのパブリック エンドポイント ドメイン名をメモします。
-
SAP GUI で、トランザクション コード
オンライン ストアのパブリック エンドポイント ドメイン名の RFC 宛先を作成します。
SAP GUI で、トランザクション コード
SM59
を実行します。新しい RFC 宛先を作成します。作成した RFC 宛先で [Connection Type] が
G - HTTP connection to external server
に設定されていることを確認します。[Technical Settings] タブに移動して、次の詳細情報を入力します。
Target Host: オンライン ストアのパブリック エンドポイント ドメイン名を指定します。
Service No.: 「
443
」と入力します。これは安全な通信に使用されるポート番号です。
[Logon & Security] タブに移動し、[SSL Certificate] フィールドで [DFAULT SSL Client (Standard)] オプションが設定されていることを確認します。
変更を保存します。
Vertex AI API のサービス マッピング テーブルを構成します。
SAP GUI で、トランザクション コード
/GOOG/SDK_IMG
を実行します。または、トランザクション コード
SPRO
を実行して、[SAP Reference IMG] をクリックします。[ABAP SDK for Google Cloud] > [Basic Settings] > [Configure Service Mapping] をクリックします。
[New Entries] をクリックします。
Vertex AI API の RFC 宛先を指定します。
名前 サービス名 RFC 宛先 認証用のクライアント キー。 apiinvoker:v1
RFC 宛先の名前。 新しいエントリを保存します。
エンベディングの最近傍の一致を取得する
エンベディングを指定して、意味的に関連するエンティティを検索できます。
エンベディングの最近傍を検索するには、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
です。
次のステップ
ABAP SDK for Google Cloud のオンプレミスまたはクラウド エディションを使用したアプリケーション開発について学習する。
Cloud フォーラムのコミュニティで Vertex AI SDK for ABAP について質問したり、ディスカッションに参加したりする。