Après avoir créé le flux d'ingestion de données et ajouté les nœuds de traitement à votre application, vous devez choisir où envoyer les données traitées. Vous pouvez par exemple recevoir directement la sortie de l'application de diffusion en direct afin de pouvoir agir sur ces données analytiques en temps réel.
En général, vous configurez votre application pour stocker la sortie du modèle dans un entrepôt de donnéesGoogle Cloud , tel que l'entrepôt de médias de Vertex AI Vision ou BigQuery.
Une fois les données stockées dans l'un de ces entrepôts, elles peuvent être utilisées pour des tâches d'analyse hors connexion basées sur le graphique de votre application. Toutefois, vous pouvez également recevoir les sorties du modèle en streaming en direct. Vous pouvez demander à Vertex AI Vision de transmettre les sorties du modèle à une ressource de flux, et vous pouvez utiliser l'outil de ligne de commande (vaictl
) ou l'API Vertex AI Vision pour les consommer en temps réel.
Supposons que vous disposiez du graphique d'application suivant, qui comporte les trois nœuds suivants:
- Nœud de source de données "Flux d'entrée" (
input-stream
) - Nœud de traitement "Nombre d'occupations" (
occupancy-count
) - Nœud de destination de sortie de l'application "Media Warehouse" (
warehouse
)
La sortie de l'application est actuellement envoyée du flux au processus de comptage de l'occupation, puis à l'entrepôt multimédia de Vertex AI Vision, où elle est stockée.
Configuration de l'application de l'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" } ] } } |
Activer la sortie de flux (console Google Cloud)
Vous pouvez activer la sortie de flux dans la console Google Cloud lorsque vous déployez votre modèle pour la première fois ou lorsque vous le désinstallez, puis le redéployez.
Console
Ouvrez l'onglet Applications du tableau de bord Vertex AI Vision.
Sélectionnez Afficher le graphique à côté du nom de votre application dans la liste.
Sur la page de l'outil de création de graphiques d'application, cliquez sur le bouton Deploy (Déployer).
Dans le menu d'options Deploy application (Déployer l'application) qui s'affiche, sélectionnez
Enable output streaming (Activer le streaming de sortie).Dans le menu déroulant Modèle(s) correspondant, sélectionnez
les modèles pour lesquels vous souhaitez activer la sortie en streaming.Cliquez sur Déployer.
Activer la sortie de flux (API)
Mettre à jour le nœud de l'application
Vous pouvez mettre à jour la configuration d'une application sur la ligne de commande afin qu'un nœud de modèle envoie spécifiquement une sortie à un flux.
Une fois cette étape terminée, vous pouvez mettre à jour l'instance de l'application pour spécifier la ressource de flux qui reçoit les données de sortie du nœud d'analyse.
REST
Cet exemple utilise la méthode projects.locations.applications.patch. Cette requête met à jour la configuration de l'application API de l'application exemple précédente pour que le nœud occupancy-count
envoie des annotations de sortie à un flux Vertex AI Vision. Ce comportement est activé par le champ output_all_output_channels_to_stream
.
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
- PROJECT: ID ou numéro de votre projet. Google Cloud
- LOCATION_ID: région dans laquelle vous utilisez Vertex AI Vision. Par exemple:
us-central1
,europe-west4
. Consultez les régions disponibles. - APPLICATION_ID: ID de votre application cible.
Méthode HTTP et URL :
PATCH https://visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/applications/APPLICATION_ID
Corps JSON de la requête :
{ "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 } ] } }
Pour envoyer votre requête, choisissez l'une des options suivantes :
curl
Enregistrez le corps de la requête dans un fichier nommé request.json
, puis exécutez la commande suivante :
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
Enregistrez le corps de la requête dans un fichier nommé request.json
, puis exécutez la commande suivante :
$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
sans erreur, et le service met à jour la ressource de l'application en conséquence.
Mettre à jour l'instance de l'application
L'exemple précédent montre comment mettre à jour l'application, ce qui permet au nœud cible d'envoyer la sortie à un flux. Une fois cette option activée, vous pouvez éventuellement mettre à jour l'instance d'application pour spécifier la ressource de flux qui reçoit les données de sortie du nœud d'analyse.
Si vous ne spécifiez pas de flux avec cette commande, la plate-forme d'application continue d'utiliser un flux par défaut créé lors du déploiement du nœud de l'application.
Vous devez créer une ressource de flux à laquelle le nœud envoie la sortie.
avant d'envoyer la requête suivante.
REST
Cet exemple utilise la méthode projects.locations.applications.updateApplicationInstances. Cette requête utilise la configuration de l'application API mise à jour de l'application exemple précédente. La commande de mise à jour précédente a défini le nœud occupancy-count
pour qu'il puisse envoyer des annotations de sortie à un flux Vertex AI Vision. Cette commande met à jour l'instance de l'application pour envoyer les données de ce nœud occupancy-count
de producteur à une ressource de flux existante.
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
- PROJECT: ID ou numéro de votre projet. Google Cloud
- LOCATION_ID: région dans laquelle vous utilisez Vertex AI Vision. Par exemple:
us-central1
,europe-west4
. Consultez les régions disponibles. - APPLICATION_ID: ID de votre application cible.
inputResources
: ressource (ou ressources) d'entrée de l'instance d'application actuelle. Il s'agit d'un tableau d'objets contenant les champs suivants :consumerNode
: nom du nœud de graphique qui reçoit la ressource d'entrée.inputResource
: nom complet de la ressource d'entrée.
outputResources.outputResource
: ressourcestream
à laquelle envoyer les données de l'application.outputResources.producerNode
: nom du nœud producteur de sortie de l'application. Dans cet exemple, il s'agit du nœud d'analyse,occupancy-count
.- INSTANCE_ID: ID de l'instance de l'application.
Méthode HTTP et URL :
POST https://visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/applications/APPLICATION_ID:updateApplicationInstances
Corps JSON de la requête :
{ "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 } ] }
Pour envoyer votre requête, choisissez l'une des options suivantes :
curl
Enregistrez le corps de la requête dans un fichier nommé request.json
, puis exécutez la commande suivante :
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
Enregistrez le corps de la requête dans un fichier nommé request.json
, puis exécutez la commande suivante :
$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
sans erreur, et le service met à jour l'instance de l'application en conséquence.