Différences
Ci-dessous, les différences entre deux révisions de la page.
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 17:44] tribchri [Utiliser les GPU d'Altas] |
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** | ||
- | Une façon d'utiliser les GPU d'Atlase et 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. | + | 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 : | ||
- | '' pytorch trainFullPrecisionAndSaveState.py %%--%%epochs=1'' | + | '' 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 57: | Ligne 70: | ||
On peut alors passer de plus grosses batch d'images (512 au lieu de 256) lors de l'entrainement du réseau | On peut alors passer de plus grosses batch d'images (512 au lieu de 256) lors de l'entrainement du réseau | ||
- | '' pytorch trainFullPrecisionAndSaveState.py %%--%%epochs=1 %%--%%batch_size=512'' | + | '' python trainFullPrecisionAndSaveState.py %%--%%epochs=1 %%--%%batch_size=512'' |
À noter que ce choix influence la précision finale obtenue par le réseau. | À noter que ce choix influence la précision finale obtenue par le réseau. |