Google Cloud에 Serverless Transformers 파이프라인 배포
Hugging Face 커뮤니티 회원인 Maxence Dominici는 Google Cloud Platform(GCP)에서 감성 분석 마이크로서비스를 배포하는 워크플로우를 상세히 설명했습니다. 최종 구현은 Google Cloud Run을 통한 서버리스 아키텍처를 사용하여, 저볼륨 요청 패턴에 대해 distilbert-base-uncased-finetuned-sst-2-english 모델을 비용 효율적으로 배포합니다.
Google Cloud Run을 통한 서버리스 배포
Google Cloud Run은 변환기 모델을 로드하는 데 필요한 유연한 메모리와 vCPU 구성을 제공하기 때문에 선택된 프로덕션 환경입니다. 최종 아키텍처는 Docker 컨테이너에 래핑된 Flask 애플리케이션으로 구성되며, 관리형 서비스로 배포됩니다.
기술 구성 요소
- Model:
distilbert-base-uncased-finetuned-sst-2-english모델을 사용하며, 특히 PyTorch 버전(pytorch_model.bin,config.json,vocab.txt)을 사용합니다. - Application Logic:
main.py파일이 GET 요청을 처리하며, 리뷰 문자열과 기본 보안을 위한 API 키를 필요로 합니다. - Containerization:
python:3.7기반Dockerfile이gunicorn을 엔트리포인트로 사용해 Flask 앱을 서비스합니다. - Dependencies: 환경에는
Flask==1.1.2,torch===1.7.1,transformers~=4.2.0,gunicorn>=20.0.0이 필요합니다.
리소스 구성
메모리 오류를 방지하고 비용을 제어하기 위해 인스턴스를 다음과 같이 구성합니다:
- Memory: 기본 256 MB에서 4 GB로 업그레이드.
- Concurrency: Gunicorn 설정을
--workers 1 --threads 1로 지정합니다. 이는 하나의 프로세스와 하나의 스레드만 활성화되어, 다중 인스턴스가 과도한 메모리를 사용하고 청구가 증가하는 것을 방지합니다.
GCP 서비스 평가
Cloud Run을 최종 선택하기 전에 여러 Google Cloud 서비스를 테스트하여 Hugging Face 파이프라인을 배포하기에 가장 적합한 경로를 찾았습니다:
| Service | Outcome | Reason for Rejection |
|---|---|---|
| AI-Platform Prediction | Failed | 모델이 체크포인트이며 "pure TensorFlow" 저장 모델이 아니어서 베타 안정성 문제가 발생했습니다. |
| App Engine | Failed | TensorFlow 설치 중 시스템 종속 파일이 누락되는 문제가 발생했습니다; PyTorch는 작동했지만 인스턴스당 두 개 이상의 요청을 처리할 수 없었습니다. |
| Cloud Run | Success | Docker 이미지로 메모리와 vCPU 제어를 제공했습니다. |
성능 및 비용 분석
Latency
요청 처리 시간은 모델 로드와 예측을 포함해 일반적으로 5초 미만이며, 콜드 스타트 시 약 10초 정도의 추가 지연이 발생할 수 있습니다. 저자는 "워밍"을 통해 성능을 더욱 향상시킬 수 있다고 언급했습니다.