JupyterHub/fr: Difference between revisions

From Alliance Doc
Jump to navigation Jump to search
No edit summary
No edit summary
 
(99 intermediate revisions by 5 users not shown)
Line 1: Line 1:
<languages />
<languages />
[http://jupyterhub.readthedocs.io/en/latest/index.html 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.
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.
<ref>http://jupyterhub.readthedocs.io/en/latest/index.html</ref>


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


= Initiatives de Calcul Canada =
{{Warning
|title=Exécution de notebooks
|content=Jupyter Lab et les notebooks conviennent à tes tâches interactives <b>brèves</b> pour tester, déboguer ou visualiser rapidement les données (quelques minutes). Pour des analyses plus longues, il faut utiliser [[Running_jobs/fr#Soumettre_des_tâches_avec_sbatch|une tâche non interactive  avec sbatch]].
Voir aussi [[Advanced_Jupyter_configuration/fr#Exécution_de_notebooks_en_scripts_Python|Exécution de notebooks en scripts Python]] ci-dessous.
}}


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


== JupyterHub sur une grappe ==
== JupyterHub sur une grappe ==


Utilisez votre nom d'utilisateur et votre mot de passe de Calcul Canada pour vous connecter aux grappes suivantes :[[#clusters_note|<sup>‡</sup>]].
Utilisez votre nom d'utilisateur et votre mot de passe de de votre compte avec l'Alliance pour vous connecter aux grappes suivantes&nbsp;:[[#clusters_note|<sup>‡</sup>]].
{| class="wikitable"
{| class="wikitable"
|-
|-
! JupyterHub !! Commentaires
! JupyterHub !! Commentaires
|-
|-
| '''[https://jupyterhub.beluga.computecanada.ca/ 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.
| <b>[https://jupyterhub.beluga.alliancecan.ca/ Béluga]</b> || Donne accès aux serveurs JupyterLab générés par des tâches interactives qui sont lancées à même l’interface web.
|-
|-
| '''[https://jupyterhub.cedar.computecanada.ca/ 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'''.
| <b>[https://jupyterhub.cedar.computecanada.ca/ Cedar]</b> || 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 <b>idpmfa.mit.c3.ca</b>.
|-
|-
| '''[https://jupyterhub.helios.calculquebec.ca/ Hélios]''' || Donne accès aux serveurs Jupyter Notebook générés par des tâches interactives qui sont lancées sur des nœuds GPU.
| <b>[https://jupyterhub.narval.alliancecan.ca/ Narval]</b> || Donne accès aux serveurs JupyterLab générés par des tâches interactives qui sont lancées à même l’interface web.
|-
|-
| '''[https://jupyterhub.narval.computecanada.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.
| <b>[https://jupyter.scinet.utoronto.ca/ Niagara]</b> || Possède un nœud JupyterHub qui peut exécuter des sessions Jupyter Notebook. Pour plus d'information, voyez [https://docs.scinet.utoronto.ca/index.php/Jupyter_Hub la page wiki de SciNet sur JupyterHub]
|-
|-
| '''[https://jupyter.scinet.utoronto.ca/ Niagara]''' || Possède un nœud JupyterHub qui peut exécuter des sessions Jupyter Notebook. Pour plus d'information, voyez [https://docs.scinet.utoronto.ca/index.php/Jupyter_Hub la page wiki de SciNet sur JupyterHub]
| <b>[https://jupyterhub.sharcnet.ca/ Graham]</b>|| Donne accès aux serveurs JupyterLab générés par des tâches interactives qui sont lancées à même l’interface web.
|}
|}


'''<sup id="clusters_note">‡</sup>  Les nœuds de calcul sur lesquels les kernels (noyaux) 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 <tt>git clone</tt> ou <tt>pip install</tt> si le ''wheel'' ne se trouve pas dans notre ''[[Available Python wheels/fr|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.
<b><sup id="clusters_note">‡</sup>  Les nœuds de calcul sur lesquels les noyaux (<i>kernels</i>) Jupyter sont activés n'ont pas accès à l'internet.</b> 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 <code>git clone</code> ou <code>pip install</code> si le <i>wheel</i> ne se trouve pas dans notre <i>[[Available Python wheels/fr|wheelhouse]]</i>. 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 ==
== JupyterHub pour les universités et les écoles ==


* En collaboration avec Calcul Canada et [http://www.cybera.ca Cybera], le [https://www.pims.math.ca 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 le [[Cloud/fr|service infonuagique]] de Calcul Canada et servent essentiellement à des fins de formation. Les établissements souhaitant obtenir un hub peuvent consulter [http://syzygy.ca http://syzygy.ca]. Voir aussi ''[https://www.computecanada.ca/featured/compute-canada-and-pims-launch-jupyter-service-for-researchers/ Compute Canada and PIMS launch Jupyter service for researchers]''.
* En collaboration avec l'Alliance et [http://www.cybera.ca Cybera], le [https://www.pims.math.ca 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 [[Cloud/fr|service infonuagique]] et servent essentiellement à des fins de formation. Les établissements souhaitant obtenir un hub peuvent consulter [http://syzygy.ca Syzygy].


= Options pour le serveur =
= Options pour le serveur =


[[File:JupyterHub_Server_Options.png|thumb|Options pour le serveur sur Béluga]]
[[File:JupyterHub_Server_Options.png|thumb|Options pour le serveur sur Béluga]]
Une fois la connexion établie et selon la configuration de JupyterHub, le navigateur Web est redirigé vers
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>a)</b> un serveur Jupyter précédemment lancé,
b) un nouveau serveur Jupyter possédant des options par défaut, ou
<b>b)</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''.
<b>c)</b> un formulaire permettant de configurer les options du serveur Jupyter avant d'appuyer sur le bouton <i>Start</i>.
Dans tous les cas, le fonctionnement interne est le même que lorsqu'on accède aux ressources requises via  [[Running_jobs/fr#Tâches_interactives|une tâche interactive]].
Dans tous les cas, c'est l'équivalent d'accéder aux ressources demandées via  [[Running_jobs/fr#Tâches_interactives|une tâche interactive]] sur la grappe correspondante.
 
<b>Important :</b> 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 <code>salloc</code>, <code>srun</code> 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==
== Ressources de calcul==


Par exemple, les options pour [https://jupyterhub.beluga.computecanada.ca/ JupyterHub sur Béluga] sont :
Par exemple, les options pour [https://jupyterhub.beluga.computecanada.ca/ JupyterHub sur Béluga] sont :
* ''Account'' : vous pouvez utiliser un compte de calcul de type <code>def-*</code>, <code>rrg-*</code>, <code>rpp-*</code> ou <code>ctb-*</code> auquel vous avez accès;
* <i>Account</i> : vous pouvez utiliser un compte de calcul de type <code>def-*</code>, <code>rrg-*</code>, <code>rpp-*</code> ou <code>ctb-*</code> auquel vous avez accès;
* ''Time (hours)'' : nombre d'heures requises pour la session;
* <i>Time (hours)</i> : nombre d'heures requises pour la session;
* ''Number of cores'' : nombre de CPU réservés sur un seul nœud;
* <i>Number of cores</i> : nombre de CPU réservés sur un seul nœud;
* ''Memory (MB)'' : limite de mémoire vive totale pour toute la session;  
* <i>Memory (MB)</i> : limite de mémoire vive totale pour toute la session;  
* ''GPU configuration'' (optionnel) : au moins un GPU;
* ''GPU configuration'' (optionnel) : au moins un GPU;
* ''[[JupyterHub/fr#Interface_utilisateur | Interface utilisateur]]'' (voir ci-dessous).
* <i>[[JupyterHub/fr#Interface_utilisateur | Interface utilisateur]]</i> (voir ci-dessous).


== Interface utilisateur ==
== Interface utilisateur ==


JupyterHub permet à un utilisateur d'avoir accès à un serveur à la fois, mais plusieurs interfaces peuvent être offertes sous ''User Interface'' :  
JupyterHub permet d'avoir accès à un serveur à la fois, mais plusieurs interfaces peuvent être offertes sous <i>User Interface</i> :  
* Jupyter Notebook (interface classique) : cette interface offre beaucoup de fonctionnalités, mais la plupart des utilisateurs choisissent désormais [[JupyterHub/fr#JupiterLab|JupyterLab]] qui est une meilleure plateforme et qui possède beaucoup plus de caractéristiques;
* Jupyter Notebook (interface classique) : cette interface offre beaucoup de fonctionnalités, mais la plupart des utilisateurs choisissent désormais [[JupyterHub/fr#JupiterLab|JupyterLab]] qui est une meilleure plateforme et qui possède beaucoup plus de caractéristiques;
* '''[[JupyterHub/fr#JupyterLab | JupyterLab]]''' (interface moderne) : cette interface Jupyter est la plus recommandée pour le prototypage interactif et la visualisation des données;
* <b>[[JupyterHub/fr#JupyterLab | JupyterLab]]</b> (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.
* 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.
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 =
Line 67: Line 74:
== Interface JupyterLab ==
== Interface JupyterLab ==


Quand JupyterLab est prêt à être utilisé, l'interface comprend plusieurs panneaux.  
Quand JupyterLab est prête à être utilisée, l'interface comprend plusieurs panneaux.  
[[File:JupyterLab_HomeTab.png|thumb|Onglet par défaut quand JupyterLab est chargé]]
[[File:JupyterLab_HomeTab.png|thumb|Onglet par défaut quand JupyterLab est chargé]]


=== Barre de menus (dans le haut) ===
=== Barre de menus (dans le haut) ===


* Menu ''File''
* Menu <i>File</i>
** ''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;
** <i>Hub Control Panel</i> : 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.
** <i>Log Out</i> : 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.
* La plupart des autres options du menu sont pour les notebooks et les applications Jupyter.


=== Outil de sélection (sur la gauche) ===
=== Outil de sélection (sur la gauche) ===


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


=== Zone des applications (sur la droite) ===
=== Zone des applications (sur la droite) ===


* L'onglet ''Launcher'' s'ouvre par défaut.
* L'onglet <i>Launcher</i> s'ouvre par défaut.
** Il montre tous les [[Jupyter/fr#Applications_préconstruites|notebooks et applications Jupyter]] disponibles, en fonction des modules qui sont chargés.
** Il montre tous les [[Jupyter/fr#Applications_préconstruites|notebooks et applications Jupyter]] disponibles, en fonction des modules qui sont chargés.


=== Barre d'état (dans le bas)===
=== Barre d'état (dans le bas)===


* Cliquez sur les icônes pour aller à l'outil ''Running Terminals and Kernels''.
* Cliquez sur les icônes pour aller à l'outil <i>Running Terminals and Kernels</i>.


== Applications préconstruites ==
== 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.
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 (<i>markdown</i>). Nous ne présentons ici que les principales applications qui sont compatibles avec notre pile logicielle.


=== Interpréteurs de ligne de commande  ===
=== Interpréteurs de ligne de commande  ===
Line 134: Line 141:
** Pour coller, appuyez sur Ctrl+V
** Pour coller, appuyez sur Ctrl+V


=== Noyaux de notebooks disponibles ===
=== Noyaux (<i>kernels</i>) de notebooks disponibles ===


==== Notebook Julia ====
==== Notebook Julia ====
Line 143: Line 150:


[[File:JupyterLab_Softwares_ScipyStack.png|thumb|Recherche de modules scipy-stack]]
[[File:JupyterLab_Softwares_ScipyStack.png|thumb|Recherche de modules scipy-stack]]
Avant d'ouvrir un notebook qui nécessite un des paquets scientifiques suivants, vous devez charger le module <code>scipy-stack</code> à partir de l'outil ''Softwares'' de JupyterLab&nbsp;:
Avant d'ouvrir un notebook qui nécessite un des paquets scientifiques suivants, vous devez charger le module <code>scipy-stack</code> à partir de l'outil <i>Softwares</i> de JupyterLab&nbsp;:
* <code>ipython</code>, <code>ipython_genutils</code>, <code>ipykernel</code>, <code>ipyparallel</code>
* <code>ipython</code>, <code>ipython_genutils</code>, <code>ipykernel</code>, <code>ipyparallel</code>
* <code>matplotlib</code>
* <code>matplotlib</code>
Line 153: Line 160:


Remarque : vous pouvez aussi installer les paquets dont vous avez besoin avec par exemple la commande <code>!pip install --no-index numpy</code> à l'intérieur d'une cellule.
Remarque : vous pouvez aussi installer les paquets dont vous avez besoin avec par exemple la commande <code>!pip install --no-index numpy</code> à l'intérieur d'une cellule.
* Pour certains paquets (par exemple <code>plotly</code>), vous devrez peut-être redémarrer le noyau du notebook avant d'importer le paquet.
* Pour certains paquets (par exemple <code>plotly</code>), vous devrez peut-être redémarrer le noyau (<i>kernel</i>) 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 '''[[Advanced_Jupyter_configuration/fr#Noyau_Python|noyau Python personnalisé]]'''.
* 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 <b>[[Advanced_Jupyter_configuration/fr#Noyau_Python|noyau Python personnalisé]]</b>.


Pour ouvrir un notebook Python existant&nbsp;:
Pour ouvrir un notebook Python existant&nbsp;:
* Retournez à ''File Browser''.
* Retournez à <i>File Browser</i>.
* Localisez le fichier <code>*.ipynb</code>.
* Localisez le fichier <code>*.ipynb</code>.
* Double-cliquez sur le fichier <code>*.ipynb</code>.
* Double-cliquez sur le fichier <code>*.ipynb</code>.
** Le notebook Python s'ouvre dans un nouvel onglet JupyterLab.
** Le notebook Python s'ouvre dans un nouvel onglet JupyterLab.
** Un nouveau kernel IPython démarrera en arrière-plan pour le notebook.
** 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''&nbsp;:
Pour ouvrir un notebook Python dans le répertoire courant du <i>File Browser</i>&nbsp;:
* Cliquez sur le bouton ''Python 3.x'' sous la section ''Notebook'';
* Cliquez sur le bouton ''Python 3.x'' sous la section <i>Notebook</i>;
** ceci ouvre un nouveau notebook Python 3 dans un nouvel onglet JupyterLab;
** ceci ouvre un nouveau notebook Python 3 dans un nouvel onglet JupyterLab;
** un nouveau kernel IPython démarrera en arrière-plan pour le notebook.
** un nouveau noyau IPython démarrera en arrière-plan pour le notebook.


=== Autres applications ===
=== Autres applications ===
Line 174: Line 181:
[[File:JupyterLab_Launcher_OpenRefine.png|thumb|Bouton pour lancer OpenRefine]]
[[File:JupyterLab_Launcher_OpenRefine.png|thumb|Bouton pour lancer OpenRefine]]
Pour permettre le lancement de OpenRefine, un module <code>openrefine</code> doit être chargé. Dépendant de l'environnement logiciel, chargez la plus récente version de OpenRefine :
Pour permettre le lancement de OpenRefine, un module <code>openrefine</code> doit être chargé. Dépendant de l'environnement logiciel, chargez la plus récente version de OpenRefine :
* pour <code>StdEnv/2020</code>, chargez <code>openrefine/3.4.1</code>;
* pour <code>StdEnv/2023</code>, aucun module OpenRefine n'est disponible en date d'août 2024; chargez d'abord code>StdEnv/2020</code>;
* pour <code>StdEnv/2018.3</code>, chargez <code>openrefine/3.3</code>.
* pour <code>StdEnv/2020</code>, chargez <code>openrefine/3.4.1</code>.


Une interface OpenRefine sera affichée ou réaffichée dans un nouvel onglet de votre navigateur&nbsp;:  
Une interface OpenRefine sera affichée ou réaffichée dans un nouvel onglet de votre navigateur&nbsp;:  
Line 184: Line 191:


[[File:JupyterLab_Launcher_RStudio.png|thumb|Bouton pour lancer RStudio]]
[[File:JupyterLab_Launcher_RStudio.png|thumb|Bouton pour lancer RStudio]]
Pour permettre le lancement de l'application RStudio, les trois modules suivants doivent être chargés&nbsp;:
Pour permettre le lancement de l'application RStudio, chargez le module <code>rstudio-server/4.3</code>.
# <code>gcc</code>
# <code>r</code>
# <code>rstudio-server</code>
 
Dépendant de l'environnement logiciel, chargez les modules suivants (<code>r</code> est chargé automatiquement) :
* pour <code>StdEnv/2020</code>, pas disponible;
* pour <code>StdEnv/2018.3</code>, chargez <code>gcc/7.3.0</code> et <code>rstudio-server/1.2.1335</code>;
* pour <code>StdEnv/2016.4</code>, chargez <code>gcc/7.3.0</code> et <code>rstudio-server/1.2.1335</code>.


Une interface RStudio sera affichée ou réaffichée dans un nouvel onglet de votre navigateur Web&nbsp;:  
Une interface RStudio sera affichée ou réaffichée dans un nouvel onglet de votre navigateur Web&nbsp;:  
* il est possible de rouvrir une session RStudio active après que l'onglet Web a été fermé;  
* 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.
* la session RStudio se termine en même temps que la session JupyterLab.


Line 202: Line 201:
[[File:JupyterLab_Launcher_VSCode.png|thumb|Bouton pour lancer VS Code]]
[[File:JupyterLab_Launcher_VSCode.png|thumb|Bouton pour lancer VS Code]]
Avant de lancer VS Code (Visual Studio Code), un module <code>code-server</code> doit être chargé. Dépendant de l'environnement logiciel, chargez la plus récente version de VS Code&nbsp;:
Avant de lancer VS Code (Visual Studio Code), un module <code>code-server</code> doit être chargé. Dépendant de l'environnement logiciel, chargez la plus récente version de VS Code&nbsp;:
* avec <code>StdEnv/2020</code>, chargez <code>code-server/3.5.0</code>;
* avec <code>StdEnv/2023</code>, chargez <code>code-server/4.92.2</code>,
* avec <code>StdEnv/2018.3</code>, chargez <code>code-server/3.4.1</code>.
* avec <code>StdEnv/2020</code>, chargez <code>code-server/3.12.0</code>.


Une interface VS Code sera affichée ou réaffichée dans un nouvel onglet de votre navigateur&nbsp;:
Une interface VS Code sera affichée ou réaffichée dans un nouvel onglet de votre navigateur&nbsp;:
Line 213: Line 212:


[[File:JupyterLab_Launcher_Desktop.png|thumb|Bouton pour lancer Desktop]]
[[File:JupyterLab_Launcher_Desktop.png|thumb|Bouton pour lancer Desktop]]
Une interface Linux sera affichée ou réaffichée dans un nouvel onglet Web de votre navigateur :
Une interface Linux sera affichée ou réaffichée dans un nouvel onglet web de votre navigateur :
* ceci est équivalent à démarrer un [[VNC/fr#Nœuds_de_calcul|serveur VNC sur un nœud de calcul]], créer ensuite un [[SSH_tunnelling/fr|tunnel SSH]] et utiliser un  [[VNC/fr#Configuration|client VNC]], mais tout ceci n'est pas nécessaire avec JupyterLab.
* ceci est équivalent à démarrer un [[VNC/fr#Nœuds_de_calcul|serveur VNC sur un nœud de calcul]], créer ensuite un [[SSH_tunnelling/fr|tunnel SSH]] et utiliser un  [[VNC/fr#Configuration|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é;
* il est possible de rouvrir une session <i>Desktop</i> active après que l'onglet a été fermé;
* la session ''Desktop'' se termine en même temps que la session JupyterLab.
* la session <i>Desktop</i> se termine en même temps que la session JupyterLab.
 
= Exécution de notebooks en scripts Python =
 
1. Dans la console ou dans une nouvelle cellule, installez <tt>nbconvert</tt>.
<syntaxhighlight lang="bash">!pip install --no-index nbconvert</syntaxhighlight>
 
2. Convertissez vos notebooks en scripts Python.
<syntaxhighlight lang="bash">!jupyter nbconvert --to python my-current-notebook.ipynb</syntaxhighlight>
 
3. Créez [[Running_jobs/fr#Soumettre_des_tâches_avec_sbatch|une tâche non interactive]] et soumettez-la.
 
Dans le script de soumission, exécutez le notebook converti avec
<syntaxhighlight lang="bash">python mynotebook.py</syntaxhighlight>
 
et soumettez votre tâche non interactive avec
{{Command
|sbatch my-submit.sh
}}


= Messages d'erreur =
= Messages d'erreur =


Plusieurs erreurs avec JupyterHub sont 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 à votre session, par exemple
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 queue;
<b>Spawn failed: Timeout</b>
** il est possible qu'aucun nœud interactif ne soit disponible à ce moment; essayez plus tard.
[[File:JupyterHub Spawn failed Timeout.png|thumb|upright=1.1|JupyterHub - Spawn failed: Timeout]]
* Au lancement d'une nouvelle session, JupyterHub soumet automatiquement à la grappe une nouvelle  [[Running_jobs/fr#Tâches_interactives|tâche interactive]]. Si la tâche ne démarre pas dans les cinq prochaines minutes, ce message est affiché et la session est annulée.
** 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 avant que la tâche puisse démarrer, ce qui peut aussi se produire quand vous demandez un GPU ou trop de cœurs CPU. Assurez-vous de demander uniquement les ressources dont vous avez besoin.
** Si vous avez une autre tâche interactive sur la même grappe, votre session Jupyter sera placée en file d'attente avec les autres tâches en lots. Si c'est possible, arrêtez ou annulez les autres tâches interactives avant d'utiliser JupyterHub.
** Il est possible qu'aucune ressource ne soit disponible à ce moment. Vérifiez si un problème est rapporté dans la page de l'[https://status.alliancecan.ca/ État des systèmes] et essayez de nouveau plus tard.


= Références =
= Références =

Latest revision as of 17:41, 8 November 2024

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.


Exécution de notebooks

Jupyter Lab et les notebooks conviennent à tes tâches interactives brèves pour tester, déboguer ou visualiser rapidement les données (quelques minutes). Pour des analyses plus longues, il faut utiliser une tâche non interactive avec sbatch. Voir aussi Exécution de notebooks en scripts Python ci-dessous.



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éder 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/2023, aucun module OpenRefine n'est disponible en date d'août 2024; chargez d'abord code>StdEnv/2020;
  • pour StdEnv/2020, chargez openrefine/3.4.1.

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, chargez le module rstudio-server/4.3.

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/2023, chargez code-server/4.92.2,
  • avec StdEnv/2020, chargez code-server/3.12.0.

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.

Exécution de notebooks en scripts Python

1. Dans la console ou dans une nouvelle cellule, installez nbconvert.

!pip install --no-index nbconvert

2. Convertissez vos notebooks en scripts Python.

!jupyter nbconvert --to python my-current-notebook.ipynb

3. Créez une tâche non interactive et soumettez-la.

Dans le script de soumission, exécutez le notebook converti avec

python mynotebook.py

et soumettez votre tâche non interactive avec

Question.png
[name@server ~]$ sbatch my-submit.sh

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

Spawn failed: Timeout

JupyterHub - Spawn failed: Timeout
  • Au lancement d'une nouvelle session, JupyterHub soumet automatiquement à la grappe une nouvelle tâche interactive. Si la tâche ne démarre pas dans les cinq prochaines minutes, ce message est affiché et la session est annulée.
    • 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 avant que la tâche puisse démarrer, ce qui peut aussi se produire quand vous demandez un GPU ou trop de cœurs CPU. Assurez-vous de demander uniquement les ressources dont vous avez besoin.
    • Si vous avez une autre tâche interactive sur la même grappe, votre session Jupyter sera placée en file d'attente avec les autres tâches en lots. Si c'est possible, arrêtez ou annulez les autres tâches interactives avant d'utiliser JupyterHub.
    • Il est possible qu'aucune ressource ne soit disponible à ce moment. Vérifiez si un problème est rapporté dans la page de l'État des systèmes et essayez de nouveau plus tard.

Références