

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.

# Gestion des clusters SageMaker HyperPod EKS à l'aide du AWS CLI
<a name="sagemaker-hyperpod-eks-operate-cli-command"></a>

Les rubriques suivantes fournissent des conseils sur l'écriture de fichiers de requêtes d' SageMaker HyperPod API au format JSON et leur exécution à l'aide des AWS CLI commandes.

**Topics**
+ [Création d'un SageMaker HyperPod cluster](sagemaker-hyperpod-eks-operate-cli-command-create-cluster.md)
+ [Récupération des détails SageMaker HyperPod du cluster](sagemaker-hyperpod-eks-operate-cli-command-cluster-details.md)
+ [Mettre à jour la configuration SageMaker HyperPod du cluster](sagemaker-hyperpod-eks-operate-cli-command-update-cluster.md)
+ [Mise à jour du logiciel SageMaker HyperPod de la plateforme](sagemaker-hyperpod-eks-operate-cli-command-update-cluster-software.md)
+ [Accès aux nœuds SageMaker HyperPod du cluster](sagemaker-hyperpod-eks-operate-access-through-terminal.md)
+ [Réduction de la taille d'un SageMaker HyperPod cluster](smcluster-scale-down.md)
+ [Supprimer un SageMaker HyperPod cluster](sagemaker-hyperpod-eks-operate-cli-command-delete-cluster.md)

# Création d'un SageMaker HyperPod cluster
<a name="sagemaker-hyperpod-eks-operate-cli-command-create-cluster"></a>

Découvrez comment créer des SageMaker HyperPod clusters orchestrés par Amazon EKS à l'aide du AWS CLI.

1. Avant de créer un SageMaker HyperPod cluster :

   1. Veillez à disposer d’un cluster Amazon EKS existant et opérationnel. Pour obtenir des instructions détaillées sur la configuration d’un cluster Amazon EKS, consultez [Création d’un cluster Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/create-cluster.html) dans le *Guide de l’utilisateur Amazon EKS*.

   1. Installez les Charts de Helm comme indiqué dans [Installation de packages sur le cluster Amazon EKS à l’aide de Helm](sagemaker-hyperpod-eks-install-packages-using-helm-chart.md). Si vous créez un [ SageMaker HyperPod cluster Amazon Nova](https://docs.aws.amazon.com//nova/latest/nova2-userguide/nova-hp-cluster.html), vous aurez besoin d'un graphique Helm distinct.

1. Préparez un script de configuration de cycle de vie et chargez-le sur un compartiment Amazon S3, tel que `s3://amzn-s3-demo-bucket/Lifecycle-scripts/base-config/`.

   Pour démarrer rapidement, téléchargez l'exemple [https://github.com/aws-samples/awsome-distributed-training/blob/main/1.architectures/7.sagemaker-hyperpod-eks/LifecycleScripts/base-config/on_create.sh](https://github.com/aws-samples/awsome-distributed-training/blob/main/1.architectures/7.sagemaker-hyperpod-eks/LifecycleScripts/base-config/on_create.sh)de script depuis le GitHub référentiel AWS ome Distributed Training et chargez-le dans le compartiment S3. Vous pouvez également inclure des instructions de configuration supplémentaires, une série de scripts de configuration ou des commandes à exécuter pendant la phase de provisionnement du HyperPod cluster.
**Important**  
Si vous créez un [Rôle IAM pour SageMaker HyperPod](sagemaker-hyperpod-prerequisites-iam.md#sagemaker-hyperpod-prerequisites-iam-role-for-hyperpod) avec la seule politique [https://docs.aws.amazon.com/sagemaker/latest/dg/security-iam-awsmanpol-cluster.html](https://docs.aws.amazon.com/sagemaker/latest/dg/security-iam-awsmanpol-cluster.html) attachée, votre cluster a accès aux compartiments Amazon S3 avec le préfixe spécifique `sagemaker-`.

   Si vous créez un groupe d’instances restreint, vous n’êtes pas tenu de télécharger et d’exécuter le script de cycle de vie. Au lieu de cela, vous devez exécuter `install_rig_dependencies.sh`. 

   Les conditions préalables requises pour exécuter le script `install_rig_dependencies.sh` sont les suivantes :
   + AWS Node (CNI) et CoreDNS doivent tous deux être activés. Il s'agit de modules complémentaires EKS standard qui ne sont pas gérés par le SageMaker HyperPod Helm standard, mais qui peuvent être facilement activés dans la console EKS sous Extensions.
   +  Le graphique SageMaker HyperPod Helm standard doit être installé avant d'exécuter ce script.

   Le script `install_rig_dependencies.sh` effectue les actions suivantes. 
   + `aws-node` (CNI) : nouveau Daemonset `rig-aws-node` créé ; `aws-node` existant corrigé pour éviter les nœuds de RIG.
   + `coredns`: Converti en Daemonset pour prendre en charge l'utilisation RIGs sur plusieurs plates-formes et éviter les surcharges.
   + training-operators : mise à jour avec les tolérances de rejet de processus de travail RIG et nodeAffinity favorisant les instances n’appartenant pas un RIG.
   + Elastic Fabric Adapter (EFA) : mise à jour pour tolérer le rejet des processus de travail RIG et utiliser des images de conteneur correctes pour chaque région.

1. Préparez un fichier de demande d'[CreateCluster](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateCluster.html)API au format JSON. Pour `ExecutionRole`, fournissez l’ARN du rôle IAM que vous avez créé avec la politique `AmazonSageMakerClusterInstanceRolePolicy` gérée à partir de la section [Rôle IAM pour SageMaker HyperPod](sagemaker-hyperpod-prerequisites-iam.md#sagemaker-hyperpod-prerequisites-iam-role-for-hyperpod).
**Note**  
Assurez-vous que votre SageMaker HyperPod cluster est déployé dans le même Virtual Private Cloud (VPC) que votre cluster Amazon EKS. Les sous-réseaux et les groupes de sécurité spécifiés dans la configuration du SageMaker HyperPod cluster doivent permettre la connectivité réseau et la communication avec le point de terminaison du serveur API du cluster Amazon EKS.

   ```
   // create_cluster.json
   {
       "ClusterName": "string",
       "InstanceGroups": [{
           "InstanceGroupName": "string",
           "InstanceType": "string",
           "InstanceCount": number,
           "LifeCycleConfig": {
               "SourceS3Uri": "s3://amzn-s3-demo-bucket-sagemaker/lifecycle-script-directory/src/",
               "OnCreate": "on_create.sh"
           },
           "ExecutionRole": "string",
           "ThreadsPerCore": number,
           "OnStartDeepHealthChecks": [
               "InstanceStress", "InstanceConnectivity"
           ]
       }],
       "RestrictedInstanceGroups": [ 
         { 
            "EnvironmentConfig": { 
               "FSxLustreConfig": { 
                  "PerUnitStorageThroughput": number,
                  "SizeInGiB": number
               }
            },
            "ExecutionRole": "string",
            "InstanceCount": number,
            "InstanceGroupName": "string",
            "InstanceStorageConfigs": [ 
               { ... }
            ],
            "InstanceType": "string",
            "OnStartDeepHealthChecks": [ "string" ],
            "OverrideVpcConfig": { 
               "SecurityGroupIds": [ "string" ],
               "Subnets": [ "string" ]
            },
            "ScheduledUpdateConfig": { 
               "DeploymentConfig": { 
                  "AutoRollbackConfiguration": [ 
                     { 
                        "AlarmName": "string"
                     }
                  ],
                  "RollingUpdatePolicy": { 
                     "MaximumBatchSize": { 
                        "Type": "string",
                        "Value": number
                     },
                     "RollbackMaximumBatchSize": { 
                        "Type": "string",
                        "Value": number
                     }
                  },
                  "WaitIntervalInSeconds": number
               },
               "ScheduleExpression": "string"
            },
            "ThreadsPerCore": number,
            "TrainingPlanArn": "string"
         }
      ],
       "VpcConfig": {
           "SecurityGroupIds": ["string"],
           "Subnets": ["string"]
       },
       "Tags": [{
           "Key": "string",
           "Value": "string"
       }],
       "Orchestrator": {
           "Eks": {
               "ClusterArn": "string",
               "KubernetesConfig": {
                   "Labels": {
                       "nvidia.com/mig.config": "all-3g.40gb"
                   }
               }
           }
       },
       "NodeRecovery": "Automatic"
   }
   ```
**Groupes d'instances flexibles**  
Au lieu d'en spécifier un seul`InstanceType`, vous pouvez utiliser le `InstanceRequirements` paramètre pour spécifier plusieurs types d'instances pour un groupe d'instances. Notez ce qui suit :  
`InstanceType`et s'`InstanceRequirements`excluent mutuellement. Vous devez spécifier l'un ou l'autre, mais pas les deux.
`InstanceRequirements.InstanceTypes`est une liste ordonnée qui détermine la priorité d'approvisionnement. SageMaker HyperPodtente de provisionner le premier type d'instance de la liste et revient aux types suivants si la capacité n'est pas disponible. Vous pouvez spécifier jusqu'à 20 types d'instances, et la liste ne doit pas contenir de doublons.
Les groupes d'instances flexibles nécessitent un mode de provisionnement continu des nœuds.
L'exemple suivant montre un groupe d'instances utilisant `InstanceRequirements` :  

   ```
   {
       "InstanceGroupName": "flexible-ig",
       "InstanceRequirements": {
           "InstanceTypes": ["ml.p5.48xlarge", "ml.p4d.24xlarge", "ml.g6.48xlarge"]
       },
       "InstanceCount": 10,
       "LifeCycleConfig": {
           "SourceS3Uri": "s3://amzn-s3-demo-bucket-sagemaker/lifecycle-script-directory/src/",
           "OnCreate": "on_create.sh"
       },
       "ExecutionRole": "arn:aws:iam::111122223333:role/iam-role-for-cluster"
   }
   ```

   Notez les points suivants lors de la configuration pour créer un nouveau SageMaker HyperPod cluster associé à un cluster EKS.
   + Vous pouvez configurer jusqu’à 20 groupes d’instances sous le paramètre `InstanceGroups`.
   + Pour `Orchestator.Eks.ClusterArn`, spécifiez l’ARN du cluster EKS que vous souhaitez utiliser comme orchestrateur.
   + Pour `OnStartDeepHealthChecks`, ajoutez `InstanceStress` et `InstanceConnectivity` pour activer [Vérifications de surveillance approfondie de l’état](sagemaker-hyperpod-eks-resiliency-deep-health-checks.md).
   + Pour`NodeRecovery`, spécifiez `Automatic` d'activer la restauration automatique des nœuds. SageMaker HyperPod remplace ou redémarre les instances (nœuds) lorsque des problèmes sont détectés par l'agent de surveillance de l'état.
   + Pour le `Tags` paramètre, vous pouvez ajouter des balises personnalisées pour gérer le SageMaker HyperPod cluster en tant que AWS ressource. Vous pouvez ajouter des balises à votre cluster de la même manière que vous les ajoutez dans d’autres services AWS qui prennent en charge le balisage. Pour en savoir plus sur le balisage des ressources AWS en général, consultez le [Guide de l’utilisateur Ressources AWS de balisage](https://docs.aws.amazon.com/tag-editor/latest/userguide/tagging.html).
   + Pour le paramètre `VpcConfig`, spécifiez les informations du VPC utilisé dans le cluster EKS. Les sous-réseaux doivent être privés.
   + En `Orchestrator.Eks.KubernetesConfig.Labels` effet, vous pouvez éventuellement spécifier les étiquettes Kubernetes à appliquer aux nœuds. Pour activer le partitionnement du GPU avec le GPU multi-instance (MIG), ajoutez l'`nvidia.com/mig.config`étiquette avec le profil MIG souhaité. Par exemple, `"nvidia.com/mig.config": "all-3g.40gb"` configure tout GPUs avec le profil de partition 3g.40 Go. Pour plus d'informations sur le partitionnement du GPU et les profils disponibles, consultez[Utilisation de partitions GPU dans Amazon SageMaker HyperPod](sagemaker-hyperpod-eks-gpu-partitioning.md).

1. Exécutez la commande [create-cluster](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/create-cluster.html) comme suit.
**Important**  
Lorsque vous exécutez la commande `create-cluster` avec le paramètre `--cli-input-json`, vous devez inclure le préfixe `file://` avant le chemin complet du fichier JSON. Ce préfixe est nécessaire pour s'assurer que l'entrée AWS CLI est reconnue comme un chemin de fichier. L’omission du préfixe `file://` entraîne une erreur d’analyse de paramètre.

   ```
   aws sagemaker create-cluster \
       --cli-input-json file://complete/path/to/create_cluster.json
   ```

   L’ARN du nouveau cluster devrait être renvoyé.
**Important**  
Vous pouvez utiliser l’opération [update-cluster](https://docs.aws.amazon.com//cli/latest/reference/ecs/update-cluster.html) pour supprimer un groupe d’instances restreint (RIG). Lorsqu'un RIG est réduit à 0, le système de fichiers FSx for Lustre n'est pas supprimé. Pour supprimer complètement le système de fichiers FSx for Lustre, vous devez supprimer complètement le RIG.   
La suppression d’un RIG ne supprimera aucun artefact stocké dans le compartiment Amazon S3 géré par le service. Cependant, vous devez vous assurer que tous les artefacts du système de fichiers FSx for Lustre sont entièrement synchronisés avec Amazon S3 avant de les supprimer. Nous vous recommandons d'attendre au moins 30 minutes après la fin du travail pour garantir la synchronisation complète de tous les artefacts du système de fichiers FSx for Lustre avec le compartiment Amazon S3 géré par le service.
**Important**  
Lorsque vous utilisez une réservation de capacité à la demande (ODCR) intégrée, vous devez associer votre groupe d'instances au même ID de zone de disponibilité (AZ ID) que l'ODCR en utilisant un sous-réseau dans l'ID AZ correspondant. `OverrideVpcConfig`  
CRITIQUE : Vérifiez `OverrideVpcConfig` la configuration avant le déploiement afin d'éviter d'encourir des frais supplémentaires pour l'ODCR et pour la capacité à la demande.

# Récupération des détails SageMaker HyperPod du cluster
<a name="sagemaker-hyperpod-eks-operate-cli-command-cluster-details"></a>

Découvrez comment récupérer les détails d' SageMaker HyperPod un cluster à l'aide du AWS CLI.

## Description d’un cluster
<a name="sagemaker-hyperpod-eks-operate-cli-command-describe-cluster"></a>

Exécutez [describe-cluster](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/describe-cluster.html) pour vérifier le statut du cluster. Vous pouvez spécifier le nom ou l’ARN du cluster.

```
aws sagemaker describe-cluster --cluster-name your-hyperpod-cluster
```

Une fois que le statut du cluster passe à **InService**, passez à l’étape suivante. À l'aide de cette API, vous pouvez également récupérer les messages d'échec liés à l'exécution d'autres opérations d' HyperPod API.

## Liste des détails des nœuds du cluster
<a name="sagemaker-hyperpod-eks-operate-cli-command-list-cluster-nodes"></a>

Exécutez [list-cluster-nodes](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/list-cluster-nodes.html)pour vérifier les informations clés des nœuds du cluster.

```
aws sagemaker list-cluster-nodes --cluster-name your-hyperpod-cluster
```

Cela renvoie une réponse et `InstanceId` correspond à ce dont vous avez besoin pour vous y connecter (en utilisant `aws ssm`).

## Description des détails d’un nœud de cluster
<a name="sagemaker-hyperpod-eks-operate-cli-command-describe-cluster-node"></a>

Exécutez [describe-cluster-node](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/describe-cluster-node.html)pour récupérer les détails d'un nœud de cluster. Vous pouvez obtenir l'ID du nœud du cluster à partir de la list-cluster-nodes sortie. Vous pouvez spécifier le nom ou l’ARN du cluster.

```
aws sagemaker describe-cluster-node \
    --cluster-name your-hyperpod-cluster \
    --node-id i-111222333444555aa
```

## Liste des clusters
<a name="sagemaker-hyperpod-eks-operate-cli-command-list-clusters"></a>

Exécutez [list-clusters](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/list-clusters.html) pour répertorier tous les clusters figurant dans votre compte.

```
aws sagemaker list-clusters
```

Vous pouvez également ajouter des indicateurs supplémentaires pour filtrer la liste des clusters. Pour en savoir plus sur le fonctionnement de cette commande à bas niveau et sur les indicateurs supplémentaires pour le filtrage, consultez la référence de l'[ListClusters](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ListClusters.html)API.

# Mettre à jour la configuration SageMaker HyperPod du cluster
<a name="sagemaker-hyperpod-eks-operate-cli-command-update-cluster"></a>

Exécutez [update-cluster](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/update-cluster.html) pour mettre à jour la configuration d’un cluster.

**Note**  
Considérations importantes :  
Vous ne pouvez pas modifier les informations du cluster EKS auxquelles votre HyperPod cluster est associé une fois celui-ci créé. 
Si des vérifications de surveillance approfondie de l’état sont exécutées sur le cluster, cette API ne fonctionnera pas comme prévu. Vous pouvez rencontrer un message d’erreur indiquant que des vérifications de surveillance approfondie de l’état sont en cours. Pour mettre à jour le cluster, vous devez attendre que les vérifications de surveillance approfondie de l’état soient terminées.

1. Créez un fichier de demande d’API [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateCluster.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateCluster.html) au format JSON. Assurez-vous de spécifier le nom du cluster et le nom du groupe d’instances appropriés à mettre à jour. Pour chaque groupe d’instances, vous pouvez modifier le type d’instance, le nombre d’instances, le script de point d’entrée de configuration de cycle de vie et le chemin vers ce script.
**Note**  
Vous pouvez utiliser le `UpdateCluster` pour réduire ou supprimer des groupes d'instances entiers de votre SageMaker HyperPod cluster. Pour obtenir des instructions supplémentaires sur la manière de réduire verticalement ou de supprimer les groupes d’instances, consultez [Réduction de la taille d'un SageMaker HyperPod cluster](smcluster-scale-down.md).

   1. Pour `ClusterName`, spécifiez le nom du cluster que vous voulez mettre à jour.

   1. Pour `InstanceGroupName`

      1. Pour mettre à jour un groupe d’instances existant, spécifiez le nom du groupe d’instances que vous souhaitez mettre à jour.

      1. Pour ajouter un nouveau groupe d’instances, spécifiez un nouveau nom qui n’existe pas dans votre cluster.

   1. Pour `InstanceType`

      1. Pour mettre à jour un groupe d’instances existant, vous devez mettre en correspondance le type d’instance que vous avez initialement spécifié avec ce groupe.

      1. Pour ajouter un nouveau groupe d’instances, spécifiez un type d’instance avec lequel vous souhaitez configurer le groupe.

      Pour les groupes d'instances qui utilisent à la `InstanceRequirements` place de`InstanceType`, vous pouvez ajouter ou supprimer des types d'instance de la `InstanceTypes` liste. Toutefois, vous ne pouvez pas supprimer un type d'instance sur lequel s'exécutent des nœuds actifs. Vous ne pouvez pas non plus basculer entre `InstanceType` et `InstanceRequirements` lors de la mise à jour d'un groupe d'instances existant. `InstanceType`et s'`InstanceRequirements`excluent mutuellement.

   1. Pour `InstanceCount`

      1. Pour mettre à jour un groupe d’instances existant, spécifiez un entier correspondant au nombre d’instances que vous souhaitez. Vous pouvez fournir une valeur supérieure ou inférieure (jusqu’à 0) pour augmenter ou réduire verticalement le groupe d’instances.

      1. Pour ajouter un nouveau groupe d’instances, spécifiez un entier supérieur ou égal à 1. 

   1. Pour `LifeCycleConfig`, vous pouvez modifier à la fois les valeurs `SourceS3Uri` et `OnCreate` comme vous le souhaitez pour mettre à jour le groupe d’instances.

   1. Pour `ExecutionRole`

      1. Pour mettre à jour un groupe d’instances existant, continuez à utiliser le même rôle IAM que celui que vous avez attaché lors de la création du cluster.

      1. Pour ajouter un nouveau groupe d’instances, spécifiez un rôle IAM que vous souhaitez attacher.

   1. Pour `ThreadsPerCore`

      1. Pour mettre à jour un groupe d’instances existant, continuez à utiliser la même valeur que vous avez spécifiée lors de la création du cluster.

      1. Pour ajouter un nouveau groupe d’instances, vous pouvez choisir n’importe quelle valeur parmi les options autorisées par type d’instance. Pour plus d’informations, recherchez le type d’instance et consultez la colonne **Threads valides par cœur** dans le tableau de référence dans [Cœurs de CPU et threads par cœur de CPU par type d’instance](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/cpu-options-supported-instances-values.html) dans le *Guide de l’utilisateur Amazon EC2*.

   1. Pour `OnStartDeepHealthChecks`, ajoutez `InstanceStress` et `InstanceConnectivity` pour activer [Vérifications de surveillance approfondie de l’état](sagemaker-hyperpod-eks-resiliency-deep-health-checks.md).

   1. Pour`NodeRecovery`, spécifiez `Automatic` d'activer la restauration automatique des nœuds. SageMaker HyperPod remplace ou redémarre les instances (nœuds) lorsque des problèmes sont détectés par l'agent de surveillance de l'état.

   L’extrait de code suivant est un modèle de fichier de demande JSON que vous pouvez utiliser. Pour plus d'informations sur la syntaxe des demandes et les paramètres de cette API, consultez la référence de l'[UpdateCluster](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateCluster.html)API.

   ```
   // update_cluster.json
   {
       // Required
       "ClusterName": "name-of-cluster-to-update",
       // Required
       "InstanceGroups": [{
           "InstanceGroupName": "string",
           "InstanceType": "string",
           "InstanceCount": number,
           "LifeCycleConfig": {
               "SourceS3Uri": "string",
               "OnCreate": "string"
           },
           "ExecutionRole": "string",
           "ThreadsPerCore": number,
           "OnStartDeepHealthChecks": [
               "InstanceStress", "InstanceConnectivity"
           ]
       }],
       "NodeRecovery": "Automatic"
   }
   ```

1. Exécutez la commande `update-cluster` suivante pour soumettre la demande. 

   ```
   aws sagemaker update-cluster \
       --cli-input-json file://complete/path/to/update_cluster.json
   ```

# Mise à jour du logiciel SageMaker HyperPod de la plateforme
<a name="sagemaker-hyperpod-eks-operate-cli-command-update-cluster-software"></a>

Lorsque vous créez votre SageMaker HyperPod cluster, sélectionnez SageMaker HyperPod une Amazon Machine Image (AMI) correspondant à la version Kubernetes de votre cluster Amazon EKS.

Exécutez [update-cluster-software](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/update-cluster-software.html)pour mettre à jour les clusters existants avec les logiciels et les correctifs de sécurité fournis par le SageMaker HyperPod service. Pour `--cluster-name`, spécifiez le nom ou l’ARN du cluster à mettre à jour.

**Important**  
Lorsque cette API est appelée, SageMaker HyperPod elle ne vide ni ne redistribue les tâches (Pods) exécutées sur les nœuds. Assurez-vous de vérifier si des tâches sont en cours d’exécution sur les nœuds avant d’appeler cette API.
Le processus d’application de correctifs remplace le volume racine par l’AMI mise à jour, ce qui signifie que les données précédemment stockées dans le volume racine de l’instance seront perdues. Assurez-vous de sauvegarder vos données depuis le volume racine de l'instance vers Amazon S3 ou Amazon FSx for Lustre.
Tous les nœuds du cluster subissent une durée d’indisponibilité (les nœuds apparaissent comme `<NotReady>` dans la sortie de `kubectl get node`) alors que l’application des correctifs est en cours. Nous vous recommandons de résilier toutes les charges de travail avant d’appliquer le correctif et de les reprendre une fois l’application du correctif terminée.   
Si l’application du correctif de sécurité échoue, vous pouvez extraire les messages d’échec en exécutant l’API [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeCluster.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeCluster.html) comme indiqué dans [Description d’un cluster](sagemaker-hyperpod-eks-operate-cli-command-cluster-details.md#sagemaker-hyperpod-eks-operate-cli-command-describe-cluster).

```
aws sagemaker update-cluster-software --cluster-name your-hyperpod-cluster
```

**Mises à niveau continues avec des groupes d'instances flexibles**  
Pour les groupes d'instances utilisés `InstanceRequirements` avec plusieurs types d'instances, les mises à niveau progressives répartissent chaque type d'instance proportionnellement entre les lots. Par exemple, si un groupe d'instances comporte 100 instances (10 P5 et 90 G6) et que vous configurez une taille de lot de 10 %, chaque lot contient 1 instance P5 et 9 instances G6.

 Lorsque vous appelez l'`UpdateClusterSoftware`API, mettez SageMaker HyperPod à jour la version Kubernetes des nœuds en sélectionnant la dernière version en [SageMaker HyperPod DLAMI](sagemaker-hyperpod-ref.md#sagemaker-hyperpod-ref-hyperpod-ami) fonction de la version Kubernetes de votre cluster Amazon EKS. Il exécute ensuite les scripts de cycle de vie dans le compartiment Amazon S3 que vous avez spécifié lors de la création ou de la mise à jour du cluster. 

Vous pouvez vérifier la version de kubelet d’un nœud en exécutant la commande `kubectl describe node`.

La version Kubernetes des nœuds de SageMaker HyperPod cluster n'est pas automatiquement mise à jour lorsque vous mettez à jour la version de votre cluster Amazon EKS. Après avoir mis à jour la version de Kubernetes pour votre cluster Amazon EKS, vous devez utiliser l'`UpdateClusterSoftware`API pour mettre à jour les nœuds de votre SageMaker HyperPod cluster vers la même version de Kubernetes.

 Il est recommandé de mettre à jour votre SageMaker HyperPod cluster après avoir mis à jour vos nœuds Amazon EKS, et d'éviter qu'il y ait plus d'une différence de version entre la version du cluster Amazon EKS et la version des nœuds du SageMaker HyperPod cluster.

L'équipe SageMaker HyperPod de service déploie régulièrement de nouvelles [SageMaker HyperPod DLAMI](sagemaker-hyperpod-ref.md#sagemaker-hyperpod-ref-hyperpod-ami) solutions pour renforcer la sécurité et améliorer l'expérience utilisateur. Nous vous recommandons de toujours mettre à jour le DLAMI le plus récent SageMaker HyperPod . Pour les futures SageMaker HyperPod mises à jour du DLAMI relatives aux correctifs de sécurité, contactez. [Notes de SageMaker HyperPod publication d'Amazon](sagemaker-hyperpod-release-notes.md)

**Note**  
Vous pouvez exécuter cette API uniquement par programmation. La fonctionnalité d'application de correctifs n'est pas implémentée dans l'interface utilisateur de la SageMaker HyperPod console.

# Accès aux nœuds SageMaker HyperPod du cluster
<a name="sagemaker-hyperpod-eks-operate-access-through-terminal"></a>

Vous pouvez accéder directement aux nœuds d'un SageMaker HyperPod cluster en service à l'aide des AWS CLI commandes pour AWS Systems Manager (SSM). Exécutez `aws ssm start-session` avec le nom d’hôte du nœud au format `sagemaker-cluster:[cluster-id]_[instance-group-name]-[instance-id]`. Vous pouvez récupérer l'ID du cluster, l'ID de l'instance et le nom du groupe d'instances depuis la [SageMaker HyperPod console](sagemaker-hyperpod-operate-slurm-console-ui.md#sagemaker-hyperpod-operate-slurm-console-ui-view-details-of-clusters) ou en exécutant `describe-cluster` et `list-cluster-nodes` depuis les [AWS CLI commandes pour SageMaker HyperPod](sagemaker-hyperpod-operate-slurm-cli-command.md#sagemaker-hyperpod-operate-slurm-cli-command-list-cluster-nodes). Par exemple, si votre ID de cluster est `aa11bbbbb222`, le nom du nœud de cluster `controller-group` et l’ID du nœud de cluster `i-111222333444555aa`, la commande SSM `start-session` doit être la suivante.

**Note**  
Si vous ne l'avez pas encore configuré AWS Systems Manager, suivez les instructions fournies à l'adresse[Configuration AWS Systems Manager et exécution en tant que pour le contrôle d'accès des utilisateurs du cluster](sagemaker-hyperpod-prerequisites.md#sagemaker-hyperpod-prerequisites-ssm).

```
$ aws ssm start-session \
    --target sagemaker-cluster:aa11bbbbb222_controller-group-i-111222333444555aa \
    --region us-west-2
Starting session with SessionId: s0011223344aabbccdd
root@ip-111-22-333-444:/usr/bin#
```

# Réduction de la taille d'un SageMaker HyperPod cluster
<a name="smcluster-scale-down"></a>

Vous pouvez réduire le nombre d'instances exécutées sur votre SageMaker HyperPod cluster Amazon. 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 L'IA gère la terminaison des nœuds de manière à atteindre le nouveau nombre d'instances cibles que vous avez défini pour chaque groupe. Consultez [Réduction verticale d’un groupe d’instances](#smcluster-scale-down-updatecluster).
  + Supprimer complètement les groupes d’instances de votre cluster. Consultez [Suppression de groupes d’instances](#smcluster-remove-instancegroup).
+ **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](#smcluster-scale-down-batchdelete).

**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
<a name="smcluster-scale-down-considerations"></a>
+ 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 sur un système de fichiers FSx pour Lustre avant d'appeler l'API sur un groupe de nœuds de travail. 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 [Utilisez le script de sauvegarde fourni par SageMaker HyperPod](sagemaker-hyperpod-operate-slurm-cli-command.md#sagemaker-hyperpod-operate-slurm-cli-command-update-cluster-software-backup).
+ Pour appeler cette API sur un cluster existant, vous devez d'abord appliquer un correctif au cluster en exécutant l'[ UpdateClusterSoftware](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateClusterSoftware.html)API. Pour plus d’informations sur l’application de correctifs à un cluster, consultez [Mettre à jour le logiciel de SageMaker HyperPod plate-forme d'un cluster](sagemaker-hyperpod-operate-slurm-cli-command.md#sagemaker-hyperpod-operate-slurm-cli-command-update-cluster-software).
+ 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 dont la taille est réduite, vous devez contacter l'équipe chargée de votre AWS compte pour obtenir de l'aide.
+ Vous pouvez utiliser la capacité libérée par les instances réservées réduites pour augmenter le volume d'un autre SageMaker HyperPod cluster.

## Réduction verticale au niveau du groupe d’instances
<a name="smcluster-scale-down-or-delete"></a>

L'[https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateCluster.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateCluster.html)opération vous permet d'apporter des modifications à la configuration de votre SageMaker HyperPod cluster, par exemple en réduisant 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
<a name="smcluster-scale-down-updatecluster"></a>

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 `UpdateCluster` demande de réduction, choisit de HyperPod manière aléatoire les instances à résilier et réduit la taille jusqu'au nombre de nœuds spécifié pour le groupe d'instances.

**Comportement réduit grâce à des groupes d'instances flexibles**  
Pour les groupes d'instances utilisés `InstanceRequirements` avec plusieurs types d'instances, HyperPod met fin d'abord aux types d'instances les moins prioritaires lors de la réduction. La priorité est déterminée par l'ordre des types d'instances dans la `InstanceTypes` liste, le premier type ayant la priorité la plus élevée. Cela protège les instances les plus prioritaires, qui sont généralement plus performantes, lors des opérations de réduction.

**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. Cependant, le groupe d'instances lui-même existera toujours dans le SageMaker HyperPod cluster. 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 de plus amples informations, veuillez consulter [Suppression de groupes d’instances](#smcluster-remove-instancegroup).

**Pour effectuer une réduction verticale avec `UpdateCluster`**

1. Suivez les étapes décrites dans [Mettre à jour la configuration SageMaker HyperPod du cluster](sagemaker-hyperpod-eks-operate-cli-command-update-cluster.md). Lorsque vous atteignez l'étape **1.d** où vous spécifiez le **InstanceCount**champ, entrez un nombre inférieur au nombre actuel d'instances pour réduire le cluster.

1. Exécutez la AWS CLI commande [update-cluster](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/update-cluster.html) 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 **InstanceCount**champ sur 1, comme indiqué dans l'exemple, sélectionnez de HyperPod manière aléatoire l'une des instances et y mettez fin.

```
{
  "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
<a name="smcluster-remove-instancegroup"></a>

Vous pouvez utiliser cette [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateCluster.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateCluster.html)opération pour supprimer des groupes d'instances entiers de votre SageMaker HyperPod cluster 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 [Mettre à jour la configuration SageMaker HyperPod du cluster](sagemaker-hyperpod-eks-operate-cli-command-update-cluster.md) :

   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.

   1.  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`.

1. Exécutez la AWS CLI commande [update-cluster](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/update-cluster.html) pour soumettre votre demande.

**Important**  
Votre SageMaker HyperPod cluster 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
<a name="smcluster-scale-down-batchdelete"></a>

L'`BatchDeleteClusterNodes`opération vous permet de réduire la taille d'un SageMaker HyperPod cluster en spécifiant les nœuds individuels que vous souhaitez terminer. `BatchDeleteClusterNodes`fournit un contrôle plus granulaire pour la suppression ciblée des nœuds et l'optimisation des clusters. 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 `BatchDeleteClusterNodes` demande, SageMaker HyperPod supprime les nœuds en fonction de leur instance IDs. L'API accepte une demande avec le nom du cluster et une liste de nœuds IDs à supprimer. 

La réponse contient deux sections : 
+  `Failed` : liste des erreurs de type `[ BatchDeleteClusterNodesError ](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_BatchDeleteClusterNodesError.html)` : une par ID d’instance.
+  `Successful`: La liste des instances IDs a été interrompue 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 de nœuds, avec une limite de 99 nœuds IDs ou moins par `BatchDeleteClusterNodes` demande.
+ Assurez-vous qu'un SageMaker HyperPod cluster valide portant le nom de cluster en 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"]'
```

# Supprimer un SageMaker HyperPod cluster
<a name="sagemaker-hyperpod-eks-operate-cli-command-delete-cluster"></a>

Exécutez [delete-cluster](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/delete-cluster.html) pour supprimer un cluster. Vous pouvez spécifier le nom ou l’ARN du cluster.

```
aws sagemaker delete-cluster --cluster-name your-hyperpod-cluster
```

Cette API nettoie uniquement les SageMaker HyperPod ressources et ne supprime aucune ressource du cluster EKS associé. Cela inclut le cluster Amazon EKS, les identités EKS Pod, les FSx volumes Amazon et les modules complémentaires EKS. Cela inclut également la configuration initiale que vous avez ajoutée à votre cluster EKS. Si vous souhaitez nettoyer toutes les ressources, assurez-vous de nettoyer également les ressources EKS séparément. 

Assurez-vous de supprimer d'abord les SageMaker HyperPod ressources, puis les ressources EKS. L’exécution de la suppression dans l’ordre inverse peut entraîner le maintien de certaines ressources.

**Important**  
Lorsque cette API est appelée, SageMaker HyperPod elle ne vide ni ne redistribue les tâches (Pods) exécutées sur les nœuds. Assurez-vous de vérifier si des tâches sont en cours d’exécution sur les nœuds avant d’appeler cette API.