bentoml 핵심 개념 정리

홍성환·2022년 8월 23일
2

ml-software

목록 보기
2/2
post-thumbnail

1. 개요

  • bentoML은 많이 알려진 머신러닝 모델 배포 관리 도구 중 하나이다.
  • bentoML에 대한 번역글, 튜토리얼 코드 등이 널리 알려져 있다.
  • 하지만 bentoML의 핵심 개념인 Models, Services, Runner 등의 서로 사이의 관계와 각각의 역할이 무엇인지 명확히 정리된 글은 없는 것 같다.
  • BentoML의 큰 그림을 이해하는데 도움을줄 수 있는 핵심 개념에 대해 설명하려고 한다.

2. 요소들

Models

  • 모델 저장 및 불러오기

Runner

  • 저장된 모델을 통해 계산

Services

  • 모델 계산과 함께 서빙로직을 더해 실제 서빙

Bento

  • Services 개념에 How to reproduce 추가

Yatai

  • Bento의 쿠버네티스 배포 및 각 배포 단위 관리

3. Models

  • bentoml은 다양한 프레임워크의 모델을 아래 코드 이미지 방식처럼 저장할 수 있다.

  • tensorflow, pytorch 등 다양한 프레임워크를 지원한다.

  • 모델을 저장하면 아래 처럼 load를 통해 불러올 수도 있다.

  • 이렇게 모델을 저장하고 불러올 수 있고 저장된 모델들을 Models라고 부른다.

  • 아래 사진처럼 모델을 저장하고 나면 모델 리스트를 볼 수 있다.

  • Models는 가장 기본이 되는 개념이다.

4. Runner

  • MLflow 형식으로 저장된 Model은 더 이상 sklearn이나 tensorflow에서 다루던 형태의 객체가 아니다.
  • MLflow의 Model은 infrenece할 수 없으며 모델을 저장할 뿐인 데이터이다.
  • 이 모델을 통해 실질적인 inference를 하려면 runner로 만들어야 한다.
  • 아래 코드처럼 ro_runner를 통해서 runner를 만들 수 있다.
    • iris_clf_runner = bentoml.sklearn.get("iris_clf:latest").to_runner()
  • runner는 또한 Batch처리를 지원하며 계산을 효율적으로 하기 위한 로직이 들어가있다.

5. Services

  • 머신러닝 모델을 실제로 서빙하기 위해 flastk 같은 프레임워크를 쓴다.
  • bentoml에서는 모델 서빙을 위해 service라는 개념을 제공한다.
  • service를 통해 MLflow 형식으로 저장된 Model을 REST API로 서빙할 수 있다.
  • 또한 Service를 통해 배포할 때 모델에는 없는 데이터의 전처리, 후처리 로직을 넣을 수 있다.
  • 데코레이터를 통해 api를 만들 수 있으며 예시는 아래와 같다.
  • 아래와 같은 코드를 통해 실제 API 서버를 띄울 수 있다.
    • 코드를 아래 처럼 작성 후
    • bento 명령어를 통해 API 서버를 띄울 수 있다.
    • 아래처럼 해당 서버에 API를 날리면 추론 결과를 응답해준다.

5. Bento

  • 벤토는 Services개념에 How to reproduce 를 어떻게 할지에 대한 정보를 추가해준 개념이다.

  • python version, dependency 등 코드 실행 환경에 대한 정보가 더 들어간다.

  • bento build라는 명령어를 통해 bento를 만들어낸다.

  • bento build라는 명령어를 실행후 만들어진 output으로는 폴더(=bento)가 만들어지며 폴더(=bento)안에는 아래처럼 코드를 포함해 How to reproduce 에 대한 정보를 나름대로 재조직해 저장한다.

  • 아래 처럼 bentoml list라는 명령어를 통해 bento 목록을 볼 수 있다.

6. Yatai

  • Models와 Bento는 저장하고 목록을 CLI로 확인이 가능했다.
  • Yatai는 이러한 Model과 Bento를 저장을 GUI로 할 수 있게 한다.
  • Yatai는 또한 저장한 벤토를 쿠버네티스 클러스터로 배포할 수 있게 도와준다.
  • 각 Bento 배포 단위는 deployments가 된다.
profile
Machine Learning Engineer: recsys, mlops

0개의 댓글