Vertex AI에 Hugging Face ViT 배포

Hugging Face는 Vision Transformer(ViT) 모델을 Vertex AI 플랫폼에 배포하는 워크플로우를 자세히 설명했습니다. 이 접근 방식은 인프라 관리에 필요한 코드를 크게 줄이면서 Kubernetes 기반 배포의 확장성을 달성할 수 있게 합니다.

모델 배포를 위한 Vertex AI 기능

Vertex AI는 전체 ML 워크플로우를 위한 통합 API를 제공하는 관리형 머신러닝 플랫폼입니다. 모델 배포를 위해 여러 프로덕션 준비 기능을 제공합니다:

  • 자동 스케일링: 들어오는 트래픽에 따라 리소스를 자동으로 조정합니다.
  • 트래픽 관리: 서로 다른 모델 버전 간 트래픽 분할 및 손쉬운 롤백을 위한 모델 버전 관리를 지원합니다.
  • 운영 제어: 인증, 속도 제한, 통합 모델 모니터링 및 로깅을 포함합니다.
  • 예측 지원: 온라인 및 배치 예측 요청을 모두 처리합니다.

가이드에서는 TensorFlow에 중점을 두지만, Vertex AI는 PyTorch와 scikit-learn 프레임워크도 지원합니다.

서빙 모델 아키텍처

배포는 TensorFlow로 구현된 ViT B/16 모델을 사용합니다. 학습‑서빙 불일치를 최소화하기 위해 모델은 SavedModel로 직렬화되며, 전처리 및 후처리 작업이 그래프에 직접 포함됩니다.

모델 입력 및 출력:

  • 입력: 모델은 이미지의 base64 인코딩 문자열을 받아 네트워크 전송 중 변형을 방지합니다. 전처리 단계에는 이미지를 224x224로 리사이즈하고, [-1, 1] 범위로 표준화하며, channels_first 메모리 레이아웃으로 전치하는 것이 포함됩니다.
  • 출력: 모델은 예측 레이블(문자열)과 신뢰도 점수(실수)를 반환합니다.

모델 아티팩트는 Vertex AI에 배포하기 전에 Google Cloud Storage(GCS) 버킷에 저장되어야 합니다.

배포 워크플로우

배포는 google-cloud-aiplatform Python SDK를 통해 관리되며 네 단계 프로세스를 따릅니다:

1. 모델 업로드

SavedModel은 저장 및 버전 관리를 담당하는 완전 관리형 레지스트리인 Vertex AI Model Registry에 업로드됩니다. 이 단계에서는 TensorFlow 서빙을 위해 Vertex AI가 제공하는 사전 구축 Docker 이미지에 대한 container_spec이 필요합니다.

2. 엔드포인트 생성

엔드포인트는 요청을 수신하고 응답을 전송하기 위한 인터페이스로 생성됩니다. 이는 모델에 대한 관리형 진입점을 제공합니다.

3. 모델 배포

업로드된 모델은 엔드포인트에 연결됩니다. 이 단계에서 하드웨어 사양은 dedicated_resources 아래에 정의됩니다:

  • 머신 유형: 기본 컴퓨팅을 정의합니다(예: n1-standard-8은 8 vCPU와 32GB RAM).
  • 가속기: GPU 유형(예: NVIDIA_TESLA_T4)과 복제당 가속기 수를 지정합니다.
  • 스케일링: 자동 스케일링을 위한 min_replica_countmax_replica_count를 설정합니다.

4. 예측 요청

예측은 PredictionServiceClient를 사용하여 수행됩니다. 이미지와 같은 바이너리 데이터의 경우 요청 페이로드는 다음과 같이 형식화되어야 합니다: {serving_input: {"b64": base64_encoded_string}}.

성능 및 모니터링

Vertex AI는 가속기 사용률과 같은 엔드포인트 성능 및 자원 활용도를 추적하는 내장 모니터링 도구를 제공합니다.

로드 테스트 결과: Locust를 사용한 로컬 부하 테스트에서 팀은 약 17,230개의 요청을 처리했으며 평균 지연 시간은 646밀리초였습니다.

가격 개요

비용은 컴퓨트 노드와 부착된 가속기의 시간당 요금을 기준으로 합니다. 게시물에 사용된 예시를 기준으로:

리소스 사양 시간당 가격 (USD)
머신 유형 n1-standard-8 (8vCPU, 30GB) $0.4372
가속기 NVIDIA_TESLA_T4 $0.4024

사용자는 노드가 실제 예측 요청을 처리할 때만 비용이 청구됩니다.

Sources