[부스트캠프 AI-Tech] 20주차 Day 1

LKM·2022년 7월 25일
0

✏️학습 정리


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를 사용하면 웹 프론트엔드에 추가할 수 있음
      • 참고
profile
함께 자라기

0개의 댓글