JupyterHub/fr: Difference between revisions
No edit summary |
No edit summary |
||
(70 intermediate revisions by 4 users not shown) | |||
Line 5: | Line 5: | ||
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]]. | ||
= | {{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 <i>hubs</i> 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. | ||
Line 11: | Line 15: | ||
== JupyterHub sur une grappe == | == 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 :[[#clusters_note|<sup>‡</sup>]]. | |||
Utilisez votre nom d'utilisateur et votre mot de passe de | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! JupyterHub !! Commentaires | ! JupyterHub !! Commentaires | ||
|- | |- | ||
| | | <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. | ||
|- | |- | ||
| | | <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>. | ||
|- | |- | ||
| | | <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. | ||
|- | |- | ||
| | | <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] | ||
|- | |- | ||
| | | <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. | ||
|} | |} | ||
< | <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 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]. | |||
* En collaboration avec | |||
= 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 | 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 | <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, | 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 : | ||
* | * <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; | ||
* | * <i>Time (hours)</i> : nombre d'heures requises pour la session; | ||
* | * <i>Number of cores</i> : nombre de CPU réservés sur un seul nœud; | ||
* | * <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; | ||
* | * <i>[[JupyterHub/fr#Interface_utilisateur | Interface utilisateur]]</i> (voir ci-dessous). | ||
== Interface utilisateur == | == Interface utilisateur == | ||
JupyterHub permet d'avoir accès à un serveur à la fois, mais plusieurs interfaces peuvent être offertes sous <i>User Interface</i> : | |||
JupyterHub permet | |||
* 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; | ||
* | * <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 92: | Line 86: | ||
=== Outil de sélection (sur la gauche) === | === Outil de sélection (sur la gauche) === | ||
< | * <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; | ||
* | * <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; | ||
* | * <i>Commands</i> | ||
* | * <i>Property Inspector</i> | ||
* | * <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]] | ||
* | * <i>Software</i> (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 [[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 | ** 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 | ** 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 | ** 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) === | ||
Line 118: | Line 110: | ||
=== Barre d'état (dans le bas)=== | === Barre d'état (dans le bas)=== | ||
* Cliquez sur les icônes pour aller à l'outil <i>Running Terminals and Kernels</i>. | |||
* Cliquez sur les icônes pour aller à l'outil | |||
</ | |||
== 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 (<i>markdown</i>). Nous ne présentons ici que les principales applications qui sont compatibles avec notre pile logicielle. | |||
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 ( | |||
=== Interpréteurs de ligne de commande === | === Interpréteurs de ligne de commande === | ||
Line 153: | Line 141: | ||
** Pour coller, appuyez sur Ctrl+V | ** Pour coller, appuyez sur Ctrl+V | ||
=== Noyaux ( | === Noyaux (<i>kernels</i>) de notebooks disponibles === | ||
==== Notebook Julia ==== | ==== Notebook Julia ==== | ||
Line 175: | Line 163: | ||
* 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>. | * 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 : | Pour ouvrir un notebook Python existant : | ||
* Retournez à | * 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 noyau 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 <i>File Browser</i> : | |||
Pour ouvrir un notebook Python dans le répertoire courant du | * Cliquez sur le bouton ''Python 3.x'' sous la section <i>Notebook</i>; | ||
* Cliquez sur le bouton ''Python 3.x'' sous la section | |||
** 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 noyau 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 197: | 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/ | * 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/ | * 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 : | Une interface OpenRefine sera affichée ou réaffichée dans un nouvel onglet de votre navigateur : | ||
Line 207: | 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 | Pour permettre le lancement de l'application RStudio, chargez le module <code>rstudio-server/4.3</code>. | ||
Une interface RStudio sera affichée ou réaffichée dans un nouvel onglet de votre navigateur Web : | 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 | * 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. | ||
==== VS Code ==== | ==== VS Code ==== | ||
Line 223: | 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 : | 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 : | ||
* avec <code>StdEnv/ | * avec <code>StdEnv/2023</code>, chargez <code>code-server/4.92.2</code>, | ||
* avec <code>StdEnv/ | * 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 : | 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; | * 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é; | * 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. | * la session VS Code se termine en même temps que la session JupyterLab. | ||
==== Bureau ==== | ==== Bureau ==== | ||
[[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 | 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 | * il est possible de rouvrir une session <i>Desktop</i> active après que l'onglet a été fermé; | ||
* la session | * 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 = | ||
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 | 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 | ||
* | |||
** | <b>Spawn failed: Timeout</b> | ||
** | [[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
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.
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
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-*
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 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.
- 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) :
- 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
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 notre pile logicielle.
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/2023
, aucun module OpenRefine n'est disponible en date d'août 2024; chargez d'abord code>StdEnv/2020; - pour
StdEnv/2020
, chargezopenrefine/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
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
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
, chargezcode-server/4.92.2
, - avec
StdEnv/2020
, chargezcode-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
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
[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
- 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.