Académique Documents
Professionnel Documents
Culture Documents
2 TP sans virtualisation
Le plus simple est de faire les TP sans virtualisation. La seule restriction est que l’on a pas accès
en root.
Mise en place Il est important d’assigner à chaque étudiant un nom d’hôte et un numéro de port
pour faire tourner jupyter. Par exemple :
Nom Hote GPU Port
Étudiant 1 gt-0 GPU-0 8000
Étudiant 2 gt-0 GPU-0 8001
Étudiant 3 gt-0 GPU-1 8002
Étudiant 4 gt-0 GPU-1 8003
Étudiant 5 gt-1 GPU-0 8004
Étudiant 6 gt-1 GPU-1 8005
Étudiant 7 gt-1 GPU-0 8006
Étudiant 8 gt-1 GPU-1 8007
Par exemple, ici nous sommes l’Étudiant 6 qui utilise gt-1, le GPU 1 et le port 8006.
Connection SSH On se connecte en ssh sur l’hôte en créant un tunnel pour pouvoir accéder au
notebook jupyter.
ssh -L8006:localhost:8006 etudiant6@gt-1.luminy.univ-amu.fr
Attention, on se fait bannir après 3 erreurs de mot de passe. Il faut utiliser une autre machine pour
se connecter.
Environnement virtuel Le mieux est de créer un environnement virtuel python pour la matière
ou par TP. Créer un environnement virtuel 1 , qu’on nommera par exemple DEEP et l’activer :
1
L’option --system-site-packages sert à utiliser le Tensorflow compilé par la DOSI.
Après, il est possible d’installer des paquets avec pip.
Choix du GPU On peut choisir le GPU sur lequel seront executés les calculs avec la variable
d’environnement CUDA_VISIBLE_DEVICES. Certains toolkits ne prennent pas en compte cette variable
(mais Tensorflow oui). L’étudiant 6 utilise le GPU 1 :
export CUDA_VISIBLE_DEVICES=1
Notebook On peut alors lancer un serveur de notebooks jupyter sur le port choisi (8006). Le tunnel
ssh va du port 8006 sur la machine d’où on s’est connecté vers le port 8006 sur localhost de la machine
distante. C’est là que devra attendre jupyter.
Notebook dans le navigateur Ouvrir le navigateur sur la machine d’origine à l’adresse http:
//localhost:8006, puis créer un nouveau notebook python3.
Dans une première cellule, on configure le notebook pour qu’il reconnaisse notre environnement
virtuel :
import sys
venv_root = "/amuhome/<login>/.../DEEP" # A modifier !!
sys.path.append(venv_root+"/lib/python3.5/site-packages")
Puis on peut configurer tensorflow pour qu’il utilise la moitié de la mémoire du GPU :
import tensorflow as tf
from keras.backend.tensorflow_backend import set_session
config = tf.ConfigProto()
config.gpu_options.per_process_gpu_memory_fraction = 0.5
set_session(tf.Session(config=config))
Ceci permettra à un autre étudiant d’utiliser ce GPU en même temps. Si on revérifie l’état du GPU
avec nvidia-smi, on voit que la moitié de la mémoire du GPU 1 est allouée.
La suite ressemble à n’importe quel TP de deep learning.
2
3 TP avec virtualisation
Conteneur Nous allons créer un conteneur LXC avec 32GB de disque, sur l’hôte gt-1, à partir du
template debian9-nvidia390-cuda9.1.tar.gz, pour l’utilisateur favre.b (utiliser le votre), avec 16G
de mémoire, le nom tp1, un bon mot de passe root 2 et aucun swap.
Cette commande prend du temps. On peut obtenir le numéro de ce conteneur avec la commande
suivante :
Ici, le conteneur a le numéro 33082. Ce numéro permet de l’identifier et correspond aussi à son
adresse ip. On le lance avec la commande suivante :
sudo dositools start -v 33082
L’adresse ip correspondant au 33082 est 139.124.33.82. On peut faire un ssh en root dessus avec le
mot de passe défini à la création :
ssh root@139.124.33.82
Une fois connecté, on est comme dans une machine virtuelle en root, avec accès aux GPU. Le
système est minimal mais on peut utiliser apt-get pour ajouter des paquets.
En ouvrant un navigateur sur http://localhost:8000, l’étudiant verra une fenêtre de login où il
devra entrer ses identifiants tels que définis avec adduser. Il peut ensuite créer à loisir des notebooks
dans le système fichier local du conteneur.
2. Générés par exemple avec https://passwordsgenerator.net/.
3. Fondé sur https://github.com/jupyterhub/jupyterhub/wiki/Installation-of-Jupyterhub-on-remote-server.
3
4 Lancer des jobs ”longs” sur un serveur du département
Il sera certainement nécessaire de faire tourner des jobs pendant plusieurs heures, par exemple pour
l’entrainement de réseaux sur des corpus volumineux.
Pour cela, pas question d’attendre devant jupyter, on utilisera la commande screen depuis le ser-
veur. screen lance une ”console virtuelle”, elle permet d’ouvrir plusieurs consoles depuis la même
fenêtre, de passer de l’une à l’autre et surtout de continuer l’exécution d’un programme même après
déconnexion du serveur. Voici les principales instructions screen à connaı̂tre :
Colab permet l’exécution jusqu’à 24h consécutives de notebooks jupyter sur des serveurs mis à
disposition par Google. Les notebooks seront à placer dans un Google Drive, ainsi que tous les fichiers
utilisés dans le notebook (ie : le dataset). Les sorties du programme sont aussi stockées sur le Google
Drive (attention donc à ne pas lire/écrire de données trop volumineuses). Pour choisir l’accélération
matérielle GPU, rendez-vous dans le menu Modifier/Paramètres du notebook...