피드로 돌아가기
Deploying Hugging Face Models with BentoML: DeepFloyd IF in Action
Hugging Face BlogHugging Face Blog
AI/ML

BentoML을 활용해 Hugging Face의 DeepFloyd IF 텍스트-이미지 생성 모델을 프로덕션 환경에 배포하는 엔드-투-엔드 워크플로우 구현

Deploying Hugging Face Models with BentoML: DeepFloyd IF in Action

2023년 8월 9일10intermediate

Context

Hugging Face Hub는 모델 학습 시간을 단축하지만, 프로덕션 환경 배포 및 클라우드-네이티브 방식의 운영에는 여전히 과제가 존재한다. DeepFloyd IF 같은 대규모 멀티스테이지 모델의 경우 각 스테이지별 독립적인 스케일링과 GPU 리소스 할당이 필요하다.

Technical Solution

  • 모델 저장: Hugging Face에서 다운로드한 DeepFloyd IF의 Stage 1, Stage 2, Stage 3 모델을 BentoML Local Model Store에 저장
  • 서비스 정의: service.py 파일에서 to_runner 메서드로 3개의 Runner를 생성하고 JSON 입력(프롬프트, 네거티브 프롬프트)을 받아 이미지를 반환하는 API 노출
  • Bento 패키징: bentofile.yaml에 서비스, Python 패키지, 모델 메타데이터를 정의해 모든 코드와 의존성을 포함한 배포 가능 아티팩트 생성
  • 컨테이너화: bentoml containerize 명령으로 Bento를 Docker 이미지로 변환
  • 클라우드 배포: 생성된 Docker 이미지를 Kubernetes에 배포하거나 Yatai(오픈소스 ML 배포 자동화 솔루션)에 직접 배포

Key Takeaway

BentoML의 Runner 기반 아키텍처는 멀티스테이지 생성 모델에서 각 처리 단계별 GPU Pod을 독립적으로 스케일링할 수 있도록 설계되었으며, YAML 기반 선언적 패키징으로 프로덕션 배포의 복잡성을 크게 단순화한다.


Hugging Face 모델을 Kubernetes 클러스터에 배포해야 하는 팀에서 BentoML의 Runner 추상화와 bentofile.yaml 선언 방식을 적용하면, 멀티스테이지 추론 파이프라인의 각 단계별 GPU 리소스 할당을 독립적으로 제어할 수 있고 Docker 이미지 생성부터 Kubernetes 배포까지의 CI/CD 프로세스를 단순화할 수 있다.

원문 읽기