IA - Deep Learning¶
Logithèque disponible¶
Les frameworks tensorflow
et pytorch
sont installés sous environnements python3. Ces environnements proposent également le framework de machine learning scikit-learn, des outils de traitement d'images, tels que opencv
et scikit-image
, ainsi que des outils d'analyse des données tels que pandas
.
Il existe trois installations principales disponibles sur Austral : une pour tensorflow et deux pour Pytorch. Pour connaître l'ensemble des installations disponibles :
module avail aidl
- Pytorch 1.11.0 : L'environnement est accessible en chargeant le module aidl/pytorch/1.11.0-cuda11.3 :
module load aidl/pytorch/1.11.0-cuda11.3
cet environnement est accompagné des packages lightning (1.9.3) , optuna (3.1.1), timm (0.6.13) et transformers (4.24.0) - Pytorch 2.0.0 : L'environnement est accessible en chargeant le module aidl/pytorch/2.0.0-cuda11.7 :
module load aidl/pytorch/2.0.0-cuda11.7
cet environnement est accompagné des packages lightning (1.9.3) , optuna (3.1.1), timm (0.6.13) et transformers (4.24.0) - Tensorflow 2.11.0 : L'environnement est accessible en chargeant le module aidl/tensorflow/2.11.0-cuda11.7 :
module load aidl/tensorflow/2.11.0-cuda11.7
Le tableau suivant récapitule les différentes versions disponible des frameworks pour chacune de ces deux versions.
module | aidl/pytorch/1.11.0-cuda11.3 | aidl/pytorch/2.0.0-cuda11.7 | aidl/pytorch/2.2.0-cuda12.1 |
---|---|---|---|
python | 3.10.10 | 3.10.10 | 3.12.2 |
cuda | 11.3 | 11.7 | 12.1 |
tensorflow | - | - | - |
torch | 1.11.0 | 2.0.0 | 2.2.0 |
opencv | 4.7.0 | 4.7.0 | 4.10.0 |
pandas | 1.5.3 | 1.5.3 | 2.2.2 |
scikit-image | 0.19.3 | 0.19.3 | 0.23.2 |
scikit-learn | 1.2.2 | 1.2.2 | 1.4.2 |
module | aidl/tensorflow/2.11.0-cuda11.7 | aidl/tensorflow/2.16.1-cuda12 |
---|---|---|
python | 3.10.10 | 3.9.18 |
cuda | 11.7 | 12.3 |
tensorflow | 2.11.0 | 2.16.1 |
torch | - | - |
opencv | 4.7.0 | 4.10.0 |
pandas | 2.0.0 | 2.2.2 |
scikit-image | 0.20.0 | 0.24.0 |
scikit-learn | 1.2.2 | 1.5.2 |
De nombreux packages complémentaires enrichissent les principaux outils installés. La liste exhaustive des packages, une fois le module chargé, s'obtient par la commande :
pip list
Packages manquants¶
Si certains packages sont manquant dans l'installation proposée il est recommandé de demander leurs installations à l'équipe technique du CRIANN en adressant la requête à support-calcul@criann.fr
Dans certains cas, il est possible d'installer les packages en local sur le home utilisateur à l'aide de la commande : pip install <package> --user
Dans ce cas, pour éviter les conflits d'installation, le répertoire local par défaut dans lequel le package sera installé dépend de la version de module chargé :
- aidl/pytorch/1.11.0-cuda11.3 :
~/.python3-3.10-torch111/site-packages
- aidl/pytorch/2.0.0-cuda11.7 :
~/.python3-3.10-torch200/site-packages
- aidl/tensorflow/2.11.0-cuda11.7 :
~/.python3-3.10-tf211/site-packages
Utilisation¶
Pour la plupart des frameworks de Deep Learning l'utilisation des ressources GPUs est recommandée.
Pour accéder aux ressources gpus il est obligatoire de tourner sur les partitions gpu
, ou hpda
.
Attention : ne pas oublier de préciser le nombre de GPUs affecter à votre calcul grâce à l'option de slurm : --gpus=X
où X
désigne le nombre de device GPU à charger. Vous pouvez également définir le nombre de gpus par noeud (-gus-per-node=
) ou bien par tâche (-gpus-per-task
).
Bien que calculant majoritairement sur GPUs, la plupart des frameworks font un usage multi-threadé de python. Il est donc pertinent d'affecter plusieurs cpus à une même tâche python. Pour cela il suffit d'utiliser l'option --cpus-per-task
de slurm. Le nombre optimal de cpus par tâche est de 16.
Datasets¶
Attention, le système de fichier Lustre n'est pas adapté aux datasets contenant beaucoup de petits fichiers. D'une part, cela augmente considérable le nombre de méta-données et le nombre d'inodes (le quota est de 5 000 000 d'inodes par utilisateur). D'autres part, l'accès intensif à ces datasets est peu performant et peu ralentir les entraînements de modèles. Il convient donc, autant que possible, d'éviter ce type de stockage de vos datasets. Plusieurs solutions s'offrent à vous tel que l'archivage non compressé des datasets où l'utilisation de format de fichiers pour données aggrégées.
1. Utilisation de SquashFS pour créer/monter des archives¶
SquashFS est un système de fichiers compressé en lecture seule qui permet de regrouper de nombreux fichiers dans une seule archive tout en maintenant un accès rapide aux données.
- Accès direct aux fichiers sans extraction préalable.
- Optimisation des performances d'I/O.
- Montage possible sans privilèges administrateur si le point de montage est dans l’espace utilisateur.
Mise en œuvre :¶
- Création d'une archive SquashFS :
- Montage de l’archive (dans un dossier utilisateur) :
- L'accès aux fichiers se fait comme s’ils étaient dans un dossier normal.
- Démontage de l’archive à la volée (lorsque vous n’en avez plus besoin) :
2. Utilisation de WebDataset pour le Stockage de Données¶
WebDataset est une bibliothèque optimisée pour stocker et charger des datasets sous forme d’archives tar
, ce qui améliore l'efficacité des opérations d'I/O.
- Adapté aux tâches de machine learning avec PyTorch.
- Réduction du nombre de fichiers à gérer.
- Chargement rapide et séquentiel des données.
Mise en œuvre :¶
- Création d'un dataset WebDataset :
- Chargement des données :