创建数据注入流并向应用添加处理节点后,您必须选择将处理后的数据发送到何处。一种方法是直接接收直播应用输出,以便根据这些实时分析采取行动。
一般来说,您需要配置应用,以将模型输出存储到Google Cloud 数据仓库(例如 Vertex AI Vision 的 Media Warehouse 或 BigQuery)中。数据存储在其中一个数据仓库中后,即可用于基于应用图的离线分析作业。不过,您也可以通过实时流式传输方式接收模型输出。您可以让 Vertex AI Vision 将模型输出转发到流资源,并使用命令行工具 (vaictl
) 或 Vertex AI Vision API 实时使用这些输出。
假设您有以下应用图,其中包含以下三个节点:
- 数据源节点“输入流”(
input-stream
) - 处理节点“占用计数”(
occupancy-count
) - 应用输出目标节点“媒体仓库”(
warehouse
)
应用输出目前会从数据流发送到入住人数统计流程,然后发送到 Vertex AI Vision 的媒体仓库进行存储。
API 应用配置:
![]() |
{ "applicationConfigs": { "nodes": [ { "displayName": "Input Stream", "name": "input-stream", "processor": "builtin:stream-input" }, { "displayName": "Occupancy Count", "name": "occupancy-count", "nodeConfig": { "occupancyCountConfig": { "enablePeopleCounting": true, "enableVehicleCounting": true } }, "parents": [ { "parentNode": "input-stream" } ], "processor": "builtin:occupancy-count" }, { "displayName": "Media Warehouse", "name": "warehouse", "nodeConfig": { "mediaWarehouseConfig": { "corpus": "projects/PROJECT_ID/locations/LOCATION_ID/corpora/CORPUS_ID", "ttl": "86400s" } }, "parents": [ { "parentNode": "input-stream" }, { "parentNode": "occupancy-count" } ], "processor": "builtin:media-warehouse" } ] } } |
启用流输出(Google Cloud 控制台)
您可以在首次部署模型时或在取消部署并重新部署模型时,在 Google Cloud 控制台中启用流式输出。
控制台
打开 Vertex AI Vision 信息中心的应用标签页。
从列表中选择应用名称旁边的查看图表。
在应用图表构建器页面中,点击部署按钮。
在随即打开的部署应用选项菜单中,选择
Enable output streaming。从相应的模型下拉菜单中,选择要启用流式输出的
模型。点击部署
启用流式输出 (API)
更新应用节点
您可以在命令行中更新应用的配置,以便模型节点专门将输出发送到流。
完成此步骤后,您可以选择更新应用实例,以指定接收分析节点输出数据的数据流资源。
REST
此示例使用 projects.locations.applications.patch 方法。此请求会更新 API 应用配置,使 occupancy-count
节点将输出注释发送到 Vertex AI Vision 流,从而将之前的示例应用更新为当前示例应用。此行为由 output_all_output_channels_to_stream
字段启用。
在使用任何请求数据之前,请先进行以下替换:
- PROJECT:您的 Google Cloud 项目 ID 或项目编号。
- LOCATION_ID:您使用 Vertex AI Vision 的区域。例如:
us-central1
、europe-west4
。请参阅可用区域。 - APPLICATION_ID:目标应用的 ID。
HTTP 方法和网址:
PATCH https://visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/applications/APPLICATION_ID
请求 JSON 正文:
{ "applicationConfigs": { "nodes": [ { "displayName": "Input Stream", "name": "input-stream", "processor": "builtin:stream-input" }, { "displayName": "Occupancy Count", "name": "occupancy-count", "nodeConfig": { "occupancyCountConfig": { "enablePeopleCounting": true, "enableVehicleCounting": true } }, "parents": [ { "parentNode": "input-stream" } ], "processor": "builtin:occupancy-count", "output_all_output_channels_to_stream": true } ] } }
如需发送请求,请选择以下方式之一:
curl
将请求正文保存在名为 request.json
的文件中,然后执行以下命令:
curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/applications/APPLICATION_ID"
PowerShell
将请求正文保存在名为 request.json
的文件中,然后执行以下命令:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/applications/APPLICATION_ID" | Select-Object -Expand Content
200 OK
状态,且没有任何错误,并且服务会相应地更新应用资源。
更新应用实例
上一个示例展示了如何更新应用,以便目标节点将输出发送到流。启用此选项后,您可以选择更新应用实例,以指定接收分析节点输出数据的数据流资源。
如果您未在此命令中指定数据流,应用平台会继续使用在部署应用节点时创建的默认数据流。
然后再发送以下请求。
REST
此示例使用 projects.locations.applications.updateApplicationInstances 方法。此请求使用上一个示例应用中更新后的 API 应用配置。之前的更新命令将 occupancy-count
节点设置为能够将输出注释发送到 Vertex AI Vision 流。此命令会更新应用实例,以将来自相应提供方 occupancy-count
节点的数据发送到现有数据流资源。
在使用任何请求数据之前,请先进行以下替换:
- PROJECT:您的 Google Cloud 项目 ID 或项目编号。
- LOCATION_ID:您使用 Vertex AI Vision 的区域。例如:
us-central1
、europe-west4
。请参阅可用区域。 - APPLICATION_ID:目标应用的 ID。
inputResources
:当前应用实例的输入资源。这是一个包含以下字段的对象数组:consumerNode
:接收输入资源的图节点的名称。inputResource
:完整的输入资源名称。
outputResources.outputResource
:用于输出应用数据的stream
资源。outputResources.producerNode
:应用输出生成器节点名称。在此示例中,分析节点为occupancy-count
。- INSTANCE_ID:应用实例的 ID。
HTTP 方法和网址:
POST https://visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/applications/APPLICATION_ID:updateApplicationInstances
请求 JSON 正文:
{ "applicationInstances": [ { "instance": { "inputResources": [ { "consumerNode": "input-stream", "inputResource": "projects/PROJECT_NUMBER/locations/LOCATION_ID/clusters/application-cluster-0/streams/INPUT_STREAM_ID" } ], "outputResources":[ { "outputResource": "projects/PROJECT_NUMBER/locations/LOCATION_ID/clusters/application-cluster-0/streams/OUTPUT_STREAM_ID", "producerNode": "occupancy-count" } ] }, "instanceId": INSTANCE_ID } ] }
如需发送请求,请选择以下方式之一:
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://visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/applications/APPLICATION_ID:updateApplicationInstances"
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://visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/applications/APPLICATION_ID:updateApplicationInstances" | Select-Object -Expand Content
200 OK
状态,且没有任何错误,服务会相应地更新应用实例。