롤링 배포에서 배포된 모델은 동일 모델의 새 버전으로 바뀝니다. 새 모델은 이전 모델의 컴퓨팅 리소스를 재사용합니다.
롤링 배포 요청에서 트래픽 분할 및 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: 동일한 엔드포인트에 있는 모델의
DeployedModelID입니다. 이는 해당 지원 리소스를 재사용해야 하는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)와 빈 응답을 받게 됩니다.
원하는 경우 다음 예시에 표시된 것처럼 maxSurgeReplicas 및 maxUnavailableReplicas를 백분율 값으로 바꿀 수 있습니다.
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이 그 자체로 진행 중인 롤링 배포인 경우 이를 사용하여 새 롤링 배포를 만들 수 있습니다. 따라서 현재 배포가 실패하기 시작하면 이전 버전으로 롤백할 수 있습니다. - 이전 모델은 롤링 배포가 성공적으로 완료된 후 배포 취소를 자동으로 수행하지 않습니다. 모델을 수동으로 배포 취소할 수 있습니다.
- 공유 공개 엔드포인트에서 롤링 배포를 수행하는 경우 새 모델의
predictRoute및healthRoute가 이전 모델과 동일해야 합니다. - 롤링 배포는 모델 공동 호스팅과 호환되지 않습니다.
- 온라인 설명이 필요한 모델에는 롤링 배포를 사용할 수 없습니다.