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
desiredLabelscampo quando si interroga lo stato.HyperpodNodeClassCiò include etichette di configurazione MIG come.nvidia.com/mig.configQuando 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
NodeClassprima di eliminarlo dal cluster. HyperPod Se un gruppo di istanze viene eliminato mentre è utilizzato inNodeClass,NodeClassviene 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 daNodeClass. -
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
OverrideVpcConfiga livello di gruppo di istanze.VpcConfigviene 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.
-
Crea un file YAML (ad esempio, nodeclass.yaml) con la configurazione
NodeClass. -
Applica la configurazione al cluster utilizzando kubectl.
-
Fai riferimento a
NodeClassnella configurazioneNodePool. -
Ecco un esempio di
NodeClassche 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 -
Applica la configurazione:
kubectl apply -f nodeclass.yaml -
Monitora lo NodeClass stato per assicurarti che la condizione Ready in status sia impostata su True:
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>