데이터 처리 스트림을 만들고 처리 노드를 앱에 추가한 후에는 처리된 데이터를 보낼 위치를 선택해야 합니다. 이러한 실시간 분석을 활용할 수 있도록 라이브 스트림 앱 출력을 직접 수신하는 방법이 있습니다.
일반적으로 앱을 구성하여 모델 출력을 Vertex AI Vision의 Media Warehouse 또는 BigQuery와 같은Google Cloud 데이터 웨어하우스에 저장합니다.
데이터가 이러한 창고 중 하나에 저장되면 애플리케이션 그래프를 기반으로 오프라인 분석 작업에 사용할 수 있습니다. 하지만 라이브 스트리밍 방식으로 모델 출력을 수신할 수도 있습니다. Vertex AI Vision이 모델 출력을 스트림 리소스로 전달하도록 할 수 있으며, 명령줄 도구(vaictl
) 또는 Vertex AI Vision API를 사용하여 실시간으로 이를 사용할 수 있습니다.
다음과 같은 세 개의 노드가 있는 다음 애플리케이션 그래프가 있다고 가정해 보겠습니다.
- 데이터 소스 노드 '입력 스트림' (
input-stream
) - 처리 노드 'Occupancy Count' (
occupancy-count
) - 앱 출력 대상 노드 'Media Warehouse' (
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 대시보드의 애플리케이션 탭을 엽니다.
목록에서 애플리케이션 이름 옆에 있는 그래프 보기를 선택합니다.
애플리케이션 그래프 빌더 페이지에서 배포 버튼을 클릭합니다.
열리는 애플리케이션 배포 옵션 메뉴에서
출력 스트리밍 사용 설정을 선택합니다.해당하는 모델 드롭다운 메뉴에서 스트리밍 출력을 사용 설정할 모델을 선택합니다.
배포를 클릭합니다.
스트림 출력 사용 설정 (API)
앱 노드 업데이트
모델 노드가 출력을 스트림으로 전송하도록 명령줄에서 앱 구성을 업데이트할 수 있습니다.
이 단계를 완료하면 앱 인스턴스를 업데이트하여 분석 노드 출력 데이터를 수신하는 스트림 리소스를 지정할 수 있습니다.
REST
이 예에서는 projects.locations.applications.patch 메서드를 사용합니다. 이 요청은 occupancy-count
노드가 출력 주석을 Vertex AI Vision 스트림으로 전송하도록 이전 샘플 앱의 API 앱 구성을 업데이트합니다. 이 동작은 output_all_output_channels_to_stream
필드에서 사용 설정합니다.
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- PROJECT: Google Cloud 프로젝트 ID 또는 프로젝트 번호입니다.
- LOCATION_ID: Vertex AI Vision을 사용하는 리전입니다. 예를 들면 다음과 같습니다.
us-central1
,europe-west4
사용 가능한 리전을 참고하세요. - APPLICATION_ID: 대상 애플리케이션의 ID입니다.
HTTP 메서드 및 URL:
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 앱 구성을 사용합니다. 이전 업데이트 명령어는 출력 주석을 Vertex AI Vision 스트림으로 전송할 수 있도록 occupancy-count
노드를 설정했습니다. 이 명령어는 해당 생산자 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 메서드 및 URL:
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
상태를 반환하고 서비스는 그에 따라 애플리케이션 인스턴스를 업데이트합니다.