MLflow モデルをバッチ エンドポイントにデプロイする
モデルをバッチ エンドポイントにデプロイする簡単な方法は、MLflow モデルを使用することです。 Azure Machine Learning によって、MLflow モデルのスコア付けスクリプトと環境が自動的に生成されます。
MLflow モデルをデプロイするには、エンドポイントを作成している必要があります。 その後、モデルをエンドポイントにデプロイできます。
MLflow モデルを登録する
スコアリング スクリプトと環境が必要にならないようにするには、バッチ エンドポイントにデプロイする前に、MLflow モデルを Azure Machine Learning ワークスペースに登録する必要があります。
MLflow モデルを登録するには、Model クラスを使用し、MLFLOW_MODELするモデルの種類を指定します。 Python SDK にモデルを登録するには、次のコードを使用します。
from azure.ai.ml.entities import Model
from azure.ai.ml.constants import AssetTypes
model_name = 'mlflow-model'
model = ml_client.models.create_or_update(
Model(name=model_name, path='./model', type=AssetTypes.MLFLOW_MODEL)
)
この例では、モデル ファイルをローカル パスから取得しています。 ファイルはすべて、modelと呼ばれるローカル フォルダーに格納されます。 フォルダーには、モデルを読み込んで使用する方法を説明する MLmodel ファイルが含まれている必要があります。
ヒント
MLmodel の形式の詳細を確認してください。
MLflow モデルをエンドポイントにデプロイする
MLflow モデルをバッチ エンドポイントにデプロイするには、BatchDeployment クラスを使用します。
モデルをデプロイするときは、バッチ スコアリング ジョブの動作方法を指定する必要があります。 コンピューティング クラスターを使用してスコア付けスクリプト (Azure Machine Learning によって自動的に生成される) を実行する利点は、スコアリング スクリプトを別々のインスタンスで並列に実行できることです。
モデルのデプロイを構成するときに、次の項目を指定できます。
instance_count: 予測の生成に使用するコンピューティング ノードの数。max_concurrency_per_instance: コンピューティング ノードあたりの並列スコアリング スクリプトの実行の最大数。mini_batch_size: スコアリング スクリプトの実行ごとに渡されたファイルの数。output_action:予測をどうするか:summary_onlyまたはappend_row。output_file_name:append_rowのoutput_actionを選択した場合、予測を追加するファイル。
ヒント
Python SDK v2 を使用してバッチデプロイ作成するためのリファレンス ドキュメントを参照してください。
MLflow モデルをバッチ エンドポイントにデプロイするには、次のコードを使用できます。
from azure.ai.ml.entities import BatchDeployment, BatchRetrySettings
from azure.ai.ml.constants import BatchDeploymentOutputAction
deployment = BatchDeployment(
name="forecast-mlflow",
description="A sales forecaster",
endpoint_name=endpoint.name,
model=model,
compute="aml-cluster",
instance_count=2,
max_concurrency_per_instance=2,
mini_batch_size=2,
output_action=BatchDeploymentOutputAction.APPEND_ROW,
output_file_name="predictions.csv",
retry_settings=BatchRetrySettings(max_retries=3, timeout=300),
logging_level="info",
)
ml_client.batch_deployments.begin_create_or_update(deployment)