既存のパイプライン ジョブをバッチ エンドポイントにデプロイする
適用対象:Azure CLI ml extension v2 (現行)Python SDK azure-ai-ml v2 (現行)
Azure Machine Learning でパイプラインを操作するための便利な方法が提供されるため、バッチ エンドポイントを使用するとパイプライン コンポーネントをデプロイできます。 バッチ エンドポイントは、デプロイ用のパイプライン コンポーネントを受け入れます。 ただし、正常に実行されるパイプライン ジョブが既にある場合、Azure Machine Learning はそのジョブをバッチ エンドポイントへの入力として受け入れ、パイプライン コンポーネントを自動的に作成できます。 この記事では、既存のパイプライン ジョブをバッチ デプロイの入力として使用する方法について説明します。
次のことを学習します。
- デプロイするパイプライン ジョブを実行して作成する
- 既存のジョブからバッチ デプロイを作成する
- 展開をテスト
この例の概要
この例では、"hello world!" を出力する単純なコマンド ジョブで構成されるパイプラインをデプロイします。 デプロイの前にパイプライン コンポーネントを登録する代わりに、デプロイに使用する既存のパイプライン ジョブを指定します。 その後、Azure Machine Learning によってパイプライン コンポーネントが自動的に作成され、バッチ エンドポイントのパイプライン コンポーネント デプロイとしてデプロイされます。
この記事の例は、azureml-examples リポジトリに含まれているコード サンプルを基にしています。 YAML などのファイルをコピーして貼り付けることなくコマンドをローカルで実行するには、最初にリポジトリを複製してから、ディレクトリをそのフォルダーに変更します。
git clone https://github.com/Azure/azureml-examples --depth 1
cd azureml-examples/cli
この例のファイルは、次の場所にあります。
cd endpoints/batch/deploy-pipelines/hello-batch
前提条件
この記事の手順に従う前に、次の前提条件が満たされていることをご確認ください。
Azure サブスクリプション。 Azure サブスクリプションをお持ちでない場合は、開始する前に無料アカウントを作成してください。 無料版または有料版の Azure Machine Learning をお試しください。
Azure Machine Learning ワークスペース。 準備できていない場合は、Microsoft Azure Machine Learning ワークスペースの管理に関する記事の手順を使用して作成します。
ワークスペースに次のアクセス許可があることを確認します。
バッチ エンドポイントとバッチ デプロイを作成または管理する: 所有者または共同作成者のロール、あるいは
Microsoft.MachineLearningServices/workspaces/batchEndpoints/*
を許可するカスタム ロールを使用します。ワークスペース リソース グループに ARM デプロイを作成する: 所有者または共同作成者のロール、あるいはワークスペースがデプロイされているリソース グループで
Microsoft.Resources/deployments/write
を許可するカスタム ロールを使用します。
Azure Machine Learning を使用するには、次のソフトウェアをインストールする必要があります。
ワークスペースに接続する
ワークスペースは、Azure Machine Learning の最上位のリソースで、Azure Machine Learning を使用するときに作成するすべての成果物を操作するための一元的な場所を提供します。 このセクションでは、デプロイ タスクを実行するワークスペースに接続します。
次のコードで、サブスクリプション ID、ワークスペース、場所、リソース グループの値を渡します。
az account set --subscription <subscription>
az configure --defaults workspace=<workspace> group=<resource-group> location=<location>
デプロイするパイプライン ジョブを実行する
このセクションでは、まずパイプライン ジョブを実行します。
次の pipeline-job.yml
ファイルには、パイプライン ジョブの構成が含まれます。
pipeline-job.yml
$schema: https://azuremlschemas.azureedge.net/latest/pipelineJob.schema.json
type: pipeline
experiment_name: hello-pipeline-batch
display_name: hello-pipeline-batch-job
description: This job demonstrates how to run the a pipeline component in a pipeline job. You can use this example to test a component in an standalone job before deploying it in an endpoint.
compute: batch-cluster
component: hello-component/hello.yml
パイプライン ジョブを作成します。
バッチ エンドポイントを作成する
パイプライン ジョブをデプロイする前に、バッチ エンドポイントをデプロイしてデプロイをホストする必要があります。
エンドポイントの名前を指定します。 バッチ エンドポイントの名前は、呼び出し URI の構成に使用されるため、各リージョンで一意である必要があります。 一意性を確保するために、次のコードで指定する名前に末尾文字を追加します。
エンドポイントを構成します。
エンドポイントを作成します。
エンドポイント URI にクエリを実行します。
パイプライン ジョブをデプロイする
パイプライン コンポーネントをデプロイするには、既存のジョブからバッチ デプロイを作成する必要があります。
デプロイするジョブの名前を Azure Machine Learning に知らせる必要があります。 この場合、そのジョブは次の変数で指定されます。
デプロイを構成します。
deployment-from-job.yml
ファイルには、デプロイの構成が含まれます。 このデプロイがパイプライン ジョブから作成されていることを示すために、component
の代わりにキーjob_definition
が使用されていることに注目してください。deployment-from-job.yml
$schema: https://azuremlschemas.azureedge.net/latest/pipelineComponentBatchDeployment.schema.json name: hello-batch-from-job endpoint_name: hello-pipeline-batch type: pipeline job_definition: azureml:job_name_placeholder settings: continue_on_step_failure: false default_compute: batch-cluster
ヒント
この構成では、
batch-cluster
という名前のコンピューティング クラスターがあることを前提としています。 この値は、お使いのクラスターの名前に置き換えることができます。デプロイを作成します。
次のコードを実行して、バッチ エンドポイントの下にバッチ デプロイを作成し、それを既定のデプロイとして設定します。
az ml batch-deployment create --endpoint $ENDPOINT_NAME --set job_definition=azureml:$JOB_NAME -f deployment-from-job.yml
ヒント
--set job_definition=azureml:$JOB_NAME
が使用されていることに注目してください。 ジョブ名は一意であるため、ここではコマンド--set
を使用して、ワークスペースで実行するときにジョブの名前を変更しています。デプロイを使用する準備が整いました。
展開をテスト
デプロイが作成されると、ジョブを受け取る準備が整います。 次のように、既定のデプロイを呼び出すことができます。
次を使用して、ログの表示およびストリーミングの進行状況を監視できます。
リソースをクリーンアップする
完了したら、関連付けられているリソースをワークスペースから削除します。
次のコードを実行して、バッチ エンドポイントとその基になっているデプロイを削除します。 --yes
は、削除を確認するために使用します。
az ml batch-endpoint delete -n $ENDPOINT_NAME --yes