Accès au serveur GPU

NB: remplacez username par votre nom d’utilisateur court, par exemple pjgrenier

Télécom met en libre service un serveur avec quelques GPU haut de gamme (quatre Tesla K80 en 2019) : gpu.enst.fr. Pour vous connecter :

ssh username@gpu.enst.fr

Règles de bons usages

N’oubliez jamais, beaucoup de personnes dépendent de ces GPU, notamment pour les rendus de projet en M2 ou les deadlines en thèse. Il est donc crucial que vous respectiez ces quelques règles si vous voulez utiliser les GPU :

N’utilisez que le nombre de GPU que vous avez besoin d’utiliser

La majeure partie du temps, vous n’aurez besoin d’en utiliser qu’un seul. Pour choisir lequel, tapez cette commande :

nvidia-smi

Vous verrez alors les usages de chaque GPU. Choisissez-en un ou deux de disponibles (par exemple les numéro 0 et 1), et tapez la commande suivante :

export CUDA_VISIBLE_DEVICES=0,1

Vous pouvez maintenant lancer votre script Python, il n’utilisera que ces deux GPU.

Vérifiez toujours que vous travaillez sur GPU

Dès que vous lancez votre script Python, prenez le réflexe de taper la commande suivante :

nvidia-smi

Afin de vérifier qu’il n’y a pas eu de problème de configuration et que votre GPU est bien utilisé.

Dès que vous avez fini d’utiliser le GPU, ne laissez rien derrière vous !

Si vous lancez par exemple une session Jupyter en remote, il est important que vous tuiez votre noyau dès que vous avez fini, car sinon la mémoire dédiée du GPU continuera d’être utilisée alors que vous n’utilisez pas les GPU.

Environnement Python

Une fois connecté, si vous voulez utiliser un environnement Python, il vous faudra le mettre en place et installer les bibliothèques que vous désirez. Pour cela, vous pouvez passer par virtualenv, en utilisant les commandes suivantes pour créer l’environnement Python 3 NOM_DE_VOTRE_ENVIRONNEMENT dans le répertoire courant :

python3 -m pip install virtualenv --user
virtualenv NOM_DE_VOTRE_ENVIRONNEMENT --python=python3

Puis chargez cet environnement (à faire à chaque fois que vous vous connecter au serveur et que vous voudrez vous en servir) :

cd NOM_DE_VOTRE_ENVIRONNEMENT
source bin/activate

Vous pouvez bien sûr créer plusieurs environnements ! Pour sortir de votre environnement, utilisez la commande deactivate.

Installer des paquets

Vous pouvez alors utiliser pip pour installer vos paquets, par exemple pour installer numpy :

pip install numpy

Installation de Pytorch

Simplement :

pip install torch torchvision

Installation de Tensorflow/Keras

Pour utiliser Tensorflow sur votre session, il est important de s’assurer de plusieurs choses.

Si le package tensorflow est déjà installé, il faut le désintaller pour installer la version GPU :

pip uninstall tensorflow

On utilise la bonne version de tensorflow, à savoir la version GPU :

pip install tensorflow-gpu

Une fois ceci fait, si vous voulez utiliser Keras, il ne vous reste qu’à faire :

pip install keras

Éventuels problèmes de compatibilité

Il est possible que tensorflow ne marche pas sur votre environnement (pour des problèmes de drivers de carte graphique par exemple). Dans ce cas, il vous faudra utiliser la version 3.6 de Python. Le plus simple est de modifier la ligne

virtualenv NOM_DE_VOTRE_ENVIRONNEMENT --python=python3

en

virtualenv NOM_DE_VOTRE_ENVIRONNEMENT --python=python3.6

dans la partie “Environnement Python” plus haut.

Système de fichiers

Ce serveur offre une capacité de stockage additionnelle à votre quota classique. Un système de fichiers partagé entre tous les utilisateurs est monté sur un home local (/home/infres/username), avec une capacité de 12 To en 2019 (sur lesquels 9 To étaient alors occupés). Il n’y a visiblement pas de quota par utilisateur. Par ailleurs votre home habituel, partagé entre toutes les machines de Télécom, est monté sur /home/dsi/username.

Astuces

  • Si vous voulez lancer un script qui prend beaucoup de temps (par exemple entrainer votre algorithme de machine learning), utilisez tmux. Cela vous permet d’ouvrir une session qui pourra être détachée et continuer de tourner en arrière plan, même après votre déconnexion. Quelques commandes utiles :
    • tmux lance une session
    • ctrl + B puis D (en deux temps) détache la session actuelle sans la tuer
    • ctrl + B puis C crée un nouveau terminal dans la session
    • ctrl + B puis N passe au terminal suivant
    • ctrl + B puis " coupe le terminale en deux
    • tmux a attache la session actuelle

version simple : utilisez tmux, faites vos bails, puis quand vous voulez partir sans tuer votre programme faites ctrl + B puis D. Vous devriez voir le message [detached (from session 0)]. Vous pouvez alors vous déconnecter et éteindre votre ordi. Quand vous vous re-connecterez, pour retrouver votre session faites simplement tmux a.

  • Pour modifier vos fichiers, plusieurs possibilités, parmi lesquelles :

    • (le plus puissant) utiliser vim ou emacs (éditeurs en ligne de commande)
    • (le plus simple) éditer vos fichiers en local et les envoyer avec scp : depuis votre ordinateur utilisez scp /chemin/de/mon/fichier username@gpu.enst.fr:/home/infres/username/
    • (non recommandé) vous connecter avec l’option ssh -X (qui forward le X11) et utiliser Atom ou Gedit par exemple
  • Vous pouvez stocker vos scripts dans /home/infres/username, et ainsi l’éditer depuis les machines des salles info