groupe-dfo-bbo:projets:atlas

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
groupe-dfo-bbo:projets:atlas [2021/05/21 15:58]
tribchri [Exécution de l'exemple]
groupe-dfo-bbo:projets:atlas [2023/08/25 18:43] (Version actuelle)
tribchri [Exécution de l'exemple]
Ligne 1: Ligne 1:
-====== Utiliser les GPU d'Altas ======+====== Utiliser les GPU d'Atlas avec Pytorch ​======
  
 **En construction** **En construction**
  
-On utilise un exemple pour illustrer comment ​entraîner une réseau de neurone sur les GPU d'​Atlas. La procédure est la même si on utilise Pandora.+Une façon d'​utiliser les GPU d'​Atlas est d'​entraîner un réseau de neurones en utilisant pytorch. ​On utilise ​ici un exemple pour illustrer comment ​faire. La procédure est la même si on utilise Pandora.
  
 ===== Téléchargement de l'​exemple ===== ===== Téléchargement de l'​exemple =====
Ligne 22: Ligne 22:
 Pour charger une version : Pour charger une version :
  
-''​ module load anaconda ''​+<del>''​ module load anaconda ''​</​del>​
  
-''​ conda activate pytorch-1.8.1 ''​+<del>''​ conda activate pytorch-1.8.1 ''​</​del>  ​
  
-Avant de lancer le script, il faut sélectionner quel(s) GPU utiliser parmi les 4 A100 (en mai 2021) disponibles sur Atlas (8 GPU P100 sur Pandora). Avant de choisir un ou plusieurs GPUs il faut vérifier si ils sont utiliser ​avec les commande+''​module load python''​ 
 + 
 +''​python3 -m venv .env''​ 
 + 
 +''​pip3 install --upgrage pip''​ 
 + 
 +''​pip3 install torch torchvision torchaudio''​ 
 + 
 + 
 +Avant de lancer le script, il faut sélectionner quel(s) GPU utiliser parmi les 4 A100 (en mai 2021) disponibles sur Atlas (8 GPU P100 sur Pandora). Avant de choisir un ou plusieurs GPUs il faut vérifier si ils sont utilisés ​avec la commande
  
 ''​ nvidia-smi ''​ ''​ nvidia-smi ''​
  
-Le dernier block affiché par la commande donne les processus ​lancé ​sur quel GPU.+Le dernier block affiché par la commande donne les processus ​lancés ​sur quels GPUs.
  
 On peut choisir un GPU pour pytorch avec la commande ​ On peut choisir un GPU pour pytorch avec la commande ​
Ligne 38: Ligne 47:
 Avec xx pour un numéro de GPU disponible. Avec xx pour un numéro de GPU disponible.
  
-Dans le répertoire cifar10-resnet18-pytorch-quantization,​ on trouve plusieurs scripts utiles pour "quantizé" un réseau. Le script que nous allons utiliser, fait l'​optimisation du réseau (sans faire de "​quantization"​). De l'​information sur les scripts est fournies ​dans les fichiers README.+Dans le répertoire cifar10-resnet18-pytorch-quantization,​ on trouve plusieurs scripts utiles pour "quantizer" un réseau. Le script que nous allons utiliser, fait l'​optimisation du réseau (sans faire de "​quantization"​). De l'​information sur les scripts est fournie ​dans les fichiers README.
  
-'' ​pytorch ​trainFullPrecisionAndSaveState.py %%--%%epochs=1''​+'' ​python trainFullPrecisionAndSaveState.py %%--%%epochs=1''​ 
 + 
 +On peut aussi lancer la commande avec une valeur de ''​CUDA_VISIBLE_DEVICES''​ associée : 
 + 
 +''​ CUDA_VISIBLE_DEVICES=2 python ​trainFullPrecisionAndSaveState.py %%--%%epochs=1''​
  
 Si les images du dataset CIFAR10 ne sont pas présentes, la fonction de torchvision qui charge les images va d'​abord les télécharger. Si les images du dataset CIFAR10 ne sont pas présentes, la fonction de torchvision qui charge les images va d'​abord les télécharger.
Ligne 47: Ligne 60:
  
 ''​ 100%|███████████████████████████████████████████████████████████████████████████████████████████████████▉| 170360832/​170498071 [00:​05<​00:​00,​ 37255459.57it/​s] ''​ ''​ 100%|███████████████████████████████████████████████████████████████████████████████████████████████████▉| 170360832/​170498071 [00:​05<​00:​00,​ 37255459.57it/​s] ''​
 +
 +L'​optimisation sur 200 epochs prend plusieurs minutes. Avec l'​option ''​%%--%%epochs=1'',​ une seule epoch est effectuée et cela prend quelques secondes.
 +On peut vérifier ce qui se passe sur le GPU avec la commande ''​nvidia-smi''​.
 +
 +Pour utiliser plusieurs GPU, il faut faire :
 +
 +''​ export CUDA_VISIBLE_DEVICES=xx,​yy ''​
 +
 +On peut alors passer de plus grosses batch d'​images (512 au lieu de 256) lors de l'​entrainement du réseau ​
 +
 +''​ python trainFullPrecisionAndSaveState.py %%--%%epochs=1 %%--%%batch_size=512''​
 +
 +À noter que ce choix influence la précision finale obtenue par le réseau.
 +
  
  
  • groupe-dfo-bbo/projets/atlas.1621612699.txt.gz
  • Dernière modification: 2021/05/21 15:58
  • par tribchri