Verwenden von Spot-VMs mit Batch-Workloads

Azure Batch bietet virtuelle Spot-Maschinen (VMs), um die Kosten für Batch-Workloads zu senken. Spot-VMs ermöglichen neue Arten von Azure Batch-Workloads, indem sie die Nutzung einer großen Menge an Rechenleistung zu niedrigen Kosten ermöglichen.

Spot-VMs nutzen die überschüssige Kapazität in Azure. Wenn Sie Spot-VMs in Ihren Pools angeben, kann Azure Batch diesen Überschuss nutzen, wenn er verfügbar ist.

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

Spot-VMs werden im Vergleich zu dedizierten VMs zu einem reduzierten Preis angeboten. Weitere Informationen zu Preisen finden Sie in den Batch: Preisangaben.

Unterschiede zwischen Spot- und Low-Priority-VMs

Batch bietet zwei Arten von kostengünstigen preemptiblen VMs:

  • Spot VMs, ein modernes Azure-weites Angebot, das auch als Einzelinstanz-VMs oder Virtual Machine Scale Sets verfügbar ist.
  • VMs mit niedriger Priorität, ein altes Angebot, das nur über Azure Batch verfügbar ist.

Welche Art von Knoten Sie erhalten, hängt vom Pool-Zuweisungsmodus Ihres Batch-Kontos ab, der bei der Kontoerstellung eingestellt werden kann. Batch-Konten, die den Pool-Zuweisungsmodus Benutzerabonnement verwenden, erhalten immer Spot-VMs. Batch-Konten, die den Pool-Zuweisungsmodus Stapelverwaltung verwenden, erhalten immer VMs mit niedriger Priorität.

Warnung

VMs mit niedriger Priorität werden nach dem 30. September 2025 eingestellt. Migrieren Sie vor diesem Datum zur Verwendung von Spot-VMs in Batch.

Azure Spot-VMs und Batch-VMs mit niedriger Priorität sind ähnlich, weisen jedoch einige Unterschiede im Verhalten auf.

Spot-VMs Virtuelle Computer mit niedriger Priorität
Unterstützte Batch-Konten Benutzer-Abonnement Sammelkonten Batch-verwaltete Batch-Konten
Unterstützte Batch-Pool-Konfigurationen VM-Konfiguration Konfiguration von virtuellen Maschinen und Cloud-Diensten (veraltet)
Verfügbare Regionen Alle Regionen, die Spot-VMs unterstützen Alle Regionen außer Microsoft Azure operated by 21Vianet
Berechtigte Kunden Für einige Abonnementangebotsarten nicht verfügbar. Siehe mehr über Punktbegrenzungen. Verfügbar für alle Batch-Kunden
Mögliche Gründe für die Räumung Capacity Capacity
Preismodell Variable Rabatte im Verhältnis zu den Standard-VM-Preisen Feste Rabatte im Vergleich zu den Standardpreisen für VM
Quotenmodell Vorbehaltlich der Kernquoten für Ihr Abonnement Vorbehaltlich der Kernkontingente auf Ihrem Batch-Konto
Verfügbarkeits-SLA Keine Keine

Batch-Unterstützung für Spot-VMs

Azure Batch bietet mehrere Funktionen, die die Nutzung von Spot-VMs erleichtern:

  • Batch-Pools können sowohl dedizierte VMs als auch Spot-VMs enthalten. Die Anzahl der einzelnen VM-Typen kann beim Erstellen eines Pools angegeben und für einen bestehenden Pool mithilfe der ausdrücklichen Größenänderung oder der automatischen Skalierung jederzeit geändert werden. Die Auftrags- und Aufgabenübermittlung kann unabhängig von den VM-Typen im Pool unverändert bleiben. Sie können einen Pool auch so konfigurieren, dass er vollständig auf Spot-VMs zurückgreift, um Aufträge so kostengünstig wie möglich auszuführen, aber dedizierte VMs hochfährt, wenn die Kapazität unter einen Mindestschwellenwert fällt, damit die Aufträge weiterlaufen.
  • Batch-Pools suchen automatisch die gewünschte Anzahl von Spot-VMs. Wenn VMs vorzeitig entfernt werden oder nicht verfügbar sind, versucht Batch, die verlorene Kapazität auszugleichen und das Ziel wieder zu erreichen.
  • Wenn Aufgaben unterbrochen werden, erkennt Batch dies und reiht die Aufgaben zur erneuten Ausführung automatisch wieder in eine Warteschlange.
  • Spot-VMs haben ein separates vCPU-Kontingent, das sich von dem für dedizierte VMs unterscheidet. Die Quote für Spot-VMs ist höher als die Quote für dedizierte VMs, da Spot-VMs weniger kosten. Weitere Informationen finden Sie im Artikel Batch-Dienst – Kontingente und Limits.

Überlegungen und Anwendungsfälle

Viele Batch-Workloads eignen sich gut für Spot-VMs. Ziehen Sie die Verwendung von Spot-VMs in Betracht, wenn Aufträge in viele parallele Aufgaben aufgeteilt sind, oder wenn Sie über viele Aufträge verfügen, die aufskaliert und auf viele VMs verteilt sind.

Einige Beispiele für Batchverarbeitungs-Anwendungsfälle, die sich gut für den Einsatz von Spot-VMs eignen, sind:

  • Entwicklung und Tests: Insbesondere bei der Entwicklung von umfangreichen Lösungen lassen sich beträchtliche Einsparungen realisieren. Alle Arten von Tests können profitieren, aber umfangreiche Auslastungstests und Regressionstests sind besonders gut geeignete Fälle.
  • Ergänzung der On-Demand-Kapazität: Spot-VMs können zur Ergänzung regulärer dedizierter VMs verwendet werden. Wenn sie verfügbar sind, können Aufträge skaliert werden, sodass diese schneller und günstiger abgeschlossen werden. Wenn sie nicht verfügbar sind, ist weiterhin die Baseline der dedizierten VMs verfügbar.
  • Flexible Auftragsausführungszeit: Bei Aufträgen mit flexibler Fertigstellungsfrist können potenzielle Kapazitätseinbußen toleriert werden. Mit dem Hinzufügen von Spot-VMs werden Aufträge jedoch häufig schneller und kostengünstiger ausgeführt.

Batch-Pools können auf verschiedene Weise für die Verwendung von Spot-VMs konfiguriert werden:

  • Ein Pool kann nur Spot-VMs verwenden. In diesem Fall stellt Batch vorzeitig entfernte Kapazitäten bei Verfügbarkeit wieder her. Diese Konfiguration stellt die günstigste Möglichkeit zum Ausführen von Aufträgen dar.
  • Spot-VMs können mit einer festen Basis dedizierter VMs verwendet werden. Die feste Anzahl dedizierter VMs stellt sicher, dass stets eine Kapazität zum Fortsetzen der Verarbeitung eines Auftrags verbleibt.
  • Ein Pool kann eine dynamische Mischung aus dedizierten und Spot-VMs verwenden, so dass die billigeren Spot-VMs nur verwendet werden, wenn sie verfügbar sind, während die vollpreisigen dedizierten VMs bei Bedarf hochskaliert werden. Durch eine solche Konfiguration bleibt eine Mindestmenge an Kapazität für die fortlaufende Verarbeitung der Aufträge verfügbar.

Beachten Sie bei der Planung des Einsatzes von Spot-VMs die folgenden Punkte:

  • Zur Maximierung der Verwendung von überschüssigen Kapazitäten in Azure können geeignete Aufträge aufskaliert werden.
  • Gelegentlich sind die VMs möglicherweise nicht verfügbar oder werden vorzeitig entfernt. Dies führt zu einer verringerten Kapazität für Aufträge und damit möglicherweise zu Unterbrechungen und einem erneutem Ausführen von Aufgaben.
  • Aufgaben mit kürzeren Ausführungszeiten funktionieren am besten mit Spot-VMs. Aufträge mit längeren Aufgaben werden möglicherweise durch Unterbrechungen stärker beeinträchtigt. Wenn Aufgaben mit langer Ausführungsdauer Prüfpunkte implementieren, um den Fortschritt im Laufe der Ausführung zu speichern, werden diese Auswirkungen möglicherweise reduziert.
  • Zeitintensive MPI-Aufträge, die mehrere VMs nutzen, eignen sich nicht gut für Spot-VMs, da eine vorzeitig entfernte VM dazu führen kann, dass der gesamte Auftrag erneut ausgeführt werden muss.
  • Spot-Knoten können als unbrauchbar markiert werden, wenn die Regeln der Netzwerksicherheitsgruppe (NSG) falsch konfiguriert sind.

Erstellen und Verwalten von Pools mit Spot-VMs

Ein Batch-Pool kann sowohl dedizierte als auch Spot-VMs (auch als Rechenknoten bezeichnet) enthalten. Sie können die Zielanzahl der Rechenknoten sowohl für dedizierte als auch für Spot-VMs festlegen. Die Zielanzahl der Knoten gibt die Anzahl von VMs an, die im Pool vorhanden sein sollen.

Im folgenden Beispiel wird ein Pool mit virtuellen Azure-Computern (in diesem Fall Linux-VMs) mit einem Ziel von 5 dedizierten VMs und 20 Spot-VMs erstellt:

ImageReference imageRef = new ImageReference(
    publisher: "Canonical",
    offer: "UbuntuServer",
    sku: "20.04-LTS",
    version: "latest");

// Create the pool
VirtualMachineConfiguration virtualMachineConfiguration =
    new VirtualMachineConfiguration("batch.node.ubuntu 20.04", imageRef);

pool = batchClient.PoolOperations.CreatePool(
    poolId: "vmpool",
    targetDedicatedComputeNodes: 5,
    targetLowPriorityComputeNodes: 20,
    virtualMachineSize: "Standard_D2_v2",
    virtualMachineConfiguration: virtualMachineConfiguration);

Sie können die aktuelle Anzahl der Knoten sowohl für dedizierte als auch für Spot-VMs abrufen:

int? numDedicated = pool1.CurrentDedicatedComputeNodes;
int? numLowPri = pool1.CurrentLowPriorityComputeNodes;

Pool-Knoten haben eine Eigenschaft, die angibt, ob der Knoten eine dedizierte oder eine Spot-VM ist:

bool? isNodeDedicated = poolNode.IsDedicated;

Spot-VMs können gelegentlich vorzeitig entfernt werden. Wenn es zu einer vorzeitigen Entfernung kommt, werden Aufgaben, die auf den vorzeitig entfernten Knoten-VMs ausgeführt wurden, nochmals in die Warteschlange gestellt und bei wieder vorhandener Kapazität erneut ausgeführt.

Für VM-Konfigurationspools führt Azure Batch auch folgende Aktionen aus:

  • Der Status der vorzeitig entfernten VMs wird in Vorzeitig entfernt geändert.
  • Die VM wird effektiv gelöscht, sodass alle auf der VM lokal gespeicherten Daten verloren gehen.
  • Ein Auflistungsvorgang von Knoten im Pool gibt weiterhin die vorzeitig entfernten Knoten zurück.
  • Der Pool versucht ständig, die angestrebte Anzahl der verfügbaren Spot-Knoten zu erreichen. Wenn Ersatzkapazität gefunden wird, behalten die Knoten ihre IDs bei, werden jedoch erneut initialisiert und durchlaufen wieder die Zustände Wird erstellt und Wird gestartet, bevor sie zum Planen von Aufgaben verfügbar sind.
  • Die Anzahl der vorzeitigen Entfernungen ist als Metrik im Azure-Portal verfügbar.

Pools mit Spot-VMs skalieren

Wie bei Pools, die nur aus dedizierten VMs bestehen, ist es möglich, einen Pool mit Spot-VMs durch Aufrufen der Resize-Methode oder durch Verwendung der Autoskalierung zu skalieren.

Der Vorgang zum Ändern der Poolgröße nimmt einen zweiten optionalen Parameter entgegen, der den Wert von targetLowPriorityNodes aktualisiert:

pool.Resize(targetDedicatedComputeNodes: 0, targetLowPriorityComputeNodes: 25);

Die Formel für die automatische Pool-Skalierung unterstützt Spot-VMs wie folgt:

  • Den Wert der dienstseitig definierten Variable $TargetLowPriorityNodes können Sie abrufen oder festlegen.
  • Den Wert der vom Dienst definierten Variable $CurrentLowPriorityNodes können Sie abrufen.
  • Den Wert der vom Dienst definierten Variable $PreemptedNodeCount können Sie abrufen. Diese Variable gibt die Anzahl der Knoten mit dem Status „Vorzeitig entfernt“ zurück und ermöglicht Ihnen, die Anzahl der dedizierten Knoten abhängig von der Anzahl der nicht verfügbaren vorzeitig entfernten Knoten hoch- oder herunterzuskalieren.

Konfigurieren von Aufträgen und Aufgaben

Aufträge und Aufgaben erfordern möglicherweise eine zusätzliche Konfiguration für Spotknoten:

  • Die JobManagerTask-Eigenschaft eines Auftrags besitzt eine AllowLowPriorityNode-Eigenschaft. Wenn diese Eigenschaft wahr ist, kann die Jobmanager-Aufgabe entweder auf einem dedizierten oder einem Spot-Knoten geplant werden. Wenn diese Eigenschaft auf FALSE festgelegt ist, wird die Auftrags-Manager-Aufgabe nur auf einem dedizierten Knoten geplant.
  • Für eine Aufgabenanwendung steht die AZ_BATCH_NODE_IS_DEDICATEDUmgebungsvariable zur Verfügung, sodass ermittelt werden kann, ob die Anwendung auf einem Knoten mit niedriger Priorität oder einem dedizierten Knoten ausgeführt wird.

Anzeigen von Metriken für Spot-VMs

Neue Metriken sind im Azure-Portal für Spot-Knoten verfügbar. Diese Metriken sind:

  • Anzahl der Knoten mit niedriger Priorität
  • Anzahl von Kernen mit niedriger Priorität
  • Anzahl der vorzeitig entfernten Knoten

So zeigen Sie diese Metriken im Azure-Portal an

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

Einschränkungen

  • Spot-VMs in Azure Batch unterstützen nicht die Festlegung eines Höchstpreises und keine preisbasierten Entfernungen. Sie können nur aus Kapazitätsgründen geräumt werden.
  • Spot-VMs sind nur für Konfigurationspools für virtuelle Maschinen verfügbar, nicht für Konfigurationspools für Cloud-Dienste, die veraltet sind.
  • Spot-VMs sind für einige Clouds, VM-Größen und Abonnementangebotstypen nicht verfügbar. Weitere Informationen zu Spot-VM-Einschränkungen.
  • Derzeit werden kurzlebige Betriebssystemdatenträger aufgrund der dienstseitig verwalteten Entfernungsrichtlinie Stop-Deallocate nicht mit Spot-VMs unterstützt.

Nächste Schritte