Jean Zay : Accès à JupyterHub

Les équipes de l'IDRIS ont mis en place JupyterHub, une solution permettant d'utiliser les Jupyter Notebooks et d'autres applications comme MLflow ou Dask via une interface web sans connexion SSH préalable à la machine. Une procédure a été mise en place pour se connecter à cet outil et avoir accès aux frontales ainsi qu'aux nœuds de calcul via Slurm.

La présentation de l'outil faite au comité des utilisateurs du 16/09/2022 est disponible ici (attention, cette présentation a été conçue avant l'introduction du SSH-spawner permettant de créer une instance JupyterLab sur un nœud frontal).

Accès à JupyterHub

L'accès à l'outil se fait sur le site suivant : https://jupyterhub.idris.fr. Les modalités de connexion sont similaires à celles pour l'accès aux frontales de Jean Zay :

  • On utilise le même nom d'utilisateur et le même mot de passe que pour accéder à la machine
  • L'éventuel pare-feu de votre organisme doit permettre les connexions HTTPS vers jupyterhub.idris.fr et jean-zay.sso.idris.fr.

Nouvelle interface de connexion à partir du mardi 4 juin 2024

A partir du mardi 4 juin 2024, la connexion à JupyterHub se fera via le service d'authentification centralisée de l'IDRIS. Seule l'interface de connexion change, le nom d'utilisateur et le mot de passe sont toujours ceux que vous utilisez pour vous connectez à la machine Jean Zay.

Lors de votre connexion, la page suivante s'affichera :

Vous devez alors cliquer sur “Sign in with Jean Zay SSO” et saisir votre nom d'utilisateur :

puis votre mot de passe :

Accès via une machine intermédiaire

Démarrer une redirection dynamique de port

Si vous vous connectez habituellement à Jean Zay via une machine intermédiaire, vous pouvez utiliser une redirection dynamique de port pour accéder à notre instance JupyterHub.

Le démarrage de la redirection de port se fait via la commande suivante :

ssh -D localhost:9080 -N -f login_machine_proxy@machine_proxy

Les paramètres login_machine_proxy et machine_proxy doivent être remplacés par votre nom d'utilisateur sur la machine intermédiaire et l'adresse de celle-ci. Les options -N -f permettent de démarrer la redirection de port sans démarrer une session interactive sur la machine intermédiaire.

Attention : une redirection statique de port ne fonctionnera pas pour utiliser JupyterHub. Pour plus d'informations sur les différences entre redirection statique et dynamique de port, vous pouvez consulter l'article suivant (en anglais) : How to set up SSH dynamic port forwarding on Linux.

Configurer les accès proxy de votre navigateur

Il est ensuite nécessaire de configurer votre navigateur pour qu'il utilise la redirection de port que vous avez démarrée. La façon de faire peut différer légèrement selon les navigateurs mais le principe reste similaire. Nous prenons ici l'exemple du navigateur Firefox.

À l'ouverture d'une instance JupyterLab, des requêtes sont faites vers des URL externes. La procédure diffère donc selon que la machine intermédiaire autorise ou non les connexions sortantes vers internet.

  • Si la machine intermédiaire autorise les connexions sortantes vers internet

Le plus simple est de configurer les accès proxy de manière à ce que tous les flux passent par la machine intermédiaire.

Sur Firefox, vous devez aller dans Paramètres > Paramètres réseau > Paramètres….

Vous pourrez alors reproduire la configuration visible sur la capture d'écran ci-dessous qui permet d'utiliser un proxy SOCKS5 local (adresse 127.0.0.1) sur le port 9080 défini lors du lancement de la redirection de port :

Remarque : si vous ne souhaitez pas généraliser la redirection des flux par la machine intermédiaire, vous pouvez créer un profil dédié à l'accès à JupyterHub dans votre navigateur, utiliser un navigateur différent pour accéder à JupyterHub, ou utiliser la solution “FoxyProxy” présentée ci-dessous.

  • Si la machine intermédiaire n'autorise pas les connexions sortantes vers internet

Il faudra limiter l'usage du proxy aux accès vers https://jupyterhub.idris.fr. L'extension FoxyProxy de Firefox permet par exemple de faire cela.

Voici la configuration de FoxyProxy qui permet d'utiliser un proxy SOCKS5 local (adresse 127.0.0.1) sur le port 9080 défini lors du lancement de la redirection de port, uniquement pour les pages dont l'adresse respecte le motif *jupyterhub.idris.fr* :

Il suffit ensuite d'activer le mode “Proxy By Patterns” en ouvrant les paramètres de l'extension (en cliquant sur la pièce de puzzle en haut à droite de votre navigateur, puis sur l'extension FoxyProxy) :

Une fois votre navigateur configuré, vous pourrez accéder à notre instance JupyterHub directement via l'adresse https://jupyterhub.idris.fr.

Accès via un VPN

Si vous utilisez un VPN pour vous connecter à Jean Zay mais que la connexion à JupyterHub ne fonctionne pas, prenez contact avec votre équipe informatique pour confirmer que le VPN est configuré de telle sorte à ce que le trafic vers https://jupyterhub.idris.fr soit routé via le VPN.

Créer une nouvelle instance JupyterLab

Pour lancer un notebook, il faut créer une instance JupyterLab sur un nœud.

Vous pouvez alors choisir de créer l'instance soit sur un nœud frontal (par exemple pour avoir un accès à Internet), soit sur un nœud de calcul en réservant des ressources via Slurm. Vous devrez pour chacun de ces deux cas sélectionner les différentes options (espace de travail, ressources allouées, comptabilité, etc).

  • Connexion depuis un nœud frontal :

  • Connexion depuis un nœud de calcul :

Choisir son noyau

L'IDRIS met à disposition des noyaux conçus à partir des modules installés sur Jean Zay. Vous y trouverez notamment toutes les versions de Python, Tensorflow et PyTorch installées. Vous pouvez créer un nouveau notebook avec le noyau souhaité via le lanceur :

Il est également possible de changer le noyau sur un notebook déjà créé en cliquant sur le nom du noyau en haut à droite de l'écran

Cela ouvrira une boîte de dialogue dans laquelle vous pourrez sélectionner le noyau voulu.

Fonctionnalités avancées

D'autres fonctionnalités plus avancées sont disponibles sur JupyterHub telles que l'utilisation de Tensorboard, MLFlow, création de noyaux personnalisés, etc. Ces fonctionnalités sont décrites dans la documentation technique de JupyterHub : https://idris-cnrs.gitlab.io/jupyter/jupyter-documentation/