bentoml/BentoML
The easiest way to serve AI apps and models - Build Model Inference APIs, Job queues, LLM apps, Multi-model pipelines, and more!
BentoML – 통합 모델 서빙 프레임워크
정의
- 몇 줄의 코드로 모든 AI/ML 모델(PyTorch, TensorFlow, Transformers 등)을 프로덕션 준비 추론 API로 변환할 수 있는 Python 라이브러리.
- 패키징, Docker 이미지 생성, Kubernetes 또는 기타 환경으로의 배포를 처리합니다.
주요 기능
- 간단한 API 정의 –
@bentoml.service및@bentoml.api로 클래스를 데코레이트하여 함수를 HTTP 엔드포인트로 노출합니다. - 자동 컨테이너화 –
bentoml build는 Bento(버전 관리된 아티팩트)를 생성하고,bentoml containerize는 코드, 모델, 종속성을 번들한 Docker 이미지를 생성합니다. - 성능 최적화 – 동적 배칭, 모델 병렬 처리, 다단계 파이프라인, 다중 모델 오케스트레이션을 내장하여 CPU/GPU 활용도를 극대화합니다.
- 프레임워크 비종속 – 모든 Python 기반 모델 라이브러리와 호환됩니다. 서비스 정의에서 필요한 패키지를 지정합니다.
- 관찰 가능성 및 확장 – 분산 서빙, 적응형 배칭을 지원하고 모니터링 도구와 통합됩니다.
일반적인 워크플로우
- 설치
pip install -U bentoml(Python ≥ 3.9). - 서비스 작성 (예: Hugging Face Transformers를 사용한 요약 API).
- 로컬 실행
bentoml serve로http://localhost:3000에서 테스트. - 서비스 패키징:
bentoml build→ 버전 관리된 Bento 생성. - 배포:
bentoml containerize <bento_name>→ Docker 이미지 → 모든 호스트 또는 Kubernetes에서 실행.
예제 코드
import bentoml
@bentoml.service(
image=bentoml.images.Image(python_version="3.11").python_packages("torch", "transformers"),
)
class Summarization:
def __init__(self):
import torch
from transformers import pipeline
device = "cuda" if torch.cuda.is_available() else "cpu"
self.pipeline = pipeline('summarization', device=device)
@bentoml.api(batchable=True)
def summarize(self, texts: list[str]) -> list[str]:
return [r['summary_text'] for r in self.pipeline(texts)]
bentoml serve를 실행하면 API가 즉시 시작됩니다.
생태계 및 예제
- LLM(Llama 3.2, Mistral, DeepSeek), 확산 모델, 임베딩, 오디오 모델, 컴퓨터 비전 탐지기, 함수 호출, LangGraph, CrewAI와 같은 고급 패턴을 위한 준비된 예제가 있습니다.
- 전체 문서는 https://docs.bentoml.com에서 제공되며, 문제 해결 및 패턴 공유를 위한 커뮤니티 포럼이 있습니다.
커뮤니티 및 기여
- Apache 2.0 라이선스의 오픈소스.
- CI, 이슈 트래커, 기여 가이드를 갖춘 활발한 GitHub 저장소.
- 사용자는
--do-not-track또는 환경 변수를 통해 익명 사용 텔레메트리를 거부할 수 있습니다.
대상 사용자
- 보일러플레이트 Docker/Kubernetes 코드를 작성하지 않고 모델을 확장 가능한 API로 노출해야 하는 ML 엔지니어.
- 다중 모델 파이프라인 또는 CPU/GPU에서 효율적으로 실행해야 하는 서비스를 구축하는 팀.
- AI 모델을 프로덕션에 재현 가능하고 버전 관리된 방식으로 배포하려는 모든 사람.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트
- Dispatch