バッチ デプロイでの低優先度の VM の使用

適用対象:Azure CLI ML 拡張機能 v2 (現行)Python SDK azure-ai-ml v2 (現行)

Azure Batch デプロイでは、低優先度の VM がサポートされ、バッチ推論ワークロードのコストが削減されます。 低優先度の VM を使用すると、大量のコンピューティング能力を低コストで使用できます。 低優先度の VM では Azure の余剰容量が活用されます。 プールで低優先度の VM を指定すると、Azure は可能な場合にこの余剰分を使用します。

それらを使用するデメリットは、利用可能な容量によっては、これらの VM は常に割り当て可能になるとは限らないという点、またはいつでも割り込まれる可能性があるという点です。 このため、ジョブの完了時間に柔軟性があり、作業が多数の VM に分散されているバッチや非同期処理ワークロードに最も適しています

低優先度の VM は、専用の 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 で作成された Azure Machine Learning コンピューティング クラスターで実行することで、低優先度の VM を使用します。

注意

デプロイが低優先度の 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 構成を作成します。

$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 でこれらのメトリックを表示するには

  1. Azure portal で Azure Machine Learning ワークスペースに移動します。
  2. [監視] セクションから [メトリック] を選択します。
  3. [メトリック] 一覧から目的のメトリックを選択します。

リソース監視ブレードの [メトリック] セクションのスクリーンショット。低優先度の VM に関連するメトリックが表示されています。

制限事項

  • デプロイが低優先度の VM のクラスターに関連付けられると、そのようなデプロイによって生成されるすべてのジョブで低優先度の VM が使用されます。 ジョブごとの構成はできません。
  • 再スケジュールは、進行状況に関係なく、ミニバッチ レベルで行われます。 チェックポイント機能は提供されません。

警告

クラスター全体に対して割り込みが発生している (または単一ノード クラスターで実行されている) 場合、ジョブを実行できる容量がないため、ジョブは取り消されます。 この場合は、再送信が必要です。