Réduction verticale d’un cluster SageMaker HyperPod - Amazon SageMaker AI

Réduction verticale d’un cluster SageMaker HyperPod

Vous pouvez réduire verticalement le nombre d’instances exécutées sur votre cluster Amazon SageMaker HyperPod. Vous souhaiterez peut-être réduire verticalement un cluster pour diverses raisons, telles qu’une réduction de l’utilisation des ressources ou l’optimisation des coûts.

La page suivante décrit deux approches principales en matière de réduction verticale :

  • Réduction verticale au niveau du groupe d’instances : cette approche utilise l’API UpdateCluster, avec laquelle vous pouvez :

    • Réduire verticalement le nombre d’instances indépendamment pour des groupes d’instances spécifiques. SageMaker AI gère la résiliation des nœuds de manière à atteindre le nouveau nombre d’instances cible que vous avez défini pour chaque groupe. Consultez Réduction verticale d’un groupe d’instances.

    • Supprimer complètement les groupes d’instances de votre cluster. Consultez Suppression de groupes d’instances.

  • Réduction verticale au niveau des instances : cette approche utilise l’API BatchDeleteClusterNodes, avec laquelle vous pouvez spécifier les nœuds individuels que vous souhaitez résilier. Consultez Réduction verticale au niveau des instances.

Note

Lorsque vous utilisez la réduction verticale au niveau des instances avec BatchDeleteCusterNodes, vous pouvez résilier un maximum de 99 instances à la fois. UpdateCluster prend en charge la résiliation d’un nombre quelconque d’instances.

Considérations importantes

  • Lorsque vous réduisez verticalement un cluster, vous devez vous assurer que les ressources restantes sont suffisantes pour gérer votre charge de travail et que toute migration ou rééquilibrage nécessaire des données est correctement géré(e) afin d’éviter les interruptions.

  • Assurez-vous de sauvegarder vos données sur Amazon S3 ou dans un système de fichiers FSx pour Lustre avant d’invoquer l’API sur un groupe de composants master. Cela permet d’éviter toute perte de données potentielle à partir du volume racine de l’instance. Pour plus d’informations sur la sauvegarde, consultez Utilisation du script de sauvegarde fourni par SageMaker HyperPod.

  • Pour invoquer cette API sur un cluster existant, vous devez d’abord appliquer un correctif au cluster en exécutant l’API UpdateClusterSoftware. Pour plus d’informations sur l’application de correctifs à un cluster, consultez Mise à jour du logiciel de plateforme SageMaker HyperPod d’un cluster.

  • Les mesures et la facturation pour les instances à la demande seront automatiquement arrêtées après une réduction verticale. Pour arrêter de mesurer les instances réservées réduites verticalement, vous devez contacter l’équipe chargée de votre compte AWS pour obtenir de l’aide.

  • Vous pouvez utiliser la capacité libérée depuis les instances réservées réduites verticalement pour augmenter verticalement un autre cluster SageMaker HyperPod.

Réduction verticale au niveau du groupe d’instances

L’opération UpdateCluster vous permet d’apporter des modifications à la configuration de votre cluster SageMaker HyperPod, par exemple en réduisant verticalement le nombre d’instances d’un groupe d’instances ou en supprimant des groupes d’instances entiers. Cela peut être utile lorsque vous souhaitez ajuster les ressources allouées à votre cluster en fonction de l’évolution de votre charge de travail, optimiser les coûts ou modifier le type d’instance d’un groupe d’instances.

Réduction verticale d’un groupe d’instances

Utilisez cette approche lorsqu’un groupe d’instances est inactif et qu’il est possible de résilier l’une quelconque des instances en toute sécurité pour effectuer une réduction verticale. Lorsque vous soumettez une demande UpdateCluster de réduction verticale, HyperPod choisit au hasard les instances à résilier et effectue une réduction verticale jusqu’au nombre de nœuds spécifié pour le groupe d’instances.

Note

Lorsque vous réduisez verticalement le nombre d’instances d’un groupe d’instances à 0, toutes les instances de ce groupe sont résiliées. Toutefois, le groupe d’instances lui-même continuera d’exister dans le cluster SageMaker HyperPod. Vous pourrez augmenter verticalement le groupe d’instances ultérieurement, en utilisant la même configuration de groupe d’instances.

Vous pouvez également choisir de supprimer définitivement un groupe d’instances. Pour plus d’informations, consultez Suppression de groupes d’instances.

Pour effectuer une réduction verticale avec UpdateCluster
  1. Suivez les étapes décrites dans Mise à jour de la configuration du cluster SageMaker HyperPod. Lorsque vous atteignez l’étape 1.d où vous spécifiez le champ InstanceCount, entrez un nombre inférieur au nombre actuel d’instances pour réduire verticalement le cluster.

  2. Exécutez la commande AWS CLI update-cluster pour soumettre votre demande.

Vous trouverez ci-dessous un exemple d’objet JSON UpdateCluster. Imaginons le cas où votre groupe d’instances possède actuellement 2 instances en cours d’exécution. Si vous définissez le champ InstanceCount sur 1, comme indiqué dans l’exemple, HyperPod sélectionne au hasard l’une des instances et la résilie.

{ "ClusterName": "name-of-cluster-to-update", "InstanceGroups": [ { "InstanceGroupName": "training-instances", "InstanceType": "instance-type", "InstanceCount": 1, "LifeCycleConfig": { "SourceS3Uri": "s3://amzn-s3-demo-bucket/training-script.py", "OnCreate": "s3://amzn-s3-demo-bucket/setup-script.sh" }, "ExecutionRole": "arn:aws:iam::123456789012:role/SageMakerRole", "ThreadsPerCore": number-of-threads, "OnStartDeepHealthChecks": [ "InstanceStress", "InstanceConnectivity" ] } ], "NodeRecovery": "Automatic" }

Suppression de groupes d’instances

Vous pouvez utiliser l’opération UpdateCluster pour supprimer des groupes d’instances entiers de votre cluster SageMaker HyperPod lorsqu’ils ne sont plus nécessaires. Cela va au-delà d’une simple réduction verticale et vous permet d’éliminer complètement des groupes d’instances spécifiques de la configuration de votre cluster.

Note

Lors de la suppression d’un groupe d’instances :

  • Toutes les instances du groupe ciblé sont résiliées.

  • L’intégralité de la configuration du groupe est supprimée du cluster.

  • Toutes les charges de travail exécutées sur ce groupe d’instances sont arrêtées.

Pour supprimer des groupes d’instances avec UpdateCluster
  1. Lorsque vous suivez les étapes décrites dans Mise à jour de la configuration du cluster SageMaker HyperPod :

    1. Définissez le paramètre InstanceGroupsToDelete facultatif dans votre code JSON UpdateCluster et transmettez la liste séparée par des virgules des noms de groupes d’instances que vous souhaitez supprimer.

    2. Lorsque vous spécifiez la liste InstanceGroups, assurez-vous que les spécifications des groupes d’instances que vous supprimez ne figurent plus dans la liste InstanceGroups.

  2. Exécutez la commande AWS CLI update-cluster pour soumettre votre demande.

Important
  • Votre cluster SageMaker HyperPod doit toujours gérer au moins un groupe d’instances.

  • Assurez-vous que toutes les données critiques sont sauvegardées avant leur suppression.

  • Le processus de suppression ne peut pas être annulé.

Vous trouverez ci-dessous un exemple d’objet JSON UpdateCluster. Prenons le cas où un cluster possède actuellement 3 groupes d’instances, un groupe d’entraînement, un groupe d’entraînement de prototype et un groupe d’inférence. Vous souhaitez supprimer le groupe d’entraînement de prototype.

{ "ClusterName": "name-of-cluster-to-update", "InstanceGroups": [ { "InstanceGroupName": "training", "InstanceType": "instance-type", "InstanceCount": , "LifeCycleConfig": { "SourceS3Uri": "s3://amzn-s3-demo-bucket/training-script.py", "OnCreate": "s3://amzn-s3-demo-bucket/setup-script.sh" }, "ExecutionRole": "arn:aws:iam::123456789012:role/SageMakerRole", "ThreadsPerCore": number-of-threads, "OnStartDeepHealthChecks": [ "InstanceStress", "InstanceConnectivity" ] }, { "InstanceGroupName": "inference-serving", "InstanceType": "instance-type", "InstanceCount": 2, [...] }, ], "InstanceGroupsToDelete": [ "prototype-training" ], "NodeRecovery": "Automatic" }

Réduction verticale au niveau des instances

L’opération BatchDeleteClusterNodes vous permet de réduire verticalement un cluster SageMaker HyperPod en spécifiant les nœuds individuels que vous souhaitez résilier. BatchDeleteClusterNodes fournit un contrôle plus granulaire pour la suppression ciblée des nœuds et l’optimisation du cluster. Par exemple, vous pouvez utiliser BatchDeleteClusterNodes pour supprimer des nœuds ciblés à des fins de maintenance, de mises à niveau continues ou de rééquilibrage géographique des ressources.

Demande et réponse d’API

Lorsque vous soumettez une demande BatchDeleteClusterNodes, SageMaker HyperPod supprime les nœuds en fonction de leurs identifiants d’instance. L’API accepte une demande contenant le nom du cluster et une liste d’identifiants de nœuds à supprimer.

La réponse contient deux sections :

  • Failed : liste des erreurs de type BatchDeleteClusterNodesError  : une par ID d’instance.

  • Successful : liste des ID des instances résiliées avec succès.

Validation et gestion des erreurs

L’API effectue diverses validations, telles que :

  • Vérification du format de l’ID de nœud (préfixe i- et structure des ID d’instances Amazon EC2).

  • Vérification de la longueur de la liste des nœuds, avec une limite de 99 identifiants de nœuds ou moins par demande BatchDeleteClusterNodes.

  • Garantie qu’un cluster SageMaker HyperPod valide portant le nom du cluster d’entrée est présent et qu’aucune opération au niveau du cluster (mise à jour, mise à jour du système, application de correctifs ou suppression) n’est en cours.

  • Gestion des cas où les instances sont introuvables, ont un statut non valide ou sont en cours d’utilisation.

Codes de réponse d’API

  • L’API renvoie un code de statut 200 en cas de réussite (p. ex., tous les nœuds d’entrée ont réussi la validation) ou des demandes partiellement réussies (p. ex., certains nœuds d’entrée échouent à la validation).

  • Si toutes ces validations échouent (p. ex., tous les nœuds d’entrée échouent à la validation), l’API renverra une réponse 400 Bad Request avec les messages d’erreur et les codes d’erreur appropriés.

Exemple

Voici un exemple de réduction verticale d’un cluster au niveau des instances à l’aide de l’AWS CLI :

aws sagemaker batch-delete-cluster-nodes --cluster-name "cluster-name" --node-ids '["i-111112222233333", "i-111112222233333"]'