Creazione di una NodeClass - Amazon SageMaker AI

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Creazione di una NodeClass

Importante

È necessario iniziare con 0 nodi nel gruppo di istanze e lasciare che Karpenter gestisca il dimensionamento automatico. Se inizi con più di 0 nodi, Karpenter li ridurrà verticalmente fino a 0.

Una classe di nodi (NodeClass) definisce le impostazioni a livello di infrastruttura che si applicano ai gruppi di nodi del cluster Amazon EKS, tra cui la configurazione di rete, le impostazioni di archiviazione e il tagging delle risorse. A HyperPodNodeClass è una personalizzazione NodeClass che si associa a gruppi di istanze precreati e definisce i vincoli SageMaker HyperPod relativi ai tipi di istanze e alle zone di disponibilità supportati per le decisioni di scalabilità automatica di Karpenter.

Considerazioni sulla creazione di una classe di nodi

  • Puoi specificare fino a 10 gruppi di istanze in NodeClass.

  • Quando si utilizza il partizionamento GPU con MIG (Multi-Instance GPU), Karpenter può fornire automaticamente ai nodi gruppi di istanze abilitati per Mig. Assicurati che i tuoi gruppi di istanze includano tipi di istanze supportati da Mig (ml.p4d.24xlarge, ml.p5.48xlarge o ml.p5e/p5en.48xlarge) e configura le etichette MIG appropriate durante la creazione del cluster. Per ulteriori informazioni sulla Utilizzo delle partizioni GPU in Amazon SageMaker HyperPod configurazione del partizionamento GPU, consulta.

  • Se vengono applicate etichette personalizzate ai gruppi di istanze, è possibile visualizzarle sul desiredLabels campo quando si interroga lo stato. HyperpodNodeClass Ciò include etichette di configurazione MIG come. nvidia.com/mig.config Quando i lavori in entrata richiedono risorse MIG, Karpenter ridimensionerà automaticamente le istanze applicando le etichette MIG appropriate.

  • Se scegli di eliminare un gruppo di istanze, ti consigliamo di rimuoverlo dal tuo NodeClass prima di eliminarlo dal cluster. HyperPod Se un gruppo di istanze viene eliminato mentre è utilizzato in NodeClass, NodeClass viene contrassegnato come non pronto (Ready) per il provisioning e non verrà utilizzato per le successive operazioni di dimensionamento finché il gruppo di istanze non viene rimosso da NodeClass.

  • Quando rimuovi i gruppi di istanze da NodeClass, Karpenter rileva una deriva nei nodi gestiti da Karpenter in uno o più gruppi di istanze e arresta i nodi in base ai controlli del budget di interruzione.

  • Le sottoreti utilizzate dal gruppo di istanze devono appartenere alla stessa AZ. Le sottoreti vengono specificate a livello di cluster o utilizzando OverrideVpcConfig a livello di gruppo di istanze. VpcConfig viene utilizzato per impostazione predefinita.

  • Al momento è supportata solo la capacità on demand. I gruppi di istanze con piano di addestramento o capacità riservata non sono supportati.

  • I gruppi di istanze con DeepHealthChecks (DHC) non sono supportati. Questo dipende dal fatto che un DHC richiede circa 60-90 minuti per essere completato e durante questo periodo i pod restano in sospeso, causando potenzialmente un provisioning eccessivo.

La procedura che segue illustra come creare NodeClass.

  1. Crea un file YAML (ad esempio, nodeclass.yaml) con la configurazione NodeClass.

  2. Applica la configurazione al cluster utilizzando kubectl.

  3. Fai riferimento a NodeClass nella configurazione NodePool.

  4. Ecco un esempio di NodeClass che utilizza i tipi di istanze ml.c5.xlarge e ml.c5.4xlarge:

    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. Applica la configurazione:

    kubectl apply -f nodeclass.yaml
  6. Monitora lo NodeClass stato per assicurarti che la condizione Ready in status sia impostata su True:

    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>