롤링 배포를 사용하여 배포된 모델 교체

롤링 배포에서는 배포된 모델이 동일한 모델의 새 버전으로 대체됩니다. 새 모델은 이전 모델의 컴퓨팅 리소스를 재사용합니다.

롤링 배포 요청에서 트래픽 분할 및 dedicatedResources 값은 이전 배포와 동일합니다. 롤링 배포가 완료되면 이전 DeployedModel의 모든 트래픽이 새 배포로 이전되었음을 나타내도록 트래픽 분할이 업데이트됩니다.

DeployedModel의 다른 구성 가능한 필드 (예: serviceAccount, disableContainerLogging, enableAccessLogging)는 기본적으로 이전 DeployedModel와 동일한 값으로 설정됩니다. 하지만 원하는 경우 이러한 필드에 새 값을 지정할 수 있습니다.

롤링 배포를 사용하여 모델을 배포하면 새 DeployedModel가 생성됩니다. 새 DeployedModel는 이전 ID와 다른 새 ID를 수신합니다. 또한 rolloutOptions 필드에서 새 revisionNumber 값을 수신합니다.

동일한 백업 리소스를 타겟팅하는 롤링 배포가 여러 개인 경우 revisionNumber가 가장 높은 DeployedModel가 의도된 최종 상태로 취급됩니다.

롤링 배포가 진행되면 이전 DeployedModel의 기존 복제본이 모두 새 DeployedModel의 복제본으로 대체됩니다. 이 과정은 빠르게 이루어지며, 배포에 사용 가능한 복제본이 충분하거나 추가 복제본을 가져올 수 있는 서지 용량이 충분할 때마다 복제본이 업데이트됩니다.

또한 롤링 배포가 진행됨에 따라 이전 DeployedModel의 트래픽이 점진적으로 새 DeployedModel로 이전됩니다. 트래픽은 각 DeployedModel의 게재 준비가 완료된 복제본 수에 비례하여 부하 분산됩니다.

상태 경로가 200이 아닌 응답 코드를 지속적으로 반환하여 롤링 배포의 새 복제본이 준비되지 않는 경우 준비되지 않은 복제본에는 트래픽이 전송되지 않습니다. 이 경우 롤링 배포가 결국 실패하고 복제본이 이전 DeployedModel로 되돌아갑니다.

순차적 배포 시작

롤링 배포를 시작하려면 다음 예와 같이 모델 배포 요청에 rolloutOptions 필드를 포함합니다.

REST

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

  • LOCATION_ID: Vertex AI를 사용하는 리전
  • PROJECT_ID: 프로젝트 ID
  • ENDPOINT_ID: 엔드포인트의 ID
  • MODEL_ID: 배포할 모델의 ID
  • PREVIOUS_DEPLOYED_MODEL: 동일한 엔드포인트에 있는 모델의 DeployedModel ID입니다. 이는 지원 리소스를 재사용할 DeployedModel를 지정합니다. GetEndpoint를 호출하여 엔드포인트에 배포된 모델 목록과 숫자 ID를 가져올 수 있습니다.
  • MAX_UNAVAILABLE_REPLICAS: 롤링 배포 중에 다운할 수 있는 모델 복제본 수입니다.
  • MAX_SURGE_REPLICAS: 롤링 배포 중에 가져올 수 있는 추가 모델 복제본 수입니다. 이 값을 0으로 설정하면 기존 용량만 사용됩니다.

HTTP 메서드 및 URL:

POST https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:deployModel

JSON 요청 본문:

{
  "deployedModel": {
    "model": "projects/PROJECT_ID/locations/LOCATION_ID/models/MODEL_ID",
    "rolloutOptions": {
      "previousDeployedModel": "PREVIOUS_DEPLOYED_MODEL",
      "maxUnavailableReplicas": "MAX_UNAVAILABLE_REPLICAS",
      "maxSurgeReplicas": "MAX_SURGE_REPLICAS"
    }
  }
}

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

성공 상태 코드(2xx)와 빈 응답을 받게 됩니다.

원하는 경우 다음 예와 같이 maxSurgeReplicasmaxUnavailableReplicas 또는 둘 다를 비율 값으로 바꿀 수 있습니다.

REST

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

  • MAX_UNAVAILABLE_PERCENTAGE: 롤링 배포 중에 다운될 수 있는 모델 복제본의 비율입니다.
  • MAX_SURGE_PERCENTAGE: 롤링 배포 중에 가져올 수 있는 추가 모델 복제본의 비율입니다. 이 값을 0으로 설정하면 기존 용량만 사용됩니다.

HTTP 메서드 및 URL:

POST https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:deployModel

JSON 요청 본문:

{
  "deployedModel": {
    "model": "projects/PROJECT/locations/LOCATION_ID/models/MODEL_ID",
    "rolloutOptions": {
      "previousDeployedModel": "PREVIOUS_DEPLOYED_MODEL",
      "maxUnavailablePercentage": "MAX_UNAVAILABLE_PERCENTAGE",
      "maxSurgePercentage": "MAX_SURGE_PERCENTAGE"
    }
  }
}

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

성공 상태 코드(2xx)와 빈 응답을 받게 됩니다.

롤링 배포 롤백

순차 배포를 롤백하려면 진행 중인 순차 배포의 DeployedModel ID를 previousDeployedModel로 사용하여 이전 모델의 새 순차 배포를 시작합니다.

진행 중인 배포의 DeployedModel ID를 가져오려면 다음 예와 같이 GetEndpoint 호출에서 매개변수 allDeploymentStates=true를 설정합니다.

REST

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

  • LOCATION_ID: Vertex AI를 사용하는 리전
  • PROJECT_ID: 프로젝트 ID
  • ENDPOINT_ID: 엔드포인트의 ID

HTTP 메서드 및 URL:

GET https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID?allDeploymentStates=true

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

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

{
  "name": "projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID",
  "displayName": "rolling-deployments-endpoint",
  "deployedModels": [
    {
      "id": "2718281828459045",
      "model": "projects/PROJECT_ID/locations/LOCATION_ID/models/MODEL_ID@1",
      "displayName": "rd-test-model",
      "createTime": "2024-09-11T21:37:48.522692Z",
      "dedicatedResources": {
        "machineSpec": {
          "machineType": "e2-standard-2"
        },
        "minReplicaCount": 5,
        "maxReplicaCount": 5
      },
      "modelVersionId": "1",
      "state": "BEING_DEPLOYED"
    }
  ],
  "etag": "AMEw9yMs3TdZMn8CUg-3DY3wS74bkIaTDQhqJ7-Ld_Zp7wgT8gsEfJlrCOyg67lr9dwn",
  "createTime": "2024-09-11T21:22:36.588538Z",
  "updateTime": "2024-09-11T21:27:28.563579Z",
  "dedicatedEndpointEnabled": true,
  "dedicatedEndpointDns": "ENDPOINT_ID.LOCATION_ID-PROJECT_ID.prediction.vertexai.goog"
}

제약조건 및 제한사항

  • 이전 DeployedModel는 새 DeployedModel와 동일한 엔드포인트에 있어야 합니다.
  • 동일한 previousDeployedModel로 여러 개의 롤링 배포를 만들 수 없습니다.
  • 완전히 배포되지 않은 DeployedModel 위에 롤링 배포를 만들 수 없습니다. 예외: previousDeployedModel 자체가 진행 중인 순차 배포인 경우 그 위에 새 순차 배포를 만들 수 있습니다. 이렇게 하면 실패하기 시작한 배포를 롤백할 수 있습니다.
  • 이전 모델은 롤링 배포가 완료된 후 자동으로 배포 해제되지 않습니다. 모델을 수동으로 배포 해제할 수 있습니다.
  • 공유 공개 엔드포인트에서 순차적으로 배포하는 경우 새 모델의 predictRoutehealthRoute는 이전 모델과 동일해야 합니다.
  • 롤링 배포는 모델 공동 호스팅과 호환되지 않습니다.
  • 온라인 설명이 필요한 모델에는 롤링 배포를 사용할 수 없습니다.