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:56]
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
 + 
 +''​ 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. 
 + 
 +''​ Downloading https://​www.cs.toronto.edu/​~kriz/​cifar-10-python.tar.gz to ./​data/​cifar-10-python.tar.gz ''​ 
 + 
 +''​ 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.
  
-''​ pytorch trainFullPrecisionAndSaveState.py %%--%%epochs=1''​ 
  
  
  • groupe-dfo-bbo/projets/atlas.1621612611.txt.gz
  • Dernière modification: 2021/05/21 15:56
  • par tribchri