

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

# `ModelBuilder` で MLflow モデルをデプロイする
<a name="mlflow-track-experiments-model-deployment"></a>

Amazon SageMaker AI Model Builder を使用して、MLflow モデルを SageMaker AI エンドポイントにデプロイできます。Amazon SageMaker AI Model Builder の詳細については、「[Create a model in Amazon SageMaker AI with ModelBuilder](https://docs.aws.amazon.com/sagemaker/latest/dg/how-it-works-modelbuilder-creation.html)」を参照してください。

`ModelBuilder` は、フレームワークモデルまたはユーザー指定の推論仕様を取得し、デプロイ可能なモデルに変換する Python クラスです。`ModelBuilder` クラスの詳細については、「[ModelBuilder](https://sagemaker.readthedocs.io/en/stable/api/inference/model_builder.html#sagemaker.serve.builder.model_builder.ModelBuilder)」を参照してください。

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

**注記**  
MLflow 実行 ID または MLflow モデルレジストリパスの形式でモデルアーティファクトのパスを指定する場合は、追跡サーバーの ARN も `model_metadata["MLFLOW_TRACKING_ARN"]` 属性で指定する必要があります。
+ [`model_metadata` で ARN を指定する必要があるモデルパス](#mlflow-track-experiments-model-deployment-with-arn)
+ [`model_metadata` で ARN を指定する必要がないモデルパス](#mlflow-track-experiments-model-deployment-without-arn)

## `model_metadata` で ARN を指定する必要があるモデルパス
<a name="mlflow-track-experiments-model-deployment-with-arn"></a>

次のモデルパスでは、デプロイ用に `model_metadata` で ARN を指定する必要があります。
+ MLflow [実行 ID](https://mlflow.org/docs/latest/python_api/mlflow.entities.html?highlight=mlflow%20info#mlflow.entities.RunInfo.run_id): `{{runs:/aloy-run-id/run-relative/path/to/model}}`
+ MLflow [モデルレジストリパス](https://mlflow.org/docs/latest/model-registry.html#find-registered-models): `{{models:/model-name/model-version}}`

## `model_metadata` で ARN を指定する必要がないモデルパス
<a name="mlflow-track-experiments-model-deployment-without-arn"></a>

次のモデルパスでは、デプロイ用に `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](https://mlflow.org/docs/latest/deployment/deploy-model-to-sagemaker.html)」を参照してください。

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](https://pypi.org/project/sagemaker/2.224.0/) 以降を使用する必要があります。

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

```
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 モデルの[系統追跡](https://docs.aws.amazon.com/sagemaker/latest/dg/lineage-tracking.html)を維持するには、次の IAM アクセス許可が必要です。
+ `sagemaker:CreateArtifact`
+ `sagemaker:ListArtifacts`
+ `sagemaker:AddAssociation`
+ `sagemaker:DescribeMLflowTrackingServer`

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

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