既存のパイプライン ジョブをバッチ エンドポイントにデプロイする
適用対象: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 ワークスペース。 ワークスペースを作成するには、「Azure Machine Learning ワークスペースの管理」を参照してください。
Machine Learning ワークスペースでの以下のアクセス許可があることを確認してください。
- バッチ エンドポイントとバッチ デプロイを作成または管理する: 所有者または共同作成者のロール、あるいは
Microsoft.MachineLearningServices/workspaces/batchEndpoints/*
を許可するカスタム役割を使用します。 - ワークスペース リソース グループ内での Azure Resource Manager デプロイの作成: 所有者、共同作成者、またはワークスペースがデプロイされるリソース グループ での
Microsoft.Resources/deployments/write
を許可するカスタム ロールを使用します。
- バッチ エンドポイントとバッチ デプロイを作成または管理する: 所有者または共同作成者のロール、あるいは
Machine Learning を使用するには、以下のソフトウェアをインストールします。
次のコマンドを実行して、Azure CLI と
ml
という Azure Machine Learning 用の拡張機能をインストールします。az extension add -n ml
バッチ エンドポイントのパイプライン コンポーネント デプロイは、Azure CLI 用拡張機能
ml
のバージョン 2.7 で導入されました。az extension update --name ml
コマンドを使用して、最新バージョンを取得します。
ワークスペースに接続する
ワークスペースは、Machine Learning の最上位のリソースです。 これは 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