Exécution de tâches dans un cluster en mode de files d'attente multiples - 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 dans un cluster en mode de files d'attente multiples

Ce didacticiel explique comment exécuter votre « premier »Hello World« fonctionne en AWS ParallelCluster mode file d'attente multiple.

Lorsque vous utilisez l'interface de ligne de AWS ParallelCluster commande (CLI) ouAPI, 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.

L' AWS ParallelCluster interface utilisateur repose sur une architecture sans serveur et vous pouvez l'utiliser dans la catégorie AWS Free Tier dans la plupart des cas. Pour de plus amples informations, veuillez consulter AWS ParallelCluster Coûts d'interface utilisateur.

Prérequis

Configurez votre cluster

Tout d'abord, vérifiez qu' AWS ParallelCluster il est correctement installé en exécutant la commande suivante.

$ pcluster version

Pour plus d'informations sur pcluster version, consultez pcluster version.

Cette commande renvoie la version en cours d'exécution de AWS ParallelCluster.

Exécutez ensuite pcluster configure pour générer un fichier de configuration de base. Suivez toutes les instructions qui suivent cette commande.

$ pcluster configure --config multi-queue-mode.yaml

Pour plus d'informations sur la commande pcluster configure, consultez pcluster configure.

Une fois cette étape terminée, un fichier de configuration de base nommé multi-queue-mode.yaml apparaît. Ce fichier contient une configuration de base du cluster.

À l'étape suivante, vous modifiez votre nouveau fichier de configuration et lancez un cluster avec plusieurs files d'attente.

Note

Certaines instances utilisées dans ce didacticiel ne sont pas éligibles au niveau gratuit.

Pour ce didacticiel, modifiez votre fichier de configuration pour qu'il corresponde à la configuration suivante. Les éléments surlignés en rouge représentent les valeurs de votre fichier de configuration. Gardez vos propres valeurs.

Region: region-id Image: Os: alinux2 HeadNode: InstanceType: c5.xlarge Networking: SubnetId: subnet-abcdef01234567890 Ssh: KeyName: yourkeypair Scheduling: Scheduler: slurm SlurmQueues: - Name: spot ComputeResources: - Name: c5xlarge InstanceType: c5.xlarge MinCount: 1 MaxCount: 10 - Name: t2micro InstanceType: t2.micro MinCount: 1 MaxCount: 10 Networking: SubnetIds: - subnet-abcdef01234567890 - Name: ondemand ComputeResources: - Name: c52xlarge InstanceType: c5.2xlarge MinCount: 0 MaxCount: 10 Networking: SubnetIds: - subnet-021345abcdef6789

Créer votre cluster

Créez un cluster nommé en multi-queue-cluster fonction de votre fichier de configuration.

$ pcluster create-cluster --cluster-name multi-queue-cluster --cluster-configuration multi-queue-mode.yaml { "cluster": { "clusterName": "multi-queue-cluster", "cloudformationStackStatus": "CREATE_IN_PROGRESS", "cloudformationStackArn": "arn:aws:cloudformation:eu-west-1:123456789012:stack/multi-queue-cluster/1234567-abcd-0123-def0-abcdef0123456", "region": "eu-west-1", "version": "3.7.0", "clusterStatus": "CREATE_IN_PROGRESS" } }

Pour plus d'informations sur la commande pcluster create-cluster, consultez pcluster create-cluster.

Pour vérifier l'état du cluster, exécutez la commande suivante.

$ pcluster list-clusters { "cluster": { "clusterName": "multi-queue-cluster", "cloudformationStackStatus": "CREATE_IN_PROGRESS", "cloudformationStackArn": "arn:aws:cloudformation:eu-west-1:123456789012:stack/multi-queue-cluster/1234567-abcd-0123-def0-abcdef0123456", "region": "eu-west-1", "version": "3.7.0", "clusterStatus": "CREATE_IN_PROGRESS" } }

Lorsque le cluster est créé, le clusterStatus champ s'afficheCREATE_COMPLETE.

Connectez-vous au nœud principal

Utilisez votre fichier de SSH clé privée pour vous connecter au nœud principal.

$ pcluster ssh --cluster-name multi-queue-cluster -i ~/path/to/yourkeyfile.pem

Pour plus d'informations sur pcluster ssh, consultez pcluster ssh.

Une fois connecté, exécutez la sinfo commande pour vérifier que les files d'attente de votre planificateur sont installées et configurées.

Pour plus d'informations sursinfo, voir sinfo dans le Slurm documentation.

$ sinfo PARTITION AVAIL TIMELIMIT NODES STATE NODELIST spot* up infinite 18 idle~ spot-dy-c5xlarge-[1-9],spot-dy-t2micro-[1-9] spot* up infinite 2 idle spot-st-c5xlarge-1,spot-st-t2micro-1 ondemand up infinite 10 idle~ ondemand-dy-c52xlarge-[1-10]

La sortie indique que vous disposez d'un t2.micro et d'un nœud de c5.xlarge calcul dans l'idleétat qui sont disponibles dans votre cluster.

Les autres nœuds sont tous en état d'économie d'énergie, indiqué par le ~ suffixe dans l'état du nœud, sans qu'aucune EC2 instance Amazon ne les prenne en charge. La file d'attente par défaut est indiquée par un * suffixe après son nom. spotest votre file d'attente de tâches par défaut.

Exécuter le job en mode file d'attente multiple

Ensuite, essayez d'exécuter une tâche pour dormir pendant un moment. La tâche génère ensuite son propre nom d'hôte. Assurez-vous que ce script peut être exécuté par l'utilisateur actuel.

$ tee <<EOF hellojob.sh #!/bin/bash sleep 30 echo "Hello World from \$(hostname)" EOF $ chmod +x hellojob.sh $ ls -l hellojob.sh -rwxrwxr-x 1 ec2-user ec2-user 57 Sep 23 21:57 hellojob.sh

Soumettez le travail à l'aide de la sbatch commande. Demandez deux nœuds pour cette tâche avec l'-N 2option, et vérifiez que la tâche est correctement soumise. Pour plus d'informations sur sbatch, consultez .sbatchdans la documentation de Slurm.

$ sbatch -N 2 --wrap "srun hellojob.sh" Submitted batch job 1

Vous pouvez consulter votre file d'attente et vérifier l'état de la tâche à l'aide de la squeue commande. Comme vous n'avez pas spécifié de file d'attente spécifique, la file d'attente par défaut (spot) est utilisée. Pour plus d'informations sur squeue, consultez .squeue dans le .Slurm documentation.

$ squeue JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON) 1 spot wrap ec2-user R 0:10 2 spot-st-c5xlarge-1,spot-st-t2micro-1

La sortie indique que la tâche est actuellement en cours d'exécution. Attendez que le travail soit terminé. Cela prend environ 30 secondes. Ensuite, courez squeue à nouveau.

$ squeue JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON)

Maintenant que les tâches de la file d'attente sont toutes terminées, recherchez le fichier de sortie nommé slurm-1.out dans votre répertoire actuel.

$ cat slurm-1.out Hello World from spot-st-t2micro-1 Hello World from spot-st-c5xlarge-1

Le résultat indique que la tâche s'est exécutée avec succès sur les spot-st-c5xlarge-1 nœuds spot-st-t2micro-1 et.

Soumettez maintenant le même travail en spécifiant des contraintes pour des instances spécifiques à l'aide des commandes suivantes.

$ sbatch -N 3 -p spot -C "[c5.xlarge*1&t2.micro*2]" --wrap "srun hellojob.sh" Submitted batch job 2

Vous avez utilisé ces paramètres pour sbatch :

  • -N 3— demande trois nœuds.

  • -p spot— soumet la tâche à la spot file d'attente. Vous pouvez également soumettre une tâche à la ondemand file d'attente en spécifiant-p ondemand.

  • -C "[c5.xlarge*1&t2.micro*2]"— spécifie les contraintes de nœud spécifiques pour cette tâche. Cela demande qu'un c5.xlarge nœud et deux t2.micro nœuds soient utilisés pour cette tâche.

Exécutez la sinfo commande pour afficher les nœuds et les files d'attente. Les files d'attente AWS ParallelCluster sont appelées partitions dans Slurm.

$ sinfo PARTITION AVAIL TIMELIMIT NODES STATE NODELIST spot* up infinite 1 alloc# spot-dy-t2micro-1 spot* up infinite 17 idle~ spot-dy-c5xlarge-[2-10],spot-dy-t2micro-[2-9] spot* up infinite 1 mix spot-st-c5xlarge-1 spot* up infinite 1 alloc spot-st-t2micro-1 ondemand up infinite 10 idle~ ondemand-dy-c52xlarge-[1-10]

Les nœuds s'allument. Cela est indiqué par le # suffixe sur l'état du nœud. Exécutez le squeue commande pour afficher les informations relatives aux tâches du cluster.

$ squeue JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON) 2 spot wrap ec2-user CF 0:04 3 spot-dy-c5xlarge-1,spot-dy-t2micro-1,spot-st-t2micro-1

Votre travail est dans le CF (CONFIGURING), en attente de la montée en puissance des instances et de leur intégration au cluster.

Au bout de trois minutes environ, les nœuds sont disponibles et la tâche entre dans le champ R (RUNNING) état.

$ squeue JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON) 2 spot wrap ec2-user R 0:07 3 spot-dy-t2micro-1,spot-st-c5xlarge-1,spot-st-t2micro-1

La tâche est terminée et les trois nœuds sont dans l'idleétat.

$ squeue JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON) $ sinfo PARTITION AVAIL TIMELIMIT NODES STATE NODELIST spot* up infinite 17 idle~ spot-dy-c5xlarge-[1-9],spot-dy-t2micro-[2-9] spot* up infinite 3 idle spot-dy-t2micro-1,spot-st-c5xlarge-1,spot-st-t2micro-1 ondemand up infinite 10 idle~ ondemand-dy-c52xlarge-[1-10]

Ensuite, une fois qu'aucune tâche ne reste dans la file d'attente, slurm-2.out recherchez-la dans votre répertoire local.

$ cat slurm-2.out Hello World from spot-st-t2micro-1 Hello World from spot-dy-t2micro-1 Hello World from spot-st-c5xlarge-1

Il s'agit de l'état final du cluster.

$ sinfo PARTITION AVAIL TIMELIMIT NODES STATE NODELIST spot* up infinite 17 idle~ spot-dy-c5xlarge-[1-9],spot-dy-t2micro-[2-9] spot* up infinite 3 idle spot-dy-t2micro-1,spot-st-c5xlarge-1,spot-st-t2micro-1 ondemand up infinite 10 idle~ ondemand-dy-c52xlarge-[1-10]

Après vous être déconnecté du cluster, vous pouvez le nettoyer en exécutantpcluster delete-cluster. Pour plus d’informations, consultez pcluster list-clusters et pcluster delete-cluster.

$ pcluster list-clusters { "clusters": [ { "clusterName": "multi-queue-cluster", "cloudformationStackStatus": "CREATE_COMPLETE", "cloudformationStackArn": "arn:aws:cloudformation:eu-west-1:123456789012:stack/multi-queue-cluster/1234567-abcd-0123-def0-abcdef0123456", "region": "eu-west-1", "version": "3.1.4", "clusterStatus": "CREATE_COMPLETE" } ] } $ pcluster delete-cluster -n multi-queue-cluster { "cluster": { "clusterName": "multi-queue-cluster", "cloudformationStackStatus": "DELETE_IN_PROGRESS", "cloudformationStackArn": "arn:aws:cloudformation:eu-west-1:123456789012:stack/multi-queue-cluster/1234567-abcd-0123-def0-abcdef0123456", "region": "eu-west-1", "version": "3.1.4", "clusterStatus": "DELETE_IN_PROGRESS" } }