バッチ エンドポイントを使用してパイプラインをデプロイする方法
適用対象:Azure CLI ml extension v2 (現行)Python SDK azure-ai-ml v2 (現行)
Azure Machine Learning で操作するための便利な方法が提供されるため、パイプライン コンポーネントをバッチ エンドポイントの下にデプロイできます。 この記事では、単純なパイプラインを含むバッチ デプロイを作成する方法について説明します。 次のことを学習します。
- パイプライン コンポーネントを作成して登録する
- バッチ エンドポイントを作成してパイプライン コンポーネントをデプロイする
- 展開をテスト
この例の概要
この例では、"hello world!" を出力する単純なコマンド ジョブで構成されるパイプライン コンポーネントをデプロイします。 このコンポーネントは、入力や出力を必要としない最も単純なパイプライン デプロイ シナリオです。
この記事の例は、azureml-examples リポジトリに含まれているコード サンプルを基にしています。 YAML やその他のファイルのコピーや貼り付けをせずにコマンドをローカルで実行するには、次のコマンドを使用してリポジトリを複製し、ご使用のコーディング言語のフォルダーに移動します。
git clone https://github.com/Azure/azureml-examples --depth 1
cd azureml-examples/cli
この例のファイルは、次の場所にあります。
cd endpoints/batch/deploy-pipelines/hello-batch
Jupyter ノートブックで作業を進める
この例の Python SDK バージョンに沿って作業を進めることができます。そのためには、複製されたリポジトリで sdk-deploy-and-test.ipynb ノートブックを開きます。
前提条件
Azure サブスクリプション。 Azure サブスクリプションをお持ちでない場合は、開始する前に 無料アカウント を作成してください。
Azure Machine Learning ワークスペース。 ワークスペースを作成するには、「Azure Machine Learning ワークスペースの管理」を参照してください。
Azure Machine Learning ワークスペースでの次のアクセス許可:
- バッチ エンドポイントと展開の作成や管理用:
Microsoft.MachineLearningServices/workspaces/batchEndpoints/*
アクセス許可が割り当てられている所有者、共同作成者、またはカスタムのロールを使用します。 - ワークスペース リソース グループ内での Azure Resource Manager デプロイの作成用: ワークスペースが展開されるリソース グループに
Microsoft.Resources/deployments/write
アクセス許可が割り当てられている、所有者、共同作成者、またはカスタムのロールを使用します。
- バッチ エンドポイントと展開の作成や管理用:
Azure Machine Learning CLI または Azure Machine Learning SDK for Python:
次のコマンドを実行して、Azure CLI と
ml
という Azure Machine Learning 用の拡張機能をインストールします。az extension add -n ml
バッチ エンドポイントのパイプライン コンポーネントの展開は、Azure CLI の
ml
拡張機能のバージョン 2.7 で導入されました。az extension update --name ml
コマンドを使用して、最新バージョンを取得します。
ワークスペースに接続する
ワークスペースは、Azure Machine Learning の最上位のリソースです。 これは、Azure Machine Learning を使用するときに作成するすべての成果物を操作するための一元的な場所を提供します。 このセクションでは、デプロイ タスクを実行するワークスペースに接続します。
次のコマンドで、自分のサブスクリプション ID、ワークスペース名、リソース グループ名、および場所を入力します。
az account set --subscription <subscription>
az configure --defaults workspace=<workspace> group=<resource-group> location=<location>
パイプライン コンポーネントを作成する
バッチ エンドポイントでは、モデルまたはパイプライン コンポーネントをデプロイできます。 パイプライン コンポーネントは再利用可能であり、共有レジストリを使用してこれらのコンポーネントをワークスペース間で移動することで、MLOps プラクティスを効率化できます。
この例のパイプライン コンポーネントには、ログに "hello world" メッセージのみを出力する 1 つのステップが含まれています。 入力や出力は必要ありません。
hello-component/hello.yml
ファイルには、パイプライン コンポーネントの構成が含まれています。
hello-component/hello.yml
$schema: https://azuremlschemas.azureedge.net/latest/pipelineComponent.schema.json
name: hello_batch
display_name: Hello Batch component
version: 1
type: pipeline
jobs:
main_job:
type: command
component:
code: src
environment: azureml://registries/azureml/environments/sklearn-1.5/labels/latest
command: >-
python hello.py
コンポーネントを登録します。
バッチ エンドポイントを作成する
エンドポイントの名前を指定します。 バッチ エンドポイントの名前は、呼び出し URI の構成に使用されるため、各リージョンで一意である必要があります。 一意性を確保するために、次のコードで指定する名前に末尾文字を追加します。
エンドポイントを構成します。
エンドポイントを作成します。
エンドポイント URI にクエリを実行します。
パイプライン コンポーネントをデプロイする
パイプライン コンポーネントをデプロイするには、バッチ デプロイを作成する必要があります。 デプロイは、実際の作業を行うアセットをホスティングするために必要なリソースのセットです。
コンピューティング クラスターを作成します。 バッチ エンドポイントとバッチ デプロイは、コンピューティング クラスター上で実行されます。 これらは、ワークスペースに既に存在する任意の Azure Machine Learning コンピューティング クラスター上で実行できます。 したがって、複数のバッチ デプロイが同じコンピューティング インフラストラクチャを共有できます。 この例では、
batch-cluster
という名前の Azure Machine Learning コンピューティング クラスター上で作業します。 ワークスペースにコンピューティングが存在することを確認し、存在しない場合は作成します。デプロイを構成します。
deployment.yml
ファイルには、デプロイの構成が含まれます。 追加のプロパティについては、完全なバッチ エンドポイント YAML スキーマを確認してください。deployment.yml
$schema: https://azuremlschemas.azureedge.net/latest/pipelineComponentBatchDeployment.schema.json name: hello-batch-dpl endpoint_name: hello-pipeline-batch type: pipeline component: azureml:hello_batch@latest settings: default_compute: batch-cluster
デプロイを作成します。
デプロイを使用する準備が整いました。
展開をテスト
デプロイが作成されると、ジョブを受け取る準備が整います。 次のように、既定のデプロイを呼び出すことができます。
ヒント
この例では、パイプラインに入力または出力がありません。 ただし、このパイプライン コンポーネントにいくつか入力や出力が必要な場合は、呼び出し時に指示できます。 入力と出力を指示する方法について詳しく確認するには、「バッチ エンドポイントのジョブと入力データを作成する」を参照するか、「前処理を使用してバッチ スコアリングを実行するパイプラインをデプロイする方法 (プレビュー)」に関するチュートリアルをご参照ください。
次を使用して、ログの表示およびストリーミングの進行状況を監視できます。
リソースをクリーンアップする
完了したら、関連付けられているリソースをワークスペースから削除します。
次のコードを実行して、バッチ エンドポイントとその基になっているデプロイを削除します。 --yes
は、削除を確認するために使用します。
az ml batch-endpoint delete -n $ENDPOINT_NAME --yes
(オプション) 後のデプロイでコンピューティング クラスターを再利用する予定がない場合は、コンピューティングを削除します。