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)
| Strategie | Umgang mit ungenutzter Kapazität | Andere Anteile können sie nutzen | Darf dieser Anteil Kapazität leihen? |
RESERVE | Bleibt für Aufträge dieses Anteils reserviert. | Nein | Nein |
LEND | Wird anderen Anteilen zur Nutzung überlassen. | Ja | Nein |
LEND_AND_BORROW | Wird anderen Anteilen zur Nutzung überlassen. | Ja | Ja, 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)
| Konfigurationselement | Vorgabe | Bedeutung für die Planung |
| Job Queue | Höchstens 20 Kontingentanteile pro Queue | Die Anzahl der Teams oder Projekte muss in diese Grenze passen. |
| Kontingentanteil | Mindestens 1, höchstens 5 Kapazitätsgrenzen | Grenzen werden für unterstützte SageMaker-Training-Instanztypen festgelegt. |
| Service Environment | Typ SAGEMAKER_TRAINING | Die Queue muss mit einer passenden Umgebung verbunden sein. |
| Verbindung der Service Environment | Eine 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ätsgrenzen | Als unterstützte Instanztypen angeben, nicht als NUM_INSTANCES | Prü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:
- 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)
- Eine passende Scheduling Policy festlegen. Die Policy muss
quotaSharePolicyunterstützen, damit die Queue mit Kontingentanteilen arbeiten kann. - Die Service Environment konfigurieren. Wählen Sie den Typ
SAGEMAKER_TRAININGund legen Sie Kapazitätsgrenzen über Instanztypen fest, die SageMaker Training unterstützt. - 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.
- 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,LENDoderLEND_AND_BORROW. - Den Queue-Status kontrollieren. Die AWS-Anleitung nennt
ENABLEDundVALIDsowie den GrundJobQueue Healthyals 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.