

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.

# Personnalisation des SageMaker HyperPod clusters à l'aide de scripts de cycle de vie
<a name="sagemaker-hyperpod-lifecycle-best-practices-slurm"></a>

SageMaker HyperPod propose toujours des clusters de up-and-running calcul, qui sont hautement personnalisables car vous pouvez écrire des scripts de cycle de vie pour indiquer SageMaker HyperPod comment configurer les ressources du cluster. Les rubriques suivantes présentent les meilleures pratiques pour préparer des scripts de cycle de vie afin de configurer des SageMaker HyperPod clusters avec des outils de gestion de charge de travail open source.

Les rubriques suivantes présentent en détail les meilleures pratiques pour préparer des scripts de cycle de vie sur lesquels configurer les configurations Slurm. SageMaker HyperPod

## Présentation générale
<a name="sagemaker-hyperpod-lifecycle-best-practices-slurm-slurm-highlevel-overview"></a>

La procédure suivante est le flux principal du provisionnement d'un HyperPod cluster et de sa configuration avec Slurm. Les étapes sont classées selon une approche ***ascendante***.

1. Planifiez la manière dont vous souhaitez créer des nœuds Slurm sur un HyperPod cluster. Par exemple, si vous souhaitez configurer deux nœuds Slurm, vous devez configurer deux groupes d'instances dans un HyperPod cluster.

1. Préparez la configuration de Slurm. Choisissez l'une des approches suivantes :
   + **Option A : Configuration pilotée par API (recommandée)** — Définissez les types de nœuds et les partitions Slurm directement dans la charge utile de l'`CreateCluster`API au sein de chaque groupe d'`SlurmConfig`instances. Avec cette approche :
     + Aucun `provisioning_parameters.json` fichier n'est nécessaire
     + La topologie Slurm est définie dans la charge utile de l'API avec les définitions des groupes d'instances
     + FSx les systèmes de fichiers sont configurés via per-instance-group `InstanceStorageConfigs`
     + La stratégie de configuration est contrôlée via `Orchestrator.Slurm.SlurmConfigStrategy`

     Exemple `SlurmConfig` dans un groupe d'instances :

     ```
     {
         "InstanceGroupName": "gpu-compute",
         "InstanceType": "ml.p4d.24xlarge",
         "InstanceCount": 8,
         "SlurmConfig": {
             "NodeType": "Compute",
             "PartitionNames": ["gpu-training"]
         }
     }
     ```
   + **Option B : Configuration héritée** — Préparez un `provisioning_parameters.json` fichier, qui est un[Formulaire de configuration pour provisioning\_parameters.json](sagemaker-hyperpod-ref.md#sagemaker-hyperpod-ref-provisioning-forms-slurm). `provisioning_parameters.json`doit contenir les informations de configuration du nœud Slurm à provisionner sur le cluster. HyperPod Cela doit refléter la conception des nœuds Slurm à partir de l’étape 1.

1. Préparez un ensemble de scripts de cycle de vie pour configurer Slurm HyperPod afin d'installer des packages logiciels et de configurer un environnement dans le cluster adapté à votre cas d'utilisation. Vous devez structurer les scripts de cycle de vie de manière à ce qu’ils s’exécutent collectivement dans un script Python central (`lifecycle_script.py`), et écrire un script shell de point d’entrée (`on_create.sh`) pour exécuter le script Python. Le script shell entrypoint est ce que vous devez fournir à une demande de création de HyperPod cluster plus tard à l'étape 5. 

   Notez également que vous devez écrire les scripts dans lesquels vous vous attendez à ce `resource_config.json` qu'ils soient générés HyperPod lors de la création du cluster. `resource_config.json`contient des informations sur les ressources du HyperPod cluster telles que les adresses IP, les types d'instances et ARNs, et c'est ce que vous devez utiliser pour configurer Slurm.

1. Rassemblez tous les fichiers des étapes précédentes dans un dossier. La structure des dossiers dépend de l'approche de configuration que vous avez sélectionnée à l'étape 2.

   Si vous avez sélectionné l'option A (configuration pilotée par API) :

   Votre dossier a uniquement besoin de scripts de cycle de vie pour les tâches de configuration personnalisées. La configuration et le FSx montage du Slurm sont gérés automatiquement en HyperPod fonction de la charge utile de l'API.

   ```
   └── lifecycle_files // your local folder
   
       ├── on_create.sh
       ├── lifecycle_script.py
       └── ... // more setup scripts to be fed into lifecycle_script.py
   ```
**Note**  
Le `provisioning_parameters.json` fichier n'est pas obligatoire lors de l'utilisation d'une configuration pilotée par API.

   Si vous avez sélectionné l'option B (ancienne configuration) :

   Votre dossier doit inclure `provisioning_parameters.json` l'ensemble complet des scripts de cycle de vie.

   ```
   └── lifecycle_files // your local folder
   
       ├── provisioning_parameters.json
       ├── on_create.sh
       ├── lifecycle_script.py
       └── ... // more setup scrips to be fed into lifecycle_script.py
   ```

1. Chargez tous les fichiers dans un compartiment S3. Copiez et conservez le chemin de ce compartiment S3. Notez que vous devez créer un chemin de compartiment S3 commençant par `sagemaker-`, car vous devez choisir un [Rôle IAM pour SageMaker HyperPod](sagemaker-hyperpod-prerequisites-iam.md#sagemaker-hyperpod-prerequisites-iam-role-for-hyperpod) attaché avec [`AmazonSageMakerClusterInstanceRolePolicy`](security-iam-awsmanpol-AmazonSageMakerClusterInstanceRolePolicy.md), qui autorise uniquement les chemins de compartiment S3 commençant par le préfixe `sagemaker-`. La commande suivante est un exemple de commande pour charger tous les fichiers dans un compartiment S3.

   ```
   aws s3 cp --recursive {{./lifecycle_files}} {{s3://sagemaker-hyperpod-lifecycle/src}}
   ```

1. Préparez une demande HyperPod de création de cluster. 
   + Option 1 : Si vous utilisez le AWS CLI, rédigez une demande de création de cluster au format JSON (`create_cluster.json`) en suivant les instructions sur[Création d’un nouveau cluster](sagemaker-hyperpod-operate-slurm-cli-command.md#sagemaker-hyperpod-operate-slurm-cli-command-create-cluster).
   + Option 2 : Si vous utilisez l'interface utilisateur de la console SageMaker AI, remplissez le formulaire de demande de **création d'un cluster** dans l'interface utilisateur de la HyperPod console en suivant les instructions sur[Création d'un SageMaker HyperPod cluster](sagemaker-hyperpod-operate-slurm-console-ui.md#sagemaker-hyperpod-operate-slurm-console-ui-create-cluster).

   À ce stade, assurez-vous de créer des groupes d’instances dans la même structure que celle que vous avez planifiée aux étapes 1 et 2. Assurez-vous également de spécifier le compartiment S3 à l’étape 5 dans les formulaires de demande.

1. Soumettez la demande de création de cluster. HyperPod approvisionne un cluster en fonction de la demande, puis crée un `resource_config.json` fichier dans les instances du HyperPod cluster et configure Slurm sur le cluster exécutant les scripts de cycle de vie.

Les rubriques suivantes vous expliquent en détail comment organiser les fichiers de configuration et les scripts de cycle de vie pour qu'ils fonctionnent correctement lors de la création de HyperPod clusters.

**Topics**
+ [Présentation générale](#sagemaker-hyperpod-lifecycle-best-practices-slurm-slurm-highlevel-overview)
+ [Scripts de cycle de vie de base fournis par HyperPod](sagemaker-hyperpod-lifecycle-best-practices-slurm-slurm-base-config.md)
+ [Quelles configurations particulières sont HyperPod gérées dans les fichiers de configuration de Slurm](sagemaker-hyperpod-lifecycle-best-practices-slurm-what-hyperpod-overrides-in-slurm-conf.md)
+ [Rotations des bûches de boue](sagemaker-hyperpod-slurm-log-rotation.md)
+ [Montage d'Amazon FSx for Lustre et d'Amazon FSx pour OpenZFS sur un cluster HyperPod](sagemaker-hyperpod-lifecycle-best-practices-slurm-slurm-setup-with-fsx.md)
+ [Validation des fichiers de configuration JSON avant de créer un cluster Slurm sur HyperPod](sagemaker-hyperpod-lifecycle-best-practices-slurm-slurm-validate-json-files.md)
+ [Validation du temps d'exécution avant d'exécuter des charges de production sur un HyperPod cluster Slurm](sagemaker-hyperpod-lifecycle-best-practices-slurm-slurm-validate-runtime.md)
+ [Développement interactif de scripts de cycle de vie sur un nœud de HyperPod cluster](sagemaker-hyperpod-lifecycle-best-practices-slurm-slurm-develop-lifecycle-scripts.md)