バッチ デプロイで低優先度の VM を使用する
適用対象:Azure CLI ml extension v2 (現行)Python SDK azure-ai-ml v2 (現行)
Azure Batch デプロイでは、低優先度の仮想マシン (VM) がサポートされ、バッチ推論ワークロードのコストが削減されます。 低優先度の VM を使用すると、大量のコンピューティング能力を低コストで使用できます。 低優先度の仮想マシンは Azure の余剰容量を活用します。 プールで低優先度の VM を指定すると、Azure は可能な場合にこの余剰分を使用します。
ヒント
低優先度の VM を使用する場合のトレードオフは、使用できる容量に応じて、いつでもそれらの仮想マシンが使用できなくなったり、割り込まれたりする可能性がある点です。 このため、このアプローチが最も適しているのは、ジョブの完了時間に融通が利き、作業が多数の仮想マシンに分散されているバッチや非同期処理ワークロードです。
低優先度の仮想マシンは、専用の仮想マシンよりも低価格で提供されます。 価格の詳細については、「Azure Machine Learning の価格」を参照してください。
低優先度の VM でのバッチデプロイのしくみ
Azure Machine Learning Batch デプロイには、低優先度の VM を使用してメリットを享受するためのいくつかの機能が用意されています。
- バッチ デプロイ ジョブでは、低優先度の VM で作成された Azure Machine Learning コンピューティング クラスターで実行することで、低優先度の VM を使用します。 デプロイが低優先度の VM のクラスターに関連付けられると、そのようなデプロイによって生成されるすべてのジョブで低優先度の VM が使用されます。 ジョブごとの構成はできません。
- バッチ デプロイ ジョブは、送信するタスクの数に基づいて、使用可能なコンピューティング クラスター内の VM のターゲット数を自動的にシークします。 VM が割り込まれているか使用できない場合、バッチ デプロイ ジョブは、障害が発生したタスクをクラスターにキューイングし、失われた容量を置き換えようとします。
- 低優先度の VM には、専用 VM とは異なる別個の vCPU クォータがあります。 リージョンあたりの低優先度のコアには、サブスクリプションに応じて、100 から 3,000 の既定の制限があります。 サブスクリプションあたりの優先順位の低いコアの数は増やすことができ、VM ファミリ全体で 1 つの値になります。 Azure Machine Learning コンピューティング クォータに関する記事を参照してください。
考慮事項とユース ケース
多くのバッチ ワークロードは、低優先度の VM に適しています。 低優先度の VM を使用すると、VM の割り当て解除が発生したときに実行の遅延が発生する可能性があります。 ジョブを完了する必要がある時間に融通が利く場合は、容量の低下の可能性を許容できる可能性があります。
バッチ エンドポイントでモデルをデプロイする場合は、ミニバッチ レベルで再スケジュールできます。 このアプローチには、割り当て解除は、現在処理されており、影響を受けるノードで完了していないミニバッチにしか影響しないという利点があります。 完了した進行状況はすべて保持されます。
制限事項
- デプロイが低優先度の VM のクラスターに関連付けられると、そのようなデプロイによって生成されるすべてのジョブで低優先度の VM が使用されます。 ジョブごとの構成はできません。
- 再スケジュールは、進行状況に関係なく、ミニバッチ レベルで行われます。 チェックポイント機能は提供されません。
警告
クラスター全体に対して割り込みが発生している、または単一ノード クラスターで実行されている場合、ジョブを実行できる容量がないため、ジョブは取り消されます。 この場合は再送信が必要です。
低優先度の VM を使用するバッチ デプロイを作成する
バッチ デプロイ ジョブでは、低優先度の VM で作成された Azure Machine Learning コンピューティング クラスターで実行することで、低優先度の VM を使用します。
Note
デプロイが低優先度の VM のクラスターに関連付けられると、そのようなデプロイによって生成されるすべてのジョブで低優先度の VM が使用されます。 ジョブごとの構成はできません。
低優先度の Azure Machine Learning コンピューティング クラスターは、次のように作成できます。
次のようなコンピューティング定義 YAML
(low-pri-cluster.yml) を作成します。
$schema: https://azuremlschemas.azureedge.net/latest/amlCompute.schema.json
name: low-pri-cluster
type: amlcompute
size: STANDARD_DS3_v2
min_instances: 0
max_instances: 2
idle_time_before_scale_down: 120
tier: low_priority
次のコマンドを使って、コンピューティングを作成します。
az ml compute create -f low-pri-cluster.yml
新しいコンピューティングを作成したら、新しいクラスターを使用するようにデプロイを作成または更新できます。
新しいコンピューティング クラスターでデプロイを作成または更新するには、YAML
構成ファイル (endpoint.yml) を作成します。
$schema: https://azuremlschemas.azureedge.net/latest/batchDeployment.schema.json
endpoint_name: heart-classifier-batch
name: classifier-xgboost
description: A heart condition classifier based on XGBoost
type: model
model: azureml:heart-classifier@latest
compute: azureml:low-pri-cluster
resources:
instance_count: 2
settings:
max_concurrency_per_instance: 2
mini_batch_size: 2
output_action: append_row
output_file_name: predictions.csv
retry_settings:
max_retries: 3
timeout: 300
次に、次のコマンドを使ってデプロイを作成します。
az ml batch-endpoint create -f endpoint.yml
ノードの割り当て解除を表示し監視する
低優先度の VM を監視するための、低優先度の VM 用の新しいメトリックが Azure portal で利用できます。 これらのメトリックは次のとおりです。
- Preempted Node (割り込まれたノード)
- 割り込まれたコア
Azure portal でこれらのメトリックを表示するには、次の手順を実行します。
- Azure portal で Azure Machine Learning ワークスペースに移動します。
- [監視] セクションから [メトリック] を選択します。
- [メトリック] 一覧から目的のメトリックを選択します。