Jean Zay : Accès à Jupyter Notebook et JupyterLab avec TensorBoard

Une procédure permettant l'utilisation sécurisée de Jupyter Notebook et JupyterLab a été développée par l'IDRIS. Cette procédure permet à chaque utilisateur de travailler via l'interface web Jupyter en toute confidentialité. C'est la seule procédure fiable disponible pour utiliser ces outils.

Les processus Jupyter peuvent être lancés depuis la frontale ou depuis les nœuds de calcul, selon les fonctionnalités qui vous intéressent :

  • un Notebook ouvert depuis la frontale offre une interface web Jupyter pour manipuler vos données et gérer la soumission de vos jobs via des scripts Slurm. On y lance principalement des commandes bash. L'environnement peut être personnalisé avec vos propres scripts Python.
  • un Notebook lancé depuis un nœud de calcul permet d'exécuter en interactif votre script Python depuis l'interface web Jupyter. Cette configuration est possible si vous ne réservez qu'une tâche MPI (option Slurm --ntasks=1). Vous pouvez donc travailler en multi-GPU mais pas en multi-nœuds. Cette approche interactive est utile en phase de développement de script d'apprentissage ou si vous travaillez en mono-nœud.

Remarque : si vous travaillez en interactif, vous vous exposez à de potentiels problèmes de connexion. Un script lancé en interactif sera interrompu si vous êtes déconnecté·e. Nous conseillons donc d'utiliser cette configuration seulement pour l'exécution de scripts relativement courts. Pour lancer des travaux longs, nous recommandons de passer par un script de soumission Slurm.

Initialisation de l'environnement de travail

Pour avoir accès aux fonctionnalités Jupyter, vous devez d'abord charger un environnement virtuel de travail via la commande module.

Jupyter Notebook et JupyterLab sont installés dans les modules :

  • Python (par exemple en chargeant module load python/3.7.3)
  • PyTorch (par exemple en chargeant module load pytorch-gpu/py3/1.7.0)
  • TensorFlow (par exemple en chargeant module load tensorflow-gpu/py3/2.3.0)

L'outil Tensorboard est accessible via Jupyter Notebook et JupyterLab dans les modules TensorFlow et PyTorch.

Particularités de Jupyter Notebook

1. Pour utiliser TensorBoard dans Jupyter Notebook, vous devez activer le plugin correspondant lors de la première utilisation. Après avoir chargé l'environnement souhaité, l'activation du plugin TensorBoard se fait en lançant la commande :

$ jupyter tensorboard enable --user 

Vous pouvez alors vérifier que le plugin a bien été activé avec la commande :

$ jupyter nbextension list

2. Vous pouvez activer certaines extensions pour Jupyter Notebook en lançant les commandes correspondantes listées ci-dessous :

  • toc2 pour l'affichage de tables des matières : jupyter nbextension enable toc2/main --user

Lancement depuis une frontale

Lancement de l'interface web Jupyter

Après avoir chargé l'environnement souhaité, vous pouvez lancer Jupyter Notebook depuis une frontale avec la commande idrjup ou JupyterLab avec la commande idrlab. La section “Lancement de Jupyter Notebook ou JupyterLab” ci-dessous détaille la procédure de connexion.

Soumission des travaux

Pour soumettre des travaux sur les nœuds de calcul dans cette configuration, vous pouvez lancer une commande Slurm d'exécution interactive dans votre Notebook. Par exemple, la cellule suivante exécutera le script script.py sur deux nœuds complets de la partition gpu_p2, soit 16 GPU :

!srun --nodes=2 --ntasks=16 --gres=gpu:8 --partition=gpu_p2 --cpus-per-task=3 --hint=nomultithread script.py

Remarques :

  • si vous travaillez sur plusieurs projets (logins multi-projets), vous devez ajouter l'option --account=... à la commande srun pour préciser le projet sur lequel vous souhaitez travailler et le type d'heures correct désiré (cpu ou gpu).
  • d'autres modes de soumission interactives sont possibles. Pour les connaître, vous pouvez vous référer à la page Jean Zay : exécution interactive d'un code GPU.

Pour des travaux longs, vous pouvez également soumettre un job Slurm en rédigeant un script batch de soumission (script.slurm par exemple) et en le soumettant depuis votre Notebook avec la cellule suivante :

!sbatch script.slurm

Lancement depuis un nœud de calcul

Ouverture d'un terminal bash

Dans ce cas de figure, il faut ouvrir un terminal bash sur un nœud de calcul avec la commande srun <options> --pty bash. Par exemple, pour utiliser 1 GPU pendant 1 heure maximum :

 $ srun --ntasks=1 --cpus-per-task=10 --gres=gpu:1 --hint=nomultithread --time=01:00:00 --pty bash 

Lancement de l'interface web Jupyter

Après avoir chargé l'environnement souhaité, vous pouvez lancer Jupyter Notebook depuis le nœud de calcul avec la commande idrjup ou JupyterLab avec la commande idrlab. La section “Lancement de Jupyter Notebook ou JupyterLab” ci-dessous détaille la procédure de connexion.

Une fois la connexion établie, vous pouvez exécuter vos cellules de script Python via l'interface web Jupyter.

Remarque

Cette configuration est possible si vous ne réservez qu'une tâche MPI (option Slurm --ntasks=1). Vous pouvez donc travailler en multi-GPU mais pas en multi-nœuds.

Lancement de Jupyter Notebook ou JupyterLab

Après avoir chargé l'environnement souhaité, vous devez lancer la commande idrjup pour Jupyter Notebook ou idrlab pour JupyterLab. La commande retourne les informations suivantes :

$ idrjup
INFO 2019-11-22 12:10:08,916 Starting Jupyter server. Please wait...:
INFO 2019-11-22 12:10:08,933 --Launching Jupyter server. Please wait before attempting to onnect...
INFO 2019-11-22 12:10:14,070 --Jupyter server launched. Please connect.
URL de connexion :     https://idrvprox.idris.fr
Mot de passe URL :     <mot de passe utilisateur>
Mot de passe jupyter : abc1defg2hijk3lmno4pqrs5tuvw6xyz

Puis :

  • dans votre navigateur lancé depuis une machine dont vous avez déclaré l'adresse IP, entrez l'URL de connexion affichée : https://idrvprox.idris.fr
  • entrez votre identifiant et mot de passe Jean Zay dans la page “Identification” qui s'affiche et cliquez sur Login

  • dans la liste des sessions actives qui apparaît, sélectionnez celle que vous souhaitez atteindre en cliquant sur Submit Query

2-3-espace_censored.jpg

  • dans la page qui s'affiche, entrez le mot de passe Jupyter aléatoire renvoyé par la commande idrjup ou idrlab (abc1defg2hijk3lmno4pqrs5tuvw6xyz dans cet exemple), puis cliquer sur Log in

Remarques

  • Par défaut, idrjup et idrlab démarrent la session dans votre HOME. Si vous souhaitez utiliser des scripts stockés ailleurs, vous pouvez utiliser l'option --notebook-dir. Par exemple, pour lancer un processus Jupyter depuis votre WORK :
    $ idrjup --notebook-dir=$WORK
    $ idrlab --notebook-dir=$WORK

  • Les commandes idrjup et idrlab génèrent des sorties standards stdout.txt et stderr.txt.
  • Les commandes idrjup et idrlab créent 3 fichiers dont les noms sont du type nom_noeud.key, nom_noeud.pem et nom_noeud.pid.
    Tous ces fichiers sont créés dans le répertoire $HOME/.jupyter. En cas d'utilisation fréquente, il est recommandé d'effacer les plus anciens pour ne pas encombrer son quota disque sur le HOME.

Lancement de TensorBoard

Dans Jupyter Notebook, TensorBoard est accessible à partir de l'onglet New dans le tableau de bord en précisant le répertoire des logs, ou en cliquant sur le bouton Tensorboard qui apparaît lorsque vous cochez un dossier comportant les logs Tensorboard.

Dans JupyterLab, il faut cliquer sur > New Launcher > Others > Tensorboard :