Travailler avec un Jupyter Notebook
Configuration
Il est recommandé de lancer votre notebook dans un environnement virtuel. Pour utiliser conda
, vous pourrez vous rérérer à l’ASPICS sur les jupyter notebook
. Ici les exemples sero,t donnés avec venv
pour changer. Par exemple, l’installation de jupyter-notebook
se fera comme suit :
python -m venv .venv
source .venv/bin/activate
pip install jupyter
Le noyau associé à l’environnement virtuel est ainsi chargé automatiquement. Si cela n’est pas le cas, vous pouvez le spécifier avec
ipython kernel install --name <name-venv>
où <name-venv>
est le nom de l’environnement virtuel, par exemple, ici, .venv
.
Lancement sur les noeuds
Pour travailler en interactif, il n’est pas recommandé de lancer le navigateur sur la frontale. Il est préférable d’exécuter le notebook
sur un noeud, en faisant une allocation interactive. Par exemple, sur la partition haswell
:
salloc -N 1 -n 1 -p haswell -t 01:00:00
retourne, sur les ressources sont disponibles, une allocation d’un noeud de la partition haswell
et d’un processus sur ce noeud. Il s’affiche quelque chose comme
salloc: Pending job allocation 700273
salloc: job 700273 queued and waiting for resources
salloc: job 700273 has been allocated resources
salloc: Granted job allocation 700273
Pour obtenir le nom du noeud alloué, vous pouvez faire par exemple
squeue -j 700273
ce qui donne
JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON)
700273 haswell interact <user> R 0:27 1 haswell-t16-53
Dans cet exemple, le noeud alloué est haswell-t16-53
.
Se connecter en interactif sur ce noeud :
ssh haswell-t16-53
Activer l’environnement virtuel pour le notebook, par une commande du type
source .venv/bin/activate
si votre environnement virtuel est défini avec virtualenv
et s’appelle .venv
. Lancer ensuite le notebook, sans naviguateur, car sur les noeuds de calcul, il n’y a pas de serveur X11.
jupyter-notebook --no-browser --port=8888
Le port par défaut est 8888
. Cette commande initie le serveur jupyter
et ouvre token de type
http://localhost:8888/?token=de53a39c1ddadb0ca4e5ddd770f969c8e07331c992dea772
Il est nécessaire de repérer ce token pour s’y connecter depuis votre client, sur votre machine locale.
Lancement du client via un tunnel ssh
Pour vous permettre d’accéder au notebook depuis votre navigateur sur votre machine locale, vous devez ouvrir un tunnel ssh
en spécifiant le noeud où tourne le serveur, les chemins pour y accéder (via les machines de prepost
associées aux noeuds alloués et éventuellement le portail sshgate
si vous n’avez pas activé votre VPN
. Dans l’exemple ci-dessus, ça donne :
ssh haswell-t16-53 -L9999:localhost:8888 -J prepost-haswell,gate
- où
prepost-haswell
est la frontale associée à la partitionhaswell
utilisée pour l’allocation etgate
est la passerelle sshgate de l’école, qui permet d’accéder au réseau interne depuis l’extérieur. Vous pouvez alternativement utiliser la syntaxeprepost-haswell.ecl
(vous reporter au tutoriel de configuration de votre client SSH), commande proxy qui vous permet d’accéder à cetteprepost-hawsell
viasshgate
(lorsque vous n’êtes pas dans le réseau de l’École Centrale de Lyon ou dans leVPN
) et9999
est le port que vous récupérez dans ce tunnel. Dans ce cas, vous auriez écrit
ssh haswell-t16-53 -L9999:localhost:8888 -J prepost-haswell.ecl
Il vous suffit ensuite d’ouvrir un navigateur dans un terminal de votre machine locale, avec le lien
firefox http://localhost:9999/?token=de53a39c1ddadb0ca4e5ddd770f969c8e07331c992dea772
Lorsque vous quittez l’application, vous pouvez vérifier que vous avez bien stoppé le serveur (et libéré les ports utilisés) en faisant sur le noeud alloué
jupyter notebook 8888 stop
ou sur ce noeuds depuis la machine locale, avec ssh
ssh haswell-t16-53 -J prepost-haswell.ecl 'jupyter notebook 8888 stop'