From ddbb27d3a255fa0d0586bbb6aa0fa7e9bd1026ca Mon Sep 17 00:00:00 2001 From: Sulaiman Date: Thu, 12 Jun 2025 15:48:31 +0200 Subject: [PATCH 1/4] =?UTF-8?q?cr=C3=A9er=20un=20onglet=20conteneur?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/arch_exp/turpan/logiciels/apptainer.md | 95 --------------------- docs/arch_exp/turpan/logiciels/index.md | 2 +- 2 files changed, 1 insertion(+), 96 deletions(-) delete mode 100644 docs/arch_exp/turpan/logiciels/apptainer.md diff --git a/docs/arch_exp/turpan/logiciels/apptainer.md b/docs/arch_exp/turpan/logiciels/apptainer.md deleted file mode 100644 index 4bb51528..00000000 --- a/docs/arch_exp/turpan/logiciels/apptainer.md +++ /dev/null @@ -1,95 +0,0 @@ ---- -title: Les conteneurs -sidebar_position: 12 ---- - -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -Vous pouvez déployer vos applications via des conteneurs Apptainer (anciennement Singularity) - -## Construction de conteneurs - -Pour vous permettre de créer facilement des conteneurs pour l'architecture des CPUs ARM, la construction de conteneurs apptainer sur Turpan est possible à partir des frontales de connexion à l'aide de la commande `apptainer build` - -## Utilisation d'un conteneur Apptainer - -Pour être utilisables, les conteneurs doivent obligatoirement se trouver dans un sous-répertoire de `/work/conteneurs`. Vous devez contacter le support et demander la création d'un dossier pour votre compte s'il n'existe pas. - -:::info - -Merci de réserver le lancement de conteneurs sur la frontale de connexion à des tests uniquement (shell interactif, installations de paquets python, etc...) - -::: - - - -Pour utiliser un conteneur depuis un script sbatch: - -* Pour exécuter un conteneur qui exécute un code spécifique : - ```shell - apptainer run /work/conteneurs/${PROJET}/${USER}/mon_conteneur.sif - ``` - -* Pour exécuter mon code à qui se trouve à l'intérieur du conteneur : - ```shell - apptainer exec --nv /work/conteneurs/${PROJET}/${USER}/mon_conteneur.sif python mon_script.py - ``` - - - - -* Depuis une frontale, pour faire des essais ou des installations particulières : - ```shell - apptainer shell /work/conteneurs///mon_conteneur.sif - ``` - -* Dans une réservation interractive avec salloc ou srun, vous pouvez exécuter un conteneur pour appeler un shell dans le conteneur : - ```shell - srun -n 1 -p shared --pty apptainer shell /work/conteneurs///mon_conteneur.sif - ``` - - - - -Par défaut, seul votre espace HOME est accessible à l'intérieur du conteneur. Pour ajouter les espaces WORK et TMPDIR vous devez ajouter l'option suivante : - ```shell - --bind /tmpdir,/work - ``` - -## Téléchargement de conteneurs depuis un dépôt -Vous pouvez utiliser des conteneurs mis à disposition par des éditeurs ou des projets de développement à l'aide de la commande apptainer pull - -Par exemple : -* Ajout du dépot Sylabs - ```shell - apptainer remote add --no-login SylabsCloud cloud.sycloud.io - apptainer remote use SylabsCloud - ``` -* Téléchargement d'un conteneur de test - ```shell - cd /work/conteneurs/${PROJET}/${USER} - apptainer pull --arch arm64 library://library/default/lolcow:latest - ``` - -Pour tester : -```shell -apptainer run /work/conteneurs/${PROJET}/${USER}/lolcow_latest.sif -``` - -## Gestion du cache local - -Attention, des fichiers de cache parfois volumineux sont téléchargés localement dans votre espace $HOME lorsque vous utilisez la commande `apptainer pull`. - -* Pour lister le contenu du cache et l'espace utilisé : `apptainer cache list` -* Pour vider le cache et libérer l'espace : `apptainer cache clean` - -## Pour aller plus loin - -[La documentation officielle du logiciel Apptainer](https://apptainer.org/docs/user/1.1/) - -:::info - -Pour des raisons de sécurité, l'exécution de conteneurs en mode privilégié (setuid) n'est pas autorisée sur Turpan. Dans de rares cas, cela peut empêcher l'utilisation de certaines options d'Apptainer - -::: \ No newline at end of file diff --git a/docs/arch_exp/turpan/logiciels/index.md b/docs/arch_exp/turpan/logiciels/index.md index e6479c12..d95bcf59 100644 --- a/docs/arch_exp/turpan/logiciels/index.md +++ b/docs/arch_exp/turpan/logiciels/index.md @@ -47,5 +47,5 @@ Les [environnements python](./envpython/index.md) font l'objet d'une section ent Si vous avez des dépendances très nombreuses et particulières, vous pouvez utiliser des conteneurs : -* La documentation sur les [conteneur Apptainer (anciennement Singularity)](./apptainer.md) +* La documentation sur les [conteneur Apptainer (anciennement Singularity)](./container/index.md) From ba6101c1aa66d55631d971dd519351c5296388d4 Mon Sep 17 00:00:00 2001 From: Sulaiman Date: Thu, 12 Jun 2025 15:48:50 +0200 Subject: [PATCH 2/4] =?UTF-8?q?Introduction=20g=C3=A9n=C3=A9rale=20au=20co?= =?UTF-8?q?nteneur?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../turpan/logiciels/container/index.md | 95 +++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 docs/arch_exp/turpan/logiciels/container/index.md diff --git a/docs/arch_exp/turpan/logiciels/container/index.md b/docs/arch_exp/turpan/logiciels/container/index.md new file mode 100644 index 00000000..f6320797 --- /dev/null +++ b/docs/arch_exp/turpan/logiciels/container/index.md @@ -0,0 +1,95 @@ +--- +title: Les conteneurs +sidebar_position: 12 +--- + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Vous pouvez déployer vos applications via des conteneurs Apptainer (anciennement Singularity). La liste des conteneurs disponibles [se trouve ici](list_containers.md) + +## [Construction de conteneurs](custum_apptainer) + +Pour vous permettre de créer facilement des conteneurs pour l'architecture des CPUs ARM, la construction de conteneurs apptainer sur Turpan est possible à partir des frontales de connexion à l'aide de la commande `apptainer build` [voir ici](custum_apptainer) + +## Utilisation d'un conteneur Apptainer + +Pour être utilisables, les conteneurs doivent obligatoirement se trouver dans un sous-répertoire de `/work/conteneurs`. Vous devez contacter le support et demander la création d'un dossier pour votre compte s'il n'existe pas. + +:::info + +Merci de réserver le lancement de conteneurs sur la frontale de connexion à des tests uniquement (shell interactif, installations de paquets python, etc...) + +::: + + + +Pour utiliser un conteneur depuis un script sbatch: + +* Pour exécuter un conteneur qui exécute un code spécifique : + ```shell + apptainer run /work/conteneurs/${PROJET}/${USER}/mon_conteneur.sif + ``` + +* Pour exécuter mon code à qui se trouve à l'intérieur du conteneur : + ```shell + apptainer exec --nv /work/conteneurs/${PROJET}/${USER}/mon_conteneur.sif python mon_script.py + ``` + + + + +* Depuis une frontale, pour faire des essais ou des installations particulières : + ```shell + apptainer shell /work/conteneurs///mon_conteneur.sif + ``` + +* Dans une réservation interractive avec salloc ou srun, vous pouvez exécuter un conteneur pour appeler un shell dans le conteneur : + ```shell + srun -n 1 -p shared --pty apptainer shell /work/conteneurs///mon_conteneur.sif + ``` + + + + +Par défaut, seul votre espace HOME est accessible à l'intérieur du conteneur. Pour ajouter les espaces WORK et TMPDIR vous devez ajouter l'option suivante : + ```shell + --bind /tmpdir,/work + ``` + +## Téléchargement de conteneurs depuis un dépôt +Vous pouvez utiliser des conteneurs mis à disposition par des éditeurs ou des projets de développement à l'aide de la commande apptainer pull + +Par exemple : +* Ajout du dépot Sylabs + ```shell + apptainer remote add --no-login SylabsCloud cloud.sycloud.io + apptainer remote use SylabsCloud + ``` +* Téléchargement d'un conteneur de test + ```shell + cd /work/conteneurs/${PROJET}/${USER} + apptainer pull --arch arm64 library://library/default/lolcow:latest + ``` + +Pour tester : +```shell +apptainer run /work/conteneurs/${PROJET}/${USER}/lolcow_latest.sif +``` + +## Gestion du cache local + +Attention, des fichiers de cache parfois volumineux sont téléchargés localement dans votre espace $HOME lorsque vous utilisez la commande `apptainer pull`. + +* Pour lister le contenu du cache et l'espace utilisé : `apptainer cache list` +* Pour vider le cache et libérer l'espace : `apptainer cache clean` + +## Pour aller plus loin + +[La documentation officielle du logiciel Apptainer](https://apptainer.org/docs/user/1.1/) + +:::info + +Pour des raisons de sécurité, l'exécution de conteneurs en mode privilégié (setuid) n'est pas autorisée sur Turpan. Dans de rares cas, cela peut empêcher l'utilisation de certaines options d'Apptainer + +::: \ No newline at end of file From 4c8afee8f9e1ca9fd1dd958246764e9adc3cea08 Mon Sep 17 00:00:00 2001 From: Sulaiman Date: Thu, 12 Jun 2025 15:49:24 +0200 Subject: [PATCH 3/4] Liste des conteneurs disponibles --- .../logiciels/container/list_containers.md | 109 ++++++++++++++++++ 1 file changed, 109 insertions(+) create mode 100644 docs/arch_exp/turpan/logiciels/container/list_containers.md diff --git a/docs/arch_exp/turpan/logiciels/container/list_containers.md b/docs/arch_exp/turpan/logiciels/container/list_containers.md new file mode 100644 index 00000000..a3978a59 --- /dev/null +++ b/docs/arch_exp/turpan/logiciels/container/list_containers.md @@ -0,0 +1,109 @@ +--- +title: Liste des conteneurs +sidebar_position: 2 +--- + +Tous les conteneurs se trouvent dans le répertoire `/work/conteneurs`. +Pour consulter en détail la liste des paquets installés dans un conteneur, utilisez la commande suivante : +```shell +apptainer exec /work/conteneurs/path_to/continer_name.sif pip list +``` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NomPackages principauxChemin
PyTorch + <> + - torch (PyTorch – framework principal pour l’apprentissage profond)
+ - torchvision (vision par ordinateur pour PyTorch)
+ - torch-geometric (réseaux de neurones pour graphes)
+ - flash_attn (mécanismes d’attention optimisés)
+ - nvfuser (compilateur de fusion de NVIDIA pour PyTorch)
+ - cuda-python (accès direct à l’API CUDA) + +
sessions-interactives/pytorch-25.03-py3-calmip-si-latest.sif
TensorFlow + <> + - tensorflow (framework principal pour l’apprentissage profond)
+ - keras (API haut niveau pour TensorFlow)
+ - tensorrt (optimiseur d’inférence NVIDIA)
+ - horovod (entraînement distribué)
+ - jax (calcul numérique accéléré)
+ - tensorflow-io-gcs-filesystem (prise en charge du stockage Google Cloud) + +
sessions-interactives/tensorflow-24.02-tf2-py3-calmip-si-latest.sif
Scikit-learn + <> + - cudf (bibliothèque de DataFrames sur GPU)
+ - cuml (apprentissage automatique accéléré sur GPU)
+ - cugraph (analyse de graphes sur GPU)
+ - cupy (tableaux de type NumPy sur GPU)
+ - dask-cuda (calcul distribué GPU avec Dask)
+ - xgboost (boosting de gradient accéléré GPU) + +
sessions-interactives/rapids-notebooks-24.02-cuda12.0-py3.10-calmip-si-latest.sif
Modulus + <> + - nvidia-modulus (framework principal pour la physique basée sur l’IA)
+ - nvidia-modulus.sym (extensions symboliques pour Modulus)
+ - onnxruntime-gpu (inférence ONNX sur GPU)
+ - tinycudann (réseaux de neurones rapides sur CUDA)
+ - torch (backend PyTorch pour Modulus)
+ - sympy (mathématiques symboliques) + +
sessions-interactives/modulus-24.01-calmip-si-latest.sif
Triton + <> + - Basé sur le conteneur PyTorch (tous les packages PyTorch sont inclus)
+ - Triton (compilateur de noyaux GPU pour l’IA/l’apprentissage automatique)
+ - Triton utilise LLVM pour générer du code PTX pour les GPU NVIDIA + +
sessions-interactives/triton-llvm-3.3.0-calmip-si-latest.sif
cuquantum_arrayfire + <> + - Basé sur le conteneur PyTorch (tous les packages PyTorch sont inclus)
+ - cuquantum-python (cuQuantum de NVIDIA)
+ - arrayfire (backend GPU/CPU, GPU par défaut sur les nœuds de calcul)
+ - pytest (framework de test Python)
+ - pytest-benchmark (mesures de performance)
+ - mpi4py (interface MPI pour Python)
+ - petsc (bibliothèque scientifique pour solveurs)
+ - petsc4py (liaison Python pour PETSc)
+ - slepc (bibliothèque pour problèmes de valeurs propres)
+ - primme (solveur PRIMME)
+ - slepc4py (liaison Python pour SLEPc)
+ - cupy (NumPy sur GPU) + +
calmip/custom_users/cuquantum_arrayfire.sif
From fbe79d6e15d34d5860191117c3dc32213e2ae4ae Mon Sep 17 00:00:00 2001 From: Sulaiman Date: Thu, 12 Jun 2025 15:50:20 +0200 Subject: [PATCH 4/4] =?UTF-8?q?Cr=C3=A9er=20un=20conteneur=20personnalis?= =?UTF-8?q?=C3=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../logiciels/container/custum_apptainer.md | 66 +++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 docs/arch_exp/turpan/logiciels/container/custum_apptainer.md diff --git a/docs/arch_exp/turpan/logiciels/container/custum_apptainer.md b/docs/arch_exp/turpan/logiciels/container/custum_apptainer.md new file mode 100644 index 00000000..6a7bdee7 --- /dev/null +++ b/docs/arch_exp/turpan/logiciels/container/custum_apptainer.md @@ -0,0 +1,66 @@ +--- +title: Créer un conteneur +sidebar_position: 3 +--- + +Le plus simple est de partir d’un [des conteneurs disponible](./list_containers.md). + +Les commandes pour créer l’environnement apptainer depuis l’image du conteneur nommés ici « X » ( où X peut être n'importe lequel des conteneurs disponibles): + +```shell +cd /work/conteneurs/ +apptainer build --sandbox mon_conteneur/ /work/conteneurs/sessions-interactives/x.sif + +# Create necessary directory +mkdir mon_conteneur/users mon_conteneur/tmpdir mon_conteneur/work +``` + + +## Accéder au conteneur : deux cas à distinguer +Il est important de prendre en compte les éléments suivants lors de l'accès à un conteneur : + +* Si vous souhaitez installer des paquets nécessitant un accès à Internet, vous devez lancer le conteneur depuis nœud frontal, c’est-à-dire à l’endroit où se trouve le répertoire contenant le conteneur. + ```shell + apptainer shell --fakeroot --writable mon_conteneur/ + ``` + +* Si vous avez besoin d’effectuer des compilations ou des tâches lourdes en utilisant un nœud de calcul (par exemple via une soumission SLURM) pour accéder au conteneur. + ```shell + srun -p shared -n 1 --gres=gpu:1 --pty apptainer shell --fakeroot --writable /work/conteneurs/calmip/ mon_conteneur/ + ``` + +**Maintainant vous pouvez installer ou compiler tous les paquets nécessaires.** + +## Accès aux fichiers locaux dans le conteneur +Si vous avez besoin de fichiers de votre espace personnel et que vous souhaitez les utiliser dans le conteneur : +```shell +apptainer shell --fakeroot --writable --bind path/to/file/:/tmpdir mon_conteneur/ +``` +Depuis l’intérieur du conteneur, copiez les fichiers depuis /tmpdir vers un autre répertoire tel que /work ou /users, afin de les rendre disponibles dans votre conteneur. + +## Utiliser des binaires installés sur Turpan +Pour inclure un binaire déjà installé sur Turpan, commencez par identifier le module avec la commande `module show name` qui indiquera le chemin vers le binaire du module. + +Ensuite, pour l’utiliser dans le conteneur. +```shell +apptainer shell --fakeroot --writable --bind path/to/binary/:/tmpdir mon_conteneur/ +``` +Une fois le chemin monté (bindé) dans le conteneur, copiez le fichier depuis `/tmpdir` vers `/usr/local/` à l’intérieur du conteneur. + +## Créer l'image +Puis une fois les modifications faites, il faut construire l’image et éventuellement faire le ménage : +```shell +apptainer build mon_conteneur.sif mon_conteneur/ +# A faire uniquement tout a la fin une fois que l'image est définitive pour libérer la place +apptainer cache clean +``` +:::tip Note +Si vous avez construit un conteneur personnalisé, merci de nous communiquer son chemin ainsi que les paquets ajoutés, afin que nous puissions l’inclure dans la liste des conteneurs disponibles. +::: + +## Le conteneur avec Jupyter Notebook +Enfin, pour lancer le conteneur que vous avez créé avec un Jupyter Notebook, vous pouvez procéder comme suit : +```shell +runJupyterSession.sh --container custom --containerpath /work/conteneurs/calmip/mon_conteneur.sif +``` +