JupyterHub

From Alliance Doc
Jump to navigation Jump to search
This site replaces the former Compute Canada documentation site, and is now being managed by the Digital Research Alliance of Canada.

Ce site remplace l'ancien site de documentation de Calcul Canada et est maintenant géré par l'Alliance de recherche numérique du Canada.

This page is a translated version of the page JupyterHub and the translation is 100% complete.
Other languages:

JupyterHub est le meilleur système pour permettre à plusieurs personnes d'utiliser simultanément Jupyter Notebook, qu'il s'agisse d'un groupe dans un contexte d'enseignement ou de recherche, ou dans une entreprise de science des données. [1]

JupyterHub offre une version préconfigurée de JupyterLab et/ou Jupyter Notebook; pour plus d'information sur les options de configuration, consultez la page Jupyter.

Initiatives de l'Alliance

Notre réseau comprend quelques hubs qui permettent l'accès aux ressources de calcul de pointe.

JupyterHub sur une grappe

Utilisez votre nom d'utilisateur et votre mot de passe de de votre compte avec l'Alliance pour vous connecter aux grappes suivantes :.

JupyterHub Commentaires
Béluga Donne accès aux serveurs JupyterLab générés par des tâches interactives qui sont lancées à même l’interface web.
Cedar Donne accès aux serveurs JupyterLab générés par des tâches interactives qui sont lancées à même l’interface web. L'authentification se fait via idpmfa.mit.c3.ca.
Narval Donne accès aux serveurs JupyterLab générés par des tâches interactives qui sont lancées à même l’interface web.
Niagara Possède un nœud JupyterHub qui peut exécuter des sessions Jupyter Notebook. Pour plus d'information, voyez la page wiki de SciNet sur JupyterHub
Graham Donne accès aux serveurs JupyterLab générés par des tâches interactives qui sont lancées à même l’interface web.

Les nœuds de calcul sur lesquels les noyaux (kernels) Jupyter sont activés n'ont pas accès à l'internet. En conséquence, vous pouvez seulement copier des fichiers vers et à partir de votre propre ordinateur. Vous ne pouvez pas télécharger du code ou des données de l'internet par exemple avec git clone ou pip install si le wheel ne se trouve pas dans notre wheelhouse. Aussi, des problèmes pourraient survenir si votre code effectue des téléchargements ou des téléversements, dans le cas par exemple de l'apprentissage machine où les données sont souvent téléchargées à partir du code.

JupyterHub pour les universités et les écoles

  • En collaboration avec l'Alliance et Cybera, le Pacific Institute for the Mathematical Sciences offre des hubs infonuagiques aux établissements d'enseignement. Chacun peut avoir son propre hub auquel les utilisateurs accèdent via leur compte d'établissement. Les hubs sont hébergés par notre service infonuagique et servent essentiellement à des fins de formation. Les établissements souhaitant obtenir un hub peuvent consulter Syzygy.

Options pour le serveur

Options pour le serveur sur Béluga

Une fois la connexion établie et selon la configuration de JupyterHub, le navigateur web est redirigé vers a) un serveur Jupyter précédemment lancé, b) un nouveau serveur Jupyter possédant des options par défaut, ou c) un formulaire permettant de configurer les options du serveur Jupyter avant d'appuyer sur le bouton Start. Dans tous les cas, c'est l'équivalent d'accéer aux ressources demandées via une tâche interactive sur la grappe correspondante.

Important : Sur chaque grappe, une seule tâche interactive à la fois obtient une plus haute priorité pour commencer à l'intérieur de quelques secondes ou quelques minutes. Ceci inclut les tâches exécutées via salloc, srun et les tâches JupyterHub. Si vous avez une autre tâche interactive en exécution sur la grappe où se trouve JupyterHub, votre nouvelle session Jupyter pourrait ne pas commencer avant la limite de 5 minutes.

Ressources de calcul

Par exemple, les options pour JupyterHub sur Béluga sont :

  • Account : vous pouvez utiliser un compte de calcul de type def-*, rrg-*, rpp-* ou ctb-* auquel vous avez accès;
  • Time (hours) : nombre d'heures requises pour la session;
  • Number of cores : nombre de CPU réservés sur un seul nœud;
  • Memory (MB) : limite de mémoire vive totale pour toute la session;
  • GPU configuration (optionnel) : au moins un GPU;
  • Interface utilisateur (voir ci-dessous).

Interface utilisateur

JupyterHub permet d'avoir accès à un serveur à la fois, mais plusieurs interfaces peuvent être offertes sous User Interface :

  • Jupyter Notebook (interface classique) : cette interface offre beaucoup de fonctionnalités, mais la plupart des utilisateurs choisissent désormais JupyterLab qui est une meilleure plateforme et qui possède beaucoup plus de caractéristiques;
  • JupyterLab (interface moderne) : cette interface Jupyter est la plus recommandée pour le prototypage interactif et la visualisation des données;
  • Terminal (pour un terminal unique) : cette interface donne accès à un terminal connecté à un compte à distance, ce qui se compare à se connecter à un serveur via SSH.

Remarque : JupiterHub peut aussi être configuré pour afficher une interface spécifique, par exemple dans le cas d'un événement spécial.

JupyterLab

JupyterLab est présentement l'interface utilisateur générale recommandée pour une session via JupyterHub. Vos fichiers et répertoires distants peuvent être gérés directement à partir de JupyterLab et vous pouvez lancer des applications Jupyter comme un terminal, des notebooks (Python 3), RStudio et un bureau Linux.

Interface JupyterLab

Quand JupyterLab est prête à être utilisée, l'interface comprend plusieurs panneaux.

Onglet par défaut quand JupyterLab est chargé

Barre de menus (dans le haut)

  • Menu File
    • Hub Control Panel : pour arrêter manuellement le serveur JupyterLab et la tâche correspondante sur la grappe. Ceci est utile quand vous voulez démarrer un nouveau serveur JupyterLab avec plus ou moins de ressources;
    • Log Out : la session JupyterHub se termine, ce qui arrête aussi le serveur JupyterLab et la tâche correspondante sur la grappe.
  • La plupart des autres options du menu sont pour les notebooks et les applications Jupyter.

Outil de sélection (sur la gauche)

  • File Browser (icône dossier) :
    • Pour consulter le contenu de vos espaces /home, /project et /scratch;
    • Il est possible d'y téléverser des fichiers;
  • Running Terminals and Kernels (icône arrêt) :
    • Pour arrêter les sessions de noyaux et de terminal;
  • Commands
  • Property Inspector
  • Open Tabs:
    • Pour se déplacer parmi les onglets des applications;
    • Pour fermer les onglets des applications; les noyaux correspondants demeurent actifs;
Modules chargés et modules disponibles
  • Software (icône diamant bleu) :
    • Nos modules peuvent être chargés et déchargés dans la session JupyterLab. Selon les modules chargés, différentes icônes d'application Jupyter seront affichées sous l'onglet Launcher.
    • Le champ de recherche peut être utilisé pour trouver un module disponible et afficher le résultat dans le sous-panneau Available Modules. Prenez note que certains modules restent cachés jusqu'à ce que leurs dépendances soient chargées; nous vous recommandons de chercher un module particulier avec la commande module spider nom module à partir d'un terminal.
    • Le sous-panneau Loaded Modules affiche la liste des modules chargés dans toute la session JupyterLab. Prenez note que si les modules python et ipython-kernel sont chargés par défaut, d'autres modules doivent être chargés avant que certaines applications ou notebooks soient lancés, par exemple scipy-stack.
    • Le dernier sous-panneau Available Modules affiche la liste des modules disponibles, ce qui est semblable au résultat de la commande module avail. Cliquez sur le nom d'un module pour faire afficher les détails du module. Cliquez sur le lien Load pour charger le module et l'ajouter à la liste des modules chargés.

Zone des applications (sur la droite)

Barre d'état (dans le bas)

  • Cliquez sur les icônes pour aller à l'outil Running Terminals and Kernels.

Applications préconstruites

JupyterLab offre l'accès à un terminal, un IDE (bureau), une console Python et plusieurs options pour créer des fichiers texte brut et formatés (markdown). Nous ne présentons ici que les principales applications qui sont compatibles avec notre pile logicielle.

Interpréteurs de ligne de commande

Bouton pour lancer la console Julia
Bouton pour lancer la console Python
Bouton pour lancer le terminal

Console Julia

Pour permettre le lancement de la console Julia 1.x, il faut d'abord charger un module ijulia-kernel. Quand la console est lancée, l'interpréteur Julia est présenté dans un nouvel onglet JupyterLab.

Console Python

L'accès à Python 3.x est disponible par défaut dans une nouvelle session JupyterLab. Quand la console est lancée, un interpréteur Python 3 est affiché dans un nouvel onglet JupyterLab.

Terminal

Ceci ouvre un terminal sous un nouvel onglet JupyterLab :

  • Le terminal ouvre un interpréteur (Bash) sur le nœud de calcul distant, sans avoir besoin d'une connexion SSH.
    • Donne accès aux systèmes de fichiers distants (/home, /project, /scratch)
    • Permet d'exécuter des tâches de calcul
  • Le terminal permet de copier-coller du texte :
    • Pour copier, sélectionnez le texte et appuyez sur Ctrl+C
      • Note : habituellement, Ctrl+C est utilisé pour envoyer un signal SIGINT à un processus en cours d'exécution ou pour annuler la commande courante. Pour effectuer ceci dans un terminal JupyterLab, cliquez sur le terminal pour désélectionner du texte avant d'appuyer sur Ctrl+C
    • Pour coller, appuyez sur Ctrl+V

Noyaux (kernels) de notebooks disponibles

Notebook Julia

Pour permettre le lancement de notebooks Julia 1.x, il faut charger un module ijulia-kernel. Une fois lancé, le notebook Julia est présenté dans un nouvel onglet JupyterLab.

Notebook Python

Recherche de modules scipy-stack

Avant d'ouvrir un notebook qui nécessite un des paquets scientifiques suivants, vous devez charger le module scipy-stack à partir de l'outil Softwares de JupyterLab :

  • ipython, ipython_genutils, ipykernel, ipyparallel
  • matplotlib
  • numpy
  • pandas
  • scipy
  • Autres paquets à souligner : Cycler, futures, jupyter_client, jupyter_core, mpmath, pathlib2, pexpect, pickleshare, ptyprocess, pyzmq, simplegeneric, sympy, tornado, traitlets
  • et plusieurs autres; cliquez sur le module scipy-stack pour faire afficher toutes les extensions.

Remarque : vous pouvez aussi installer les paquets dont vous avez besoin avec par exemple la commande !pip install --no-index numpy à l'intérieur d'une cellule.

  • Pour certains paquets (par exemple plotly), vous devrez peut-être redémarrer le noyau (kernel) du notebook avant d'importer le paquet.
  • L'installation de paquets dans l'environnement par défaut du noyau Python est temporaire, soit pour la durée de la session JupyterLab; vous devrez réinstaller ces paquets à la prochaine session JupyterLab. Pour créer un environnement Python persistant, vous devez configurer un noyau Python personnalisé.

Pour ouvrir un notebook Python existant :

  • Retournez à File Browser.
  • Localisez le fichier *.ipynb.
  • Double-cliquez sur le fichier *.ipynb.
    • Le notebook Python s'ouvre dans un nouvel onglet JupyterLab.
    • Un nouveau noyau IPython démarrera en arrière-plan pour le notebook.

Pour ouvrir un notebook Python dans le répertoire courant du File Browser :

  • Cliquez sur le bouton Python 3.x sous la section Notebook;
    • ceci ouvre un nouveau notebook Python 3 dans un nouvel onglet JupyterLab;
    • un nouveau noyau IPython démarrera en arrière-plan pour le notebook.

Autres applications

OpenRefine

Bouton pour lancer OpenRefine

Pour permettre le lancement de OpenRefine, un module openrefine doit être chargé. Dépendant de l'environnement logiciel, chargez la plus récente version de OpenRefine :

  • pour StdEnv/2020, chargez openrefine/3.4.1;
  • pour StdEnv/2018.3, chargez openrefine/3.3.

Une interface OpenRefine sera affichée ou réaffichée dans un nouvel onglet de votre navigateur :

  • il est possible de rouvrir une session OpenRefine active après que l'onglet a été fermé;
  • la session OpenRefine se termine en même temps que la session JupyterLab.

RStudio

Bouton pour lancer RStudio

Pour permettre le lancement de l'application RStudio dans StdEnv/2020, chargez le module rstudio-server.

Avec les environnements moins récents, chargez les modules suivants :

  • pour StdEnv/2018.3, chargez gcc/7.3.0 et rstudio-server/1.2.1335;
  • pour StdEnv/2016.4, chargez gcc/7.3.0 et rstudio-server/1.2.1335.

Une interface RStudio sera affichée ou réaffichée dans un nouvel onglet de votre navigateur Web :

  • il est possible de rouvrir une session RStudio active après que l'onglet web a été fermé;
  • la session RStudio se termine en même temps que la session JupyterLab.

VS Code

Bouton pour lancer VS Code

Avant de lancer VS Code (Visual Studio Code), un module code-server doit être chargé. Dépendant de l'environnement logiciel, chargez la plus récente version de VS Code :

  • avec StdEnv/2020, chargez code-server/3.12.0;
  • avec StdEnv/2018.3, chargez code-server/3.4.1.

Une interface VS Code sera affichée ou réaffichée dans un nouvel onglet de votre navigateur :

  • une nouvelle session VS Code peut prendre jusqu'à 3 minutes avant d'être fonctionnelle;
  • il est possible de rouvrir une session VS Code active après que l'onglet a été fermé;
  • la session VS Code se termine en même temps que la session JupyterLab.

Bureau

Bouton pour lancer Desktop

Une interface Linux sera affichée ou réaffichée dans un nouvel onglet web de votre navigateur :

  • ceci est équivalent à démarrer un serveur VNC sur un nœud de calcul, créer ensuite un tunnel SSH et utiliser un client VNC, mais tout ceci n'est pas nécessaire avec JupyterLab.
  • il est possible de rouvrir une session Desktop active après que l'onglet a été fermé;
  • la session Desktop se termine en même temps que la session JupyterLab.

Messages d'erreur

Les erreurs avec JupyterHub sont généralement causées par l'ordonnanceur de tâches sous-jacent qui ne répond pas ou qui est incapable de trouver les ressources appropriées pour votre session, par exemple

  • un message d'erreur pour dépassement d'un délai (timeout) au début d'une session JupyterLab :
    • comme c'est le cas pour toutes les tâches interactives sur une grappe, le fait de demander plus de temps d'exécution peut entraîner une attente plus longue dans la liste d'attente;
    • il est possible qu'aucun nœud interactif ne soit disponible à ce moment; essayez plus tard.

Références