롤링 배포에서는 배포된 모델이 동일한 모델의 새 버전으로 대체됩니다. 새 모델은 이전 모델의 컴퓨팅 리소스를 재사용합니다.
롤링 배포 요청에서 트래픽 분할 및 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)와 빈 응답을 받게 됩니다.
원하는 경우 다음 예와 같이 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
는 이전 모델과 동일해야 합니다. - 롤링 배포는 모델 공동 호스팅과 호환되지 않습니다.
- 온라인 설명이 필요한 모델에는 롤링 배포를 사용할 수 없습니다.