Skip to content

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:

  1. Vous authentifier auprès de la Fédération Education-Recherche en sélectionnant votre établissement d'appartenance
  2. 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.

Accéder au service Jupyterhub

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 partition fast
  • Job GPU: un job réservant 1 GPU, 4 coeurs de calcul et 16 Go de RAM sera soumis sur la partition gpu, 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:

  1. Chargement du module d'environnement conda (cf. modules LMOD):
    $ module load conda
    
  2. Création de son environnement python 3.8 avec conda
    $ conda create -n my-py38 python=3.8 numpy matplotlib pandas scipy dask
    
  3. 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"
    
  4. 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
    

Kernel dans JupyterLab

Kernel `My Python 3.8` dans JupyterLab, disponible aussi avec la découverte automatique sous le nom `Python [conda env:.conda-my-py38]`

Exemple 2: configurer un kernel R avec conda et le solver libmamba

Depuis une machine de login du cluster hpc2:

  1. Chargement du module d'environnement conda (cf. modules LMOD):
    $ module load conda
    
  2. 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
    
  3. Installation du client jupyter
    $  conda activate my-ir36
    (my-ir36) $ conda install --solver=libmamba python=3.10 jupyter_client
    
  4. Installation du kernel avec irkernel (optionnel)
    (my-ir36) $ R -e "IRkernel::installspec(name='my-ir36', displayname='My R 3.6', user=TRUE)"
    
  5. 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
    

Kernel dans JupyterLab

Kernel `My R 3.6` dans JupyterLab

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/

  1. 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. 

  2. 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