オンライン サービングを使用すると、少量のエンティティの特徴値を低レイテンシで処理できます。リクエストごとに、単一のエンティティ タイプからの特徴値のみを処理できます。Vertex AI Feature Store(レガシー)は、各特徴の最新の値(null 以外)のみを返します。
通常は、オンライン予測のためにデプロイされたモデルに特徴値を提供するためにオンライン サービングを使用します。たとえば、自転車シェアリングの会社を保有しており、特定のユーザーがレンタルする自転車のレンタル時間を予測することを必要としているとします。ユーザーからのリアルタイムの入力と featurestore からのデータを計算に入れて、オンライン予測を実行できます。そうすることで、リソースの割り当てをリアルタイムに判断できます。
Null 値
オンライン サービングの結果で特徴の最新の値が Null の場合、Vertex AI Feature Store(レガシー)は、最新の Null 以外の値を返します。前に値がない場合、Vertex AI Feature Store(レガシー)は Null を返します。
始める前に
呼び出し先の featurestore にオンライン ストアがあることを確認します(ノード数が 0
よりも大きくすることを確認します)。そうでないと、オンライン サービング リクエストはエラーを返します。詳細については、featurestore の管理をご覧ください。
単一エンティティからの値を処理する
特定のエンティティ タイプに関する単一のエンティティからの特徴値を処理します。
エンティティから特徴値を取得するには、featurestores.entityTypes.readFeatureValues メソッドを使用して POST リクエストを送信します。
次のサンプルでは、特定のエンティティの 2 つの異なる特徴の最新値を取得します。なお、ids
フィールドには、特徴 ID ではなく ["*"]
を指定することで、エンティティのすべての特徴を選択できます。
リクエストのデータを使用する前に、次のように置き換えます。
- LOCATION_ID: featurestore が作成されるリージョン。例:
us-central1
- PROJECT_ID: 実際のプロジェクト ID。
- FEATURESTORE_ID: featurestore の ID。
- ENTITY_TYPE_ID: エンティティ タイプの ID。
- ENTITY_ID: 特徴値を取得するエンティティの ID。
- FEATURE_ID: 値を取得する特徴の ID。
HTTP メソッドと URL:
POST https://LOCATION_ID -aiplatform.googleapis.com/v1/projects/PROJECT_ID /locations/LOCATION_ID /featurestores/FEATURESTORE_ID /entityTypes/ENTITY_TYPE_ID :readFeatureValues
リクエストの本文(JSON):
{ "entityId": "ENTITY_ID ", "featureSelector": { "idMatcher": { "ids": ["FEATURE_ID_1 ", "FEATURE_ID_2 "] } } }
リクエストを送信するには、次のいずれかのオプションを選択します。
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION_ID -aiplatform.googleapis.com/v1/projects/PROJECT_ID /locations/LOCATION_ID /featurestores/FEATURESTORE_ID /entityTypes/ENTITY_TYPE_ID :readFeatureValues"
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION_ID -aiplatform.googleapis.com/v1/projects/PROJECT_ID /locations/LOCATION_ID /featurestores/FEATURESTORE_ID /entityTypes/ENTITY_TYPE_ID :readFeatureValues" | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
{ "header": { "entityType": "projects/PROJECT_NUMBER /locations/LOCATION_ID /featurestores/FEATURESTORE_ID /entityTypes/ENTITY_TYPE_ID ", "featureDescriptors": [ { "id": "FEATURE_ID_1 " }, { "id": "FEATURE_ID_2 " } ] }, "entityView": { "entityId": "ENTITY_ID ", "data": [ { "value": { "VALUE_TYPE_1 ": "FEATURE_VALUE_1 ", "metadata": { "generateTime": "2019-10-28T15:38:10Z" } } }, { "value": { "VALUE_TYPE_2 ": "FEATURE_VALUE_2 ", "metadata": { "generateTime": "2019-10-28T15:38:10Z" } } } ] } }
Vertex AI SDK for Python のインストールまたは更新の方法については、Vertex AI SDK for Python をインストールするをご覧ください。 詳細については、Python API リファレンス ドキュメントをご覧ください。
このサンプルを試す前に、Vertex AI クイックスタート: クライアント ライブラリの使用にある Java の設定手順を完了してください。詳細については、Vertex AI Java API のリファレンス ドキュメントをご覧ください。
Vertex AI に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
このサンプルを試す前に、Vertex AI クイックスタート: クライアント ライブラリの使用にある Node.js の設定手順を完了してください。詳細については、Vertex AI Node.js API のリファレンス ドキュメントをご覧ください。
Vertex AI に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
複数エンティティからの値を処理する
特定のエンティティ タイプに関する 1 つ以上のエンティティからの特徴値を処理します。パフォーマンスを向上させるには、readFeatureValues
メソッドに並列リクエストを送信する代わりに streamingReadFeatureValues
メソッドを使用します。
複数のエンティティから特徴値を取得するには、featurestores.entityTypes.streamingReadFeatureValues メソッドを使用して POST リクエストを送信します。
次のサンプルでは、2 つの異なるエンティティの 2 つの異なる特徴の最新値を取得します。なお、ids
フィールドには、特徴 ID ではなく ["*"]
を指定することで、エンティティのすべての特徴を選択できます。
リクエストのデータを使用する前に、次のように置き換えます。
- LOCATION_ID: featurestore が作成されるリージョン。例:
us-central1
- PROJECT_ID: 実際のプロジェクト ID。
- FEATURESTORE_ID: featurestore の ID。
- ENTITY_TYPE_ID: エンティティ タイプの ID。
- ENTITY_ID: 特徴値を取得するエンティティの ID。
- FEATURE_ID: 値を取得する特徴の ID。
HTTP メソッドと URL:
POST https://LOCATION_ID -aiplatform.googleapis.com/v1/projects/PROJECT_ID /locations/LOCATION_ID /featurestores/FEATURESTORE_ID /entityTypes/ENTITY_TYPE_ID :streamingReadFeatureValues
リクエストの本文(JSON):
{ "entityIds": ["ENTITY_ID_1 ", "ENTITY_ID_2 "], "featureSelector": { "idMatcher": { "ids": ["FEATURE_ID_1 ", "FEATURE_ID_2 "] } } }
リクエストを送信するには、次のいずれかのオプションを選択します。
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION_ID -aiplatform.googleapis.com/v1/projects/PROJECT_ID /locations/LOCATION_ID /featurestores/FEATURESTORE_ID /entityTypes/ENTITY_TYPE_ID :streamingReadFeatureValues"
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION_ID -aiplatform.googleapis.com/v1/projects/PROJECT_ID /locations/LOCATION_ID /featurestores/FEATURESTORE_ID /entityTypes/ENTITY_TYPE_ID :streamingReadFeatureValues" | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
[{ "header": { "entityType": "projects/PROJECT_NUMBER /locations/LOCATION_ID /featurestores/FEATURESTORE_ID /entityTypes/ENTITY_TYPE_ID ", "featureDescriptors": [ { "id": "FEATURE_ID_1 " }, { "id": "FEATURE_ID_2 " } ] } }, { "entityView": { "entityId": "ENTITY_ID_1 ", "data": [ { "value": { "VALUE_TYPE_1 ": "FEATURE_VALUE_A ", "metadata": { "generateTime": "2019-10-28T15:38:10Z" } } }, { "value": { "VALUE_TYPE_2 ": "FEATURE_VALUE_B ", "metadata": { "generateTime": "2019-10-28T15:38:10Z" } } } ] } }, { "entityView": { "entityId": "ENTITY_ID_2 ", "data": [ { "value": { "VALUE_TYPE_1 ": "FEATURE_VALUE_C ", "metadata": { "generateTime": "2019-10-28T21:21:37Z" } } }, { "value": { "VALUE_TYPE_2 ": "FEATURE_VALUE_D ", "metadata": { "generateTime": "2019-10-28T21:21:37Z" } } } ] } }]
次の Vertex AI クライアント ライブラリを使用してインストールすると、Vertex AI API を呼び出すことができます。Cloud クライアント ライブラリによって、サポートされている各言語の自然な規則やスタイルが使用され、デベロッパーに快適な利用環境が提供されます。
次のステップ
- 特徴値のバッチ取り込みの方法を学習する。
- バッチ サービングを通して特徴を処理する方法を確認する。
- Vertex AI Feature Store(レガシー)のオンライン サービングの割り当てを確認する。
- Vertex AI Feature Store(従来版)に関する一般的な問題のトラブルシューティングを行う。