Configurazione di etichette e colori Kubernetes personalizzati in Amazon SageMaker HyperPod - 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à.

Configurazione di etichette e colori Kubernetes personalizzati in Amazon SageMaker HyperPod

SageMaker HyperPod I cluster Amazon con orchestrator Amazon Elastic Kubernetes Service (Amazon EKS) supportano etichette e taint Kubernetes personalizzati per i nodi all'interno dei gruppi di istanze. Le etichette e i taint sono meccanismi di pianificazione e organizzazione fondamentali in Kubernetes che offrono un controllo preciso sul posizionamento dei pod e sull'utilizzo delle risorse.

Le etichette sono coppie chiave-valore che possono essere allegate agli oggetti Kubernetes e consentono di organizzare e selezionare le risorse in base agli attributi. I taint, che funzionano insieme alle tolleranze, sono proprietà specifiche dei nodi che influenzano la pianificazione dei pod respingendo i pod che non hanno tolleranze corrispondenti. Insieme, questi meccanismi consentono di isolare i carichi di lavoro, assegnarli in base alle specifiche hardware e garantire un utilizzo ottimale delle risorse.

Casi di utilizzo comune

Di seguito sono riportati gli scenari più comuni in cui etichette e colorazioni personalizzate sono vantaggiose:

  • Prevenzione dei pod di sistema su istanze costose: applica dei trucchi alle istanze GPU per evitare che i pod di sistema e altri carichi di lavoro non critici consumino costose risorse di elaborazione

  • Integrazione con gli strumenti esistenti: applica etichette che corrispondono ai modelli di infrastruttura e alle configurazioni di affinità dei nodi stabiliti dall'organizzazione

Configurazione di etichette e colorazioni

Puoi configurare etichette e taint Kubernetes personalizzati a livello di gruppo di istanze utilizzando il parametro nella configurazione del KubernetesConfig cluster. Le etichette e i taint vengono applicati a tutti i nodi del gruppo di istanze e persistono per tutto il ciclo di vita del cluster.

Il KubernetesConfig parametro è dichiarativo, il che significa che si specifica lo stato completo desiderato di etichette e taint per un gruppo di istanze. SageMaker HyperPod quindi riconcilia lo stato effettivo dei nodi in modo che corrisponda allo stato desiderato.

  • Aggiungere etichette o tinte: includi le nuove etichette o tinte KubernetesConfig insieme a quelle esistenti che desideri conservare

  • Aggiornamento di etichette o tinte: modifica i valori delle KubernetesConfig etichette o delle tinte che desideri modificare e includi tutte le altre che desideri conservare

  • Rimozione di etichette o tinte: ometti le etichette o le sfumature che desideri rimuovereKubernetesConfig, mantenendo solo quelle che desideri conservare

Creazione di un cluster con etichette e sfumature

Quando crei un nuovo SageMaker HyperPod cluster, includi il KubernetesConfig parametro nella configurazione del gruppo di istanze. L'esempio seguente mostra come creare un cluster con etichette e tinte personalizzate:

{ "ClusterName": "my-cluster", "InstanceGroups": [{ "InstanceGroupName": "worker-group-1", "InstanceType": "ml.p4d.24xlarge", "InstanceCount": 4, "LifeCycleConfig": { "SourceS3Uri": "s3://my-bucket/lifecycle-config.sh", "OnCreate": "on-create.sh" }, "ExecutionRole": "arn:aws:iam::123456789012:role/HyperPodExecutionRole", "ThreadsPerCore": 1, "KubernetesConfig": { "Labels": { "env": "prod", "team": "ml-training", "gpu-type": "a100" }, "Taints": [{ "key": "gpu", "value": "true", "effect": "NoSchedule" }, { "key": "dedicated", "value": "ml-workloads", "effect": "NoExecute" }] } }], "VpcConfig": { "SecurityGroupIds": ["sg-0123456789abcdef0"], "Subnets": ["subnet-0123456789abcdef0", "subnet-0123456789abcdef1"] }, "Orchestrator": { "Eks": { "ClusterArn": "arn:aws:eks:us-west-2:123456789012:cluster/my-eks-cluster" } } }

In questo esempio:

  • Etichette: vengono applicate tre etichette personalizzate: env=prodteam=ml-training, e gpu-type=a100

  • Taints: due taint sono configurati per impedire la pianificazione indesiderata dei pod

Aggiornamento di etichette e segni distintivi su un cluster esistente

È possibile modificare etichette e caratteri su un cluster esistente utilizzando l'UpdateClusterAPI. L'esempio seguente mostra come aggiornare il gruppo KubernetesConfig for an instance:

{ "ClusterName": "my-cluster", "InstanceGroups": [{ "InstanceGroupName": "worker-group-1", "KubernetesConfig": { "Labels": { "env": "prod", "team": "ml-training", "gpu-type": "a100", "cost-center": "ml-ops" }, "Taints": [{ "key": "gpu", "value": "true", "effect": "NoSchedule" }] } }] }

Quando aggiorni etichette e tinte, SageMaker HyperPod applica le modifiche a tutti i nodi del gruppo di istanze. Il servizio gestisce la transizione dallo stato corrente a quello desiderato, che è possibile monitorare utilizzando l'DescribeClusterAPI.

Monitoraggio dell'etichetta e dell'applicazione di contaminazione

SageMaker HyperPod consente APIs di monitorare lo stato delle etichette e dei coloranti man mano che vengono applicati ai nodi del cluster.

Verifica dello stato a livello di cluster

Utilizza l'DescribeClusterAPI per visualizzare lo stato attuale e desiderato delle etichette e dei colori a livello di gruppo di istanze. L'esempio seguente mostra la struttura della risposta:

{ "ClusterName": "my-cluster", "ClusterStatus": "InService", "InstanceGroups": [{ "InstanceGroupName": "worker-group-1", "InstanceType": "ml.p4d.24xlarge", "CurrentInstanceCount": 4, "TargetInstanceCount": 4, "KubernetesConfig": { "CurrentLabels": { "env": "prod", "team": "ml-training", "gpu-type": "a100" }, "DesiredLabels": { "env": "prod", "team": "ml-training", "gpu-type": "a100" }, "CurrentTaints": [{ "key": "gpu", "value": "true", "effect": "NoSchedule" }], "DesiredTaints": [{ "key": "gpu", "value": "true", "effect": "NoSchedule" }] } }] }

In caso di CurrentLabels CurrentTaints corrispondenza DesiredLabelsDesiredTaints, a tutti i nodi del gruppo di istanze viene applicata la configurazione specificata. Se differiscono, il cluster sta ancora applicando le modifiche.

Verifica dello stato dei singoli nodi

Per i dettagli a livello di nodo, usa l'DescribeClusterNodeAPI per controllare l'etichetta e la configurazione del colore dei singoli nodi. L'esempio seguente mostra la struttura della risposta:

{ "NodeDetails": { "InstanceId": "i-0123456789abcdef0", "InstanceGroupName": "worker-group-1", "InstanceType": "ml.p4d.24xlarge", "InstanceStatus": { "Status": "Running", "Message": "Node is healthy" }, "LifeCycleConfig": { "SourceS3Uri": "s3://my-bucket/lifecycle-config.sh", "OnCreate": "on-create.sh" }, "LaunchTime": 1699564800.0, "KubernetesConfig": { "CurrentLabels": { "env": "prod", "team": "ml-training", "gpu-type": "a100" }, "DesiredLabels": { "env": "prod", "team": "ml-training", "gpu-type": "a100" }, "CurrentTaints": [{ "key": "gpu", "value": "true", "effect": "NoSchedule" }], "DesiredTaints": [{ "key": "gpu", "value": "true", "effect": "NoSchedule" }] } } }

Il monitoraggio a livello di nodo è utile per la risoluzione dei problemi quando etichette o contaminazioni non si applicano correttamente a nodi specifici o quando è necessario verificare la configurazione di una particolare istanza.

Prefissi riservati

Alcuni prefissi sono riservati all'uso del sistema e non devono essere utilizzati per etichette o colorazioni personalizzate. I seguenti prefissi sono riservati:

  • kubernetes.io/- Riservato ai componenti principali di Kubernetes

  • k8s.io/- Riservato ai componenti principali di Kubernetes

  • sagemaker.amazonaws.com/- Riservato per SageMaker HyperPod

  • eks.amazonaws.com/- Riservato ad Amazon EKS

  • k8s.aws/- Riservato ad Amazon EKS

  • karpenter.sh/- Riservato alla scalabilità automatica di Karpenter

Le etichette e le macchie con questi prefissi sono gestite dai componenti del sistema e non devono essere sovrascritte con valori personalizzati.