View a markdown version of this page

Erstellen Sie eine NodeClass - Amazon SageMaker KI

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 angebenNodeClass.

  • Instanzgruppen, die verwendet werden InstanceRequirements (flexible Instanzgruppen), können mehrere Instanztypen innerhalb einer einzelnen Instanzgruppe enthalten. Dies vereinfacht Ihre NodeClass Konfiguration, 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, dass InstanceType InstanceRequirements sie 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 desiredLabels Feld anzeigen. HyperpodNodeClass Dazu 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, NodeClass bevor Sie sie aus Ihrem HyperPod Cluster löschen. Wenn eine Instance-Gruppe gelöscht wird, während sie in einem NodeClass verwendet wird, wird die NodeClass als nicht Ready für die Bereitstellung markiert und für nachfolgende Skalierungsvorgänge nicht verwendet, bis die Instance-Gruppe aus NodeClass entfernt wird.

  • Wenn Sie Instance-Gruppen aus einer entfernenNodeClass, 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 OverrideVpcConfig auf Instance-Gruppenebene oder Clusterebene spezifiziert. VpcConfig wird 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.

  1. Erstellen Sie eine YAML-Datei (z. B. nodeclass.yaml) mit Ihrer NodeClass-Konfiguration.

  2. Wenden Sie die Konfiguration mit kubectl auf Ihren Cluster an.

  3. Verweisen Sie NodeClass in Ihrer NodePool Konfiguration auf.

  4. Im Folgenden finden Sie ein BeispielNodeClass, 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
  5. Wenden Sie die Konfiguration an:

    kubectl apply -f nodeclass.yaml
  6. Überwachen Sie den NodeClass Status, um sicherzustellen, dass der Status Bereit auf True gesetzt ist:

    kubectl get hyperpodnodeclass sample-nc -o yaml
    apiVersion: 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>