Exécution de tâches conteneurisées avec Pyxis - AWS ParallelCluster

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.

Exécution de tâches conteneurisées avec Pyxis

Apprenez à créer un cluster capable d'exécuter des tâches conteneurisées à l'aide de Pyxis, un plugin SPANK permettant de gérer des tâches conteneurisées dans SLURM. Les conteneurs de Pyxis sont gérés par Enroot, un outil permettant de transformer les images de conteneur/système d'exploitation traditionnelles en bacs à sable non privilégiés. Pour plus d'informations, consultez NVIDIA Pyxis et NVIDIA Enroot.

Note

Cette fonctionnalité est disponible avec la version AWS ParallelCluster 3.11.1

Lors de l'utilisation AWS ParallelCluster, vous ne payez que pour les AWS ressources créées lorsque vous créez ou mettez à jour AWS ParallelCluster des images et des clusters. Pour de plus amples informations, veuillez consulter AWS services utilisés par AWS ParallelCluster.

Prérequis :

Créer le cluster

À partir de la AWS ParallelCluster version 3.11.1, toutes les versions officielles sont AMIs livrées avec Pyxis et Enroot préinstallés. En particulier, SLURM est recompilé avec le support de Pyxis et Enroot est installé sous forme de binaire dans le système. Cependant, vous devez les configurer en fonction de vos besoins spécifiques. Les dossiers utilisés par Enroot et Pyxis auront un impact critique sur les performances du cluster. Pour plus d'informations, consultez la documentation Pyxis et la documentation Enroot.

Pour votre commodité, vous trouverez ici des exemples de configurations pour Pyxis, Enroot et SPANK. /opt/parallelcluster/examples/

Pour déployer un cluster à l'aide des exemples de configurations que nous avons fournis, suivez le didacticiel suivant.

Pour créer le cluster avec un exemple de configuration

Pyxis et Enroot doivent être configurés sur le nœud principal en créant d'abord les répertoires persistants et volatils pour Enroot, puis en créant le répertoire d'exécution pour Pyxis, et enfin en activant Pyxis en tant que plugin SPANK dans l'ensemble du cluster.

  1. Exécutez le script ci-dessous sous forme d'action OnNodeConfiguredpersonnalisée dans le nœud principal pour configurer Pyxis et Enroot sur le nœud principal.

    #!/bin/bash set -e echo "Executing $0" # Configure Enroot ENROOT_PERSISTENT_DIR="/var/enroot" ENROOT_VOLATILE_DIR="/run/enroot" sudo mkdir -p $ENROOT_PERSISTENT_DIR sudo chmod 1777 $ENROOT_PERSISTENT_DIR sudo mkdir -p $ENROOT_VOLATILE_DIR sudo chmod 1777 $ENROOT_VOLATILE_DIR sudo mv /opt/parallelcluster/examples/enroot/enroot.conf /etc/enroot/enroot.conf sudo chmod 0644 /etc/enroot/enroot.conf # Configure Pyxis PYXIS_RUNTIME_DIR="/run/pyxis" sudo mkdir -p $PYXIS_RUNTIME_DIR sudo chmod 1777 $PYXIS_RUNTIME_DIR sudo mkdir -p /opt/slurm/etc/plugstack.conf.d/ sudo mv /opt/parallelcluster/examples/spank/plugstack.conf /opt/slurm/etc/ sudo mv /opt/parallelcluster/examples/pyxis/pyxis.conf /opt/slurm/etc/plugstack.conf.d/ sudo -i scontrol reconfigure
  2. Pyxis et Enroot doivent être configurés sur le parc informatique en créant les répertoires persistants et volatils pour Enroot et le répertoire d'exécution pour Pyxis. Exécutez le script ci-dessous sous forme d'action OnNodeStartpersonnalisée dans les nœuds de calcul pour configurer Pyxis et Enroot sur le parc informatique.

    #!/bin/bash set -e echo "Executing $0" # Configure Enroot ENROOT_PERSISTENT_DIR="/var/enroot" ENROOT_VOLATILE_DIR="/run/enroot" sudo mkdir -p $ENROOT_PERSISTENT_DIR sudo chmod 1777 $ENROOT_PERSISTENT_DIR sudo mkdir -p $ENROOT_VOLATILE_DIR sudo chmod 1777 $ENROOT_VOLATILE_DIR sudo mv /opt/parallelcluster/examples/enroot/enroot.conf /etc/enroot/enroot.conf sudo chmod 0644 /etc/enroot/enroot.conf # Configure Pyxis PYXIS_RUNTIME_DIR="/run/pyxis" sudo mkdir -p $PYXIS_RUNTIME_DIR sudo chmod 1777 $PYXIS_RUNTIME_DIR

Soumettre des emplois

Maintenant que Pyxis est configuré dans votre cluster, vous pouvez soumettre des tâches conteneurisées à l'aide des commandes sbatch et srun, qui sont désormais enrichies d'options spécifiques aux conteneurs.

# Submitting an interactive job srun -N 2 --container-image docker://ubuntu:22.04 hostname # Submitting a batch job sbatch -N 2 --wrap='srun --container-image docker://ubuntu:22.04 hostname'