Bonjour,
J'ai quelques questions concernant le fait de lancer un calcul depuis l'interface JupyterLab, en particulier depuis le terminal de JupyterLab.
-
Si j'ai bien compris, notre instance de JupyterLab tourne dans un job du cluster lancé par srun
. Ceci explique pourquoi il n'est pas conseillé de lancer une commande avec srun
depuis JupyterLab. Le job qu'on vient de lancer devra, en effet, attendre que le job de JupyterLab soit lui-même terminé pour démarrer. À ce propos, est-il possible d'avoir le numéro du job associé au JupyterLab qu'on utilise actuellement ?
-
Si on ne doit pas utliser srun
, on peut par contre utiliser sbatch
pour lancer nos scripts depuis JupyterLab. Ça fonctionne effectivement très bien. Et l'interface JupyterLab est très confortable pour éditer des scripts.
-
Puisque JupyterLab est lui-même un job lancé avec srun
sur le cluster, est-il acceptable de lancer des commandes "gourmandes" depuis le terminal de JupyterLab ? Par exemple, l'indexation d'un génome de référence ou le contrôle qualité de fichers fastq. C'est bien sûr interdit depuis le noeud de connexion via SSH mais depuis JupyterLab, cela me semble acceptable dans la mesure où l'utilisateur est déjà dans un job lancé sur le cluster.
Merci par avance pour vos réponses et vos conseils.
Pierre
Bonjour Pierre,
-
Tu peux récupérer l'id du job associé à ton JupyterLab depuis le Terminal de JupyterLab via la commande : echo $SLURM_JOB_ID
-
Yes 
-
D'une manière générale, tu peux effectivement mobiliser des ressources importantes pour ton environnement JupyterLab puis lancer des commandes gourmande depuis le Terminal sans te soucier de faire des srun
.
Il existe cependant une solution élégante pour pouvoir réserver ponctuellement des ressources pour un usage interactif et ceci même depuis le Terminal de JupyterLab. Il s'agit de la commande salloc
.
salloc
permet de réserver des ressources de calcul et de les associer à un shell (bash par défaut)
Ce shell est ensuite utilisé pour exécuter des commandes srun
permettant de lancer des tasks.
Pour quitter le shell et libérer les ressources, il faut utiliser la commande exit
ou la combinaison de touche Ctrl+D
Voici un petit exemple :
$ salloc --cpus-per-task=10 --mem=1G
salloc: Granted job allocation 15299355
$ module load bowti2/2.4.1
$ srun bowtie2 --threads=10 --met-stderr -x /shared/bank/arabidopsis_thaliana/TAIR10.1/bowtie2/Arabidopsis_thaliana.TAIR10.1_genomic -U /shared/projects/dubii2021/trainers/module1/cluster/KO1_1.fastq.gz -S KO1_1.sam
$ exit
L'avantage de cette solution est que tu peux lancer JupyterLab avec des ressources modestes et raisonnables, puis mobiliser ponctuellement des ressources supplémentaires lorsque tu as une tâche lourde à lancer.
A noter que tout ça est également possible depuis un notebook Bash 
A+
Julien
Merci @julien pour ta réponse. J'avais effectivement complètement oublié l'usage de salloc