Plateforme Jupyter Notebooks

Description du service

JupyterLab est un environnement web de développement interactif pour les “Notebooks”, ou bloc-notes, Jupyter, le code et les données. Un Notebook Jupyter est une application web qui vous permet de créer et de partager des documents contenant du code, du texte descriptif, de la visualisation et des équations. C’est donc un moyen pratique d’explorer les données, de documenter et de partager son travail. Vous pouvez trouver plus d’informations sur le site web du projet Jupyter. La plateforme Jupyter Notebooks est destinée à tout utilisateur disposant d’un compte calcul au CC-IN2P3.

Pour une compréhension générale de l’outil, veuillez vous référer à la documentation officielle de JupyterLab. Si vous rencontrez un problème, veuillez soumettre un ticket au support utilisateur.

Accès

Vous pouvez accéder à ce service en cliquant sur ce lien : notebook.cc.in2p3.fr. L’accès est accordé via la fédération eduGAIN ou en saisissant votre identifiant et votre mot de passe de votre compte calcul.

Warning

La connexion via EduGAIN à la plateforme Jupyter requiert non seulement d’être reconnue par la fédération, mais aussi de posséder un compte calcul valide (qui n’a pas expiré) et de pouvoir faire le lien entre les deux (l’adresse e-mail rattachée à votre identité EduGAIN doit être la même que l’adresse e-mail de votre compte au CC-IN2P3).

En cas de doute ou de problème, privilégiez la connexion en saisissant votre identifiant et votre mot de passe de votre compte calcul directement (vous pouvez aussi contacter le support utilisateur pour obtenir de l’aide).

Après authentification, votre serveur de bloc-notes JupyterLab sera lancé et persistera jusqu’à votre déconnexion (la fermeture de la page Web n’arrête pas le bloc-note).

Une fois connecté, le serveur de notebooks fournira l’accès aux zones de stockage suivantes :

Note

Les répertoires SPS doivent être ajoutés pour être disponibles via le serveur Notebook. Demandez au support utilisateur si vous ne trouvez pas ceux attendus.

L’interface du bloc-note est placée dans le répertoire HOME de l’utilisateur. Pour naviguer dans l’interface vers les autres répertoires listés ci-dessus, créez dans votre HOME les liens symboliques appropriés. Exemple :

% ln -s /pbs/throng/ccin2p3 $HOME/throng_ccin2p3

Les notebooks sont fournis avec l’interpréteur Python inclus dans une distribution récente d’Anaconda. Si l’environnement Python fourni par défaut ne répond pas à vos besoins, vous pouvez ajouter le vôtre.

La recette pour inclure un tel noyau personnalisé dans votre instance JupyterLab est donnée dans la section ci-dessous. Le CC-IN2P3 fournit également des scripts spécifiques pour vous aider à configurer des noyaux personnalisés à partir d’environnements Python ou ROOT disponibles.

Derniers conseils :
  • Les notebooks sont limités en RAM selon votre groupe. Par défaut, tout groupe bénéficie de 2 Go ;
  • Les notebooks inactifs sont détruits après 72 heures ;
  • Les STDOUT et STDERR de votre serveur de notebooks sont envoyés à /var/log/notebookserver/notebookserver.log ;
  • Pour arrêter votre serveur de notebook, utilisez File > Log Out.

Warning

Pour éviter de possible conflits de versions de Python, il est préférable que la version de Python qui sous-tend JupyterLab soit la même que celle de l’interprétateur (utilisé pour les calculs). La plateforme actuelle est basée sur Python 3.8.5. Si vous utilisez des noyaux personnalisés (voir ci-dessous), il peut être judicieux de reconstruire ce noyau en le mettant à jour avec une version de Python compatible avec l’environnement JupyterLab. Si vous avez des questions ou des problèmes, n’hésitez pas à contacter le support utilisateur pour obtenir de l’aide.

Ajouter un noyau personnalisé

Pour ajouter un noyau personnalisé, il faut fournir à Jupyter un fichier de configuration approprié :

  1. Tout d’abord, créez un nouveau répertoire dans $HOME/.local/share/jupyter/kernels/, disons python-3.7 (dans cet exemple nous voulons ajouter un noyau personnalisé Python 3.7)

    Si l’arborescence des répertoires n’existe pas encore, vous devez la créer.

    % mkdir -p $HOME/.local/share/jupyter/kernels/python-3.7
    
  2. Allez dans ce répertoire et créez un fichier kernel.json

    % cd $HOME/.local/share/jupyter/kernels/python-3.7
    % vi kernel.json
    

    Le fichier kernel.json ressemblera à ceci :

    {
      "display_name": "conda3",
      "language":     "python",
      "argv": [
          "<PATH TO THE SCRIPT>/jupyter-helper.sh",
          "-f",
          "{connection_file}"
      ]
    }
    

    display_name est le nom que vous souhaitez donner à votre noyau personnalisé et sera affiché dans votre instance JupyterLab. Vous pouvez également mettre à jour le paramètre language. Mais la partie la plus importante est le script jupyter-helper.sh.

  3. Le script jupyter-helper.sh fournira les détails pour configurer l’environnement du nouveau noyau. Ce script ressemblera à ceci :

    #!/bin/bash
    
    source /pbs/software/centos-7-x86_64/anaconda/3.7/etc/profile.d/conda.sh
    conda activate
    
    exec python -m ipykernel_launcher "$@"
    

    La première partie configure l’environnement requis (ici, nous mettons en place un environnement Anaconda), et la dernière ligne indique à Jupyter comment démarrer ce nouveau noyau.

Scripts disponibles pour ajouter un noyau personnalisé

Le CC-IN2P3 fournit le script jupyter-helper.sh pour configurer des noyaux personnalisés, par exemple pour les environnements ROOT ou Python les plus récents déjà fournis dans la zone logicielle du CC-IN2P3. La liste complète des scripts disponibles se trouve dans le fichier suivant :

/pbs/software/centos-7-x86_64/jupyter_kernels/jupyter_helper_scripts

Pour les langages Golang, Julia, R et C++/ROOT, des noyaux prêts à l’emploi sont disponibles à l’emplacement suivant :

/pbs/software/centos-7-x86_64/jupyter_kernels/

Afin de les rendre disponible dans votre bloc-note, il suffit de copier le répertoire du noyau désiré, ici Golang v1.13.6, dans l’emplacement dédié de son répertoire utilisateur $HOME/.local/share/jupyter/kernels/ :

% cp -r /pbs/software/centos-7-x86_64/jupyter_kernels/Golang-1.13.6 $HOME/.local/share/jupyter/kernels/.

Extensions JupyterLab disponibles

Plusieurs extensions à JupyterLab sont disponibles :

  • Voilà permet la prévisualisation d’un bloc-note en HTML, cette prévisualisation peut se faire soit dans JupyterLab, soit dans un nouvel onglet du navigateur (dans ce cas, il faut autoriser les fenêtes pop-up), l’interactivité fournie par les extensions ipywidgets et ipympl (voir ci-dessous) peut être conservée par la prévisualisation, pour plus de détails merci de consultez le dépôt officiel de Voilà ;
  • Jupytext offre la possibilité de synchroniser ses bloc-notes dans un ou plusieurs autres formats, tels que le Markdown, qui permettra ainsi le stockage de ses bloc-notes dans des dépôts Git, pour plus de détails merci de consulter le dépôt officiel de Jupytext ;
  • ipywidgets permet d’accroître l’interactivité avec le bloc-note grâce à des gadgets logiciels (widgets), pour plus de détails merci de consulter le dépôt officiel de ipywidgets ;
  • ipympl offre de l’interactivité avec les graphes créés avec matplotlib, pour plus de détails merci de consulter le dépôt officiel de ipympl ;
  • jupyterlab-latex permet la prévisualisation de documents LaTeX (fichiers *.tex) directement dans un bloc-note, pour plus de détails merci de consulter le dépôt officiel de jupyterlab-latex ;
  • LaTeX peut aussi être utilisé pour les légendes des graphes créés avec matplotlib et pour convertir et exporter un bloc-note en document PDF.

Si vous avez besoin d’aide pour utiliser la plateforme JupyterLab, ou pour configurer votre propre noyau personnalisé, veuillez contacter le support utilisateur.