View a markdown version of this page

Inserimento di variabili di ambiente con un prologo delle attività - Amazon SageMaker AI

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Inserimento di variabili di ambiente con un prologo delle attività

È possibile utilizzare un prolog delle attività per inserire automaticamente variabili di ambiente nei processi senza modificare gli script dei processi. Un prolog Slurm delle attività è uno script che viene eseguito prima dell'avvio di un'operazione. Viene eseguito nello stesso ambiente dell'attività. Il prolog dell'attività scrive ogni variabile nello standard output as export NAME=value e Slurm imposta tali variabili nell'ambiente dell'attività.

Slurmsupporta solo una singola TaskProlog immissione inslurm.conf. HyperPod Le AMI sono configurate TaskProlog in modo da puntare a uno script del dispatcher. Ciò mantiene la singola voce disponibile per più funzionalità e personalizzazioni personalizzate.

Il dispatcher esegue tutti gli *.sh script eseguibili in una directory drop-in. La configurazione HyperPod AMI pertinente è la seguente:

  • slurm.confsetTaskProlog=/opt/slurm/etc/task_prolog.sh.

  • /opt/slurm/etc/task_prolog.shè un dispatcher che esegue, nell'ordine dei nomi dei file, tutti gli *.sh script eseguibili che trova. /opt/slurm/etc/task_prolog.d/ Se la directory è vuota o mancante, il dispatcher non esegue alcuna operazione ed esce correttamente.

  • /opt/slurm/etc/task_prolog.d/è la directory drop-in per gli script eseguiti dal dispatcher. L'AMI crea questa directory come posizione supportata per gli script di iniezione delle variabili di ambiente.

Poiché disponi dell'accesso root sui nodi HyperPod del cluster, puoi modificarli slurm.conf direttamente.

Modifica degli stop di TaskProlog ingresso, iniezione della variabile d'ambiente

Se si rimuove o si reindirizza la TaskProlog=/opt/slurm/etc/task_prolog.sh voce, il dispatcher non viene più eseguito. Qualsiasi HyperPod funzionalità che si basa su di essa per inserire variabili di ambiente (ad esempio, la raccolta delle metriche di osservabilità) non riceve più tali variabili. Per mantenere attive queste funzionalità, aggiungi i tuoi script /opt/slurm/etc/task_prolog.d/ invece di modificare la voce.

Per i lavori containerizzati, il task prolog viene eseguito all'interno del contenitore. HyperPodconfigura Enroot bind mount under in /etc/enroot/mounts.d/ modo che lo script del dispatcher e la directory siano disponibili all'interno dei contenitori. task_prolog.d/ Pyxis

Le immagini dei contenitori devono includere bash

Poiché il task prolog dispatcher è uno bash script che viene eseguito all'interno del contenitore, le immagini del contenitore per i lavori devono includere la shell at. bash /bin/bash In caso contrario, il prolog del task fallisce e il job termina con un errore.

Se si crea un'AMI personalizzata, questa eredita la configurazione del prolog delle attività dall'AMI di base. HyperPod Conserva la TaskProlog voce e la /opt/slurm/etc/task_prolog.d/ directory nell'AMI personalizzata in modo che il dispatcher rimanga disponibile. Per ulteriori informazioni sulle AMI personalizzate, consulta. Amazon Machine Images (AMI) personalizzate per cluster SageMaker HyperPod

Aggiungi il tuo script Task Prolog

Puoi aggiungere script eseguibili per inserire variabili /opt/slurm/etc/task_prolog.d/ di ambiente nei tuoi lavori. Il dispatcher esegue questi script in ordine crescente in base al nome del file. HyperPod può installare i propri script in questa directory. Per eseguire lo script dopo di essi, usa un prefisso numerico alto, ad esempio. 900_ Se due script esportano la stessa variabile, il valore dello script che viene eseguito successivamente ha effetto.

Per aggiungere il tuo script Task Prolog personalizzato, segui questi passaggi:

  1. Crea uno script eseguibile in ogni /opt/slurm/etc/task_prolog.d/ nodo di calcolo. Assegna al file un prefisso numerico per impostarne l'ordine, ad esempio. 900_my_env.sh Scrivi ogni variabile di ambiente nello standard output del modulo export NAME=value e invia qualsiasi altro output allo standard error.

    $ 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
  2. Verifica che la variabile sia inserita in un job sull'host.

    $ srun bash -c 'env | grep MY_CUSTOM_VAR' MY_CUSTOM_VAR=my_value
  3. Se esegui processi containerizzati, verifica che la variabile venga inserita anche all'interno di un contenitore. Pyxis

    $ srun --container-image=docker/image:tag bash -c 'env | grep MY_CUSTOM_VAR' MY_CUSTOM_VAR=my_value
Gli script non persistono tra le sostituzioni dei nodi

Gli script inseriti direttamente /opt/slurm/etc/task_prolog.d/ sono locali per ogni nodo e non vengono conservati quando un nodo viene sostituito (ad esempio, durante la ripresa automatica). Per mantenere gli script tra i nodi sostitutivi, installali da uno script del ciclo di vita in modo che vengano riapplicati quando viene effettuato il provisioning di un nodo. Per ulteriori informazioni sugli script del ciclo di vita per, consulta. Slurm Personalizzazione dei SageMaker HyperPod cluster utilizzando script del ciclo di vita