학습된 모델에서 온라인 예측을 가져오려면 먼저 모델을 엔드포인트에 배포해야 합니다. Google Cloud 콘솔, Google Cloud CLI 또는 Vertex AI API를 사용하여 이 작업을 수행할 수 있습니다.
이 문서에서는 엔드포인트에 모델을 배포하는 프로세스를 설명합니다.
모델을 배포하면 발생하는 일
모델을 배포하면 물리적 리소스가 모델과 연결되므로 짧은 지연 시간으로 온라인 예측을 제공할 수 있습니다.
엔드포인트에 여러 모델을 배포하거나 동일한 모델을 여러 엔드포인트에 배포할 수 있습니다. 자세한 내용은 동일한 엔드포인트에 둘 이상의 모델을 배포하는 이유를 참고하세요.
엔드포인트에 모델 배포 준비
모델 배포 시 온라인 예측을 실행하는 방법에 대해 다음과 같은 중요한 사항을 결정해야 합니다.
생성된 리소스 | 리소스 생성 시 지정된 설정 |
---|---|
엔드포인트 | 예측을 실행할 위치 |
모델 | 사용할 컨테이너(ModelContainerSpec ) |
DeployedModel | 온라인 예측에 사용할 컴퓨팅 리소스 |
모델이 엔드포인트에 배포된 후에는 이러한 배포 설정을 변경할 수 없습니다. 이를 변경하려면 모델을 다시 배포해야 합니다.
배포 프로세스의 첫 번째 단계는 사용할 엔드포인트 유형을 결정하는 것입니다. 자세한 내용은 엔드포인트 유형 선택을 참고하세요.
그런 다음 Vertex AI Model Registry에 모델이 표시되는지 확인합니다. 이는 모델을 배포할 수 있도록 하는 데 필요합니다. 모델 아티팩트를 가져오거나 Model Registry에서 직접 아티팩트를 생성하는 방법을 포함하여 Model Registry에 대한 자세한 내용은 Vertex AI Model Registry 소개를 참조하세요.
다음으로 결정해야 할 사항은 모델을 제공하는 데 사용할 컴퓨팅 리소스입니다.
모델의 학습 유형(AutoML 또는 커스텀) 및 (AutoML) 데이터 유형은 모델에 사용할 수 있는 물리적 리소스의 종류를 결정합니다. 모델을 배포한 후 새 배포를 만들지 않고도 이러한 리소스의 일부를 mutate
할 수 있습니다.
엔드포인트 리소스는 예측을 요청하는 데 사용하는 서비스 엔드포인트(URL)를 제공합니다. 예를 들면 다음과 같습니다.
https://us-central1-aiplatform.googleapis.com/v1/projects/{project}/locations/{location}/endpoints/{endpoint}:predict
엔드포인트에 모델 배포
Google Cloud 콘솔을 사용하거나 gcloud CLI 또는 Vertex AI API를 사용하여 엔드포인트에 모델을 배포할 수 있습니다.
Google Cloud 콘솔을 사용하여 공개 엔드포인트에 모델 배포
Google Cloud 콘솔에서 기존 전용 또는 공유 공개 엔드포인트에 모델을 배포하거나 배포 프로세스 중에 새 엔드포인트를 만들 수 있습니다. 자세한 내용은 Google Cloud 콘솔을 사용하여 모델 배포를 참고하세요.
gcloud CLI 또는 Vertex AI API를 사용하여 공개 엔드포인트에 모델 배포
gcloud CLI 또는 Vertex AI API를 사용하여 모델을 배포할 때는 먼저 전용 또는 공유 엔드포인트를 만든 다음 여기에 모델을 배포해야 합니다. 자세한 내용은 다음을 참고하세요.
Private Service Connect 엔드포인트에 모델 배포
자세한 내용은 온라인 예측에 Private Service Connect 엔드포인트 사용을 참고하세요.
순차적 배포를 사용하여 배포된 모델 업데이트
롤링 배포를 사용하여 배포된 모델을 동일한 모델의 새 버전으로 교체할 수 있습니다. 새 모델은 이전 모델의 컴퓨팅 리소스를 재사용합니다. 자세한 내용은 롤링 배포를 사용하여 배포된 모델 교체하기를 참고하세요.
모델 배포 취소 및 엔드포인트 삭제
모델 배포를 취소하고 엔드포인트를 삭제할 수 있습니다. 자세한 내용은 모델 리소스 배포 취소 및 엔드포인트 삭제를 참고하세요.
동일한 엔드포인트에 둘 이상의 모델을 배포하는 이유
2개의 모델을 동일한 엔드포인트에 배포하면 한 모델을 다른 모델로 점진적으로 교체할 수 있습니다. 예를 들어 모델을 사용 중이고 새 학습 데이터로 이 모델의 정확도를 늘릴 수 있는 방법을 찾았다고 가정해보세요. 단, 새로운 엔드포인트 URL을 가리키도록 애플리케이션을 업데이트하거나, 애플리케이션에서 갑작스런 변경사항을 적용하기를 원하지 않습니다. 새 모델을 동일한 엔드포인트에 추가하고 소량의 트래픽을 서빙하여 새 모델이 트래픽의 100%를 처리할 때까지 점진적으로 트래픽을 분할을 늘릴 수 있습니다.
리소스는 엔드포인트가 아니라 모델과 연결되어 있으므로 여러 유형의 모델을 동일한 엔드포인트에 배포할 수 있습니다. 하지만 특정 유형의 모델 (예: AutoML 테이블 형식 또는 커스텀 학습)을 엔드포인트에 배포하는 것이 가장 좋습니다. 이 구성은 더 쉽게 관리할 수 있습니다.
둘 이상의 엔드포인트에 하나의 모델을 배포하는 이유
테스트 및 프로덕션과 같은 여러 애플리케이션 환경에 대해 여러 리소스의 모델을 배포할 수 있습니다. 예측 요청에 대해 여러 SLO를 지원할 수도 있습니다. 애플리케이션 중 하나의 성능 요구사항이 다른 애플리케이션보다 훨씬 높을 수 있습니다. 이 경우 더 많은 머신 리소스를 사용하여 고성능 엔드포인트에 모델을 배포할 수 있습니다. 비용을 최적화하기 위해 머신 리소스를 줄여서 성능이 낮은 엔드포인트에 모델을 배포할 수도 있습니다.
확장 동작
온라인 예측을 위해 모델을 DeployedModel
로 배포할 때 예측 노드가 자동으로 확장되도록 구성할 수 있습니다. dedicatedResources.maxReplicaCount
를 dedicatedResources.minReplicaCount
보다 큰 값으로 설정하면 됩니다.
DeployedModel
을 구성할 때 dedicatedResources.minReplicaCount
를 1 이상으로 설정해야 합니다. 즉, 사용하지 않을 때 DeployedModel
이 예측 노드 0개로 축소되도록 구성할 수 없습니다.
기본적으로 배포 작업은 배포 요청 시간 초과 값 전에 예측 노드 수가 dedicatedResources.minReplicaCount
에 도달하는 경우에만 성공한 것으로 간주됩니다. 그렇지 않으면 배포가 실패로 표시되고 기본 리소스가 해제됩니다.
부분적으로 성공한 배포 및 변형
dedicatedResources.requiredReplicaCount
를 dedicatedResources.minReplicaCount
보다 작은 값으로 설정하여 기본 배포 동작을 수정할 수 있습니다. 이 경우 예측 노드 수가 dedicatedResources.requiredReplicaCount
에 도달하면 아직 완료되지 않았더라도 배포 작업이 성공한 것으로 표시됩니다. dedicatedResources.minReplicaCount
에 도달할 때까지 배포가 계속됩니다. 배포 요청 시간 전에 dedicatedResources.minReplicaCount
에 도달하지 못해도 작업은 성공하지만 실패한 복제본의 오류 메시지가 DeployedModel.status.message
에 반환됩니다.
커스텀 모델 서빙 할당량은 배포된 모델의 실시간 컴퓨팅 리소스 사용량을 기준으로 계산됩니다. 프로젝트의 모든 배포에 대한 maxReplicaCount
의 합계가 프로젝트의 할당량을 초과하면 할당량 소진으로 인해 일부 배포가 자동 확장되지 않을 수 있습니다.
엔드포인트는 머신별로 확장 및 축소되지만 할당량은 CPU 또는 GPU당 계산됩니다. 예를 들어 모델을 a2-highgpu-2g
머신 유형에 배포한 경우 각 활성 복제본은 프로젝트 할당량에 대해 CPU 24개와 GPU 2개로 계산됩니다. 자세한 내용은 할당량 및 제한을 참고하세요.
일괄 예측용 예측 노드는 자동으로 확장되지 않습니다.
Vertex AI에서 BatchDedicatedResources.startingReplicaCount
를 사용하고 BatchDedicatedResources.maxReplicaCount
를 무시합니다.
타겟 사용률 및 구성
기본적으로 전용 GPU 리소스가 없는 모델을 배포하면 Vertex AI가 자동으로 복제본 수를 확장하거나 CPU 사용량이 기본값인 60% 목표 값과 일치하도록 값을 낮춰줍니다.
기본적으로 전용 GPU 리소스가 있는 모델을 배포하면(machineSpec.accelerator_count
가 0보다 큰 경우) Vertex AI가 자동으로 복제본 수를 확장하거나 CPU 또는 GPU 사용량이 기본값인 60% 목표 값과 일치하도록 값을 낮춰줍니다. 따라서 예측 처리량에 따라 높은 GPU 사용량이 발생하지만 CPU 사용량이 높지 않으면 Vertex AI가 수직 확장되며 CPU 사용률은 매우 낮아서 모니터링에 표시됩니다. 반대로, 커스텀 컨테이너의 GPU 사용률이 낮지만 관련 없는 프로세스에서 CPU 사용률이 60%를 초과하는 경우 QPS와 지연 시간 목표를 달성하는 데 필요하지 않더라도 Vertex AI가 수직 확장됩니다.
autoscalingMetricSpecs
를 지정하여 기본 기준점 측정항목과 대상을 재정의할 수 있습니다.
CPU 사용량만을 기준으로 확장하도록 배포가 구성된 경우 GPU 사용량이 많아도 수직 확장되지 않습니다.
리소스 사용량 관리
엔드포인트를 모니터링하여 CPU 및 가속기 사용량, 요청 수, 지연 시간, 현재 및 타겟 복제본 수와 같은 측정항목을 추적할 수 있습니다. 이 정보를 통해 엔드포인트의 리소스 사용량과 확장 동작을 파악할 수 있습니다.
각 복제본은 컨테이너 하나만 실행한다는 점에 유의하세요. 즉, 멀티 코어 머신의 단일 스레드 코드 또는 예측 과정에서 다른 서비스를 호출하는 커스텀 모델과 같이 예측 컨테이너에서 선택한 컴퓨팅 리소스를 완전히 활용하지 못하는 경우, 노드가 수직 확장되지 않을 수 있습니다.
예를 들어 FastAPI 또는 작업자 수와 스레드를 구성할 수 있는 모델 서버를 사용하는 경우 작업자가 2명 이상 있어 리소스 사용률이 증가하는 경우가 많은데, 이렇게 되면 서비스가 복제본 수를 자동으로 확장하는 기능이 향상됩니다.
일반적으로 코어당 하나의 작업자나 스레드로 시작하는 것이 좋습니다. 특히 부하가 높은 상황에서 CPU 사용률이 낮거나 CPU 사용률이 낮아 모델이 수직 확장되지 않으면 작업자 수를 늘리세요. 반면 사용률이 너무 높고 부하가 걸렸을 때 지연 시간이 예상보다 크게 증가하면 작업자를 줄여보세요. 이미 단일 작업자만 사용 중인 경우 더 작은 머신 유형을 사용해 보세요.
확장 동작 및 지연
Vertex AI는 이전 5분 동안의 데이터를 사용하여 15초마다 복제본 수를 조정합니다. 15초 주기마다 시스템은 서버 사용률을 측정하고 다음 공식에 따라 대상 복제본 수를 생성합니다.
target # of replicas = Ceil(current # of replicas * (current utilization / target utilization))
예를 들어 사용률이 100%인 복제본이 2개 있는 경우 대상은 4입니다.
4 = Ceil(3.33) = Ceil(2 * (100% / 60%))
또 다른 예시로, 복제본이 10개 있고 사용률이 1%로 떨어지면 대상은 1입니다.
1 = Ceil(.167) = Ceil(10 * (1% / 60%))
각 15초 주기가 끝나면 시스템은 이전 5분 동안의 가장 높은 목표 값과 일치하도록 복제본 수를 조정합니다. 가장 높은 목표 값을 선택하면 전체 사용률이 매우 낮더라도 이 5분 기간 동안 사용률이 급증하는 경우 엔드포인트가 축소되지 않습니다. 반면 시스템을 수직 확장해야 하는 경우 평균 대신 가장 높은 목표 값이 선택되기 때문에 15초 이내에 수직 확장이 수행됩니다.
Vertex AI에서 복제본 수를 조정해도 복제본을 시작하거나 중지하는 데 시간이 걸립니다. 따라서 엔드포인트가 트래픽에 맞게 조정되기까지 추가 지연이 발생합니다. 이 기간에 영향을 미치는 주요 요인은 다음과 같습니다.
- Compute Engine VM을 프로비저닝하고 시작하는 데 걸리는 시간
- 레지스트리에서 컨테이너를 다운로드하는 시간
- 스토리지에서 모델을 로드하는 시간
모델의 실제 확장 동작을 이해하는 가장 좋은 방법은 부하 테스트를 실행하고 모델 및 사용 사례에 중요한 특성을 최적화하는 것입니다. 자동 확장 처리가 애플리케이션에 충분히 빠르게 확장되지 않으면 예상 기준 트래픽을 처리하기에 충분한 min_replicas
를 프로비저닝하세요.
확장 구성 업데이트
모델을 배포할 때 DedicatedResources
또는 AutomaticResources
를 지정한 경우 mutateDeployedModel
을 호출하여 모델을 다시 배포하지 않고 확장 구성을 업데이트할 수 있습니다.
예를 들어 다음 요청은 max_replica
, autoscaling_metric_specs
를 업데이트하고 컨테이너 로깅을 사용 중지합니다.
{
"deployedModel": {
"id": "2464520679043629056",
"dedicatedResources": {
"maxReplicaCount": 9,
"autoscalingMetricSpecs": [
{
"metricName": "aiplatform.googleapis.com/prediction/online/cpu/utilization",
"target": 50
}
]
},
"disableContainerLogging": true
},
"update_mask": {
"paths": [
"dedicated_resources.max_replica_count",
"dedicated_resources.autoscaling_metric_specs",
"disable_container_logging"
]
}
}
사용 참고사항:
- 머신 유형을 변경하거나
DedicatedResources
에서AutomaticResources
로 또는 그 반대로 전환할 수 없습니다. 변경할 수 있는 유일한 확장 구성 필드는min_replica
,max_replica
,required_replica
,AutoscalingMetricSpec
(DedicatedResources
만 해당)입니다. updateMask
에 업데이트하려는 모든 필드를 나열해야 합니다. 나열되지 않은 필드는 무시됩니다.- DeployedModel은
DEPLOYED
상태여야 합니다. 배포된 모델당 활성 변형 작업은 최대 하나만 가능합니다. - 또한
mutateDeployedModel
을 사용하면 컨테이너 로깅을 사용 설정 또는 사용 중지할 수 있습니다. 자세한 내용은 온라인 예측 로깅을 참조하세요.
다음 단계
- 엔드포인트 유형 선택
- Google Cloud 콘솔을 사용하여 모델 배포
- 전용 엔드포인트 및 Private Service Connect 엔드포인트의 예측 요청-응답 로깅에 대해 알아보세요.
- 온라인 예측 가져오기 방법 알아보기
- 예측 로깅의 기본 설정을 변경하는 방법을 알아보세요.