Verwenden von VMs mit niedriger Priorität in Batchbereitstellungen

GILT FÜR:Azure CLI ML-Erweiterung v2 (aktuell)Python SDK azure-ai-ml v2 (aktuell)

Azure Batch-Bereitstellungen unterstützen VMs mit niedriger Priorität, um die Kosten für Batchrückschlussworkloads zu verringern. VMs mit niedriger Priorität ermöglichen die Nutzung einer hohen Computeleistung zu geringen Kosten. VMs mit niedriger Priorität nutzen überschüssige Kapazitäten in Azure. Wenn Sie VMs mit niedriger Priorität in Pools angeben, kann Azure diesen Überschuss nutzen, sobald er zur Verfügung steht.

Der Nachteil bei deren Verwendung besteht darin, dass diese VMs nicht immer für die Zuweisung verfügbar sind oder je nach verfügbarer Kapazität jederzeit vorgezogen werden können. Aus diesem Grund eignen sie sich am besten für Batch- und asynchrone Verarbeitungsworkloads, bei denen die Zeit für den Auftragsabschluss flexibel ist und die Arbeit auf viele VMs verteilt wird.

VMs mit niedriger Priorität werden im Vergleich zu dedizierten VMs zu einem deutlich günstigeren Preis angeboten. Preisdetails finden Sie unter Azure Machine Learning – Preise.

Funktionsweise der Batchbereitstellung mit VMs mit niedriger Priorität

Azure Machine Learning-Batch-Bereitstellungen stellt verschiedene Funktionen bereit, die die vorteilhafte Nutzung von VMs mit niedriger Priorität erleichtern:

  • Batchbereitstellungsaufträge nutzen VMs mit niedriger Priorität, da sie auf Azure Machine Learning-Computeclustern ausgeführt werden, die mit VMs mit niedriger Priorität erstellt wurden. Sobald eine Bereitstellung dem Cluster einer VM mit niedriger Priorität zugeordnet ist, verwenden alle von dieser Bereitstellung erstellten Aufträge VMs mit niedriger Priorität. Die Konfiguration pro Auftrag ist nicht möglich.
  • Batchbereitstellungsaufträge suchen automatisch die vorgegebene Anzahl der VMs im verfügbaren Computecluster basierend auf der Anzahl der zu übermittelnden Aufgaben. Wenn VMs vorgezogen wurden oder nicht verfügbar sind, versuchen Batchbereitstellungsaufträge die verlorene Kapazität zu ersetzen, indem sie die fehlgeschlagenen Aufgaben in die Warteschlange des Clusters verschieben.
  • VMs mit niedriger Priorität verfügen über ein separates vCPU-Kontingent, das von dem dedizierter VMs abweicht. Kerne mit niedriger Priorität pro Region haben je nach Typ Ihres Abonnementangebots einen Standardgrenzwert von 100 bis 3.000. Die Anzahl der Kerne niedriger Priorität pro Abonnement kann erhöht werden. Es handelt sich bei allen VM-Familien um einen einzelnen Wert. Siehe Azure Machine Learning-Compute-Kontingente.

Überlegungen und Anwendungsfälle

Viele Batchworkloads eignen sich gut für VMs mit niedriger Priorität. Dies kann zwar zu weiteren Ausführungsverzögerungen bei der Belegungsfreigabe von VMs führen, aber bei Aufträgen mit flexibler Fertigstellungsfrist können potenzielle Kapazitätseinbußen zugunsten einer Ausführung zu geringeren Kosten toleriert werden.

Bei der Bereitstellung von Modellen unter Batch-Endpunkten kann die Neuplanung auf Minibatchebene erfolgen. Dies hat den zusätzlichen Vorteil, dass sich die Belegungsfreigabe nur auf die Minibatches auswirkt, die auf dem betroffenen Knoten gerade verarbeitet werden und noch nicht abgeschlossen sind. Jeder abgeschlossene Fortschritt wird beibehalten.

Erstellen von Batchbereitstellungen mit VMs mit niedriger Priorität

Batchbereitstellungsaufträge nutzen VMs mit niedriger Priorität, da sie auf Azure Machine Learning-Computeclustern ausgeführt werden, die mit VMs mit niedriger Priorität erstellt wurden.

Hinweis

Sobald eine Bereitstellung dem Cluster einer VM mit niedriger Priorität zugeordnet ist, verwenden alle von dieser Bereitstellung erstellten Aufträge VMs mit niedriger Priorität. Die Konfiguration pro Auftrag ist nicht möglich.

Folgendermaßen erstellen Sie einen Azure Machine Learning-Computecluster mit niedriger Priorität:

Erstellen Sie eine YAML-Computedefinition wie die folgende:

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

Erstellen Sie das Compute-Element mithilfe des folgenden Befehls:

az ml compute create -f low-pri-cluster.yml

Nach dem Erstellen des Compute-Elements können Sie Ihre Bereitstellung erstellen oder aktualisieren, um den neuen Cluster zu verwenden:

Um eine Bereitstellung unter dem neuen Computecluster zu erstellen oder zu aktualisieren, erstellen Sie eine YAML-Konfiguration wie die folgende:

$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

Erstellen Sie dann die Bereitstellung mit dem folgenden Befehl:

az ml batch-endpoint create -f endpoint.yml

Anzeigen und Überwachen der Knotenbelegungsfreigabe

Neue Metriken stehen im Azure-Portal für VMs mit niedriger Priorität zur Überwachung von VMs mit niedriger Priorität zur Verfügung. Diese Metriken sind:

  • Vorzeitig entfernte Knoten
  • Preempted cores (Kerne mit präemptivem Multitasking)

So zeigen Sie diese Metriken im Azure-Portal an:

  1. Navigieren Sie im Azure-Portal zu Ihrem Azure Machine Learning-Arbeitsbereich.
  2. Wählen Sie Metriken im Abschnitt Überwachung aus.
  3. Wählen Sie die gewünschten Metriken aus der Liste Metriken aus.

Screenshot des Abschnitts „Metriken“ im Blatt „Ressourcenüberwachung“ mit den relevanten Metriken für VMs mit niedriger Priorität.

Einschränkungen

  • Sobald eine Bereitstellung dem Cluster einer VM mit niedriger Priorität zugeordnet ist, verwenden alle von dieser Bereitstellung erstellten Aufträge VMs mit niedriger Priorität. Die Konfiguration pro Auftrag ist nicht möglich.
  • Die Neuplanung erfolgt unabhängig vom Fortschritt auf Minibatchebene. Es wird keine Prüfpunktfunktion bereitgestellt.

Warnung

In den Fällen, in denen der gesamte Cluster vorzeitig entfernt (oder auf einem Einzelknotencluster ausgeführt) wird, wird der Auftrag abgebrochen, da keine Kapazität für die Ausführung verfügbar ist. In diesem Fall ist eine erneute Übermittlung erforderlich.