Utiliser les logiciels

Utiliser R

R est installé avec le compilateur INTEL. Pour charger R vous devez utiliser la commande : module load intel/2021.1 r/4.0

Pour pouvoir installer vos paquets R localement sur votre home :

  1. Créer un dossier sur votre compte : mkdir ~/MyLibsR

  2. Créer le fichier ~/.Rprofile contenant la ligne suivante : .libPaths(« ~/MyLibsR »)

  3. Une fois R lancé, utiliser la commande : install.packages(<pkg>,dependencies = TRUE,clean=TRUE,repos = <adresse du site> )

Par exemple install.packages("accuracy",dependencies = TRUE,clean=TRUE,repos = "http://mirror.ibcp.fr/pub/CRAN/) L’installation se fera dans le dossier ~/MylibsR

Utiliser Python

Python est installé avec la distribution anaconda. Pour charger python vous devez utiliser la commande module load anaconda/2020.11

Anaconda

Vous pouvez utiliser une version installée en standard sur le cluster ou installer votre propre version sur votre compte.

Installer votre version d’anaconda

Vous pouvez télécharger ici l’installeur d’Anaconda et suivre la procédure d’installation La suite des explications de ce document est donnée en partant du principe que vous utilisez la distribution disponible sous forme de module. A vous d’adapter les explications si vous utilisez votre version d’anaconda.

Utiliser la version d’anaconda installée en standard sur le cluster

Une version a été installée pour vous. Pour l’utiliser : module load anaconda/2020.11

Environnements préexistants

Des environnements virtuels conda ont été créés. Pour avoir la liste des environnements virtuels existants : conda env list

Vous trouverez notamment 2 environnements virtuels disponibles pour les nœuds gpu-intel et gpu-amd pour les applications tensorflow (tensorflow-gpu-env) et py-torch (pytorch-env)

Note

ces environnements seront peut-être incomplets pour vos usages (packages supplémentaires nécessaires). Dans ce cas il vous faudra créer vos environnements virtuels sur votre compte

Configurer votre espace de travail pour faire des environnements dans votre compte

Pour pouvoir installer vos packages python localement sur votre compte :

  • Créer un dossier sur votre compte : mkdir -p ~/conda_env/.conda

  • Faire un lien symbolique vers .conda : ln -s ~/conda_env/.conda ~/.conda

    Avertissement

    Il peut être utile de supprimer le .conda existant ou d’en copier le contenu dans ~/conda_env/.conda

  • Créer une variable d’environnement : export CONDA_ENVS_PATH=$HOME/conda_env/ (Vous pouvez ajouter cette variable dans votre ~/.bashrc pour ne pas avoir à la saisir à chaque fois)

  • Charger le module : module load anaconda

  • Créer votre environnement virtuel en spécifiant le chemin : conda create --prefix=${CONDA_ENVS_PATH}/test-3.6 python=3.6

  • Pour charger cet environnement : source activate ${CONDA_ENVS_PATH}/test-3.6

  • Pour quitter cet environnement : source deactivate

Notebook

Préparer vos environnements virtuels afin qu’ils soient utilisables dans les notebooks

Si vous voulez utiliser vos environnements virtuels dans un notebook vous devez :

  • Charger votre environnement virtuel (nommé nom_env): source activate ${CONDA_ENVS_PATH}/nom_env

  • Installer ipykernel dans cet environnement virtuel: conda install ipykernel

  • Lier votre environnement virtuel à jupyter : python -m ipykernel install --user --name=nom_env (L’environnement virtuel doit être actif)

Lancer un serveur jupyter sur des ressources dédiées

  • Créer un script de soumission SLURM (my_notebook.job) pour votre jupyter notebook en décrivant les ressources dont vous avez besoin

#!/bin/bash
## nombre de noeuds
#SBATCH --nodes 1
##nombre de coeurs
#SBATCH --cpus-per-task 2
#durée de votre notebook
#SBATCH --time 02:00:00
#nomde votre notebook
#SBATCH --job-name my_jupyter_notebook
# on charge le module anaconda
module load anaconda/2020.11
#on lance le serveur jupyter (sans le navigateur) sur le port 8080
#on pouvait utiliser un autre port, de préférence supérieur à 8080
jupyter notebook --no-browser --port=8080 --ip=$(hostname -s)
  • Soumettre votre job sbatch my_notebook.job : cette commande vous attribue un jobid et génère un fichier slurm-jobid.out où sont redirigées les sorties de votre job.

  • Deux informations sont à récupérer dans le fichier : le nœud sur lequel s’exécute votre job (nodexx ou gpu0x) et le token d’authentification au notebook. Vous pouvez éditer le fichier slurm-jobid.out ou utiliser la commande grep token slurm-jobid.out (remplacer jobid par la valeur rendue par la commande sbatch précédente ) La ligne qui nous intéresse ressemble à

http://gpu01:8080/?token=817f5205e74d91f0f670d567945e45c4514a6ef1aed49e93

Dans cet exemple le nœud sur lequel s’exécute jupyter est gpu01, le token est 817f5205e74d91f0f670d567945e45c4514a6ef1aed49e93

Créer un tunnel ssh entre votre poste et le nœud où s’exécute votre notebook

Le serveur jupyter est un serveur web, en écoute sur un port sur un nœud du cluster. Pour y accéder depuis votre poste vous devez établir un tunnel construit avec le protocole SSH entre un client (votre poste) et un serveur (Leto) en faisant correspondre un port de votre poste au port distant utilisé par le notebook jupyter, et ce à travers une connexion SSH.

Pour mieux comprendre ce qu’est un tunnel ssh vous pouvez utiliser cette représentation proposée par mobaxterm :

../_images/tunnel-ssh-01.png
Avec Mobaxterm

Dans Mobaxterm démarrer MobaSSHTunnel en cliquant sur l’icône Tunneling

../_images/tunnel-ssh-02.png

La fenêtre MobaSSHTunnel s’ouvre. Cliquer sur New SSH Tunnel

../_images/tunnel-ssh-03.png

Une fenêtre pour configurer votre tunnel s’ouvre.

../_images/tunnel-ssh-04.png

Laisser Local port fowarding coché et renseigner les champs de la manière suivante :

  • Fowarded port : 8080 (il s’agit du port local de votre machine)

  • SSH server : leto.cascimodot.datacentre-valdeloire.fr

  • SSH login : votre login sur Leto

  • Remote server : le nœud où s’exécute votre notebook

  • Remote port : 8080

Cliquer sur Save. Dans la fenêtre MobaSSHTunnel une ligne a été ajoutée. Vous pouvez donner un nom à ce tunnel. Vous devez ensuite ajouter votre clé privée ssh nécessaire à la connexion sur Leto. Pour cela, cliquer sur l’icône clé au bout de la ligne

../_images/tunnel-ssh-05.png

Vous n’avez plus qu’à cliquer sur la petite icone start pour que le tunnel démarre. Nom Start Clé

Avec putty

Vous devez renseigner un profil de connexion putty de la manière suivante : Dans session / Host Name : leto.cascimodot.datacentre-valdeloire.fr

../_images/tunnel-ssh-06.png

Dans Connection / Data / auto-login username : votre login de connexion à Leto

../_images/tunnel-ssh-07.png

Dans Connection / SSH / Auth renseigner votre clé privée

../_images/tunnel-ssh-08.png

Dans Connection / SSH / Tunnels / Source port : 8080 (port local de votre machine)

Dans Connection / SSH / Tunnels / Destination : node:8080 (où node est à remplacer par le nœud où s’exécute votre notebook)

Cliquer sur add

../_images/tunnel-ssh-09.png

Enfin, cliquer sur open. Un terminal s’ouvre sur Leto

Depuis Linux

La commande pour créer un tunnel ssh vers le nœud nodexx pour l’utilisateur toto est :

ssh -N -L 8080:nodexx:8080 toto@leto.cascimodot.datacentre-valdeloire.fr

Le notebook

Dans votre navigateur internet taper l’adresse http://localhost:8080

../_images/tunnel-ssh-10.png

Dans le champ token saisir le token que vous avez récupéré dans votre fichier slurm-jobid.out Vous obtenez votre page jupyter listant le contenu de votre compte (de votre home directory)

Sélectionner un environnement dans le notebook

Cliquer sur le bouton new et sélectionner l’environnement virtuel qui vous convient. Si vous n’avez pas lié d’environnements virtuels à jupyter vous ne verrez que Python 3

../_images/tunnel-ssh-11.png

Carte GPU

Vérification avant de pouvoir utiliser les gpu

Pour pouvoir utiliser les gpu vous devez être dans le groupe linux video.

Pour s’assurer que vous êtes dans ce groupe taper la commande groups. Si video n’apparait pas, vous pouvez nous contacter.

Ressources GPU

Dans votre script de soumission SLURM ajouter une des 2 partitions gpu avec une de ces 2 lignes

#SBATCH -p gpu-intel
#SBATCH -p gpu-amd

Ajouter également le nombre de gpus (x) que vous voulez utiliser

#SBATCH --gres=gpu:x

Note

Rappel pour chaque nœud :

  • partition gpu-intel : 4 x Nvidia Tesla V100 (Nvlink)

  • partition gpu-amd : 3 x Nvidia Tesla V100 (PCIe)