Unterstützung für die Verbesserung dieser Seite beitragen
Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Um zu diesem Benutzerhandbuch beizutragen, wählen Sie den GitHub Link Diese Seite bearbeiten unter, der sich im rechten Bereich jeder Seite befindet.
Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Verwaltung der Rechenleistung für AI/ML Workloads mit EKS Auto Mode und Karpenter
In diesem Abschnitt wird beschrieben, wie Sie beschleunigtes Rechnen (AWS Trainium, NVIDIA-GPUs) für KI-Trainings- und Inferenz-Workloads mithilfe des Amazon EKS-Automatikmodus oder des selbstverwalteten Karpenter verwalten.
EKS Auto Mode und Karpenter unterstützen zwei Bereitstellungsmodi: dynamische Bereitstellung und statische Bereitstellung. Bei der dynamischen Bereitstellung stellen EKS Auto Mode und Karpenter beschleunigte Recheninstanzen bereit und skalieren sie, wenn die Workloads im Cluster geplant sind. Bei der statischen Bereitstellung stellen EKS Auto Mode und Karpenter eine feste Anzahl von Knoten bereit und verwalten sie. Dynamisches und statisches Provisioning können im selben Cluster verwendet werden, um einen konstanten Basiskapazitätspool aufrechtzuerhalten und gleichzeitig den Workload-Anforderungen entsprechend zu skalieren.
EKS Auto Mode und Karpenter unterstützen alle vier Optionen zum Kauf von Kapazitäten (SpotOn-Demand, Capacity Blocks und ODCRs) und stellen immer zuerst reservierte Kapazität bereit, gefolgt von Spot oder. On-Demand
EKS Auto Mode gegen Karpenter
Beide Ansätze nutzen die gleiche NodePool API, unterscheiden sich jedoch in Bezug auf die Betriebsverantwortung, die Ressourcen-APIs, die Betriebssystemunterstützung, den Umgang mit punktuellen Unterbrechungen und die Flexibilität bei der Konfiguration.
| Feature | EKS Auto Mode | Self-managed Karpenter |
|---|---|---|
|
Am besten geeignet für |
Teams, die eine verwaltete Infrastruktur mit minimalem Betriebsaufwand bevorzugen |
Teams, die die volle Kontrolle über den Node-Lebenszyklus, AMIs, Betriebssystem-Tuning und Patching bevorzugen. |
|
Operatives Modell |
AWS stellt den Karpenter Controller, GPU/Trainium Treiber, Geräte-Plugins, Betriebssystem-Patches und den Umgang mit Spot-Unterbrechungen bereit und verwaltet sie. |
Sie installieren und betreiben den Karpenter Controller in Ihrem Cluster und sind selbst für GPU/Trainium Treiber, Geräte-Plug-ins, den AMI-Lebenszyklus, das Patchen und die Behandlung von Spot-Unterbrechungen verantwortlich. |
|
Rechenoptionen |
On-Demand, Spot, ODCRs, Kapazitätsblöcke für ML |
On-Demand, Spot, ODCRs, Kapazitätsblöcke für ML |
|
Ressourcen-APIs |
|
|
|
Node-Betriebssystem |
Nur Bottlerocket. NVIDIA-GPU-, AWS Trainium- und EFA-Abhängigkeiten enthalten. |
AL2023, Bottlerocket, Windows oder Ihr eigenes AMI. |
|
Lebensdauer des Knotens |
Maximale Lebensdauer des Knotens für Sicherheitspatches von 21 Tagen. Workloads müssen eine Knotenrotation tolerieren. |
Sie definieren den Knotenlebenszyklus NodePool |
|
Behandlung von Unterbrechungen vor Ort |
Einheimisch. Keine SQS-Warteschlange oder kein Node Termination Handler erforderlich. |
Sie sind für die Konfiguration und Aktivierung verantwortlich. |
|
Schnelles Ziehen des Containers |
Paralleler SOCI-Pull ist in allen Instances der G-, P- und Trn-Familie enthalten |
Sie sind für die Konfiguration und Aktivierung verantwortlich. |
|
EC2-Praktizierungsgruppen |
Cluster, Partition, Verteilung |
Cluster, Partition, Ausbreitung |
|
Konfiguration der Netzwerkschnittstelle |
Konfiguration pro Schnittstelle für Typ |
Konfiguration pro Schnittstelle für Typ |
|
Reparatur des Knotens |
Standardmäßig aktiviert, einschließlich des EKS-Knotenüberwachungsagenten |
Der EKS-Knotenüberwachungsagent ist optional aktiviert und wird selbst verwaltet |
|
Preisgestaltung |
Die Verwaltungsgebühr für den EKS-Automatikmodus wird |
Open Source. Sie zahlen für die zugrunde liegenden EC2-Instances. |
Allgemeine, AI/ML bekannte Bezeichnungen
EKS Auto Mode und Karpenter stellen Instanzbezeichnungen zur Verfügung, die Sie in einem NodePool requirements Pod nodeSelector oder für Target-Workloads verwenden können, ohne Instanztypen fest nodeAffinity zu codieren. Das Label-Präfix unterscheidet sich zwischen den beiden: EKS Auto Mode verwendet es, eks.amazonaws.com/ während das selbstverwaltete Karpenter es verwendet. karpenter.k8s.aws/
Die folgenden Tabellen zeigen relevante Labels, die in verwendet werden können. NodePools EKS Auto Mode und Karpenter wenden im Rahmen des Bereitstellungsprozesses auch die in der Karpenter-Dokumentation aufgeführten Bezeichnungen
Planung von Labels für reservierte Kapazität
Wenn EKS Auto Mode oder Karpenter einen Knoten in eine Reservierung aufnehmen, werden die folgenden Labels hinzugefügt. Verwenden Sie sie innodeSelector, Node-Affinität oder NodePool Anforderungen, um Workloads weiterzuleiten.
-
karpenter.sh/capacity-type:reservedon-demand, oderspot. Gibt die Kapazität an, die den Knoten unterstützt. -
karpenter.k8s.aws/capacity-reservation-id: Die spezifische Reservierungs-ID, mit der der Knoten gestartet wurde. -
karpenter.k8s.aws/capacity-reservation-type:defaultfür ODCRs,capacity-blockfür Kapazitätsblöcke.
Die folgenden Beispiele zeigen gängige Planungsmuster:
Einen Pod an eine bestimmte Reservierung anheften (kein Fallback):
spec: nodeSelector: karpenter.sh/capacity-type: reserved karpenter.k8s.aws/capacity-reservation-id: "cr-0123456789abcdef0"
Nur ODCR-Knoten als Ziel (alle ODCR, keine Kapazitätsblöcke):
spec: nodeSelector: karpenter.sh/capacity-type: reserved karpenter.k8s.aws/capacity-reservation-type: default
Wählen Sie eine beliebige reservierte Kapazität (ODCR oder Capacity Block) als Ziel aus:
spec: nodeSelector: karpenter.sh/capacity-type: reserved
Bevorzugen Sie eine reservierte Option, greifen Sie aber auf Spot zurück oder On-Demand falls nicht verfügbar:
spec: affinity: nodeAffinity: preferredDuringSchedulingIgnoredDuringExecution: - weight: 100 preference: matchExpressions: - key: karpenter.sh/capacity-type operator: In values: ["reserved"]
Verhalten beim Ablauf der Reservierung
ODCRs und Kapazitätsblöcke verhalten sich unterschiedlich, wenn die Reservierung endet. Stellen Sie sicher, dass Ihre Planungs- und Checkpoint-Strategie der Art der Reservierung entspricht, die Ihren Arbeitsaufwand unterstützt.
ODCRs
Eine Instanz, die in ein ODCR gestartet wird, befindet sich nicht auf unbestimmte Zeit in diesem ODCR. Das ODCR kann ablaufen, storniert werden oder die Instanz kann manuell aus dem ODCR entfernt werden. Wenn einer dieser Fälle auftritt und EKS Auto Mode/Karpenter feststellt, dass die Instanz nicht mehr zu einem ODCR gehört, aktualisiert es die Bezeichnung des Knotens von bis. karpenter.sh/capacity-type reserved on-demand Die Instanz wird weiterhin mit On-Demand Standardkapazität ausgeführt, und bestehende Pods werden weiterhin ohne Unterbrechung ausgeführt.
Anmerkung
Jeder Pod, der mit einem nodeSelector: karpenter.sh/capacity-type: reserved Strict-Wert geplant ist, wird nicht auf den Knoten übertragen, wenn er neu benannt wurde. Damit Workloads auch nach Ablauf oder Kündigung eines ODCR überleben, verwenden Sie das oben gezeigte preferredDuringSchedulingIgnoredDuringExecution Muster anstelle von a. nodeSelector
Kapazitätsblöcke
Im Gegensatz zu ODCRs haben Kapazitätsblöcke immer eine Endzeit, und EC2 beendet Capacity Block-Instances 30 Minuten vor der Endzeit (60 Minuten für UltraServer Instance-Typen). Planen Sie Schulungen und Ableitungen so, dass der Status abgeschlossen ist, oder speichern Sie den Status, bevor das Reservierungsfenster geschlossen wird. Pods, bei denen ein Strict nodeSelector für einen bestimmten capacity-reservation-id Go verwendet wird, Pending sobald der Block abgelaufen ist, und werden nicht an anderer Stelle verschoben. Kombinieren Sie Checkpointing mit dem oben genannten flexiblen Affinitätsmuster, wenn Workloads während des Ablaufs des Kapazitätsblocks auf eine andere Kapazität verlagert werden müssen.
-
Sie können Reserved Instances bis 30 Minuten vor der Capacity Block-Endzeit für die meisten Instance-Typen oder 60 Minuten vor der Endzeit für UltraServer Instance-Typen verwenden.
-
EKS Auto Mode und Karpenter beginnen 10 Minuten vor der Beendigung von EC2 präventiv mit der Entleerung von Knoten in einem Kapazitätsblock, sodass Workloads Zeit haben, Checkpoints zu überprüfen und ordnungsgemäß herunterzufahren.
Statische Kapazität NodePools
EKS Auto Mode und Karpenter unterstützen statische Kapazitäten NodePools, wodurch unabhängig von der Arbeitslast eine feste Anzahl von Knoten aufrechterhalten wird. Statische Pools verhindern Kaltstartverzögerungen für latenzempfindliche Inferenzen und ermöglichen es Ihnen, einen minimalen Infrastrukturbedarf für Ihren Cluster zu reservieren.
Die statische Kapazität wird konfiguriert, indem Sie das Feld auf dem setzen. replicas NodePool
Überlegungen
-
Sobald
replicases auf a gesetzt ist NodePool, können Sie es nicht mehr entfernen. Eine einzelne Person NodePool kann nicht zwischen statischer und dynamischer Kapazitätsbereitstellung wechseln. -
Statische Kapazitäten NodePools werden bei der Konsolidierung nicht berücksichtigt. Legen Sie diese
limits.nodesEinstellung festreplicas, um eine vorübergehende Skalierung während einer Änderung oder eines Ablaufs des AMI zu ermöglichen. -
Für eine vorhersehbare Verteilung der Availability Zone (AZ) sollten Sie eine statische Kapazität NodePool pro AZ erstellen, anstatt sich über mehrere Zonen in einem einzigen Pool zu erstrecken.
Kapazitätsblöcke für ML
Capacity Blocks for ML ermöglichen es Ihnen, Trainium-Instances für ein definiertes zukünftiges Fenster zu reservieren P-family . Sie sind im Voraus bezahlt, sodass EKS Auto Mode und Karpenter sie als kostenlos betrachten und ihnen Vorrang vor Spot einräumen. On-Demand Kapazitätsblöcke für ML können eine Reservierungsdauer von 1 bis 14 Tagen oder ein Vielfaches von 7 Tagen haben, also bis zu 182 Tage (6 Monate).
Um Capacity Blocks for ML mit EKS Auto Mode oder Karpenter zu verwenden, konfigurieren Sie die Konfiguration capacityReservationSelectorTerms mit Ihrer Kapazitätsreservierungs-ID in Ihrem. NodeClass Sie können den Abgleich offener Reservierungen nicht mit Capacity Blocks for ML verwenden. Ein Begriff kann eine ID, eine Reihe von Stichwörtern oder Kriterien für die Zuordnung von Instanzen angeben, anhand derer Sie auswählen können. Bei der Angabe von Stichwörtern werden alle Kapazitätsreservierungen ausgewählt, auf die über das Konto mit den passenden Stichwörtern zugegriffen werden kann. Dies kann durch Angabe einer Inhaber-Konto-ID weiter eingeschränkt werden.
Weitere Beispiele finden Sie in der Karpenter Dokumentation.
On-Demand Kapazitätsreservierungen (ODCRs)
ODCRs garantieren die Kapazität in einer bestimmten Availability Zone (AZ), ohne dass eine langfristige Bindung besteht. Ihnen werden On-Demand Standardtarife in Rechnung gestellt, unabhängig davon, ob die Kapazität genutzt wird oder nicht. ODCRs unterstützen alle NVIDIA-GPU-Familien, einschließlich G-family Instances, die von Capacity Blocks for ML nicht unterstützt werden. ODCRs sind im Voraus bezahlt, daher modellieren EKS Auto Mode und Karpenter sie als kostenlos und priorisieren sie vor Spot. On-Demand
ODCRs verhalten sich am Ende der Reservierung anders als Capacity Blocks for ML. Wenn ein ODCR abläuft oder storniert wird, läuft die Instance standardmäßig weiter. On-Demand Details dazu finden Sie unter Verhalten beim Ablauf der Reservierung.
Um ODCRs mit EKS Auto Mode oder Karpenter zu verwenden, konfigurieren Sie die Konfiguration capacityReservationSelectorTerms mit Ihren Kapazitätsreservierungsbedingungen in Ihrem. NodeClass Ein Begriff kann eine ID, eine Reihe von Stichwörtern oder Kriterien für die Auswahl einer Instanz angeben. Bei der Angabe von Stichwörtern werden alle Kapazitätsreservierungen ausgewählt, auf die über das Konto mit den passenden Stichwörtern zugegriffen werden kann. Bei der Angabe von Kriterien für die Zuordnung von Instances werden Reservierungen anhand ihres Zuordnungsverhaltens ausgewählt: offen (entspricht allen kompatiblen Instances) oder Targeted (entspricht nur explizit ausgewählten Instances). Dies kann durch Angabe einer Inhaber-Konto-ID weiter eingeschränkt werden.
Weitere Beispiele finden Sie in der Karpenter Dokumentation.
On-Demand
On-Demand ist der Standardkapazitätstyp und kann mit statischer oder dynamischer Bereitstellung in EKS Auto Mode und Karpenter verwendet werden. Sie können On-Demand Instances explizit anfordern, indem Sie Ihre einrichtenkarpenter.sh/capacity-type: on-demand. NodePool EKS Auto Mode und Karpenter wählen die Instance mit dem niedrigsten Preis aus, die die Ressourcenanforderungen des Pods erfüllt. Geeignet On-Demand für Entwicklung, Prototyping, unvorhersehbare Inferenzskalierung und für alle Workloads, die sofortige Verfügbarkeit ohne Unterbrechungsrisiko erfordern.
Spot-Instances
Spot bietet Einsparungen von bis zu 90% im Vergleich zur Nutzung On-Demand der EC2-Reservekapazität. AWS kann Spot-Instances mit einer zweiminütigen Unterbrechungsfrist zurückfordern. Maximieren Sie die Verfügbarkeit, indem Sie mehrere Instance-Familien auf der auflisten. NodePool Kombinieren Sie Spot-Workloads in regelmäßigen Abständen mit einem PodDisruptionBudget AND-Checkpoint auf einen dauerhaften Speicher (Amazon S3 oder Amazon EFS), damit die Pods ihren Status während des Ablauffensters speichern können.
Spot eignet sich gut für fehlertolerante, wiederaufladbare Schulungs- und Inferenz-Workloads, bei denen gelegentliche Unterbrechungen im Austausch für erhebliche Kosteneinsparungen akzeptabel sind.
Zu den häufigsten Kandidaten gehören:
-
Hyperparameter-Tuning und Sweeps: viele kurze, parallele Versuche, die bei einer Unterbrechung wiederholt werden können.
-
Verteiltes Training mit Checkpointing: Jobs mit langer Laufzeit, bei denen der Status regelmäßig in S3 oder FSx gespeichert wird und nach einem Knotenverlust am letzten Checkpoint wieder aufgenommen werden kann.
-
Batch- und Offline-Inferenz: groß angelegte Bewertungsaufträge anhand von Datensätzen, bei denen die End-to-End-Latenz in Stunden statt in Sekunden gemessen wird.
-
Datenvorverarbeitung und Feature-Engineering-Pipelines: parallele Transformationen über große Datensätze.
-
Modellevaluierung und Benchmarking: wiederholbare Aufgaben, die zu idempotenten Ergebnissen führen.
-
Entwicklung, Prototyping und Notizbücher: interaktive Experimente, bei denen Benutzer gelegentliche Neustarts tolerieren können.
Vermeiden Sie Spot für latenzempfindliche Echtzeitinferenzen, SLA-bound Produktionsendpunkte und Workloads, die keine Checkpoints ausführen oder Neustarts nicht tolerieren.
Sie können Spot-Instances explizit anfordern, indem Sie Ihre einrichten. karpenter.sh/capacity-type: spot NodePool