Restauration automatique des nœuds et reprise automatique - 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.

Restauration automatique des nœuds et reprise automatique

Note

Depuis le 11 septembre 2025, HyperPod avec Slurm, l'orchestration prend désormais en charge les agents de surveillance de la santé. Exécutez UpdateClusterSoftwareet mettez à jour la dernière version de l'AMI afin d'utiliser cette fonctionnalité.

Cette section décrit les deux fonctionnalités SageMaker HyperPod de résilience complémentaires d'Amazon : la restauration automatique des nœuds qui remplace l'infrastructure défectueuse sans intervention manuelle, et la fonctionnalité de reprise automatique qui redémarre les tâches de formation depuis le dernier point de contrôle après une panne matérielle.

Comment fonctionne la restauration automatique des nœuds

Lors de la création ou de la mise à jour du cluster, les utilisateurs administrateurs du cluster peuvent sélectionner l’option de récupération des nœuds (instances) entre Automatic (recommandé) et None au niveau du cluster. S'il est défini surAutomatic, SageMaker HyperPod redémarre ou remplace automatiquement les nœuds défectueux.

Important

Nous vous recommandons de définir l’option Automatic. Par défaut, les clusters sont configurés avec la restauration automatique des nœuds.

La récupération automatique des nœuds s’exécute lorsque des problèmes sont détectés via un agent de surveillance de l’état, des vérifications de surveillance de l’état de base et des vérifications de surveillance approfondie de l’état. Si elle est définie sur None, l’agent de surveillance de l’état étiquette les instances lorsqu’une défaillance est détectée, mais il ne lance aucune action de réparation ou de récupération automatique sur les nœuds affectés. Nous ne recommandons pas cette option.

Exécution d'une tâche de formation avec la fonctionnalité de SageMaker HyperPod reprise automatique d'Amazon

Cette section décrit comment exécuter une tâche de formation à l'aide de la fonctionnalité de SageMaker HyperPod reprise automatique, qui fournit une infrastructure de résilience sans intervention permettant de récupérer automatiquement une tâche de formation depuis le dernier point de contrôle enregistré en cas de panne matérielle.

Grâce à la fonctionnalité de reprise automatique, si une tâche échoue en raison d'une panne matérielle ou d'un problème temporaire entre les sessions de formation, la SageMaker HyperPod reprise automatique lance le flux de travail de remplacement des nœuds et redémarre la tâche une fois les nœuds défectueux remplacés. Les vérifications matérielles suivantes sont exécutées chaque fois qu'une tâche échoue lors de l'utilisation de la reprise automatique :

Catégorie Nom de l’utilitaire Compatibilité des types d’instance Description
Accélérateur NVIDIA SMI GPU L'utilitaire nvidia-smi est une CLI bien connue pour gérer et surveiller. GPUs L’outil intégré de surveillance de l’état analyse la sortie de nvidia-smi pour déterminer l’intégrité de l’instance.
Accélérateur Neuron sysfs Trainium Pour les instances alimentées par Trainium, l’état des appareils Neuron est déterminé en lisant les compteurs de Neuron sysfs propagés directement par le pilote Neuron.
Réseau EFA GPU et Trainium Pour faciliter le diagnostic des appareils Elastic Fabric Adaptor (EFA), l’outil de surveillance de l’état EFA exécute une série de tests de connectivité en utilisant toutes les cartes EFA disponibles au sein de l’instance.
Note

Lorsque des ressources génériques (GRES) sont attachées à un nœud Slurm, Slurm n’autorise généralement pas les modifications de l’allocation des nœuds, telles que le remplacement de nœuds, et n’autorise donc pas la reprise d’une tâche ayant échoué. Sauf interdiction explicite, la fonctionnalité de HyperPod reprise automatique met automatiquement en file d'attente toute tâche défectueuse associée aux nœuds compatibles GRES. Ce processus implique d’arrêter la tâche, de la replacer dans la file d’attente des tâches, puis de la redémarrer au début.

Utilisation de la fonctionnalité de SageMaker HyperPod reprise automatique avec Slurm

Lorsque vous utilisez la SageMaker HyperPod reprise automatique avec Slurm, vous devez exécuter le travail dans le cadre d'une allocation exclusive acquise soit en utilisant soit. salloc sbatch Dans tous les cas, vous devez modifier le script de point d’entrée pour vous assurer que toutes les étapes de configuration s’exécutent dans une seule commande srun lors de la reprise de la tâche. À l’aide du script de point d’entrée, il est important de configurer l’environnement sur le nœud remplacé de manière à ce qu’il soit cohérent avec l’environnement dans lequel l’étape de la tâche s’exécutait avant d’être arrêtée. La procédure suivante montre comment préparer un script de point d'entrée pour garantir la cohérence de l'environnement et l'exécuter en tant que commande uniquesrun.

Astuce

Si vous utilisez sbatch, vous pouvez simplifier le script de commande en créant un script distinct pour configurer l’environnement et en utilisant une seule commande srun.

  1. Créez un script à l’aide de l’exemple de code suivant et enregistrez-le sous train_auto_resume.sh. Ce script déploie les configurations de l’environnement d’entraînement en supposant qu’aucune configuration manuelle n’a été précédemment effectuée sur le nœud remplacé. Cela garantit que l’environnement est ignorant du nœud, de sorte que lorsqu’un nœud est remplacé, le même environnement est provisionné sur le nœud avant de reprendre la tâche.

    Note

    L’exemple de code suivant montre comment découvrir la liste des nœuds Slurm associée à la tâche. N'utilisez pas la variable d'$SLURM_JOB_NODELISTenvironnement fournie par Slurm, car sa valeur risque d'être obsolète après la SageMaker HyperPod reprise automatique du travail. L’exemple de code suivant montre comment définir une nouvelle variable NODE_LIST pour remplacer SLURM_JOB_NODELIST, puis configurer les variables MASTER_NODE et MASTER_ADDR hors de la variable NODE_LIST.

    #!/bin/bash # Filename: train_auto_resume.sh # Sample containerized script to launch a training job with a single srun which can be auto-resumed. # Place your training environment setup here. # Example: Install conda, docker, activate virtual env, etc. # Get the list of nodes for a given job NODE_LIST=$(scontrol show jobid=$SLURM_JOBID | \ # Show details of the SLURM job awk -F= '/NodeList=/{print $2}' | \ # Extract NodeList field grep -v Exc) # Exclude nodes marked as excluded # Determine the master node from the node list MASTER_NODE=$(scontrol show hostname $NODE_LIST | \ # Convert node list to hostnames head -n 1) # Select the first hostname as master node # Get the master node address MASTER_ADDR=$(scontrol show node=$MASTER_NODE | \ # Show node information awk -F= '/NodeAddr=/{print $2}' | \ # Extract NodeAddr awk '{print $1}') # Print the first part of NodeAddr # Torchrun command to launch the training job torchrun_cmd="torchrun --nnodes=$SLURM_NNODES \ --nproc_per_node=1 \ --node_rank=$SLURM_NODE \ --master-addr=$MASTER_ADDR \ --master_port=1234 \ <your_training_script.py>" # Execute the torchrun command in the 'pytorch' Conda environment, # streaming output live /opt/conda/bin/conda run --live-stream -n pytorch $torchrun_cmd
    Astuce

    Vous pouvez utiliser le script précédent pour ajouter des commandes supplémentaires afin d’installer des dépendances supplémentaires pour votre tâche. Toutefois, nous vous recommandons de limiter les scripts d’installation des dépendances à l’ensemble des scripts de cycle de vie utilisés lors de la création du cluster. Si vous utilisez un environnement virtuel hébergé sur un répertoire partagé, vous pouvez également utiliser ce script pour activer l’environnement virtuel.

  2. Lancez la tâche avec la SageMaker HyperPod reprise automatique activée en ajoutant l'indicateur --auto-resume=1 indiquant que la srun commande doit être réessayée automatiquement en cas de panne matérielle.

    Note

    Si vous avez configuré une allocation de ressources en utilisant sbatch ou salloc, vous pouvez exécuter plusieurs commandes srun dans le cadre de l’allocation. En cas d'échec, la fonctionnalité de SageMaker HyperPod reprise automatique ne fonctionne que dans l'étape de travail en cours de la srun commande avec l'indicateur--auto-resume=1. En d’autres termes, l’activation de la reprise automatique dans une commande srun ne s’applique pas aux autres commandes srun lancées au cours d’une session d’allocation de ressources.

    Voici des exemples de commande srun avec auto-resume activé.

    Utilisation de sbatch

    Comme la plus grande partie de la logique de configuration de l’environnement existe déjà dans train_auto_resume.sh, le script de commande doit être simple et similaire à l’exemple de code suivant. Supposons que le script de commande suivant soit enregistré sous batch.sh.

    #!/bin/bash #SBATCH --nodes 2 #SBATCH --exclusive srun --auto-resume=1 train_auto_resume.sh

    Exécutez le script de commande précédent à l’aide de la commande suivante.

    sbatch batch.sh

    Utilisation de salloc

    Commencez par acquérir une allocation exclusive et exécutez la commande srun avec l’indicateur --auto-resume et le script de point d’entrée.

    salloc -N 2 --exclusive srun --auto-resume=1 train_auto_resume.sh

Comment la restauration automatique des nœuds et la reprise automatique des nœuds fonctionnent ensemble

Lorsque les systèmes de restauration automatique des nœuds et de reprise automatique sont actifs, ils suivent une approche coordonnée pour gérer les défaillances. Si le HMA détecte une défaillance matérielle, le nœud est marqué comme étant épuisé quel que soit l'état de la tâche. Lorsque la restauration automatique des nœuds est activée, les nœuds sont automatiquement remplacés une fois que toutes les tâches exécutées sur les nœuds sont terminées. Dans ce scénario, pour les tâches pour lesquelles la reprise automatique est activée, si le statut de sortie de l'étape est différent de zéro, la reprise automatique démarre (les tâches reprennent une fois les nœuds remplacés). Les tâches pour lesquelles la reprise automatique n'est pas activée seront simplement abandonnées, ce qui nécessitera une nouvelle soumission manuelle par les administrateurs ou les utilisateurs.

Note

Si vous utilisez la reprise automatique, les nœuds sont toujours remplacés (aucun redémarrage) lorsque des défaillances matérielles sont détectées.