슬기로운 세팅 생활
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를 설치하고 다시 실행시키며 해결될 것이다.