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.
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 :
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 :
- les arguments SLURM, permmant de spécifier quelles ressources allouer, le nom du job, le fichier de sortie, etc.
- 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
: 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