피드로 돌아가기
Deploy MusicGen in no time with Inference Endpoints
Hugging Face BlogHugging Face Blog
Backend

Hugging Face가 Inference Endpoints에 custom handler를 추가하여 transformers pipeline을 지원하지 않는 MusicGen 모델을 클릭 몇 번만으로 배포 가능하게 구현

Deploy MusicGen in no time with Inference Endpoints

2023년 8월 4일10intermediate

Context

Inference Endpoints는 transformers 라이브러리의 고수준 추상화 파이프라인을 통해 모델을 배포하지만, MusicGen처럼 기본 파이프라인에서 지원하지 않는 모델들은 배포할 수 없는 한계가 있었다.

Technical Solution

  • EndpointHandler 클래스를 통한 custom handler 구현: __init__ 메서드에서 AutoProcessor와 MusicgenForConditionalGeneration 모델을 torch.float16 타입으로 로드하고 CUDA 디바이스에 할당
  • 요청 처리 로직 정의: __call__ 메서드에서 입력 텍스트를 processor로 처리한 후 model.generate() 메서드로 오디오 생성
  • torch.autocast를 사용한 GPU 최적화: CUDA 자동 혼합 정밀도(automatic mixed precision)로 추론 속도 향상
  • 의존성 선언: requirements.txt에 transformers==4.31.0과 accelerate>=0.20.3 명시
  • 저장소 복제 및 배포: facebook/musicgen-large 저장소를 개인 프로필로 복제 후 handler.py와 requirements.txt 추가하여 Inference Endpoints에 배포

Key Takeaway

Transformers 파이프라인이 지원하지 않는 모델도 custom handler 패턴을 통해 Inference Endpoints에 배포할 수 있으며, 이는 비Transformer 모델이나 완전히 다른 프레임워크의 모델까지 확장 가능한 설계 패턴이다.


Hugging Face Inference Endpoints를 사용하는 팀에서 커스텀 모델(특히 MusicGen, 비전 모델, 또는 다중 모달 모델)을 배포할 때, handler.py에 EndpointHandler 클래스의 `__init__`과 `__call__` 메서드만 오버라이드하고 requirements.txt를 추가하면 기존 파이프라인 제약 없이 HTTP 엔드포인트를 통해 서빙할 수 있다.

원문 읽기