JupyterHub / JupyterLab
Le service JupyterHub vous permet d'instancier automatiquement un serveur Jupyter (JupyterLab) sur un noeud de calcul du cluster HPC2 (via un job SLURM), et d'accéder aux ressources de calcul pour vos Notebooks Jupyter depuis un simple navigateur web.
Accès au service
Pour utiliser le service JupyterHub sur le cluster HPC2, vous devrez successivement:
- Vous authentifier auprès de la Fédération Education-Recherche en sélectionnant votre établissement d'appartenance
- Vous connecter au service Jupyterhub en utilisant votre compte sur le cluster HPC21
Répertoire ~/notebooks
L'interface de JupyterLab ne permet pas d'accéder à l'ensemble de votre répertoire personnel du cluster mais uniquement au contenu du sous-répertoire notebooks
situé à la racine de votre répertoire personnel.
Ressources
Après la connexion au service, vous pourrez choisir les ressources qui vous seront allouées par SLURM pour votre environnement Jupyter:
Job fast
: un job réservant 2 coeurs de calcul et 4Go de RAM pour 4 heures sera soumis sur la partitionfast
Job GPU
: un job réservant 1 GPU, 4 coeurs de calcul et 16 Go de RAM sera soumis sur la partitiongpu
, avec les drivers cuda seront préchargés.
Ces jobs sont soumis aux mêmes règles d'ordonnancement que tous les autres jobs sur ces partitions, et héritent de vos priorités2.
Pour arrêter un job et libérer les ressources allouées, vous pouvez :
- soit arrêter l'instance Jupyter depuis l'interface web (File > Hub Control Panel > Stop My Server)
- soit arrêter le job depuis un terminal sur une machine de login avec la commande
scancel
Kernels Jupyter
L'environnement Jupyter et les kernels prédéfinis par l'équipe du Mésocentre sont déployés avec conda (disponible sur le cluster via les modules d'environnements par la commande module load conda
).
Votre instance JupyterLab a accès par défaut au seul kernel de base Python 3.10 (base)
: un kernel Python 3.10 avec uniquement les modules nécessaires au bon fonctionnement de JupyterHub et JupyterLab. Ce kernel correspond à l'environnement par défaut de conda base
(qui apparait aussi sous le nom conda env:root
dans JupyterLab avec l'exetension nb_conda_kernels).
Vous pouvez déployer depuis une machine de login du cluster vos propres kernels Python (depuis un environnement python ou conda).
Visibilité des kernels et extension nb_conda_kernels
L'extension nb_conda_kernels a été ajoutée en 2023: elle permet de découvrir automatiquement les kernels disponibles dans vos environnements conda, sans avoir à les enregistrer dans ~/.local/share/jupyter/kernels/
).
S'ils sont enregistrés (avec les commandes python -m ipykernel install
ou R -e "IRkernel::installspec
), ils apparaitront 2 fois dans la liste des kernels disponibles.
Exemple 1: configurer un kernel Python avec conda
Depuis une machine de login du cluster hpc2
:
- Chargement du module d'environnement conda (cf. modules LMOD):
$ module load conda
- Création de son environnement python 3.8 avec conda
$ conda create -n my-py38 python=3.8 numpy matplotlib pandas scipy dask
- Installation du kernel avec
ipykernel
(optionnel)$ conda activate my-py38 (my-py38) $ conda install ipykernel jupyter_client (my-py38) $ python -m ipykernel install --user --name my-py38 --display-name "My Python 3.8"
- Vérifications:
$ conda activate my-py38 (my-py38) $ conda env list # conda environments: # gpu_cuda10 /home/anmahul/.conda/envs/gpu_cuda10 my-py38 * /home/anmahul/.conda/envs/my-py38 base /opt/core/conda-23.3.1 (my-py38) $ jupyter kernelspec list Available kernels: python3 /home/anmahul/.conda/envs/my-py38/share/jupyter/kernels/python3 my-py38 /home/anmahul/.local/share/jupyter/kernels/my-py38 (my-py38) $ conda deactivate
Exemple 2: configurer un kernel R avec conda et le solver libmamba
Depuis une machine de login du cluster hpc2
:
- Chargement du module d'environnement conda (cf. modules LMOD):
$ module load conda
- Création de son environnement R 3.6 avec conda
$ conda create --solver=libmamba --name my-ir36 r-base=3.6 r-essentials r-irkernel
- Installation du client jupyter
$ conda activate my-ir36 (my-ir36) $ conda install --solver=libmamba python=3.10 jupyter_client
- Installation du kernel avec
irkernel
(optionnel)(my-ir36) $ R -e "IRkernel::installspec(name='my-ir36', displayname='My R 3.6', user=TRUE)"
- Vérifications:
$ conda activate my-ir36 (my-ir36) $ conda env list # conda environments: # my-ir36 * /home/anmahul/.conda/envs/my-ir36 base /opt/core/conda-4.10.3 jupyterhub /opt/core/conda-4.10.3/envs/jupyterhub py37-machine-learning /opt/core/conda-4.10.3/envs/py37-machine-learning (my-ir36) $ jupyter kernelspec list Available kernels: my-ir36 /home/anmahul/.local/share/jupyter/kernels/my-ir36 ir /home/anmahul/.conda/envs/my-ir36/share/jupyter/kernels/ir python3 /home/anmahul/.conda/envs/my-ir36/share/jupyter/kernels/python3 (my-ir36) $ conda deactivate
Supprimer un kernel
Dans votre environnement conda, vous pouvez supprimer un kernel que vous avez préalablement configuré:
- soit avec le client jupyter:
(my-ir36) $ jupyter kernelspec remove my-ir36
- soit en supprimant directement le kernel du repértoire dans votre homedir:
~/.local/share/jupyter/kernels/
-
La connexion au service crée un cookie d'authentification valable 1 mois enregistré par votre navigateur (sauf configuration contraire): vos identifiants ne seront donc pas demandés pendant un mois si vous utilisez le même navigateur. ↩
-
Par délégation, JupyterHub soumet un job nommé 'spawner-jupyterhub' en votre nom sur le cluster. Les sorties de ce job se retrouvent à la racine de votre homedir sur le cluster dans le fichier
jupyterhub_slurmspawner_<JOBID>.log
. ↩