이 프로젝트는 Google Cloud Run의 GPU 기능을 사용하여 vLLM 기반의 LLM 추론 서비스를 배포하는 것을 목표로 합니다.
- 목적: Cloud Run GPU에서 vLLM을 사용하여 LLM 추론 서비스 실행
- 모델: Google의 Gemma 2 2B (기본값, 변경 가능)
- API: OpenAI 호환 API 제공
- 참고 자료: Google Codelabs - vLLM 및 Cloud Run GPU
vLLM-cloud-run/
├── main.py # vLLM 서버 애플리케이션 코드
├── requirements.txt # Python 의존성 패키지
├── Dockerfile # Docker 이미지 빌드 설정
├── cloudbuild.yaml # Cloud Build 설정 파일
├── setup.sh # 초기 설정 스크립트
├── deploy.sh # 배포 스크립트
├── test-local.sh # 로컬 테스트 스크립트
└── README.md # 프로젝트 문서
-
Google Cloud 계정 및 프로젝트
- GCP 프로젝트가 생성되어 있어야 합니다
- Cloud Run, Cloud Build, Secret Manager, Artifact Registry API가 활성화되어 있어야 합니다
-
Hugging Face 계정 및 토큰
- Hugging Face 계정 생성
- Gemma 2 모델 라이선스 동의: https://huggingface.co/google/gemma-2-2b-it
- Access Token 생성: https://huggingface.co/settings/tokens
-
로컬 환경
gcloudCLI 설치 및 인증 완료docker설치 (로컬 테스트용)
터미널에서 다음 환경 변수를 설정합니다:
export PROJECT_ID=your-gcp-project-id
export HF_TOKEN=your-huggingface-token
export REGION=europe-west1 # 선택사항, 기본값: europe-west1
export SERVICE_NAME=vllm-gemma-2-2b-it # 선택사항프로젝트를 처음 설정할 때 한 번만 실행합니다:
chmod +x setup.sh
./setup.sh이 스크립트는 다음 작업을 수행합니다:
- 필요한 Google Cloud API 활성화
- 서비스 계정 생성 및 권한 부여
- Secret Manager에 Hugging Face 토큰 저장
- Artifact Registry 리포지토리 생성
Cloud Run에 서비스를 배포합니다:
chmod +x deploy.sh
./deploy.sh이 스크립트는 다음 작업을 수행합니다:
- Docker 이미지 빌드 (Cloud Build 사용)
- Artifact Registry에 이미지 푸시
- Cloud Run에 서비스 배포 (GPU 포함)
배포가 완료되면 서비스를 테스트할 수 있습니다:
# 서비스 URL 가져오기
SERVICE_URL=$(gcloud run services describe vllm-gemma-2-2b-it \
--region europe-west1 \
--format 'value(status.url)')
# API 호출 테스트
curl -X POST $SERVICE_URL/v1/completions \
-H "Authorization: bearer $(gcloud auth print-identity-token)" \
-H "Content-Type: application/json" \
-d '{
"model": "google/gemma-2-2b-it",
"prompt": "Cloud Run is a",
"max_tokens": 128,
"temperature": 0.90
}'로컬에서 Docker를 사용하여 테스트할 수 있습니다 (GPU가 있는 경우):
chmod +x test-local.sh
./test-local.sh주의: 로컬 테스트는 GPU가 필요하며, CPU 모드는 매우 느립니다.
vLLM 서버의 메인 애플리케이션 코드입니다. OpenAI 호환 API를 제공하는 FastAPI 서버를 실행합니다.
주요 기능:
- vLLM 엔진 초기화
- OpenAI 호환 API 엔드포인트 제공
- 환경 변수를 통한 설정 관리
Docker 이미지를 빌드하기 위한 설정 파일입니다.
주요 내용:
- Python 3.10 베이스 이미지 사용
- 필요한 시스템 패키지 설치
- Python 의존성 설치
- 애플리케이션 코드 복사 및 실행 설정
Cloud Build를 사용한 자동 빌드 및 배포 설정 파일입니다.
주요 단계:
- Docker 이미지 빌드
- Artifact Registry에 이미지 푸시
- Cloud Run에 서비스 배포
프로젝트 초기 설정을 자동화하는 스크립트입니다.
수행 작업:
- API 활성화
- 서비스 계정 생성 및 권한 부여
- Secret Manager 설정
- Artifact Registry 리포지토리 생성
서비스를 Cloud Run에 배포하는 스크립트입니다.
수행 작업:
- Cloud Build를 통한 이미지 빌드 및 배포
- 서비스 URL 확인 및 테스트 명령어 제공
PROJECT_ID: Google Cloud 프로젝트 IDHF_TOKEN: Hugging Face 액세스 토큰
REGION: Cloud Run 리전 (기본값:europe-west1)SERVICE_NAME: 서비스 이름 (기본값:vllm-gemma-2-2b-it)MODEL_NAME: 사용할 모델 이름 (기본값:google/gemma-2-2b-it)AR_REPO_NAME: Artifact Registry 리포지토리 이름 (기본값:vllm-gemma-2-2b-it-repo)
- Hugging Face 토큰이 올바르게 설정되었는지 확인
- 모델 라이선스에 동의했는지 확인
- Secret Manager에 토큰이 올바르게 저장되었는지 확인
- Cloud Run GPU 할당량이 있는지 확인
- 리전에 GPU가 사용 가능한지 확인
- 서비스 계정에 필요한 권한이 있는지 확인
- Cloud Build API가 활성화되었는지 확인
- Artifact Registry 리포지토리가 생성되었는지 확인
- Dockerfile의 문법이 올바른지 확인
프로젝트를 삭제하려면:
# Cloud Run 서비스 삭제
gcloud run services delete vllm-gemma-2-2b-it --region europe-west1
# 서비스 계정 삭제
gcloud iam service-accounts delete vllm-gemma-2-2b-it@$PROJECT_ID.iam.gserviceaccount.com
# Secret 삭제
gcloud secrets delete HF_TOKEN
# Artifact Registry 리포지토리 삭제
gcloud artifacts repositories delete vllm-gemma-2-2b-it-repo \
--location=europe-west1이 프로젝트는 Google Codelabs의 튜토리얼을 기반으로 합니다.