Notebooks jupyter

Vous pouvez connecter un notebook jupyter (julia, python, R…) ou jupyterlab entre votre machine personnelle et un nœud de calcul. À titre de test, un environnement basique de jupyter (jupyter, python3.10, matplotlib, pandas, numpy) a été mis en place pour tous .  

L'usage de notebook jupyter sur la plateforme est à envisager avec parcimonie (tests «raisonnables», en tout cas après avoir observé la charge de la plateforme de calcul). En tant que session interactive, il s'agit en effet d'une mobilisation non optimale de ressources qui attend vos actions de clavier: éditions, exécution de cellules etc. Toutefois, il est possible de lancer des notebooks «conséquents» en mode batch  (cf. la fin de ce tutoriel).

  

Sommaire[Masquer]
 

1. procédure courte 

Lancer un notebook se fait en deux étapes:

  1. lancer un jupyter notebook/jupyter-lab sur un nœuds de calcul,
  2. ouvrir un tunnel ssh entre votre PC local et entrer le lien du notebook sur votre navigateur.

Depuis calculco:

vous@calculco: oarsub -I -/core=8              # job interactif avec 8 cœeurs
vous@orval04:~$ ml conda # charge le module conda
(base)vous@orval04:~$ conda env list # liste (au besoin) de tous les env. disponibles
(base)vous@orval04:~$ conda activate jupyter # charge l'environnement jupyter
(jupyter)vous@orval04:~$ jupyter-lab --ip=0.0.0.0 --no-browser
# lancement proprement dit du jupyterlab:
.... # --ip=0.0.0.0 : sur l'adresse IP du orvalXX
.... # --no-browser : pas de navigateur sur orvalXX !
....
To access the notebook, open this file in a browser: file:///nfs/home/scosi/pmarion/.local/share/jupyter/runtime/nbserver-167578-open.html Or copy and paste one of these URLs: http://orval04:8888/lab?token=4d8d1a0186b36a2a0da11046bd0d4d6273b6db0cfbb98b62 or http://127.0.0.1:8888/lab?token=4d8d1a0186b36a2a0da11046bd0d4d6273b6db0cfbb98b62...

Sur votre PC personnel (Mac, Linux), activer le transfert du port du notebook comme suit: 

Pc-perso#  ssh -L 8888:orval04:8888 Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.
... (mot de passe de calculco) ...

# ou plus simplement et sans mot de passe si vous avez suivi les méthodes (clés & .ssh/config)
indiquées : https://www-calculco.univ-littoral.fr/utilisation/acceder


Pc-perso# ssh -L 8080:orval04:8888 calculco

 copier/ coller l'URL obtenue à l'étape un dans votre navigateur : c'est fini! (...bon calculs!)

http://127.0.0.1:8888/lab?token=4d8d1a0186b36a2a0da11046bd0d4d6273b6db0cfbb98b62

Note (Windows) : à partir de windows v>10, vous pouvez utiliser le client ssh interne , ou  WSL ou encore, quelque soit la version de windows: bitvise.

2. configuration de jupyterlab (facultatif)

Quelques simplifications/astuces sont possibles en utilisant le(s) fichier(s) de configuration de jupyter. Une fois connecté sur un nœud de calcul et l'environnement jupyter chargé:

(jupyter)vous@orvalXX:~$ jupyter-server --generate-config 

Cette commande crée votre fichier personnel ~/.jupyter/jupyter_server_config.py. 
Éditer ce fichier ou taper les 3 commandes suivantes:

(jupyter)vous@orvalXX:~$ echo "c.ServerApp.allow_origin = '*'" >> ~/.jupyter/jupyter_server_config.py
(jupyter)vous@orvalXX:~$ echo "c.ServerApp.ip = '0.0.0.0'" >> ~/.jupyter/jupyter_server_config.py
(jupyter)vous@orvalXX:~$ echo "c.ServerApp.open_browser = False" >> ~/.jupyter/jupyter_server_config.py

Facultatif: changer le port par défaut (8888)

(jupyter)vous@orvalXX:~$  echo "c.ServerApp.port = 1234" >> ~/.jupyter/jupyter_server_config.py

Avec cette configuration, le lancement du notebook se réduit à: 

# (jupyter)vous@orvalXX:~$ jupyter-lab 

Se connecter par mot de passe:

Pour s'affranchir du copier/coller du token, une fois jupyter-lab lancé sur votre PC personnel: se déconnecter du notebook via le menu 'File > Log out' et suivre les instructions de la nouvelle page qui s'affiche, à savoir: 

  • renseigner comme indiqué (une dernière fois!) le token et le mot de passe de votre choix.

À partir de là: 

  • le mot de passe crypté est placé dans le (nouveau) fichier  ~/.jupyter/jupyter_server_config.json, fichier qu'il suffit de supprimer en cas de perte de mot de passe.
  • ce fichier est détecté au lancement de jupty-lab et l'URL de connexion devient simplement: http://127.0.0.1:8888/lab

3. Usage de Jupyter-Lab sur la plateforme

3.1. installations, remarques:

  • Jupyter: de nombreux langages (kernels) sont installables dans une jupyterLab (julia, R, Ruby, bash, ...)
  • quota (attention): ces environnements sont conséquents en terme d'espace disque, pensez à partager vos environnements virtuels (équipes, laboratoires...) comme indiqué ici
  • pour information, l'environnement jupyter de ce tutoriel a été crée comme suit:
calculco~# oarsub -I -l/core=4 
orvalXX~$
ml conda
(base) orvalXX~$ conda create -n jupyter
(jupyter) orvalXX~$ conda activate jupyter
(jupyter) orvalXX~$ conda install -c anaconda jupyter
(jupyter)orvalXX~$ conda install -c anaconda matplotlib numpy pandas
 

 

3.2. mode batch

Lancer un notebook en mode batch : 

(jupyter) orvalXX~$ jupyter nbconvert --to notebook --execute ./nbtest.ipynb 

Le fichier résultat «notebook exécuté» se nomme tests.nbconvert.ipynb à récupérer sur votre PC personnel...ce qui sous-entend que vous installez également un environnement JupiterLab sur votre PC pour le «développement».

Au final un script OAR de lancement du job pourrait être :

#!/bin/bash
#OAR -n nbtest
#OAR -l /nodes=1/cpu=1/core=12,walltime=02:00:00
#OAR --stdout batch_%jobid%.out
#OAR --stderr batch_%jobid%.err

source /nfs/opt/env/env.sh >/dev/null 2>&1
module load conda
jupyter nbconvert --to notebook --execute ./nbtest.ipynb