在 Cloud Run 上部署Gradio 應用
개요
Cloud Run에 Gradio 애플리케이션을 배포하는 과정을 안내하며, Gradio와 Cloud Run의 특징을 소개하고 실제 "Hello World" 예제를 통해 배포 절차를 설명한다.
주요 내용
- Cloud Run 소개: HTTP 요청으로 트리거되는 Stateless 컨테이너를 실행할 수 있는 완전 관리형 컴퓨팅 플랫폼으로, Knative 기반이며 높은 이식성을 제공한다. 인프라 관리를 자동화하여 개발자가 코드 작성에 집중하도록 돕는다.
- Gradio 소개: 머신러닝 모델이나 Python 함수에 사용하기 쉬운 웹 UI를 생성하는 Python 라이브러리로, LLM 모델 테스트 인터페이스나 템플릿, 공유 링크 기능을 지원한다.
- 필수 API 활성화: Cloud Run에서 소스 코드 기반 컨테이너 빌드 및 배포를 위해
artifactregistry.googleapis.com,cloudbuild.googleapis.com,run.googleapis.comAPI를 활성화해야 한다. - Gradio 애플리케이션 작성:
-
requirements.txt파일에gradio,gunicorn,uvicorn라이브러리를 명시한다. -
Dockerfile을 작성하여 Python 3.10-slim 이미지를 기반으로 시스템 종속성(ffmpeg) 설치, 작업 디렉토리 설정, 요구사항 설치, 애플리케이션 코드 복사, Cloud Run이 예상하는 포트(ENV PORT 8080) 설정, 그리고gunicorn을 이용한 실행 명령어(CMD)를 정의한다. -
app.py파일에 간단한hello함수와gradio.Interface를 사용하여 웹 UI를 구성한다. - 애플리케이션 로컬 테스트: 가상 환경 생성 및 활성화,
requirements.txt기반 패키지 설치 후python app.py명령어로 로컬에서 애플리케이션을 실행하고 Gradio share link를 통해 테스트한다. - Cloud Run 배포:
- 배포 지역(
REGION)을 설정한다. -
gcloud run deploy명령어를 사용하여 배포하며,--source .는 현재 디렉토리의 소스 코드로 빌드하도록 지시하고,--region으로 배포 지역을 지정하며,--allow-unauthenticated옵션으로 공개 접근을 허용한다. - 배포 과정에서 컨테이너 이미지가 빌드 및 Artifact Registry에 푸시되고, Cloud Run 서비스가 시작된다. 배포 완료 후 서비스 URL이 제공된다.
- 자원 정리: Cloud Run 서비스 삭제(
gcloud run services delete) 및 Artifact Registry의 이미지 삭제(gcloud artifacts repositories delete)를 통해 불필요한 비용 발생을 방지한다.
시사점
Cloud Run과 Gradio를 함께 사용하면 머신러닝 모델이나 Python 애플리케이션을 위한 웹 UI를 신속하게 개발하고, 별도의 인프라 관리 없이 손쉽게 클라우드 환경에 배포할 수 있다.
원문을 불러오는 중...
댓글
GitHub Discussions