슬기로운 세팅 생활

bentoml Quick Start

vhrehfdl 2021. 8. 6. 16:35

1. 환경 설정

pip install bentoml
pip install pandas sklearn

 

 

2. 코드 작성

bento라는 디렉터리를 만든 후, model.py / service.py / builder.py 라는 파일을 생성한다.

 

model.py : ML 모델 파일 생성 및 설정.

# model.py

from sklearn import svm
from sklearn import datasets

# Load training data
iris = datasets.load_iris()
X, y = iris.data, iris.target

# Model Training
clf = svm.SVC(gamma='scale')
clf.fit(X, y)

 

service.py : predict 관련 서빙 파일 설정.

# service.py

import pandas as pd

from bentoml import env, artifacts, api, BentoService
from bentoml.adapters import DataframeInput
from bentoml.frameworks.sklearn import SklearnModelArtifact

@env(infer_pip_packages=True)
@artifacts([SklearnModelArtifact('model')])
class IrisClassifierService(BentoService):
    """
    A minimum prediction service exposing a Scikit-learn model
    """

    @api(input=DataframeInput(), batch=True)
    def predict(self, df: pd.DataFrame):
        """
        An inference API named `predict` with Dataframe input adapter, which codifies
        how HTTP requests or CSV files are converted to a pandas Dataframe object as the
        inference API function input
        """
        return self.artifacts.model.predict(df)

 

builder.py : 위에서 정의한 모델 파일과 서빙 파일을 사용해 배포 설정.

# builder.py

# import the IrisClassifier class defined above
from service import IrisClassifierService
from model import clf

# Create a iris classifier service instance
iris_classifier_service = IrisClassifierService()

# Pack the newly trained model artifact
iris_classifier_service.pack('model', clf)

# Save the prediction service to disk for model serving
saved_path = iris_classifier_service.save()

 

그리고 python builder.py를 실행해 배포 파일을 생성하면 아래의 경로에 도커 파일이 생성된다.

 

[2021-08-06 07:45:01,505] INFO - BentoService bundle 'IrisClassifierService:20210806074501_213F58' saved to: /root/bentoml/repository/IrisClassifierService/20210806074501_213F58

 

 

3. deploy 실행

bentoml serve IrisClassifierService:latest

위의 명령어를 실행하면 builder.py를 사용한 도커파일이 실행되며 아래와 같이 request 받을 준비를 한다.

 

위에 표시된 URL인 http://127.0.0.1:53587/에 접속하면 아래와 같은 홈페이지를 확인할 수 있다.

 

해당 서버에 POST로 request를 보내 결과를 확인한다.

 

 

4. yatai 실행

배포 버전 관리하는 웹페이지다.

 bentoml yatai-service-start

 

위의 yatai를 실행시키기 위해서는 node.js가 설치되어 있어야 한다.

만약 에러가 발생하면 node.js를 설치하고 다시 실행시키며 해결될 것이다.