JupyterHub
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 http://syzygy.ca.
Options pour le serveur
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, le fonctionnement interne est le même que lorsqu'on accède aux ressources requises via une tâche interactive.
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-*
ouctb-*
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 à un utilisateur 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 ê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.
- 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;
- Software (icône diamant bleu) :
- Les modules de Calcul Canada 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
etipython-kernel
sont chargés par défaut, d'autres modules doivent être chargés avant que certaines applications ou notebooks soient lancés, par exemplescipy-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)
- L'onglet Launcher s'ouvre par défaut.
- Il montre tous les notebooks et applications Jupyter disponibles, en fonction des modules qui sont chargés.
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 la pile logicielle de Calcul Canada.
Interpréteurs de ligne de commande
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
- Donne accès aux systèmes de fichiers distants (
- 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
- Pour copier, sélectionnez le texte et appuyez sur Ctrl+C
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
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
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
, chargezopenrefine/3.4.1
; - pour
StdEnv/2018.3
, chargezopenrefine/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
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
, chargezgcc/7.3.0
etrstudio-server/1.2.1335
; - pour
StdEnv/2016.4
, chargezgcc/7.3.0
etrstudio-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
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
, chargezcode-server/3.5.0
; - avec
StdEnv/2018.3
, chargezcode-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
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.