scikit-learn model deployment on SageMaker | Databricks on AWS [2021/3/22時点]の翻訳です。
本書は抄訳であり内容の正確性を保証するものではありません。正確な内容に関しては原文を参照ください。
このノートブックではscikit-learnモデルのトレーニング、scikit-learnフォーマットでの保存で説明されている糖尿病データセットでトレーニングしたElasticNetモデルを使用します。このノートブックでは以下を説明しています。
- MLflowエクスペリメントUIを用いてデプロイするモデルを選択。
- MLflow APIを用いてSageMakerにモデルをデプロイ。
-
sagemaker-runtime
APIを用いてデプロイされたモデルを検索。 - 別のモデルに対してデプロイ、クエリープロセスの繰り返し。
- MLflow APIを用いてデプロイメントを削除。
DatabricksからAWS SageMakerにMLflowモデルをデプロイできるように、どのようにAWSの認証設定を行うのかについては、機械学習モデルをSageMakerにデプロイするのためのAWS認証設定のセットアップをご覧ください。
SageMakerエンドポイントへのデプロイがわかりにくいので補足します。
MLflow SageMaker APIを用いてモデルをSageMakerエンドポイントにデプロイする際、AmazonのElastic Container Registry (ECR)のDockerイメージを指定します。SageMakerはモデルをサービングする際にこのイメージを使用します。
ローカルマシンでMLflow CLI:mlflow sagemaker build-and-push-container
を実行し、mlflow-pyfunc
イメージをビルドし、イメージをECRのリポジトリにアップロードします。ECRリポジトリにmlflow-pyfunc
イメージが作成されます。アップロード完了後、DockerイメージのURLを取得することができます。
- ローカルマシンでAWS CLIのインストール、設定
aws configure
を行います。 - インストールされていない場合、PyPIで
mlflow
、boto3
をインストールしておきます。 - ローカルマシンで
mlflow sagemaker build-and-push-container
を実行すると、Dockerイメージの作成およびECRへのアップロードが行われます。
# 以下でECR DockerイメージのURLを指定します。
# ECR URLは以下のフォーマットである必要があります: {account_id}.dkr.ecr.{region}.amazonaws.com/{repo_name}:{tag}
image_ecr_url = "<AWSアカウントID>.dkr.ecr.ap-northeast-1.amazonaws.com/mlflow-pyfunc:1.23.1"
上のURLを指定して、エンドポイントへのモデルデプロイを行います。
import mlflow.sagemaker as mfs
app_name = "diabetes-class-v1"
mfs.deploy(app_name=app_name, model_uri=model_uri, image_url=image_ecr_url, region_name=region, mode="create")
しばらくすると、エンドポイントがInServiceになるので、この後は予測結果を得るために
モデルに対してクエリーを実行することができます。
MLflow scikit-learnモデルトレーニングのノートブック