在批次部署中使用低優先順序 VM

適用於:Azure CLI ml 延伸模組 v2 (目前)Python SDK azure-ai-ml v2 (目前)

Azure Batch 部署支援低優先順序 VM,以減少批次推斷工作負載的成本。 低優先順序 VM 可讓您以較低的成本運用大量計算能力。 低優先順序的 VM 能善用 Azure 中的剩餘容量。 當您指定集區中的低優先順序 VM 時,Azure 就會在有多餘的容量時加以使用。

使用低優先順序 VM 的代價是,視可用的容量而定,那些 VM 可能無法一律可供配置,或可能隨時被優先佔用。 基於此原因,低優先順序 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 系列的單一值。 請參閱 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

檢視和監視節點解除配置

Azure 入口網站有新的計量可供低優先順序 VM 監視低優先順序 VM。 這些計量包括:

  • 先佔節點
  • 已被優先佔用的核心

在 Azure 入口網站中檢視這些計量

  1. 在 Azure 入口網站,移至 Azure Machine Learning 工作區。
  2. 從 [監視] 區段選取 [計量]
  3. 從 [計量] 清單中選取您所需的計量。

Screenshot of the metrics section in the resource monitoring blade showing the relevant metrics for low priority VMs.

限制

  • 一旦部署與低優先順序 VM 的叢集相關聯,這類部署所產生的所有作業都會使用低優先順序的 VM。 無法進行個別作業設定。
  • 不論進度為何,都會在迷你批次層級完成重新排程。 未提供檢查點功能。

警告

如果整個叢集已被優先佔用 (或在單一節點叢集上執行),作業將會取消,因為沒有任何容量可供其執行。 在此案例中,將需要重新提交。