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.
Erstellen Sie eine NodeClass
Wichtig
Sie müssen mit 0 Knoten in Ihrer Instance-Gruppe beginnen und Karpenter die automatische Skalierung übernehmen lassen. Wenn Sie mit mehr als 0 Knoten beginnen, skaliert Karpenter diese auf 0 herunter.
Eine Knotenklasse (NodeClass) definiert Einstellungen auf Infrastrukturebene, die für Knotengruppen in Ihrem Amazon EKS-Cluster gelten, einschließlich Netzwerkkonfiguration, Speichereinstellungen und Ressourcen-Tagging. A HyperPodNodeClass ist eine benutzerdefinierte OptionNodeClass, die vorab erstellten Instanzgruppen in zugeordnet wird und Einschränkungen definiert SageMaker HyperPod, die festlegen, welche Instanztypen und Availability Zones für die Autoscaling-Entscheidungen von Karpenter unterstützt werden.
Überlegungen zur Erstellung einer Knotenklasse
-
Sie können bis zu 10 Instance-Gruppen in einer angeben
NodeClass. -
Instanzgruppen, die verwendet werden
InstanceRequirements(flexible Instanzgruppen), können mehrere Instanztypen innerhalb einer einzelnen Instanzgruppe enthalten. Dies vereinfacht IhreNodeClassKonfiguration, da Sie auf weniger Instanzgruppen verweisen können, um dieselben Instanztypen und Availability Zones abzudecken. Anstatt beispielsweise 6 Instanzgruppen (3 Instanztypen × 2 AZs) zu erstellen, können Sie eine einzige flexible Instanzgruppe erstellen, die alle Kombinationen abdeckt. Beachten Sie, dassInstanceTypeInstanceRequirementssie sich gegenseitig ausschließen — Sie müssen für jede Instanzgruppe die eine oder andere angeben. -
Wenn Sie die GPU-Partitionierung mit MIG (Multi-Instance GPU) verwenden, kann Karpenter Knoten automatisch Instanzgruppen bereitstellen. MIG-enabled Stellen Sie sicher, dass Ihre Instanzgruppen Instanztypen enthalten MIG-supported (ml.p4d.24xlarge, ml.p5.48xlarge oder ml. p5e/p5en.48xlarge) und konfigurieren Sie die entsprechenden MIG-Labels bei der Clustererstellung. Weitere Hinweise zur Konfiguration der GPU-Partitionierung finden Sie unter. Verwendung von GPU-Partitionen in Amazon SageMaker HyperPod
-
Wenn benutzerdefinierte Labels auf Instanzgruppen angewendet werden, können Sie diese bei der Statusabfrage im
desiredLabelsFeld anzeigen.HyperpodNodeClassDazu gehören MIG-Konfigurationsbezeichnungen wienvidia.com/mig.config. Wenn eingehende Jobs MIG-Ressourcen anfordern, skaliert Karpenter die Instanzen automatisch, wobei die entsprechenden MIG-Labels angebracht sind. -
Wenn Sie sich dafür entscheiden, eine Instanzgruppe zu löschen, empfehlen wir, sie aus Ihrer Gruppe zu entfernen,
NodeClassbevor Sie sie aus Ihrem HyperPod Cluster löschen. Wenn eine Instance-Gruppe gelöscht wird, während sie in einemNodeClassverwendet wird, wird dieNodeClassals nichtReadyfür die Bereitstellung markiert und für nachfolgende Skalierungsvorgänge nicht verwendet, bis die Instance-Gruppe ausNodeClassentfernt wird. -
Wenn Sie Instance-Gruppen aus einer entfernen
NodeClass, erkennt Karpenter eine Abweichung auf den Knoten, die von Karpenter in der Instance-Gruppe (n) verwaltet wurden, und unterbricht die Knoten auf der Grundlage Ihrer Budgetkontrollen für Störungen. -
Die von der Instance-Gruppe verwendeten Subnetze sollten derselben AZ angehören. Subnetze werden entweder mit
OverrideVpcConfigauf Instance-Gruppenebene oder Clusterebene spezifiziert.VpcConfigwird standardmäßig verwendet. -
Derzeit wird nur On-Demand-Kapazität unterstützt. Instance-Gruppen mit Trainingsplan oder reservierter Kapazität werden nicht unterstützt.
-
Instance-Gruppen mit
DeepHealthChecks (DHC)werden nicht unterstützt. Das liegt daran, dass die Fertigstellung eines DHC etwa 60 bis 90 Minuten in Anspruch nimmt und die Pods während dieser Zeit im Status „Ausstehend“ verbleiben, was zu einer Überprovisionierung führen kann.
In den folgenden Schritten wird erklärt, wie eine erstellt wirdNodeClass.
-
Erstellen Sie eine YAML-Datei (z. B. nodeclass.yaml) mit Ihrer
NodeClass-Konfiguration. -
Wenden Sie die Konfiguration mit kubectl auf Ihren Cluster an.
-
Verweisen Sie
NodeClassin IhrerNodePoolKonfiguration auf. -
Im Folgenden finden Sie ein Beispiel
NodeClass, das die Instance-Typen ml.c5.xlarge und ml.c5.4xlarge verwendet:apiVersion: karpenter.sagemaker.amazonaws.com/v1 kind: HyperpodNodeClass metadata: name: sample-nc spec: instanceGroups: # name of InstanceGroup in HyperPod cluster. InstanceGroup needs to pre-created # MaxItems: 10 - auto-c5-xaz1 - auto-c5-4xaz2 -
Wenden Sie die Konfiguration an:
kubectl apply -f nodeclass.yaml -
Überwachen Sie den NodeClass Status, um sicherzustellen, dass der Status Bereit auf True gesetzt ist:
kubectl get hyperpodnodeclass sample-nc -o yamlapiVersion: karpenter.sagemaker.amazonaws.com/v1 kind: HyperpodNodeClass metadata: creationTimestamp: "<timestamp>" name: sample-nc uid: <resource-uid> spec: instanceGroups: - auto-c5-az1 - auto-c5-4xaz2 status: conditions: // true when all IGs in the spec are present in SageMaker cluster, false otherwise - lastTransitionTime: "<timestamp>" message: "" observedGeneration: 3 reason: InstanceGroupReady status: "True" type: InstanceGroupReady // true if subnets of IGs are discoverable, false otherwise - lastTransitionTime: "<timestamp>" message: "" observedGeneration: 3 reason: SubnetsReady status: "True" type: SubnetsReady // true when all dependent resources are Ready [InstanceGroup, Subnets] - lastTransitionTime: "<timestamp>" message: "" observedGeneration: 3 reason: Ready status: "True" type: Ready instanceGroups: - desiredLabels: - key: <custom_label_key> value: <custom_label_value> - key: nvidia.com/mig.config value: all-1g.5gb instanceTypes: - ml.c5.xlarge name: auto-c5-az1 subnets: - id: <subnet-id> zone: <availability-zone-a> zoneId: <zone-id-a> - instanceTypes: - ml.c5.4xlarge name: auto-c5-4xaz2 subnets: - id: <subnet-id> zone: <availability-zone-b> zoneId: <zone-id-b> # Flexible instance group with multiple instance types - instanceTypes: - ml.p5.48xlarge - ml.p4d.24xlarge - ml.g6.48xlarge name: inference-workers subnets: - id: <subnet-id> zone: <availability-zone-a> zoneId: <zone-id-a> - id: <subnet-id> zone: <availability-zone-b> zoneId: <zone-id-b>