ModelBuilder で MLflow モデルをデプロイする - Amazon SageMaker AI

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

ModelBuilder で MLflow モデルをデプロイする

Amazon SageMaker AI Model Builder を使用して、MLflow モデルを SageMaker AI エンドポイントにデプロイできます。Amazon SageMaker AI Model Builder の詳細については、「Create a model in Amazon SageMaker AI with ModelBuilder」を参照してください。

ModelBuilder は、フレームワークモデルまたはユーザー指定の推論仕様を取得し、デプロイ可能なモデルに変換する Python クラスです。ModelBuilder クラスの詳細については、「ModelBuilder」を参照してください。

ModelBuilder を使用して MLflow モデルをデプロイするには、MLflow アーティファクトへのパスを model_metadata["MLFLOW_MODEL_PATH"] 属性に指定します。モデルパスの有効な入力形式の詳細については、以下のセクションを参照してください。

注記

MLflow 実行 ID または MLflow モデルレジストリパスの形式でモデルアーティファクトのパスを指定する場合は、追跡サーバーの ARN も model_metadata["MLFLOW_TRACKING_ARN"] 属性で指定する必要があります。

model_metadata で ARN を指定する必要があるモデルパス

次のモデルパスでは、デプロイ用に model_metadata で ARN を指定する必要があります。

model_metadata で ARN を指定する必要がないモデルパス

次のモデルパスでは、デプロイ用に model_metadata で ARN を指定する必要はありません。

  • ローカルモデルパス: /Users/me/path/to/local/model

  • Amazon S3 モデルパス: s3://amzn-s3-demo-bucket/path/to/model

  • モデルパッケージ ARN: arn:aws:sagemaker:region:account-id:mlflow-tracking-server/tracking-server-name

Amazon SageMaker AI での MLflow モデルのデプロイの仕組みについては、MLflow ドキュメントの「Deploy MLflow Model to Amazon SageMaker AI」を参照してください。

Amazon S3 パスを使用する場合は、次のコマンドを使用して、登録済みモデルのパスを確認できます。

registered_model = client.get_registered_model(name='AutoRegisteredModel') source_path = registered_model.latest_versions[0].source

次のサンプルは、ModelBuilder と MLflow モデルレジストリパスを使用して MLflow モデルをデプロイする方法の概要です。このサンプルは、MLflow モデルレジストリパスの形式でモデルアーティファクトのパスを指定しているため、ModelBuilder への呼び出しでは、追跡サーバーの ARN も model_metadata["MLFLOW_TRACKING_ARN"] 属性で指定する必要があります。

重要

ModelBuilder を使用するには、SageMaker Python SDK のバージョン 2.224.0 以降を使用する必要があります。

注記

次のコード例を参考にしてください。登録済みの MLflow モデルをデプロイする方法を示すエンドツーエンドの例については、「サンプル Jupyter Notebook を使用した MLflow チュートリアル」を参照してください。

from sagemaker.serve import ModelBuilder from sagemaker.serve.mode.function_pointers import Mode from sagemaker.serve import SchemaBuilder my_schema = SchemaBuilder( sample_input=sample_input, sample_output=sample_output ) model_builder = ModelBuilder( mode=Mode.SAGEMAKER_ENDPOINT, schema_builder=my_schema, role_arn="Your-service-role-ARN", model_metadata={ # both model path and tracking server ARN are required if you use an mlflow run ID or mlflow model registry path as input "MLFLOW_MODEL_PATH": "models:/sklearn-model/1" "MLFLOW_TRACKING_ARN": "arn:aws:sagemaker:region:account-id:mlflow-tracking-server/tracking-server-name" } ) model = model_builder.build() predictor = model.deploy( initial_instance_count=1, instance_type="ml.c6i.xlarge" )

ModelBuilder を使用してデプロイされた MLflow モデルの系統追跡を維持するには、次の IAM アクセス許可が必要です。

  • sagemaker:CreateArtifact

  • sagemaker:ListArtifacts

  • sagemaker:AddAssociation

  • sagemaker:DescribeMLflowTrackingServer

重要

系統追跡はオプションです。系統追跡に関連するアクセス許可がなくてもデプロイは成功します。該当するアクセス許可が設定されていない場合、model.deploy() を呼び出すと系統追跡アクセス許可エラーが表示されます。ただし、エンドポイントのデプロイ自体は成功し、モデルエンドポイントと直接やり取りできます。上記のアクセス許可が設定されている場合、系統追跡情報が自動的に作成され、保存されます。

詳細な説明とエンドツーエンドの例については、「サンプル Jupyter Notebook を使用した MLflow チュートリアル」を参照してください。