Hugging Face Inference Endpoints를 통해 MusicGen 배포하기

Inference Endpoints를 통한 MusicGen 배포

Hugging Face은 텍스트 프롬프트와 선택적 멜로디 조건을 통해 음악을 생성할 수 있는 MusicGen 모델을 Inference Endpoints를 사용하여 확장 가능한 API로 배포하는 가이드를 제공했습니다. 이 프로세스는 커스텀 핸들러를 사용하여 transformers 고수준 pipeline 추상화로 기본적으로 지원되지 않는 모델의 배포를 가능하게 합니다.

Inference Endpoints를 통한 비-파이프라인 모델에 대한 커스텀 핸들러 사용

Inference Endpoints는 일반적으로 원클릭 배포를 위해 transformers 파이프라인 API를 활용합니다. 그러나 MusicGen과 같이 특정 추론 로직이 필요한 모델의 경우, Hugging Face는 '커스텀 핸들러'를 사용합니다. 커스텀 핸들러는 사용자가 사전 정의된 파이프라인이 없는 비-Transformer 모델 또는 Transformer 모델을 배포할 수 있도록 하는 커스텀 추론 함수입니다.

이 방법을 사용하여 MusicGen을 배포하려면 다음 워크플로우가 필요합니다:

  1. 리포지토리 복제: target MusicGen repository (e.g., facebook/musicgen-large)를 개인 프로필에 복제합니다.
  2. 핸들러 구현: 사용자 정의 EndpointHandler 클래스를 포함하는 handler.py 파일과 필요한 의존성을 지정하는 requirements.txt 파일(예: transformers==4.31.0accelerate>=0.20.3)을 추가합니다.
  3. 엔드포인트 생성: 복제된 리포지토리를 선택하고 하드웨어 요구 사항을 지정하여 Inference Endpoint를 생성합니다.

MusicGen 핸들러의 기술적 구현

MusicGen용 커스텀 핸들러는 모델 로딩 및 요청 처리를 관리하기 위해 EndpointHandler 클래스의 __init____call__ 메서드를 오버라이드합니다:

  • Initialization (__init__): 제공된 경로에서 AutoProcessorMusicgenForConditionalGeneration 모델을 로드합니다. 모델은 torch_dtype=torch.float16로 로드되고 GPU(`.to(

Sources