Mit AWS Batch können Sie die Rechenkapazität für SageMaker-Training-Aufträge innerhalb einer passenden Job Queue in Kontingentanteile aufteilen. Für Teams, die Ressourcen gemeinsam nutzen, legen die Strategien RESERVE, LEND und LEND_AND_BORROW fest, ob ungenutzte Kapazität reserviert, verliehen oder zusätzlich geliehen werden darf. (AWS Batch: Kontingentverwaltung)

Was Kontingentanteile in AWS Batch steuern

Kontingentanteile, auf Englisch quota shares, sind virtuelle Queues innerhalb einer Job Queue. Sie ordnen Kapazität den SageMaker-Training-Aufträgen einzelner Teams oder Projekte zu. Das steuert die Aufteilung innerhalb dieser Queue, nicht das Servicekontingent eines AWS-Kontos.

Voraussetzung ist eine Job Queue, die mit einer Service Environment vom Typ SAGEMAKER_TRAINING verbunden ist. Die AWS-Dokumentation zur Kontingentverwaltung beschränkt die Funktion auf solche Queues.

Die passende Strategie für ungenutzte Kapazität wählen

Entscheidend ist, was mit Kapazität geschieht, die ein Anteil gerade nicht nutzt. Die drei Strategien unterscheiden sich darin, ob andere Anteile sie verwenden oder der eigene Anteil zusätzlich Kapazität leihen darf. (AWS-Dokumentation zu Kontingentanteilen)

StrategieUmgang mit ungenutzter KapazitätAndere Anteile können sie nutzenDarf dieser Anteil Kapazität leihen?
RESERVEBleibt für Aufträge dieses Anteils reserviert.NeinNein
LENDWird anderen Anteilen zur Nutzung überlassen.JaNein
LEND_AND_BORROWWird anderen Anteilen zur Nutzung überlassen.JaJa, innerhalb eines konfigurierten Limits

RESERVE passt, wenn ein Team seine ungenutzte Kapazität für eigene Aufträge vorhalten soll. LEND gibt ungenutzte Ressourcen für andere Anteile frei. Mit LEND_AND_BORROW kann ein Anteil zusätzlich Kapazität leihen, wenn die Konfiguration das erlaubt.

Grenzen und Ressourcenbindungen einplanen

AWS setzt feste Grenzen für die Größe eines Designs. Prüfen Sie sie, bevor Sie Teams oder Projekte auf Anteile verteilen. (AWS-Dokumentation zu Kontingentanteilen, Anleitung zum Erstellen der Ressourcen)

KonfigurationselementVorgabeBedeutung für die Planung
Job QueueHöchstens 20 Kontingentanteile pro QueueDie Anzahl der Teams oder Projekte muss in diese Grenze passen.
KontingentanteilMindestens 1, höchstens 5 KapazitätsgrenzenGrenzen werden für unterstützte SageMaker-Training-Instanztypen festgelegt.
Service EnvironmentTyp SAGEMAKER_TRAININGDie Queue muss mit einer passenden Umgebung verbunden sein.
Verbindung der Service EnvironmentEine quota-verwaltete Service Environment kann mit nur einer quota-verwalteten Job Queue verbunden werden.Für eine weitere solche Queue ist eine eigene Umgebung erforderlich.
KapazitätsgrenzenAls unterstützte Instanztypen angeben, nicht als NUM_INSTANCESPrüfen Sie die Instanztypen, bevor Sie die Grenzen festlegen.

Scheduling Policy, Umgebung und Queue vorbereiten

Für die Planung der Ressourcenkette gehen Sie in dieser Reihenfolge vor:

  1. Berechtigungen prüfen. Das zuständige IAM-Prinzipal benötigt Rechte zum Erstellen und Verwalten der AWS-Batch-Queues, Scheduling Policies und Service Environments. Ohne diese Rechte lassen sich die benötigten Ressourcen nicht vollständig einrichten. (AWS-Anleitung zur Ressourcenerstellung)
  2. Eine passende Scheduling Policy festlegen. Die Policy muss quotaSharePolicy unterstützen, damit die Queue mit Kontingentanteilen arbeiten kann.
  3. Die Service Environment konfigurieren. Wählen Sie den Typ SAGEMAKER_TRAINING und legen Sie Kapazitätsgrenzen über Instanztypen fest, die SageMaker Training unterstützt.
  4. Die Job Queue verbinden. Verknüpfen Sie die Queue mit der passenden Scheduling Policy und der Service Environment. Planen Sie die Umgebung für diese eine quota-verwaltete Queue ein.
  5. Kontingentanteile und Strategien definieren. Legen Sie pro Anteil mindestens eine und höchstens fünf Instanztyp-Kapazitätsgrenzen fest und wählen Sie anhand der gewünschten Freigabe RESERVE, LEND oder LEND_AND_BORROW.
  6. Den Queue-Status kontrollieren. Die AWS-Anleitung nennt ENABLED und VALID sowie den Grund JobQueue Healthy als Zustände für eine gesunde Job Queue.

Preemption bei geliehener Kapazität berücksichtigen

Wenn ein Anteil verliehene Kapazität wieder benötigt, kann AWS Batch Aufträge verdrängen, die diese Ressourcen ausgeliehen haben. Preemption bezeichnet hier die Verdrängung eines Auftrags, um Kapazität freizugeben. Bei der Auswahl berücksichtigt AWS Batch die Zahl und den Typ der geliehenen Instanzen, die Prioritäten der Aufträge und deren Laufzeit. Die Zuordnung folgt einer eigenen Heuristik. (AWS-Dokumentation zu Kontingentanteilen)

Zusätzlich lässt sich eine Verdrängung innerhalb eines Anteils konfigurieren: Aufträge mit höherer Priorität können solche mit niedrigerer Priorität verdrängen, wenn sie den Status SCHEDULED, STARTING oder RUNNING haben.

Auch eine Änderung der Kapazitätsgrenze kann laufende Arbeit betreffen. Senken Sie das Limit eines Anteils unter die von ihm genutzte Kapazität, können Aufträge dieses Anteils für eine Verdrängung infrage kommen. Das gilt laut AWS auch bei LEND und RESERVE. Prüfen Sie deshalb die Auslastung, bevor Sie eine Grenze reduzieren.