Utiliser des conteneurs Apptainer sur KAIROS

Vous pouvez déployer vos applications via des conteneurs Apptainer (anciennement Singularity) sur Kairos.

Kairos dispose de deux architectures de calcul :

  • x86
  • arm64 

Apptainer est disponible sur les deux architectures. Il est cependant impératif d’utiliser un conteneur construit pour la même architecture que le nœud de calcul sur lequel il est exécuté.

Utilisation d'Apptainer

Pour être utilisables, les conteneurs doivent obligatoirement être stockés dans un sous-répertoire de :

/work/conteneurs

Si vous ne disposez pas encore d’un répertoire personnel, contactez le support afin qu’il soit créé.

Merci de réserver l’utilisation des conteneurs sur les frontales de connexion à des opérations légères uniquement : shell interactif ; installation de paquets Python ; vérification du contenu d’un conteneur ; tests rapides.

Construction de conteneurs 

Pour les conteneurs x86 vous pouvez construire vos conteneurs directement depuis les frontales de connexion à l’aide de la commande :

apptainer build mon_conteneur.sif mon_conteneur.def

Pourl es conteneurs arm64 vous devez d'avord vous conecter sur un noeud GH à l'aide de la commande:

runGHsession.sh

puis :

apptainer build mon_conteneur.sif mon_conteneur.def

Exécuter une application présente dans le conteneur :

Depuis un script Slurm :

apptainer run /work/conteneurs/<projet>/<user>/mon_conteneur.sif

Exécuter une commande à l’intérieur du conteneur

Par exemple pour lancer un script Python :

apptainer exec --nv /work/conteneurs/<projet>/<user>/mon_conteneur.sif python mon_script.py

L’option --nv est nécessaire uniquement lorsque le conteneur utilise un GPU NVIDIA.

Ouvrir un shell dans le conteneur

Pour vérifier le contenu du conteneur et faire des essais ou des installations particulières sur la frontale :

apptainer shell /work/conteneurs/<projet>/<user>/mon_conteneur.sif

Pour faire des essais en interactif sur un noeud de calcul (lance un shell dans le conteneur sur un noeud) :

srun -n 1 -p shared --pty apptainer shell /work/conteneurs/<projet>/<user>/mon_conteneur.sif

Accéder à mes données sur les espaces de stockage depuis le conteneur

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 : 

--bind /tmpdir,/work

Exemple :

apptainer exec --bind /tmpdir,/work /work/conteneurs/<projet>/<user>/mon_conteneur.sif python mon_script.py

Exemples de conteneurs disponibles

Plusieurs conteneurs sont déjà installés sur Kairos.

Conteneurs arm64

Ne peuvent être exécutés que sur les nœuds arm64.

/work/conteneurs/shared/AI/nemo_25.04.03_arm.sif
/work/conteneurs/shared/alphafold3/alphafold3.sif

Conteneurs x86

Ne peuvent être exécutés que sur les nœuds x86.

/work/conteneurs/shared/openqp/openqp_v1.0.sif

Compatibilité des architectures

Un conteneur arm64 ne peut pas être exécuté sur un nœud x86, et inversement.

Par exemple, lancer un conteneur arm64 sur un nœud x86 produit l’erreur suivante :

kairoslogin1$ apptainer shell /work/conteneurs/shared/alphafold3/alphafold3.sif
FATAL: While checking container encryption:
could not open image /work/conteneurs/shared/alphafold3/alphafold3.sif: the image's architecture (arm64) could not run on the host's (amd64)

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 pour un conteneur arm64 :

# Se placer dans un noeud arm
runGHsession.sh

# Ajout du dépôt Sylabs
apptainer remote add --no-login SylabsCloud cloud.sycloud.io
apptainer remote use SylabsCloud

# Se placer dans son répertoire de conteneurs
cd /work/conteneurs/$GROUP/$USER

# Téléchargement d'une image ARM64
apptainer pull --arch arm64 library://library/default/lolcow:latest

Pour une image x86 :

apptainer pull --arch amd64 library://library/default/lolcow:latest

Pour tester :

apptainer run /work/conteneurs/$GROUP/$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

Pour des raisons de sécurité, l'exécution de conteneurs en mode privilégié (setuid) n'est pas autorisée sur Kairos. Dans de rares cas, cela peut empêcher l'utilisation de certaines options d'apptainer

Voir aussi

Se connecter

Lancer et suivre un calcul

Les espaces de stockage et jeux de données

Environnements logiciels