Skip to content

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=XX 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 :

  1. Création d'une archive SquashFS :
    mksquashfs dataset/ dataset.sfs 
    
  2. Montage de l’archive (dans un dossier utilisateur) :
    mkdir -p ~/mnt/dataset
    squashfuse dataset.sfs ~/mnt/dataset
    
  3. L'accès aux fichiers se fait comme s’ils étaient dans un dossier normal.
  4. Démontage de l’archive à la volée (lorsque vous n’en avez plus besoin) :
    fusermount -u ~/mnt/dataset
    

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 :

  1. Création d'un dataset WebDataset :
    tar -cvf dataset.tar dataset/*
    
  2. Chargement des données :
    import webdataset as wds
    dataset = wds.WebDataset("dataset.tar").decode("pil").to_tuple("png")
    

Last update: April 2, 2025 09:23:34