배포 간 리소스 공유

소개

Vertex AI 모델은 기본적으로 자체 가상 머신(VM) 인스턴스에 배포됩니다. Vertex AI는 동일한 VM에서 모델을 공동 호스팅하는 기능을 제공합니다. 이는 다음과 같은 이점이 있습니다.

  • 여러 배포 간 리소스 공유
  • 비용 효율적인 모델 제공
  • 향상된 메모리 및 컴퓨팅 리소스 사용률

이 가이드에서는 Vertex AI에서 여러 배포 간에 리소스를 공유하는 방법을 설명합니다.

개요

모델 공동 호스팅 지원에는 단일 VM 내에서 리소스를 공유하는 모델 배포를 그룹화하는 DeploymentResourcePool 개념이 도입되었습니다. 여러 엔드포인트를 DeploymentResourcePool 내에서 동일한 VM에 배포할 수 있습니다. 각 엔드포인트에는 하나 이상의 배포된 모델이 있습니다. 지정된 엔드포인트의 배포된 모델을 동일한 또는 다른 DeploymentResourcePool에 그룹화할 수 있습니다.

다음 예시에는 4개 모델과 2개 엔드포인트가 있습니다.

여러 엔드포인트에서 모델 공동 호스팅

Model_A, Model_B, Model_C는 트래픽이 모두 라우팅된 상태로 Endpoint_1에 배포됩니다. Model_DEndpoint_2에 배포되어 이 엔드포인트의 트래픽을 100% 수신합니다. 각 모델을 별도의 VM에 할당하는 대신 다음 방법 중 하나로 모델을 그룹화할 수 있습니다.

  • Model_AModel_B를 그룹화하여 VM을 공유하면 DeploymentResourcePool_X의 일부가 됩니다.
  • Model_CModel_D(현재는 같은 엔드포인트에 없음)를 그룹화하여 VM을 공유하여 DeploymentResourcePool_Y의 일부로 만듭니다.

다른 배포 리소스 풀은 VM을 공유할 수 없습니다.

고려사항

단일 배포 리소스 풀에 배포할 수 있는 모델 수에는 상위 한도가 없습니다. 이는 선택한 VM 모양, 모델 크기, 트래픽 패턴에 따라 달라집니다. 공동 호스팅은 희소 트래픽을 포함하는 배포된 모델이 많을 때 잘 작동합니다. 따라서 전용 머신을 각 배포된 모델에 할당해도 리소스가 효과적으로 사용되지 않습니다.

모델을 동일한 배포 리소스 풀에 동시에 배포할 수 있습니다. 하지만 동시 배포 요청은 한 번에 20개로 제한됩니다.

모델을 배포할 때는 CPU 사용률이 증가합니다. CPU 사용률이 증가하면 기존 트래픽의 경우 지연 시간이 증가할 수 있고 또는 자동 확장이 트리거될 수 있습니다. 최상의 환경을 위해서는 새 모델을 배포하는 동안 배포 리소스 풀에서 높은 트래픽을 피하는 것이 좋습니다.

배포 리소스 풀의 기존 트래픽은 모델을 배포 해제할 때 영향을 받지 않습니다. 모델을 배포 해제하는 동안에는 기존 트래픽의 CPU 사용률 또는 지연 시간에 영향이 없습니다.

비어 있는 배포 리소스 풀은 리소스 할당량을 소비하지 않습니다. 리소스는 첫 번째 모델이 배포될 때 배포 리소스 풀에 프로비저닝되고 마지막 모델이 배포 해제될 때 프로비저닝 해제됩니다.

단일 배포 리소스 풀의 모델은 CPU 및 메모리와 같은 리소스 측면에서 서로 격리되지 않습니다. 한 모델이 대부분의 리소스를 차지하는 경우 자동 확장을 트리거합니다.

제한사항

리소스 공유를 사용 설정하여 모델을 배포할 때는 다음과 같은 제한사항이 있습니다.

모델 배포

DeploymentResourcePool에 모델을 배포하려면 다음 단계를 완료합니다.

  1. 필요한 경우 배포 리소스 풀을 만듭니다.
  2. 필요한 경우 엔드포인트를 만듭니다.
  3. 엔드포인트 ID를 검색합니다.
  4. 배포 리소스 풀의 엔드포인트에 모델을 배포합니다.

배포 리소스 풀 만들기

기존 DeploymentResourcePool에 모델을 배포하는 경우 이 단계를 건너뜁니다.

CreateDeploymentResourcePool을 사용하여 리소스 풀을 만듭니다.

Cloud 콘솔

  1. Google Cloud 콘솔에서 Vertex AI 배포 리소스 풀 페이지로 이동합니다.

    배포 리소스 풀로 이동

  2. 만들기를 클릭하고 양식을 작성합니다(아래 참조).

REST

요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • LOCATION_ID: Vertex AI를 사용하는 리전
  • PROJECT_ID: 프로젝트 ID
  • MACHINE_TYPE: 선택사항. 이 배포의 각 노드에 사용되는 머신 리소스입니다. 기본 설정은 n1-standard-2입니다. 머신 유형에 대해 자세히 알아보세요.
  • ACCELERATOR_TYPE: 머신에 연결할 가속기 유형. ACCELERATOR_COUNT가 지정되지 않았거나 0인 경우 선택사항입니다. GPU가 아닌 이미지를 사용하는 AutoML 모델 또는 커스텀 학습 모델에 사용하지 않는 것이 좋습니다. 여기서 자세히 알아보세요.
  • ACCELERATOR_COUNT: 사용할 각 복제본의 가속기 수. 선택사항. GPU가 아닌 이미지를 사용하는 AutoML 모델 또는 커스텀 학습 모델의 경우 0이거나 지정되지 않은 상태여야 합니다.
  • MIN_REPLICA_COUNT: 이 배포의 최소 노드 수. 예측 로드 시 필요에 따라 최대 노드 수까지 노드 수를 늘리거나 줄일 수 있으며 이 노드 수 미만으로는 줄일 수 없습니다. 값은 1 이상이어야 합니다.
  • MAX_REPLICA_COUNT: 이 배포의 최대 노드 수. 예측 로드 시 필요에 따라 이 노드 수까지 노드 수를 늘리거나 줄일 수 있으며 최소 노드 수 미만으로는 줄일 수 없습니다.
  • DEPLOYMENT_RESOURCE_POOL_ID: DeploymentResourcePool의 이름입니다. 최대 길이는 63자(영문 기준)이며 유효한 문자는 /^[a-z]([a-z0-9-]{0,61}[a-z0-9])?$/입니다.

HTTP 메서드 및 URL:

POST https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/deploymentResourcePools

JSON 요청 본문:

{
  "deploymentResourcePool":{
    "dedicatedResources":{
      "machineSpec":{
        "machineType":"MACHINE_TYPE",
        "acceleratorType":"ACCELERATOR_TYPE",
        "acceleratorCount":"ACCELERATOR_COUNT"
      },
      "minReplicaCount":MIN_REPLICA_COUNT,
      "maxReplicaCount":MAX_REPLICA_COUNT
    }
  },
  "deploymentResourcePoolId":"DEPLOYMENT_RESOURCE_POOL_ID"
}

요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

다음과 비슷한 JSON 응답이 표시됩니다.

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/deploymentResourcePools/DEPLOYMENT_RESOURCE_POOL_ID/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.aiplatform.v1beta1.CreateDeploymentResourcePoolOperationMetadata",
    "genericMetadata": {
      "createTime": "2022-06-15T05:48:06.383592Z",
      "updateTime": "2022-06-15T05:48:06.383592Z"
    }
  }
}

응답에 "done": true가 포함될 때까지 작업 상태를 폴링할 수 있습니다.

엔드포인트 만들기

안내에 따라 엔드포인트를 만듭니다. 이 단계는 단일 모델 배포와 동일합니다.

엔드포인트 ID 검색

안내에 따라 엔드포인트 ID를 검색합니다. 이 단계는 단일 모델 배포와 동일합니다.

배포 리소스 풀에 모델 배포

DeploymentResourcePool 및 엔드포인트를 만든 후 DeployModel API 메서드를 사용하여 배포할 수 있습니다. 이 프로세스는 단일 모델 배포와 비슷합니다. DeploymentResourcePool이 있으면 배포하는 DeploymentResourcePool의 리소스 이름으로 DeployModelshared_resources를 지정합니다.

Cloud 콘솔

  1. Google Cloud 콘솔에서 Vertex AI Model Registry 페이지로 이동합니다.

    Model Registry로 이동

  2. 모델을 찾아 엔드포인트에 배포를 클릭합니다.

  3. 모델 설정(아래 참조)에서 공유 배포 리소스 풀에 배포를 선택합니다.

REST

요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • LOCATION_ID: Vertex AI를 사용하는 리전
  • PROJECT: 프로젝트 ID
  • ENDPOINT_ID: 엔드포인트의 ID
  • MODEL_ID: 배포할 모델의 ID
  • DEPLOYED_MODEL_NAME: DeployedModel의 이름. DeployedModelModel 표시 이름도 사용할 수 있습니다.
  • DEPLOYMENT_RESOURCE_POOL_ID: DeploymentResourcePool의 이름입니다. 최대 길이는 63자(영문 기준)이며 유효한 문자는 /^[a-z]([a-z0-9-]{0,61}[a-z0-9])?$/입니다.
  • TRAFFIC_SPLIT_THIS_MODEL: 이 작업과 함께 배포되는 모델로 라우팅될 이 엔드포인트에 대한 예측 트래픽 비율입니다. 기본값은 100입니다. 모든 트래픽 비율의 합은 100이 되어야 합니다. 트래픽 분할에 대해 자세히 알아보기
  • DEPLOYED_MODEL_ID_N: (선택사항) 다른 모델이 이 엔드포인트에 배포된 경우 모든 비율의 합이 100이 되도록 트래픽 분할 비율을 업데이트해야 합니다.
  • TRAFFIC_SPLIT_MODEL_N: 배포된 모델 ID 키의 트래픽 분할 비율 값
  • PROJECT_NUMBER: 프로젝트의 자동으로 생성된 프로젝트 번호

HTTP 메서드 및 URL:

POST https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT/locations/LOCATION/endpoints/ENDPOINT_ID:deployModel

JSON 요청 본문:

{
  "deployedModel": {
    "model": "projects/PROJECT/locations/us-central1/models/MODEL_ID",
    "displayName": "DEPLOYED_MODEL_NAME",
    "sharedResources":"projects/PROJECT/locations/us-central1/deploymentResourcePools/DEPLOYMENT_RESOURCE_POOL_ID"
  },
  "trafficSplit": {
    "0": TRAFFIC_SPLIT_THIS_MODEL,
    "DEPLOYED_MODEL_ID_1": TRAFFIC_SPLIT_MODEL_1,
    "DEPLOYED_MODEL_ID_2": TRAFFIC_SPLIT_MODEL_2
  },
}

요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

다음과 비슷한 JSON 응답이 표시됩니다.

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION/endpoints/ENDPOINT_ID/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.aiplatform.v1beta1.DeployModelOperationMetadata",
    "genericMetadata": {
      "createTime": "2022-06-19T17:53:16.502088Z",
      "updateTime": "2022-06-19T17:53:16.502088Z"
    }
  }
}

동일한 배포 리소스 풀에 여러 모델을 배포하려면 동일한 공유 리소스를 가진 여러 모델에 대해 위의 요청을 반복합니다.

예측 가져오기

Vertex AI에 배포된 다른 모델에서와 마찬가지로 DeploymentResourcePool의 모델로 예측 요청을 전송할 수 있습니다.