Configuration d'étiquettes et de teintes Kubernetes personnalisées sur Amazon SageMaker HyperPod - Amazon SageMaker AI

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Configuration d'étiquettes et de teintes Kubernetes personnalisées sur Amazon SageMaker HyperPod

SageMaker HyperPod Les clusters Amazon dotés de l'orchestrateur Amazon Elastic Kubernetes Service (Amazon EKS) prennent en charge les étiquettes et les teintes Kubernetes personnalisées pour les nœuds au sein de groupes d'instances. Les étiquettes et les annotations sont des mécanismes fondamentaux de planification et d'organisation dans Kubernetes qui vous permettent de contrôler avec précision le placement des pods et l'utilisation des ressources.

Les étiquettes sont des paires clé-valeur qui peuvent être associées à des objets Kubernetes, ce qui vous permet d'organiser et de sélectionner des ressources en fonction d'attributs. Les taches, associées aux tolérances, sont des propriétés spécifiques aux nœuds qui influencent la planification des capsules en repoussant les gousses dont les tolérances ne sont pas identiques. Ensemble, ces mécanismes vous permettent d'isoler les charges de travail, de les attribuer en fonction des spécifications matérielles et de garantir une utilisation optimale des ressources.

Cas d’utilisation courants

Voici les scénarios courants dans lesquels les étiquettes et les teintures personnalisées sont bénéfiques :

  • Prévention des modules système sur des instances coûteuses : appliquez des modifications aux instances GPU pour empêcher les modules système et autres charges de travail non critiques de consommer des ressources de calcul coûteuses

  • Intégration aux outils existants : appliquez des étiquettes qui correspondent aux modèles d'infrastructure établis et aux configurations d'affinité des nœuds de votre organisation

Configuration des étiquettes et des teintures

Vous pouvez configurer des étiquettes et des nuances Kubernetes personnalisées au niveau du groupe d'instances à l'aide du KubernetesConfig paramètre de configuration de votre cluster. Les étiquettes et les marques sont appliquées à tous les nœuds du groupe d'instances et persistent tout au long du cycle de vie du cluster.

Le KubernetesConfig paramètre est déclaratif, ce qui signifie que vous spécifiez l'état complet souhaité des étiquettes et des nuances pour un groupe d'instances. SageMaker HyperPod réconcilie ensuite l'état réel des nœuds pour qu'il corresponde à l'état souhaité.

  • Ajouter des étiquettes ou des teintures - Incluez les nouvelles étiquettes ou teintures KubernetesConfig ainsi que celles que vous souhaitez conserver

  • Mise à jour des étiquettes ou des teintures : modifiez les valeurs KubernetesConfig des étiquettes ou des teintures que vous souhaitez modifier, et incluez toutes les autres que vous souhaitez conserver

  • Supprimer les étiquettes ou les taches : omettez les étiquettes ou les taches que vous souhaitez supprimerKubernetesConfig, en ne conservant que celles que vous souhaitez conserver

Création d'un cluster avec des étiquettes et des teintures

Lorsque vous créez un nouveau SageMaker HyperPod cluster, incluez le KubernetesConfig paramètre dans la configuration de votre groupe d'instances. L'exemple suivant montre comment créer un cluster avec des étiquettes et des nuances personnalisées :

{ "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" } } }

Dans cet exemple :

  • Étiquettes : trois étiquettes personnalisées sont appliquées : env=prodteam=ml-training, et gpu-type=a100

  • Teintes : deux taches sont configurées pour empêcher la planification indésirable des pods

Mise à jour des étiquettes et des altérations sur un cluster existant

Vous pouvez modifier les étiquettes et les teintures d'un cluster existant à l'aide de l'UpdateClusterAPI. L'exemple suivant montre comment mettre à jour le KubernetesConfig pour un groupe d'instances :

{ "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" }] } }] }

Lorsque vous mettez à jour les étiquettes et les nuances, SageMaker HyperPod applique les modifications à tous les nœuds du groupe d'instances. Le service gère la transition entre l'état actuel et l'état souhaité, que vous pouvez surveiller à l'aide de l'DescribeClusterAPI.

Surveillance de l'étiquette et de l'application de taches

SageMaker HyperPod permet APIs de surveiller l'état des étiquettes et des taches lorsqu'elles sont appliquées aux nœuds de votre cluster.

Vérification de l'état au niveau du cluster

Utilisez l'DescribeClusterAPI pour afficher l'état actuel et souhaité des étiquettes et des taches au niveau du groupe d'instances. L'exemple suivant montre la structure de réponse :

{ "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" }] } }] }

En cas DesiredLabels de CurrentLabels CurrentTaints correspondanceDesiredTaints, la configuration spécifiée est appliquée à tous les nœuds du groupe d'instances. S'ils diffèrent, le cluster est toujours en train d'appliquer les modifications.

Vérification de l'état de chaque nœud

Pour plus de détails au niveau des nœuds, utilisez l'DescribeClusterNodeAPI pour vérifier l'étiquette et altérer la configuration des nœuds individuels. L'exemple suivant montre la structure de réponse :

{ "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" }] } } }

La surveillance au niveau des nœuds est utile pour résoudre les problèmes lorsque les étiquettes ou les taches ne s'appliquent pas correctement à des nœuds spécifiques, ou lorsque vous devez vérifier la configuration d'une instance particulière.

Préfixes réservés

Certains préfixes sont réservés à l'utilisation du système et ne doivent pas être utilisés pour des étiquettes ou des colorants personnalisés. Les préfixes suivants sont réservés :

  • kubernetes.io/- Réservé aux composants principaux de Kubernetes

  • k8s.io/- Réservé aux composants principaux de Kubernetes

  • sagemaker.amazonaws.com/- Réservé pour SageMaker HyperPod

  • eks.amazonaws.com/- Réservé à Amazon EKS

  • k8s.aws/- Réservé à Amazon EKS

  • karpenter.sh/- Réservé à la mise à l'échelle automatique de Karpenter

Les étiquettes et les marques comportant ces préfixes sont gérées par les composants du système et ne doivent pas être remplacées par des valeurs personnalisées.