[MLOps] 🍱 BentoML - 1
代名詞を作ったら大満足!
😏 ただし、このモデルをローカルにオフセットして繰り返し導出するたびに無効です.
😉 しかも、他のシステムとの接続が難しい!
✔従って、通常、学習したMLモデルは単独でML推論サーバを配置し、REST APIを利用してサービスを行う.
✔簡単に言えば、Flask/DjangoなどのPython Web Frameworkを使用してMLモデルをサービスすることができます.
🙌 でも今日は...!
😎 MLServiceFramework:bentoml:使いやすいが、性能は強い.)
△今後機会があれば、Flaskで簡単な性能比較ができます.
簡単に始めましょう.
BentoML is an open platform that simplifies ML model deployment and enables you to serve your models at production scale in minutes.
https://docs.bentoml.org/en/latest/index.html
簡単に!PRODUCTION SCALEのモデルサービスプラットフォーム!
✔実際には、MLモデルを本番サービスに適用する場合、本番に適用するのは、ローカルで行われる実際のテストとは大きく異なります. 😎 モデルになってJupyter Notebookでローカル推論したら実現したみたい…! 🤦♂️ 現実的には、サーバに少し負荷がかかっても爆発します...さらに負荷が1つのモデルに集中すると、良い隣のモデルも一緒に伸びる...状況もよく起こります...🤔
-たとえば、以前使用していたMLサービスエンジンではclipperというエンジンがありましたが、負荷が集中している場合、実際のPRODUCTIONの場合、エンジンがフリーズしたり、推論速度が低下したりする現象が連続的に発見されるため、拡張は使用できません.
https://github.com/ucbrise/clipper(さようなら...もう会わないで...)
✔この場合、完全なエラーの原因(私はこのサービスの利用者です)は推定できませんが、いずれにしても、盲点部分は負荷配分の失敗です.
✔長々と話していますが.BentoMLは負荷分配の面でより強く、期待されていると述べた.🙌
✔GPU利用可能ワークステーション:nvidia GTX 1660 TI(GPUは今日いなくてもOK!)
✔ IDE : VScode
✔関連ドライバのインストール
✔Linuxカーネル(WSL 2使用、下部にWSL 2時のcudaインストールページ付き)
✔ bentoml v1.0:まだ正式にリリースされていないプリバージョン.
✔anaconda仮想環境の使用
https://docs.bentoml.org/en/latest/quickstart.html
簡単に-GeBentomlのQuickstartについて
✔下のコードはv 1です.0ベースのプリパブリッシュバージョンコード.
🍖 次のコードはiris datasetを使用してsklearningフレームワークに基づくSVMモデルを学習し、BentoMLローカルリポジトリに格納します.
🍣 ああ!こうしてみると、本当にお弁当にモデルを保存しているような気がします.
✔最新というタグを使用してバージョン管理を行います.(ドッキングイメージと同様)
✔下記のコードにより、簡単にMLサービスサーバーを解放できます.)
😃 Inputおよびoutputtypeは、上記の例のようにnumpyとして示されています.デフォルトではendarrayがサポートされており、pandasもあります.DataFrame/PIL.イメージをサポートします.その他、公式ドキュメントを参照してください.
✔ service.pyベースのサービス!
✔--再ロードオプションは、ソースが変更されたときに再起動しないオプションです:)
😎 次のyamlファイルを簡単に作成します.
『タイム誌』のイメージバージョンに似ています!
😁 今日は、BentoMLチュートリアルに重点を置きます.
🍖 間違いなく、アクセスしやすいフレームワークで、「弁当」のように梱包して販売することができます.)
😋 次の記事では,実用的なモデルを導入し,性能比較を行う.
(ローカルなので、できるかどうかはわかりませんが…)もっと高級な機能を使います!
✔ https://www.lainyzine.com/ko/article/how-to-install-wsl2-and-use-linux-on-windows-10/ WSL 2インストール ✔ https://velog.io/@jaehyeong/WSL2-%EC%B4%88%EA%B0%84%EB%8B%A8-%EC%84%A4%EC%B9%98-%EB%B0%8F-CUDAGPU-%EC%84%A4%EC%A0%95-%EB%B0%A9%EB%B2%95 WSLを使用して、Cudaのインストールについて詳しく説明していただき、ありがとうございます:) ✔ https://zzsza.github.io/mlops/2021/04/18/bentoml-basic/ 卞成允の開発ブログ:本当に整理してよかった...!
😏 ただし、このモデルをローカルにオフセットして繰り返し導出するたびに無効です.
😉 しかも、他のシステムとの接続が難しい!
✔従って、通常、学習したMLモデルは単独でML推論サーバを配置し、REST APIを利用してサービスを行う.
✔簡単に言えば、Flask/DjangoなどのPython Web Frameworkを使用してMLモデルをサービスすることができます.
🙌 でも今日は...!
😎 MLServiceFramework:bentoml:使いやすいが、性能は強い.)
△今後機会があれば、Flaskで簡単な性能比較ができます.
簡単に始めましょう.
BentoML?
BentoML is an open platform that simplifies ML model deployment and enables you to serve your models at production scale in minutes.
https://docs.bentoml.org/en/latest/index.html
簡単に!PRODUCTION SCALEのモデルサービスプラットフォーム!
✔実際には、MLモデルを本番サービスに適用する場合、本番に適用するのは、ローカルで行われる実際のテストとは大きく異なります.
-たとえば、以前使用していたMLサービスエンジンではclipperというエンジンがありましたが、負荷が集中している場合、実際のPRODUCTIONの場合、エンジンがフリーズしたり、推論速度が低下したりする現象が連続的に発見されるため、拡張は使用できません.
https://github.com/ucbrise/clipper(さようなら...もう会わないで...)
✔長々と話していますが.BentoMLは負荷分配の面でより強く、期待されていると述べた.🙌
Pre-Setting
✔GPU利用可能ワークステーション:nvidia GTX 1660 TI(GPUは今日いなくてもOK!)
✔ IDE : VScode
✔関連ドライバのインストール
✔Linuxカーネル(WSL 2使用、下部にWSL 2時のcudaインストールページ付き)
✔ bentoml v1.0:まだ正式にリリースされていないプリバージョン.
✔anaconda仮想環境の使用
Tutorial
https://docs.bentoml.org/en/latest/quickstart.html
簡単に-GeBentomlのQuickstartについて
anaconda仮想環境on!
linux cmdにbentomlをインストールする
✔下のコードはv 1です.0ベースのプリパブリッシュバージョンコード.
pip install bentoml --pre
料理の作成:モデルをBentoMLのローカルモデルストレージ(ローカルストレージ)に保存する
🍖 次のコードはiris datasetを使用してsklearningフレームワークに基づくSVMモデルを学習し、BentoMLローカルリポジトリに格納します.
🍣 ああ!こうしてみると、本当にお弁当にモデルを保存しているような気がします.
import bentoml
from sklearn import svm
from sklearn import datasets
# Load predefined training set to build an example model
iris = datasets.load_iris()
X, y = iris.data, iris.target
# Model Training
clf = svm.SVC(gamma='scale')
clf.fit(X, y)
# Call to bentoml.<FRAMEWORK>.save(<MODEL_NAME>, model)
# In order to save to BentoML's standard format in a local model store
# bentoml.sklearn.save("iris_clf", clf)
# 03/21/22 22:43:57 INFO [cli] Successfully saved
# Model(tag="iris_clf:6tmyatnjdsg5kaav", path="/home/kang/bentoml/models/iris_clf/6tmyatnjdsg5kaav/")
✔上記のコードをワークステーションで実行し、以下の正常に保存された結果を返します.モデルのロード
✔最新というタグを使用してバージョン管理を行います.(ドッキングイメージと同様)
import bentoml
import numpy as np
iris_clf_runner = bentoml.sklearn.load_runner("iris_clf:latest")
iris_clf_runner.run(np.array([5.9, 3. , 5.1, 1.8]))
試作品弁当の作成:サービス作成
✔下記のコードにより、簡単にMLサービスサーバーを解放できます.)
# service.py
import numpy as np
import bentoml
from bentoml.io import NumpyNdarray
# 이전 학습을 진행한 모델을 로드해주고,
iris_clf_runner = bentoml.sklearn.load_runner("iris_clf:latest")
# 위의 모델을 "runner"로 사용하는 "bentoml service"를 생성합니다.
# 만약, runner가 여러개면, runners 인자의 list 안에 모두 정의하여야 합니다.
# 모든 모델을 가지고, "도시락을 싸는 거죠!"
svc = bentoml.Service("iris_classifier", runners=[iris_clf_runner])
# 그리고, 위에서 정의한 "bentoml service"를 어노테이션으로 사용하여, 추론 함수를 정의합니다.
# pre / post processing 로직도 정의합니다.
@svc.api(input=NumpyNdarray(), output=NumpyNdarray())
def classify(input_series: np.ndarray) -> np.ndarray:
# Define pre-processing logic
result = iris_clf_runner.run(input_series)
# Define post-processing logic
return result
「弁当で包む」「弁当を包む」「美味しくサービスする」とおっしゃるように.😃 Inputおよびoutputtypeは、上記の例のようにnumpyとして示されています.デフォルトではendarrayがサポートされており、pandasもあります.DataFrame/PIL.イメージをサポートします.その他、公式ドキュメントを参照してください.
試食弁当:サービング!
✔ service.pyベースのサービス!
✔--再ロードオプションは、ソースが変更されたときに再起動しないオプションです:)
bentoml serve ./service.py:svc --reload
😁 簡単に結果を確認!
import requests
res = requests.post(
"http://127.0.0.1:3000/classify",
headers={"content-type": "application/json"},
data="[5,4,3,2]").text
print(res)
# 1
弁当量産:Build&Serve!
😎 次のyamlファイルを簡単に作成します.
# bentofile.yaml
service: "service.py:svc" # A convention for locating your service: <YOUR_SERVICE_PY>:<YOUR_SERVICE_ANNOTATION>
description: "file: ./README.md"
labels:
owner: bentoml-team
stage: demo
include:
- "*.py" # A pattern for matching which files to include in the bento
python:
packages:
- scikit-learn # Additional libraries to be included in the bento
- pandas
✔ README.mdファイルはbentofileです.yamlファイルと同じ場所に保存します.touch README.md
😎 そして、CLIでbentoを作成!bento build
「1000 bento list」コマンドを使用して生成されたbento:)を表示できます.『タイム誌』のイメージバージョンに似ています!
bento list
Tag Service Path Size Creation Time
iris_classif… service:svc /home/kang/b… 15.42 KiB 2022-03-21
15:23:23
🎉 いよいよ完成したベントで生産サービス開始!bentoml serve iris_classifier:latest --production
😎 簡単に結果を確認!
import requests
res = requests.post(
"http://127.0.0.1:3000/classify",
headers={"content-type": "application/json"},
data="[5,4,3,2]").text
print(res)
# 1
文章を整理する。
😁 今日は、BentoMLチュートリアルに重点を置きます.
🍖 間違いなく、アクセスしやすいフレームワークで、「弁当」のように梱包して販売することができます.)
😋 次の記事では,実用的なモデルを導入し,性能比較を行う.
(ローカルなので、できるかどうかはわかりませんが…)もっと高級な機能を使います!
コメントページ
✔ https://www.lainyzine.com/ko/article/how-to-install-wsl2-and-use-linux-on-windows-10/
Reference
この問題について([MLOps] 🍱 BentoML - 1), 我々は、より多くの情報をここで見つけました https://velog.io/@gtpgg1013/MLOps-BentoML-1テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol