创建数据注入流并向应用添加处理节点后,您必须选择将处理后的数据发送到何处。一种方法是直接接收直播应用输出,以便根据这些实时分析采取行动。
一般来说,您需要配置应用,以将模型输出存储到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 状态,且没有任何错误,服务会相应地更新应用实例。