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