Author
Published

February 13, 2025

Exécuter un exemple simple sur Marbec-GPU

Tout au long de ce tutoriel, vous trouverez tout ce dont vous avez besoin pour éxécuter un script Python ou R ( afficher “Hello World <3”), ainsi que des conseils et des ressources supplémentaires qui vous seront utiles pour d’autres tâches sur MARBEC-GPU.

Il y a deux grandes manières pour exécuter un programme sur Marbec-GPU. La première est d’utiliser un script de soumission de tâche, la deuxième est d’utiliser la session de manière intéractive. Dans cet exemple, nous allons utiliser la première méthode qui est de loin la plus adpatée et facilment adaptable pour des programme plus complexe.

Note

Lorque vous voudrez exécuter un programme plus complexe, assurez-vous que votre projet fonctionne localement (sur votre ordinateur personnel). Cela signifie configurer votre environnement correctement et déboguer votre script localement. Une fois que tout fonctionne avec succès sur votre PC (même en utilisant seulement 1% de l’ensemble de données si vous rencontrez des contraintes de calcul), vous pouvez ensuite déployer votre projet sur MARBEC-GPU.

Commencez par créer un dossier de travail dans lequel les différents fichiers seront créés. En commande bash cela donnerait :

cd ~  # aller dans le répertoire personnel
mkdir mon_projet_python  # créer un dossier pour le projet

Sinon il est possible d’utliser l’interface Jupyter pour créer un dossier de travail avec l’icone encadrée en rouge ci-dessous :

Créer un dossier de travail

Placez vous ensuite dans ce dossier ( cd mon_projet_python/ ou doucle clic sur le dossier visible sur la gauche de l’interphace).

Étapes

Il y a trois étapes principales pour soumettre avec succès une tâche sur Marbec-GPU :

1. Préparer le script Python ou R

Créez un script python ou R simple qui affiche “Hello World <3”. Voici un exemple de script :

print("Hello World <3")

Enregistrez ce script dans un fichier nommé main.py ou main.R (en fonction du languge voulu) dans le dossier de travail que vous avez créé précédemment.

2. Préparer un script Bash avec les arguments SLURM

Afin de d’exécuter correctement le script vous aurez besion de créer un script bash launch.sh en prenant soin de mentionner :

  1. les arguments SLURM, permmant de spécifier quelles ressources allouer, le nom du job, le fichier de sortie, etc.
  2. l’exécution du script Python/R.

Voici un exemple minimal de script bash :

#!/bin/bash

#SBATCH --job-name=my_job         # Job name
#SBATCH --output=job_%j.out`      # Standard output and error log
#SBATCH --gres=gpu:1             # Number of GPUs (Supprimer la ligne si aucun GPU n’est requis.)
#SBATCH --mem=4G                  # Memory allocation (4 GB)
#SBATCH -c 1                      # Number of CPU cores

# execute python file
python main.py                    

# execute R file
Rscript main.R

Il possible de spécifier d’autres arguments SLURM. Pour plus d’informations sur les arguments SLURM, vous pouvez consulter la documentation officielle de SLURM ici.

3. Exécuter le script Bash

A l’issu des 2 étapes précédentes, le dossier de travail devrait contenir les fichiers suivants : launch.sh et main.py/main.R : final_screen La dernière étape consiste à soumettre votre script launch.sh créé à la partie précédente. Pour cela vous devez utiliser la commande sbatch (voir documentation).

Dans le terminal, exécutez la commande suivante : > sbatch launch.sh

Si les parramètres SLURM (#SBATCH arg) sont bien renseignés, vous devriez voir un message de confirmation de soumission de votre job : Submitted batch job 1234567. Sinon un message d’erreur s’affiche à la place. Lors d’une soumission réussie, SLURM regarde les ressources demandées et place le job en file d’attente ( état PENDING) tant que les ressources ne sont pas disponibles. Une fois les ressources disponibles, le job s’exécute (état RUNNING). Un fichier de sortie est alors créé dans le répertoire courant avec le nom renseigné dans le script bash (#SBATCH --output=job_%j.out). Un deuxième fichier contenant les messages d’erreur peut apparaître si cela est spécifié (#SBATCH --error=job_%j.err).

Il est possible de suivre l’avancement de votre job avec la commande squeue -u $USER ou squeue -j 1234567 (avec 1234567 le numéro de votre job). Mais aussi de lister tous les jobs en cours d’exécution ou en file d’attente avec squeue -O NAME,UserName,TimeUsed,tres-per-node,state,JOBID. La colonne STATE notamment indique l’état du job (PENDING RUNNING). Pour plus de détail sur la command squeue vous pouvez consulter la documentation.

Pour annuler un job (en cours d’éxecution ou encore en file d’attente), utilisez la commande scancel 1234567 (avec 1234567 le numéro de votre job).

Le fichier output.log contenant les sorties de votre script python est créé dans le répertoire courant. Vous pouvez le consulter avec la commande cat output.log ou simplement en double-cliquant dessus. Si tout s’est bien passé, le fichier doit ressembler à ceci :

Hello World <3
Back to top