JupyterNotebook/fr: Difference between revisions

From Alliance Doc
Jump to navigation Jump to search
No edit summary
No edit summary
 
(217 intermediate revisions by 5 users not shown)
Line 1: Line 1:
<languages />
<languages />
{{Warning|title=Advanced material|content=This page is for advanced users. Please see [[JupyterHub]] instead.}}


==Introduction==
==Introduction==


[http://jupyter.org/ Project Jupyter] est un projet ''open source'' sans but lucratif dont la mission est de soutenir le calcul scientifique et la science des données interactives. Initié en 2014 dans le cadre du IPython Project, la portée de Project Jupyter s'étend à plusieurs autres langages de programmation.
[http://jupyter.org/ Project Jupyter] est un projet ''open source'' sans but lucratif dont la mission est de servir le calcul scientifique et la science des données interactives. Initié en 2014 dans le cadre du IPython Project, la portée de Project Jupyter s'étend à plusieurs autres langages de programmation.
<ref>http://jupyter.org/about.html</ref>


L'application web Jupyter Notebook rend possibles la création et le partage de documents contenant aussi bien du code, des équations, des visualisations que du texte.
L'application web Jupyter Notebook rend possibles la création et le partage de documents contenant aussi bien du code, des équations et des visualisations que du texte.
<ref>http://www.jupyter.org/</ref>


Jupyter Notebook fonctionne sur un nœud de calcul ou sur un nœud de connexion (non recommandé). Pour ce qui est des nœuds de connexion, diverses limites sont imposées tant pour l'utilisateur que pour les processus et les applications sont parfois terminées quand elles utilisent trop de temps CPU ou de mémoire. Dans le cas des nœuds de calcul, la tâche est soumise avec la spécification du nombre de CPUs ou GPUs à utiliser, la quantité de mémoire et le temps d'exécution. Les directives qui suivent concernent la soumission d'une tâche Jupyter Notebook.
Jupyter Notebook fonctionne sur un nœud de calcul ou sur un nœud frontal (non recommandé). Dans le cas du nœud frontal, diverses limites sont imposées tant pour l'utilisateur que pour les processus, et les applications sont parfois terminées quand elles utilisent trop de temps CPU ou de mémoire. Dans le cas du nœud de calcul, la tâche est soumise avec la spécification du nombre de CPU ou de GPU à utiliser, la quantité de mémoire et le temps d'exécution. Les directives qui suivent concernent la soumission d'une tâche Jupyter Notebook.


Certains de nos partenaires régionaux mettent à la disposition des utilisateurs un portail JupyterHub offrant des configurations Jupyter Notebook préétablies. Pour plus d'information, consultez [[JupyterHub]].
'''Autre information :'''
* Jupyter Notebook n'étant pas la plus récente interface de Jupyter, nous vous suggérons d'installer plutôt '''[[Advanced_Jupyter_configuration/fr|JupyterLab]]'''.
* Pour utiliser un environnement Jupyter préconfiguré, voyez la page '''[[Jupyter/fr|Jupyter]]'''.


== Installation ==
== Installation ==


Ces directives permettent d'installer Jupyter Notebook avec la commande <code>pip</code> dans un [https://docs.computecanada.ca/wiki/Python/fr#Créeretutiliserunenvironnementvirtuel environnement virtuel Python] dans votre répertoire ''home''.  Les directives sont valides pour la version 3.5.2 de Python, mais vous pouvez installer l'application pour d'autres versions en chargeant le module Python approprié.
Ces directives permettent d'installer Jupyter Notebook avec la commande <code>pip</code> dans un [[Python/fr#Cr.C3.A9er_et_utiliser_un_environnement_virtuel|environnement virtuel Python]] dans votre répertoire personnel (''home'').  Les directives sont valides pour la version 3.6 de Python, mais vous pouvez installer l'application pour d'autres versions en chargeant le module Python approprié.


#Chargez le module Python.
<ol>
#:{{Command|module load python/3.5.2}}
<li>Chargez le module Python.
#Créez un nouvel environnement virtuel Python.
{{Command2|module load python/3.7}}
#:{{Command|virtualenv $HOME/jupyter_py3}}
<li>Créez un nouvel environnement virtuel Python.
#Activez votre nouvel environnement virtuel Python.
{{Command2|virtualenv $HOME/jupyter_py3}}
#:{{Command|source $HOME/jupyter_py3/bin/activate}}
<li>Activez votre nouvel environnement virtuel Python.
#Installez Jupyter Notebook dans votre nouvel environnement virtuel Python.
{{Command2|source $HOME/jupyter_py3/bin/activate}}
#:{{Command
<li>Installez Jupyter Notebook dans votre nouvel environnement virtuel Python.
|prompt=(jupyter_py3)[name@server $]
{{Commands2
|pip install jupyter}}
|prompt=(jupyter_py3)_[name@server ~]$
#Dans votre nouvel environnement virtuel, créez un script (''wrapper'') pour lancer Jupyter Notebook.  
|pip install --no-index --upgrade pip
#:{{Command
|pip install --no-index jupyter
|prompt=(jupyter_py3)[name@server $]
}}
|echo -e '#!/bin/bash\nunset XDG_RUNTIME_DIR\njupyter notebook --ip $(hostname -f) --no-browser' > $VIRTUAL_ENV/bin/notebook.sh
<li>Dans votre nouvel environnement virtuel, créez un script (<i>wrapper</i>) pour lancer Jupyter Notebook.  
{{Command2
|prompt=(jupyter_py3)_[name@server ~]$
|echo -e '#!/bin/bash\nexport JUPYTER_RUNTIME_DIR{{=}}$SLURM_TMPDIR/jupyter\njupyter notebook --ip $(hostname -f) --no-browser' > $VIRTUAL_ENV/bin/notebook.sh
}}
}}
#Enfin, rendez le script exécutable.
<li>Enfin, rendez le script exécutable.
#:{{Command
{{Command2
|prompt=(jupyter_py3)[name@server $]
|prompt=(jupyter_py3)_[name@server ~]$
|chmod u+x $VIRTUAL_ENV/bin/notebook.sh
|chmod u+x $VIRTUAL_ENV/bin/notebook.sh
}}
}}
</ol>


== Installer des modules d'extension ==
== Installer des modules d'extension ==
Line 44: Line 54:
[https://github.com/cmd-ntrf/jupyter-lmod Jupyter Lmod] est un module d'extension permettant d'interagir avec les modules d'environnement avant le lancement des noyaux (''kernels''). Il utilise l'interface Python de Lmod pour accomplir des tâches reliées aux modules comme le chargement, le déchargement, la sauvegarde des collections, etc.
[https://github.com/cmd-ntrf/jupyter-lmod Jupyter Lmod] est un module d'extension permettant d'interagir avec les modules d'environnement avant le lancement des noyaux (''kernels''). Il utilise l'interface Python de Lmod pour accomplir des tâches reliées aux modules comme le chargement, le déchargement, la sauvegarde des collections, etc.


{{Commands
{{Commands2
|prompt=(jupyter_py3)[name@server $]
|prompt=(jupyter_py3)_[name@server ~]$
|pip install jupyterlmod
|pip install jupyterlmod
|jupyter nbextension install --py jupyterlmod --sys-prefix
|jupyter nbextension install --py jupyterlmod --sys-prefix
|jupyter nbextension enable --py jupyterlmod --sys-prefix
|jupyter nbextension enable --py jupyterlmod --sys-prefix
|jupyter serverextension enable --py jupyterlmod --sys-prefix
|jupyter serverextension enable --py jupyterlmod --sys-prefix
}}
=== Services web mandataires (''proxy'') ===
[https://github.com/jupyterhub/nbserverproxy nbserverproxy] permet d'accéder à des services web mandataires démarrés dans un serveur Jupyter. Ceci est utile dans le cas de services web qui n'écoutent que sur un port du serveur local, par exemple [https://www.tensorflow.org/programmers_guide/summaries_and_tensorboard TensorBoard].
{{Commands2
|prompt=(jupyter_py3)_[name@server ~]$
|pip install nbserverproxy
|jupyter serverextension enable --py nbserverproxy --sys-prefix
}}
==== Exemple ====
Avec Jupyter, un service web est démarré via ''Terminal'' dans la liste déroulante ''New''.
{{Command2
|tensorboard --port{{=}}8008
}}
}}
Le service est disponible via /proxy/ sur https://address.of.notebook.server/user/theuser/proxy/8008.


=== RStudio Launcher ===
=== RStudio Launcher ===


Jupyter Notebook peut démarrer une session RStudio session qui utilise le système d'authentification par jeton de Jupyter Notebook. RStudio Launcher crée l'option ''RStudio Session'' dans la liste déroulante ''New'' de Jupyter Notebook.
Jupyter Notebook peut démarrer une session RStudio qui utilise le système d'authentification par jeton de Jupyter Notebook. RStudio Launcher crée l'option ''RStudio Session'' dans la liste déroulante ''New'' de Jupyter Notebook.


{{Commands
'''Remarque :''' la procédure suivante fonctionne uniquement avec les environnements logiciels <code>StdEnv/2016.4</code> et <code>StdEnv/2018.3</code>.
|prompt=(jupyter_py3)[name@server $]
 
{{Commands2
|prompt=(jupyter_py3)_[name@server ~]$
|pip install nbserverproxy  
|pip install nbserverproxy  
|pip install git+https://github.com/cmd-ntrf/nbrsessionproxy
|pip install https://github.com/jupyterhub/nbrsessionproxy/archive/v0.8.0.zip
|jupyter serverextension enable --py nbserverproxy --sys-prefix
|jupyter serverextension enable --py nbserverproxy --sys-prefix
|jupyter nbextension install --py nbrsessionproxy --sys-prefix
|jupyter nbextension install --py nbrsessionproxy --sys-prefix
Line 70: Line 100:
Une fois que Jupyter Notebook est installé, vous n'aurez qu'à recharger le module Python associé à votre environnement lorsque vous vous connectez à la grappe.
Une fois que Jupyter Notebook est installé, vous n'aurez qu'à recharger le module Python associé à votre environnement lorsque vous vous connectez à la grappe.


{{Command|module load python/3.5.2}}
{{Command2|module load python/3.7}}


Activez ensuite l'environnement virtuel dans lequel Jupyter Notebook est installé.
Activez ensuite l'environnement virtuel dans lequel Jupyter Notebook est installé.


{{Command|source $HOME/jupyter_py3/bin/activate}}
{{Command2|source $HOME/jupyter_py3/bin/activate}}


=== RStudio Server (optionnel) ===  
=== RStudio Server (optionnel) ===  


Pour utiliser [[#RStudio_Launcher | RStudio Launcher]], lancez le module RStudio Server.
Pour utiliser [[#RStudio_Launcher | RStudio Launcher]], chargez le module RStudio Server.


{{Command|prompt=(jupyter_py3)[name@server $]
{{Command2|prompt=(jupyter_py3)_[name@server ~]$
|module load rstudio-server}}
|module load rstudio-server}}


== Lancer Jupyter Notebook ==
== Lancer Jupyter Notebook ==


Pour lancer l'application, soumettez une tâche interactive. Ajustez les paramètres selon vos besoins. Pour plus d'information, consultez [https://docs.computecanada.ca/wiki/Running_jobs/fr Exécuter des tâches].
Pour lancer l'application, soumettez une tâche interactive. Ajustez les paramètres selon vos besoins. Pour plus d'information, consultez [[Running_jobs/fr|Exécuter des tâches]].


{{Command|salloc --time{{=}}1:0:0 --ntasks{{=}}1 --cpus-per-task{{=}}2 --mem-per-cpu{{=}}1024M --account{{=}}def-yourpi srun notebook.sh
{{Command2|prompt=(jupyter_py3)_[name@server ~]$|salloc --time{{=}}1:0:0 --ntasks{{=}}1 --cpus-per-task{{=}}2 --mem-per-cpu{{=}}1024M --account{{=}}def-yourpi srun $VIRTUAL_ENV/bin/notebook.sh
|result=
|result=
salloc: Granted job allocation 1422754
salloc: Granted job allocation 1422754
salloc: Waiting for resource configuration
salloc: Nodes cdr544 are ready for job
[I 14:07:08.661 NotebookApp] Serving notebooks from local directory: /home/fafor10
[I 14:07:08.661 NotebookApp] Serving notebooks from local directory: /home/fafor10
[I 14:07:08.662 NotebookApp] 0 active kernels
[I 14:07:08.662 NotebookApp] 0 active kernels
Line 100: Line 131:
Copy/paste this URL into your browser when you connect for the first time,
Copy/paste this URL into your browser when you connect for the first time,
     to login with a token:
     to login with a token:
         http://cdr544.int.cedar.computecanada.ca:8888/?token=7ed7059fad64446f837567e32af8d20efa72e72476eb72ca}}
         http://cdr544.int.cedar.computecanada.ca:8888/?token=7ed7059fad64446f837567e3}}


== Se connecter à Jupyter Notebook ==
== Se connecter à Jupyter Notebook ==


Puisque les nœuds de calcul ne sont pas directement accessibles par l'Internet, vous devez créer un tunnel SSH entre la grappe et votre poste de travail pour que votre fureteur web puisse avoir accès à Juniper Notebook opérant sur un nœud de calcul.
Puisque les nœuds de calcul ne sont pas directement accessibles par l'Internet, vous devez créer un [[SSH tunnelling/fr|tunnel SSH]] entre la grappe et votre poste de travail pour que votre fureteur web puisse avoir accès à Jupyter Notebook opérant sur un nœud de calcul.


=== Sous Linux ou MacOS X ===
=== Sous Linux ou macOS X ===


Nous recommandons le paquet Python [https://sshuttle.readthedocs.io sshuttle].
Nous recommandons le paquet Python [https://sshuttle.readthedocs.io sshuttle].


Sur votre poste de travail, ouvrez une nouvelle fenêtre terminal et lancez la commande sshuttle pour créer le tunnel.
Sur votre poste de travail, ouvrez une nouvelle fenêtre terminal et lancez la commande <code>sshuttle</code> pour créer le tunnel.
 
{{Command2
|prompt=[name@my_computer ~]$
|sshuttle --dns -Nr <username>@<cluster>.computecanada.ca}}


{{Command
Dans la commande précédente, remplacez <code><username></code> par votre nom d'utilisateur et <code><cluster></code> par la grappe à laquelle vous vous êtes connecté pour lancer Jupyter Notebook.
|prompt=[name@my_computer $]
|sshuttle --dns -Nr userid@machine_name}}


Puis copiez-collez l'adresse URL dans votre fureteur. Dans l'exemple précédent, le résultat est
Puis copiez-collez l'adresse URL dans votre fureteur. Avec l'exemple précédent, le résultat serait
<pre>
http://cdr544.int.cedar.computecanada.ca:8888/?token=7ed7059fad64446f837567e3
</pre>


=== Sous Windows ===
=== Sous Windows ===


Pour créer un tunnel SSH, utilisez [https://docs.computecanada.ca/wiki/Connecting_with_MobaXTerm/fr MobaXTerm] comme suit&nbsp;:
Pour créer un [[SSH tunnelling/fr|tunnel SSH]], utilisez [[Connecting_with_MobaXTerm/fr|MobaXTerm]] comme suit, ce qui fonctionne aussi avec Unix (macOS, Linux, etc.).
 
Ouvrez deux sessions MobaXTerm.
 
*La session 1 étant la connexion à une grappe. (voir la section ''Lancer Jupyter Notebook'' ci-dessus).
 
*La session 2 étant un terminal local dans lequel créer le tunnel SSH. Lancez la commande suivante où ???
Cette commande ??? Le port 8888 est transmis à <code>cdr544.int.cedar.computecanada.ca:8888</code> qui est le nom de ???
 
{{Command
|prompt=[name@my_computer ]$
| ssh -L 8888:cdr544.int.cedar.computecanada.ca:8888 someuser@cedar.computecanada.ca}}
 
Cette commande ??? Le port 8888 est transmis à <code>cdr544.int.cedar.computecanada.ca:8888</code> qui est le nom de ???
 
Dans votre fureteur, entrez


<ol>
<li>Dans MobaXTerm, ouvrez un premier onglet ''Terminal'' (session 1) et connectez-vous à une grappe. Suivez ensuite les directives de la section [[#Lancer_Jupyter_Notebook| Lancer Jupyter Notebook]] ci-dessus. L'adresse URL suivante devrait s'afficher.
<pre>
http://cdr544.int.cedar.computecanada.ca:8888/?token= 7ed7059fad64446f837567e3
      └────────────────┬───────────────────┘        └──────────┬───────────┘
              nom du serveur:port                              jeton
</pre>
<li>Dans MobaXTerm, ouvrez un second onglet ''Terminal'' (session 2). Dans la commande suivante, remplacez <code><nom du serveur:port></code> par la valeur correspondante dans l'adresse URL obtenue à la session 1 (voir l'image précédente); remplacez <code><username></code> par votre nom d'utilisateur et; remplacez <code><cluster></code> par la grappe à laquelle vous vous êtes connecté à la session 1. Lancez la commande.
{{Command2
|prompt=[name@my_computer ~]$
|ssh -L 8888:<nom du serveur:port> <username>@<cluster>.computecanada.ca}}
<li> Par votre fureteur, allez à
<pre>
<pre>
  http://localhost:8888/?token=7ed7059fad64446f837567e32af8d20efa72e72476eb72ca
  http://localhost:8888/?token=<jeton>
</pre>
</pre>
 
Remplacez <code><jeton></code> par la valeur obtenue à la session 1.
Remplacez le jeton par celui que vous avez obtenu dans la session 1. Autrement, vous pouvez entrer <code>http://localhost:8888</code> et copier-coller le jeton à l'invite.
</ol>


== Fermer Jupyter Notebook ==
== Fermer Jupyter Notebook ==
Line 147: Line 180:
Pour fermer le serveur Jupyter Notebook avant la fin du temps d'exécution, appuyez deux fois sur CTRL-C dans le terminal où la tâche interactive a été lancée.
Pour fermer le serveur Jupyter Notebook avant la fin du temps d'exécution, appuyez deux fois sur CTRL-C dans le terminal où la tâche interactive a été lancée.


Si le tunnel a été créé avec MobaXTerm, qppuyez sur CTRL-D dans la session 2 pour fermer le tunnel.
Si le tunnel a été créé avec MobaXTerm, appuyez sur CTRL-D dans la session 2 pour fermer le tunnel.


== Adding kernels ==
==Ajouter des noyaux (''kernels'')==


It is possible to add kernels for other programmming languages or Python versions different than the one running the Jupyter Notebook. Refer to [http://jupyter-client.readthedocs.io/en/latest/kernels.html Making kernels for Jupyter] to learn more.
Il est possible d'ajouter des noyaux pour d'autres langages de programmation ou pour des versions de Python différentes de celle dans laquelle fonctionne Jupyter Notebook. Pour plus d'information, consultez [http://jupyter-client.readthedocs.io/en/latest/kernels.html Making kernels for Jupyter].


The installation of a new kernel is done in two steps.
L'installation se fait en deux étapes :
#Installation of the packages that will allow the language interpreter to communicate with Jupyter Notebook.  
#Installation des paquets permettant à l'interpréteur de communiquer avec Jupyter Notebook.  
#Creation of a file that will indicate to Jupyter Notebook how to initiate a communication channel with the language interpreter. This file is called a ''kernel spec file''.
#Création du fichier pour que Jupyter Notebook puisse créer un canal de communication avec l'interpréteur&nbsp;: il s'agit du fichier de configuration du noyau.


Each kernel spec file has to be created in its own subfolder inside a folder in your home directory with the following path <code> ~/.local/share/jupyter/kernels</code>. Jupyter Notebook does not create this folder, so the first step in all cases is to create it. You can use the following command.
:Chacun des fichiers de configuration du noyau doit être créé dans son propre sous-répertoire dans un répertoire de votre répertoire personnel (''home'') par le chemin <code> ~/.local/share/jupyter/kernels</code>. Jupyter Notebook ne crée pas ce fichier; dans tous les cas, la première étape est de le créer avec la commande {{Command2|mkdir -p  ~/.local/share/jupyter/kernels}}.
{{Command|mkdir -p  ~/.local/share/jupyter/kernels}}


In the following sections, we provide a few examples of the kernel installation procedure.
Les prochaines sections présentent des exemples de procédures d'installation d'un noyau.


=== Anaconda ===
=== Julia ===


'''Before installing an Anaconda kernel''', make sure you have read the documentation and installed [[Anaconda]].
<ol>
<li>Chargez le module [[Julia]]. {{Command2|module load julia}}
<li>Activez l'environnement virtuel Jupyter Notebook. {{Command2|source $HOME/jupyter_py3/bin/activate}}
<li>Installez IJulia. {{Command2|prompt=(jupyter_py3)_[name@server ~]$|echo 'Pkg.add("IJulia")' {{!}} julia}}
</ol>


# Load the Anaconda module. {{Command|module load miniconda3}}
Pour plus d'information, consultez la [https://github.com/JuliaLang/IJulia.jl documentation IJulia].
# '''Optional''': Activate a specific conda virtual environment. {{Command|source activate <your env>}}
# Install the <code>ipykernel</code> library. {{Command|conda install ipykernel}}
# Generate the kernel spec file. {{Command|python -m ipykernel install --user --name <unique identifier without white space> --display-name "My Anaconda 3 Kernel"}}
# '''Optional''': Deactivate the virtual environment. {{Command|source deactivate}}


For more information, see the [http://ipython.readthedocs.io/en/stable/install/kernel_install.html ipykernel documentation].
=== Python ===
 
=== Julia ===


# Load the Julia module. {{Command|module load julia}}
<ol>
# Activate the Jupyter Notebook virtual environment. {{Command|source $HOME/jupyter_py3/bin/activate}}
<li>Chargez le module Python. {{Command2|module load python/3.5}}
# Install IJulia. {{Command|echo 'Pkg.add("IJulia")' {{!}} julia}}
<li>Créez un nouvel environnement Python. {{Command2|virtualenv $HOME/jupyter_py3.5}}
<li>Activez le nouvel environnement Python. {{Command2|source $HOME/jupyter_py3.5/bin/activate}}
<li>Installez la bibliothèque <code>ipykernel</code>. {{Command2|prompt=(jupyter_py3.5)_[name@server ~]$|pip install ipykernel}}
<li>Générez le fichier de configuration du noyau.  Remplacez <code><unique_name></code> par un nom unique pour votre noyau. {{Command2|prompt=(jupyter_py3.5)_[name@server ~]$|python -m ipykernel install --user --name <unique_name> --display-name "Python 3.5 Kernel"}}
<li>Désactivez l'environnement virtuel. {{Command2|prompt=(jupyter_py3.5)_[name@server ~]$|deactivate}}
</ol>


For more information, see the [https://github.com/JuliaLang/IJulia.jl IJulia documentation].
Pour plus d'information, voyez la  [http://ipython.readthedocs.io/en/stable/install/kernel_install.html documentation ipykernel].


=== R ===
=== R ===


# Load the R module. {{Command|module load r}}
<ol>
# Activate the Jupyter Notebook virtual environment. {{Command|source $HOME/jupyter_py3/bin/activate}}
<li>Chargez le module R. {{Command2|module load r}}
# Install the R kernel dependencies. {{Command|R -e "install.packages(c('crayon', 'pbdZMQ', 'devtools'), repos{{=}}'http://cran.us.r-project.org')"}}
<li>Activez l'environnement virtuel Jupyter Notebook. {{Command2|source $HOME/jupyter_py3/bin/activate}}
# Install the R kernel. {{Command|R -e "devtools::install_github(paste0('IRkernel/', c('repr', 'IRdisplay', 'IRkernel')))"}}
<li>Installez les dépendances du noyau. {{Command2|prompt=(jupyter_py3)_[name@server ~]$|R -e "install.packages(c('crayon', 'pbdZMQ', 'devtools'), repos{{=}}'http://cran.us.r-project.org')"}}
# Install the R kernel spec file. {{Command|R -e "IRkernel::installspec()"}}
<li>Installez le noyau R. {{Command2|prompt=(jupyter_py3)_[name@server ~]$|R -e "devtools::install_github(paste0('IRkernel/', c('repr', 'IRdisplay', 'IRkernel')))"}}
<li>Installez le fichier de configuration du noyau  R. {{Command2|prompt=(jupyter_py3)_[name@server ~]$|R -e "IRkernel::installspec()"}}
</ol>


For more information, see the [https://irkernel.github.io/docs/ IRKernel documentation].
Pour plus d'information, consultez la [https://irkernel.github.io/docs/ documentation IRKernel].


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

Latest revision as of 19:48, 1 November 2023

Other languages:


Advanced material

This page is for advanced users. Please see JupyterHub instead.



Introduction

Project Jupyter est un projet open source sans but lucratif dont la mission est de servir le calcul scientifique et la science des données interactives. Initié en 2014 dans le cadre du IPython Project, la portée de Project Jupyter s'étend à plusieurs autres langages de programmation. [1]

L'application web Jupyter Notebook rend possibles la création et le partage de documents contenant aussi bien du code, des équations et des visualisations que du texte. [2]

Jupyter Notebook fonctionne sur un nœud de calcul ou sur un nœud frontal (non recommandé). Dans le cas du nœud frontal, diverses limites sont imposées tant pour l'utilisateur que pour les processus, et les applications sont parfois terminées quand elles utilisent trop de temps CPU ou de mémoire. Dans le cas du nœud de calcul, la tâche est soumise avec la spécification du nombre de CPU ou de GPU à utiliser, la quantité de mémoire et le temps d'exécution. Les directives qui suivent concernent la soumission d'une tâche Jupyter Notebook.

Autre information :

  • Jupyter Notebook n'étant pas la plus récente interface de Jupyter, nous vous suggérons d'installer plutôt JupyterLab.
  • Pour utiliser un environnement Jupyter préconfiguré, voyez la page Jupyter.

Installation

Ces directives permettent d'installer Jupyter Notebook avec la commande pip dans un environnement virtuel Python dans votre répertoire personnel (home). Les directives sont valides pour la version 3.6 de Python, mais vous pouvez installer l'application pour d'autres versions en chargeant le module Python approprié.

  1. Chargez le module Python.
    [name@server ~]$ module load python/3.7
    
  2. Créez un nouvel environnement virtuel Python.
    [name@server ~]$ virtualenv $HOME/jupyter_py3
    
  3. Activez votre nouvel environnement virtuel Python.
    [name@server ~]$ source $HOME/jupyter_py3/bin/activate
    
  4. Installez Jupyter Notebook dans votre nouvel environnement virtuel Python.
    (jupyter_py3)_[name@server ~]$ pip install --no-index --upgrade pip
    (jupyter_py3)_[name@server ~]$ pip install --no-index jupyter
    
  5. Dans votre nouvel environnement virtuel, créez un script (wrapper) pour lancer Jupyter Notebook.
    (jupyter_py3)_[name@server ~]$ echo -e '#!/bin/bash\nexport JUPYTER_RUNTIME_DIR=$SLURM_TMPDIR/jupyter\njupyter notebook --ip $(hostname -f) --no-browser' > $VIRTUAL_ENV/bin/notebook.sh
    
  6. Enfin, rendez le script exécutable.
    (jupyter_py3)_[name@server ~]$ chmod u+x $VIRTUAL_ENV/bin/notebook.sh
    

Installer des modules d'extension

Les modules d'extension ajoutent des fonctionnalités et peuvent modifier l'interface utilisateur de l'application.

Jupyter Lmod

Jupyter Lmod est un module d'extension permettant d'interagir avec les modules d'environnement avant le lancement des noyaux (kernels). Il utilise l'interface Python de Lmod pour accomplir des tâches reliées aux modules comme le chargement, le déchargement, la sauvegarde des collections, etc.

(jupyter_py3)_[name@server ~]$ pip install jupyterlmod
(jupyter_py3)_[name@server ~]$ jupyter nbextension install --py jupyterlmod --sys-prefix
(jupyter_py3)_[name@server ~]$ jupyter nbextension enable --py jupyterlmod --sys-prefix
(jupyter_py3)_[name@server ~]$ jupyter serverextension enable --py jupyterlmod --sys-prefix

Services web mandataires (proxy)

nbserverproxy permet d'accéder à des services web mandataires démarrés dans un serveur Jupyter. Ceci est utile dans le cas de services web qui n'écoutent que sur un port du serveur local, par exemple TensorBoard.

(jupyter_py3)_[name@server ~]$ pip install nbserverproxy
(jupyter_py3)_[name@server ~]$ jupyter serverextension enable --py nbserverproxy --sys-prefix

Exemple

Avec Jupyter, un service web est démarré via Terminal dans la liste déroulante New.

[name@server ~]$ tensorboard --port=8008


Le service est disponible via /proxy/ sur https://address.of.notebook.server/user/theuser/proxy/8008.

RStudio Launcher

Jupyter Notebook peut démarrer une session RStudio qui utilise le système d'authentification par jeton de Jupyter Notebook. RStudio Launcher crée l'option RStudio Session dans la liste déroulante New de Jupyter Notebook.

Remarque : la procédure suivante fonctionne uniquement avec les environnements logiciels StdEnv/2016.4 et StdEnv/2018.3.

(jupyter_py3)_[name@server ~]$ pip install nbserverproxy
(jupyter_py3)_[name@server ~]$ pip install https://github.com/jupyterhub/nbrsessionproxy/archive/v0.8.0.zip
(jupyter_py3)_[name@server ~]$ jupyter serverextension enable --py nbserverproxy --sys-prefix
(jupyter_py3)_[name@server ~]$ jupyter nbextension install --py nbrsessionproxy --sys-prefix
(jupyter_py3)_[name@server ~]$ jupyter nbextension enable --py nbrsessionproxy --sys-prefix
(jupyter_py3)_[name@server ~]$ jupyter serverextension enable --py nbrsessionproxy --sys-prefix


Activer l'environnement

Une fois que Jupyter Notebook est installé, vous n'aurez qu'à recharger le module Python associé à votre environnement lorsque vous vous connectez à la grappe.

[name@server ~]$ module load python/3.7


Activez ensuite l'environnement virtuel dans lequel Jupyter Notebook est installé.

[name@server ~]$ source $HOME/jupyter_py3/bin/activate


RStudio Server (optionnel)

Pour utiliser RStudio Launcher, chargez le module RStudio Server.

(jupyter_py3)_[name@server ~]$ module load rstudio-server


Lancer Jupyter Notebook

Pour lancer l'application, soumettez une tâche interactive. Ajustez les paramètres selon vos besoins. Pour plus d'information, consultez Exécuter des tâches.

(jupyter_py3)_[name@server ~]$ salloc --time=1:0:0 --ntasks=1 --cpus-per-task=2 --mem-per-cpu=1024M --account=def-yourpi srun $VIRTUAL_ENV/bin/notebook.sh
salloc: Granted job allocation 1422754
salloc: Waiting for resource configuration
salloc: Nodes cdr544 are ready for job
[I 14:07:08.661 NotebookApp] Serving notebooks from local directory: /home/fafor10
[I 14:07:08.662 NotebookApp] 0 active kernels
[I 14:07:08.662 NotebookApp] The Jupyter Notebook is running at:
[I 14:07:08.663 NotebookApp] http://cdr544.int.cedar.computecanada.ca:8888/?token=7ed7059fad64446f837567e32af8d20efa72e72476eb72ca
[I 14:07:08.663 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
[C 14:07:08.669 NotebookApp]

Copy/paste this URL into your browser when you connect for the first time,
    to login with a token:
        http://cdr544.int.cedar.computecanada.ca:8888/?token=7ed7059fad64446f837567e3


Se connecter à Jupyter Notebook

Puisque les nœuds de calcul ne sont pas directement accessibles par l'Internet, vous devez créer un tunnel SSH entre la grappe et votre poste de travail pour que votre fureteur web puisse avoir accès à Jupyter Notebook opérant sur un nœud de calcul.

Sous Linux ou macOS X

Nous recommandons le paquet Python sshuttle.

Sur votre poste de travail, ouvrez une nouvelle fenêtre terminal et lancez la commande sshuttle pour créer le tunnel.

[name@my_computer ~]$ sshuttle --dns -Nr <username>@<cluster>.computecanada.ca


Dans la commande précédente, remplacez <username> par votre nom d'utilisateur et <cluster> par la grappe à laquelle vous vous êtes connecté pour lancer Jupyter Notebook.

Puis copiez-collez l'adresse URL dans votre fureteur. Avec l'exemple précédent, le résultat serait

 http://cdr544.int.cedar.computecanada.ca:8888/?token=7ed7059fad64446f837567e3

Sous Windows

Pour créer un tunnel SSH, utilisez MobaXTerm comme suit, ce qui fonctionne aussi avec Unix (macOS, Linux, etc.).

  1. Dans MobaXTerm, ouvrez un premier onglet Terminal (session 1) et connectez-vous à une grappe. Suivez ensuite les directives de la section Lancer Jupyter Notebook ci-dessus. L'adresse URL suivante devrait s'afficher.
    http://cdr544.int.cedar.computecanada.ca:8888/?token= 7ed7059fad64446f837567e3
           └────────────────┬───────────────────┘         └──────────┬───────────┘
                  nom du serveur:port                              jeton
    
  2. Dans MobaXTerm, ouvrez un second onglet Terminal (session 2). Dans la commande suivante, remplacez <nom du serveur:port> par la valeur correspondante dans l'adresse URL obtenue à la session 1 (voir l'image précédente); remplacez <username> par votre nom d'utilisateur et; remplacez <cluster> par la grappe à laquelle vous vous êtes connecté à la session 1. Lancez la commande.
    [name@my_computer ~]$ ssh -L 8888:<nom du serveur:port> <username>@<cluster>.computecanada.ca
    
  3. Par votre fureteur, allez à
     http://localhost:8888/?token=<jeton>
    

    Remplacez <jeton> par la valeur obtenue à la session 1.

Fermer Jupyter Notebook

Pour fermer le serveur Jupyter Notebook avant la fin du temps d'exécution, appuyez deux fois sur CTRL-C dans le terminal où la tâche interactive a été lancée.

Si le tunnel a été créé avec MobaXTerm, appuyez sur CTRL-D dans la session 2 pour fermer le tunnel.

Ajouter des noyaux (kernels)

Il est possible d'ajouter des noyaux pour d'autres langages de programmation ou pour des versions de Python différentes de celle dans laquelle fonctionne Jupyter Notebook. Pour plus d'information, consultez Making kernels for Jupyter.

L'installation se fait en deux étapes :

  1. Installation des paquets permettant à l'interpréteur de communiquer avec Jupyter Notebook.
  2. Création du fichier pour que Jupyter Notebook puisse créer un canal de communication avec l'interpréteur : il s'agit du fichier de configuration du noyau.
Chacun des fichiers de configuration du noyau doit être créé dans son propre sous-répertoire dans un répertoire de votre répertoire personnel (home) par le chemin ~/.local/share/jupyter/kernels. Jupyter Notebook ne crée pas ce fichier; dans tous les cas, la première étape est de le créer avec la commande
[name@server ~]$ mkdir -p  ~/.local/share/jupyter/kernels

.

Les prochaines sections présentent des exemples de procédures d'installation d'un noyau.

Julia

  1. Chargez le module Julia.
    [name@server ~]$ module load julia
    
  2. Activez l'environnement virtuel Jupyter Notebook.
    [name@server ~]$ source $HOME/jupyter_py3/bin/activate
    
  3. Installez IJulia.
    (jupyter_py3)_[name@server ~]$ echo 'Pkg.add("IJulia")' | julia
    

Pour plus d'information, consultez la documentation IJulia.

Python

  1. Chargez le module Python.
    [name@server ~]$ module load python/3.5
    
  2. Créez un nouvel environnement Python.
    [name@server ~]$ virtualenv $HOME/jupyter_py3.5
    
  3. Activez le nouvel environnement Python.
    [name@server ~]$ source $HOME/jupyter_py3.5/bin/activate
    
  4. Installez la bibliothèque ipykernel.
    (jupyter_py3.5)_[name@server ~]$ pip install ipykernel
    
  5. Générez le fichier de configuration du noyau. Remplacez <unique_name> par un nom unique pour votre noyau.
    (jupyter_py3.5)_[name@server ~]$ python -m ipykernel install --user --name <unique_name> --display-name "Python 3.5 Kernel"
    
  6. Désactivez l'environnement virtuel.
    (jupyter_py3.5)_[name@server ~]$ deactivate
    

Pour plus d'information, voyez la documentation ipykernel.

R

  1. Chargez le module R.
    [name@server ~]$ module load r
    
  2. Activez l'environnement virtuel Jupyter Notebook.
    [name@server ~]$ source $HOME/jupyter_py3/bin/activate
    
  3. Installez les dépendances du noyau.
    (jupyter_py3)_[name@server ~]$ R -e "install.packages(c('crayon', 'pbdZMQ', 'devtools'), repos='http://cran.us.r-project.org')"
    
  4. Installez le noyau R.
    (jupyter_py3)_[name@server ~]$ R -e "devtools::install_github(paste0('IRkernel/', c('repr', 'IRdisplay', 'IRkernel')))"
    
  5. Installez le fichier de configuration du noyau R.
    (jupyter_py3)_[name@server ~]$ R -e "IRkernel::installspec()"
    

Pour plus d'information, consultez la documentation IRKernel.

Références