通过在线传送,您能够以较短的延迟时间为小批量实体提供特征值。对于每个请求,您只能从单个实体类型提供特征值。Vertex AI Feature Store(旧版)仅返回每个特征的最新非 null 值。
通常,您使用在线传送为已部署的模型传送特征值,以进行在线预测。例如,您可能有一家单车共享公司,并且您想要预测特定用户租用单车的时长。您可以添加来自用户的实时输入以及来自特征存储区的数据以执行在线预测。这样,您就可以实时确定资源分配。
Null 值
对于在线传送结果,如果特征的最新值为 null,则 Vertex AI Feature Store(旧版)会返回最新的非 null 值。如果不存在之前的值,则 Vertex AI Feature Store(旧版)会返回 null。
须知事项
确保您所调用的特征存储区具备在线存储区(即节点数必须大于 0
)。否则,在线传送请求会返回错误。如需了解详情,请参阅管理特征存储区。
部署来自单个实体的值
从单个实体为特定实体类型提供特征值。
REST
如需从实体获取特征值,请使用 featurestores.entityTypes.readFeatureValues 方法发送 POST 请求。
以下示例为特定实体获取了两个不同特征的最新值。请注意,对于 ids
字段,您可以指定 ["*"]
(而不是特征 ID)以选择实体的所有特征。
在使用任何请求数据之前,请先进行以下替换:
- LOCATION_ID:在其中创建特征存储区的区域。例如
us-central1
。 - PROJECT_ID:您的项目 ID。
- FEATURESTORE_ID:特征存储区的 ID。
- ENTITY_TYPE_ID:实体类型的 ID。
- ENTITY_ID:要获取其特征值的实体的 ID。
- FEATURE_ID:要获取其值的特征的 ID。
HTTP 方法和网址:
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"] } } }
如需发送请求,请选择以下方式之一:
curl
将请求正文保存在名为 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"
PowerShell
将请求正文保存在名为 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" } } } ] } }
Python
如需了解如何安装或更新 Vertex AI SDK for Python,请参阅安装 Vertex AI SDK for Python。 如需了解详情,请参阅 Python API 参考文档。
Java
在尝试此示例之前,请按照《Vertex AI 快速入门:使用客户端库》中的 Java 设置说明执行操作。 如需了解详情,请参阅 Vertex AI Java API 参考文档。
如需向 Vertex AI 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Node.js
在尝试此示例之前,请按照《Vertex AI 快速入门:使用客户端库》中的 Node.js 设置说明执行操作。 如需了解详情,请参阅 Vertex AI Node.js API 参考文档。
如需向 Vertex AI 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
从多个实体传送值
从一个或多个实体为特定实体类型提供特征值。为了获得更好的性能,请使用 streamingReadFeatureValues
方法,而不是向 readFeatureValues
方法发送并行请求。
REST
如需从多个实体获取特征值,请使用 featurestores.entityTypes.streamingReadFeatureValues 方法发送 POST 请求。
以下示例为两个不同实体获取了两个不同特征的最新值。请注意,对于 ids
字段,您可以指定 ["*"]
(而不是特征 ID)以选择实体的所有特征。
在使用任何请求数据之前,请先进行以下替换:
- LOCATION_ID:在其中创建特征存储区的区域。例如
us-central1
。 - PROJECT_ID:您的项目 ID。
- FEATURESTORE_ID:特征存储区的 ID。
- ENTITY_TYPE_ID:实体类型的 ID。
- ENTITY_ID:要获取其特征值的实体的 ID。
- FEATURE_ID:要获取其值的特征的 ID。
HTTP 方法和网址:
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"] } } }
如需发送请求,请选择以下方式之一:
curl
将请求正文保存在名为 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"
PowerShell
将请求正文保存在名为 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(旧版)常见问题。