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.
Injection de variables d'environnement avec un prologue de tâches
Vous pouvez utiliser un prologue de tâches pour injecter automatiquement des variables d'environnement dans vos tâches sans modifier vos scripts de tâches. Un Slurm prologue de tâches est un script qui s'exécute avant le démarrage d'une tâche. Elle s'exécute dans le même environnement que la tâche. Le prologue de tâches écrit chaque variable sur la sortie standard en tant queexport , et Slurm définit ces variables dans l'environnement de la tâche.NAME=value
Slurmne prend en charge qu'une seule TaskProlog entrée dansslurm.conf. HyperPod Les AMI sont TaskProlog configurées pour pointer vers un script du répartiteur. Cela permet de garder l'entrée unique disponible pour plusieurs fonctionnalités et vos propres personnalisations.
Le répartiteur exécute chaque *.sh script exécutable dans un répertoire déroulant. La configuration HyperPod AMI appropriée est la suivante :
-
slurm.confensemblesTaskProlog=/opt/slurm/etc/task_prolog.sh. -
/opt/slurm/etc/task_prolog.shest un répartiteur qui exécute, dans l'ordre des noms de fichiers, tous les*.shscripts exécutables qu'il trouve./opt/slurm/etc/task_prolog.d/Si le répertoire est vide ou manquant, le répartiteur ne fait rien et se ferme correctement. -
/opt/slurm/etc/task_prolog.d/est le répertoire de dépôt des scripts exécutés par le répartiteur. L'AMI crée ce répertoire en tant qu'emplacement pris en charge pour vos scripts d'injection de variables d'environnement.
Comme vous disposez d'un accès root sur les nœuds HyperPod du cluster, vous pouvez les modifier slurm.conf directement.
La modification de l' TaskProlog entrée arrête l'injection de variables d'environnement
Si vous supprimez ou repointez l'TaskProlog=/opt/slurm/etc/task_prolog.shentrée, le répartiteur ne fonctionne plus. Toute HyperPod fonctionnalité qui s'en sert pour injecter des variables d'environnement (par exemple, la collecte de métriques d'observabilité) ne reçoit plus ces variables. Pour que ces fonctionnalités continuent de fonctionner, ajoutez vos propres scripts au /opt/slurm/etc/task_prolog.d/ lieu de modifier l'entrée.
Pour les tâches conteneurisées, le prolog des tâches s'exécute à l'intérieur du conteneur. HyperPodconfigure les montages de Enroot liaison sous /etc/enroot/mounts.d/ lesquels le script du répartiteur et le task_prolog.d/ répertoire soient disponibles dans Pyxis les conteneurs.
Les images de conteneurs doivent inclure bash
Étant donné que le répartiteur de tâches Prolog est un bash script qui s'exécute à l'intérieur du conteneur, les images de conteneur de vos tâches doivent inclure le bash shell à l'adresse. /bin/bash Dans le cas contraire, le prolog de tâches échoue et la tâche se termine avec une erreur.
Si vous créez une AMI personnalisée, elle hérite de cette configuration de prolog de tâches de l'AMI de HyperPod base. Conservez l'TaskPrologentrée et le /opt/slurm/etc/task_prolog.d/ répertoire dans votre AMI personnalisée afin que le répartiteur reste disponible. Pour plus d'informations sur les AMI personnalisées, consultezAmazon Machine Images (AMI) personnalisées pour les SageMaker HyperPod clusters.
Ajoutez votre propre script de prolog de tâches
Vous pouvez ajouter des scripts exécutables /opt/slurm/etc/task_prolog.d/ pour injecter des variables d'environnement dans vos tâches. Le répartiteur exécute ces scripts dans l'ordre croissant par nom de fichier. HyperPod peut installer ses propres scripts dans ce répertoire. Pour exécuter votre script après eux, utilisez un préfixe numérique élevé, tel que900_. Si deux scripts exportent la même variable, la valeur du script qui s'exécute ultérieurement prend effet.
Pour ajouter votre propre script de prolog de tâches, procédez comme suit :
-
Créez un script exécutable
/opt/slurm/etc/task_prolog.d/sur chaque nœud de calcul. Donnez au fichier un préfixe numérique pour définir son ordre,900_my_env.shpar exemple. Écrivez chaque variable d'environnement sur la sortie standard du formulaireexportet envoyez toute autre sortie sur la sortie standard error.NAME=value$sudo tee /opt/slurm/etc/task_prolog.d/900_my_env.sh > /dev/null <<'EOF' #!/bin/bash echo "export MY_CUSTOM_VAR=my_value" EOF$sudo chmod +x /opt/slurm/etc/task_prolog.d/900_my_env.sh -
Vérifiez que votre variable est injectée dans une tâche sur l'hôte.
$srun bash -c 'env | grep MY_CUSTOM_VAR'MY_CUSTOM_VAR=my_value -
Si vous exécutez des tâches conteneurisées, vérifiez que votre variable est également injectée dans un Pyxis conteneur.
$srun --container-image=docker/image:tagbash -c 'env | grep MY_CUSTOM_VAR'MY_CUSTOM_VAR=my_value
Les scripts ne persistent pas après les remplacements de nœuds
Les scripts que vous placez directement /opt/slurm/etc/task_prolog.d/ sont locaux à chaque nœud et ne sont pas conservés lorsqu'un nœud est remplacé (par exemple, lors de la reprise automatique). Pour conserver vos scripts lors des remplacements de nœuds, installez-les à partir d'un script de cycle de vie afin qu'ils soient réappliqués lorsqu'un nœud est provisionné. Pour plus d'informations sur les scripts de cycle de vie pourSlurm, consultezPersonnalisation des SageMaker HyperPod clusters à l'aide de scripts de cycle de vie.