View a markdown version of this page

Configuration d'étiquettes et de teintes Kubernetes personnalisées dans 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 dans 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 couleurs Kubernetes personnalisées pour les nœuds au sein des groupes d'instances. Les étiquettes et les étiquettes 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 attachées à des objets Kubernetes, ce qui vous permet d'organiser et de sélectionner des ressources en fonction d'attributs. Les altérations, qui agissent conjointement avec les tolérances, sont des propriétés spécifiques aux nœuds qui influencent la planification des pods en repoussant les pods qui n'ont pas les tolérances correspondantes. 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

Les scénarios courants dans lesquels les étiquettes et les teintes personnalisées sont bénéfiques sont les suivants :

  • Prévention des modules système sur les instances coûteuses - Appliquez des failles 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 avec les outils existants  : appliquez des étiquettes qui correspondent aux modèles d'infrastructure et aux configurations d'affinité des nœuds établis par votre organisation

Configuration des étiquettes et des teintes

Vous pouvez configurer des étiquettes et des couleurs Kubernetes personnalisées au niveau du groupe d'instances à l'aide du KubernetesConfig paramètre de configuration de votre cluster. Les étiquettes et les couleurs 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 teintes pour un groupe d'instances. SageMaker HyperPod réconcilie ensuite l'état réel des nœuds pour qu'il corresponde à cet état souhaité.

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

  • Mise à jour des étiquettes ou des teintes - Modifiez les valeurs KubernetesConfig des étiquettes ou des teintes 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 supprimer duKubernetesConfig, en ne conservant que celles que vous souhaitez conserver

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

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 libellés et des couleurs personnalisés :

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

  • Taints - Deux teintes sont configurées pour empêcher la planification indésirable des pods

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

Vous pouvez modifier les libellés et les couleurs 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 libellés et les couleurs, 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'application des étiquettes et des teintures

SageMaker HyperPod fournit des API pour surveiller l'état des étiquettes et des teintes 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 les états actuels et souhaités des étiquettes et des teintes au niveau du groupe d'instances. L'exemple suivant montre la structure de la 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 la configuration des défauts de chaque nœud. L'exemple suivant montre la structure de la 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" }] } } }

Node-level la surveillance est utile pour résoudre les problèmes lorsque les étiquettes ou les couleurs 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 teintes personnalisées. 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 étiquettes 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.