롤링 배포를 사용하여 배포된 모델 바꾸기

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

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

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

롤링 배포를 사용하여 모델을 배포하면 새 DeployedModel이 생성됩니다. 새 DeployedModel에는 이전 모델과 다른 새 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가 이전 모델과 동일해야 합니다.
  • 롤링 배포는 모델 공동 호스팅과 호환되지 않습니다.
  • 온라인 설명이 필요한 모델에는 롤링 배포를 사용할 수 없습니다.