在 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.com API를 활성화해야 한다.
  • 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