[부스트캠프 AI-Tech] 20주차 Day 1
✏️학습 정리
4-1. BentoML
-
Introduction
- FastAPI로 직접 머신러닝 서버 개발 → 1, 2개의 모델을 만들 때는 가능
- but, 30~50개의 모델을 만들어야 한다면?? → 반복되는 작업 존재 and Serving도 어렵다.
- Serving에 특화된 라이브러리를 원하게 됨
-
BentoML
- Serving에 집중하는 가벼운 Library
- 해결하려는 문제
- Model Serving Infra의 어려움
- Online Serving의 Monitoring 및 Error Handling
- Online Serving 퍼포먼스 튜닝의 어려움
- 특징
- Online / Offline Serving 지원
- Tensorflow, Pytorch, Keras 등 주요 프레임워크 지원
- Docker, Kubernetes, AWS, Azure 등의 배포 환경 지원 및 가이드 제공
- Flask 대비 100배의 처리량
- 모델 저장소(Yatai) 웹 대시보드 제공
- 사용 Flow
- 모델 학습 코드 생성
- Prediction Service Class 생성
- Prediction Service에 모델 저장 (Pack)
- (Local) Serving
- Docker Image Build (컨테이너화)
- Serving 배포
-
BentoML Component
- BentoService
- 예측 서비스를 만들기 위한 베이스 클래스
@bentoml.artifacts
: 여러 머신러닝 모델 포함할 수 있음
@bentoml.api
: Input/Output 정의
- Service Environment
- 파이썬 관련 환경, Docker 등을 설정할 수 있음
@bentoml.env(infer_pip_packages=True)
: import를 기반으로 필요한 라이브러리 추런
- Model Artifact
@bentoml.artifacts
: 사용자가 만든 모델을 저장해 pretrain model을 읽어 Serialization, Deserialization
- 여러 모델을 같이 저장 가능
- Model Artifact Metadata
- 해당 모델의 Metadata(Metric - Accuracy, 사용한 데이터셋, 생성한 사람 등..)
- 메타데이터는 Immutable
- Model Management & Yatai
- 모델 리스트 확인
- 특정 모델 정보 가져오기
- YataiService: 모델 저장 및 배포를 처리하는 컴포넌트
- API Function, Adapters
- BentoService API는 클라이언트가 예측 서비스에 접근하기 위한 End Point 생성
- Adapter는 Input/Output을 추상화해서 중간 부분을 연결하는 Layer
- Model Serving
- Online Serving: 클라이언트가 REST API Endpoint로 실시간으로 예측 요청
- Offline Batch Serving: 예측을 계산한 수, Storage에 저장
- Edge Serving: 모바일, IoT Device에 배포
- WEB UI
- @bentoml.web_static_content를 사용하면 웹 프론트엔드에 추가할 수 있음
- 참고