Formationn Singularity
Formation et accompagnement au Calcul, au Cloud et à Kubernetes, Montpellier 2022
Singularity
Mesocentre
Bienvenue à l'atelier Singularity, notre but est de vous donner un aperçu de ce qu'il est possible de faire avec les images Singularity.
Quick start: https://docs.sylabs.io/guides/3.9/user-guide/quick_start.html
- Vous allez découvrir comment créer une image, la lancer simplement et aller un peu plus loin dans son utilisation. Suivant votre avancée dans l'utilisation de Singularity, vous pourrez naviguer sur les différents TPs proposés.
-
Voici un tutoriel officiel pour démarrer avec singularity sylabs.io user-guide
-
Documentation Singularity singularity hub doc
-
Lien vers les dépos d'images Singularity des packages conda galaxyproject
-
Lien vers exemples de recettes et d'images Singularity sur la forgemia (utilisation CI/CD) https://forgemia.inra.fr/gafl/singularity
Pré-requis :
Local: Un Linux ou une vm Linux basée sur Debian.
Remote: Une machine virtuelle Linux a été créée sur le SI INRAE de Montpellier accessible via ssh:
ssh <mylogin>@195.221.108.97
Il vous faut donc un client SSH capable de s'y connecter. Sous Windows, vous pouvez utiliser l'utilitaire: MobaXTerm ou Putty
Sous Linux et Mac, SSH est disponible sur votre OS à l'aide du terminal.
Pour le TP9 exemple de container avec une application X11, vous pouvez utiliser x2go client ou MobaXTerm
Tous les fichiers mentionnés dans les TP sont disponibles sur le Gitlab de la forgeMIA: atelier-singularity Vous pouvez également en faire un clone sur votre espace de travail (conseillé):
git clone https://forgemia.inra.fr/pepi-atelier-singularity/atelier-singularity.git
Singularity_introduction.adoc
Pour une brève introduction:Singularity on the forgemia: https://forgemia.inra.fr/singularity GAFL Avignon: https://forgemia.inra.fr/gafl/singularity Inter-Cati-omics: https://forgemia.inra.fr/inter_cati_omics
TP1 Installation de Singularity
1)Exemple de Singularity version 3.9.2 sur un Debian 11 Vous pouvez retrouver un TP qui explique comment installer Singularity à partir d'une machine linux ou bien d'une VM. Le script shell installe Singularity en 3 étapes:
-
- Installation des dépendences
-
- Go language
-
- compilation et installation de Singularity
TP2 Création et utilisation d'une première image Singularity
2)TP2_R_base, Voici un tutoriel pour apprendre à créer un conntainer en intéractif et à base de "recettes" et lancer des images Singularity. Ce tp permet:
- La contruction en mode intéartif
- La création d'un fichier de recette (exemple R)
- La construction d'une image à partir d'un fichier recette
- L'éxécution d'image Singularity
TP3 Utilisation de CI/CD sur gitlab (continus integration et continus deployment)
3)Permet la création automatique d'images sans passer par une machine Linux: ! Attention Sur la forge mia, la taille maximale d'une image est de 4Go.
TP sur le CI/CD pour les utilisateurs et administrateurs. Création d'un GitLab CI/CD pipeline configuration: ".gilab-ci.yml" Ce tp permet de:
- lancer le build automatiquement
- Un exemple de recette Singularity (R base)
- déployer l'image sur le gitlab de la forge avec OCI (Open container initiative)
- Comment obtenir l'image (pull) en utilisant ORAS: OCI Registry As Storage (https://oras.land/)
TP4 Utilisation du système de packaging Conda dans un container Singularity
4)Conda Conda Getting started L'utilisation de conda encapsulé dans un container permet une installation simplifiée de logiciels versionnés et leur dépendances.
Ce tp permet:
- L'installation de miniconda embarqué dans un container.
- L'installation de packages conda dans un container
TP5 Création d'image pour executer du code MPI
5)Permet d'encapsulé un binaire MPI dans un container.
Et d'éxécuter le binaire dans un environement HPC
!!! Il faut que le mpi à l'intérieur du container soit compabile avec celui de l'hôte.
Ce tp permet:
-
L'installation des libraries OpnMPI
-
La Compilation de code MPI
-
L'éxecution du code MPI
-
L'utilisation dans un environement HPC (avec slurm)
TP6 Réutilisation d'image de bases préconstruites.
6)Utilisation d'une image pré-construite comme base d'un nouveau container.
Permet ainsi la réduction du temps de build du nouveau container.
-
exemple utilisation d'une image pre-built contenant miniconda et "r-essentials.3.6"
-
A partir de cette image nous avons juste à ajouter des packages R
! Attention Il faut que l'image pré-construire suive les bonnes pratiques (versions, documentations,...)
build time sans prebuilt: 8m30s
build time avec prebuilt: 1m05s
TP7 Utilisation du Build multi-Stage.
7)Permet de réduire la taille de l'image finale.
Il y a 2 exemples:
Exemple 1) "Hello World" en Go
-
stage 1 installation de Go lang et compilation du code source
-
stage 2 construction de l'image finale avec seulement le systeme de base et le programme compilé.
Sans multi-stage image finale pèse 122Mo
Avec multi-stage image finale pèse 3.6Mo
Exemple 2) Utilisation de conda Avec R et combine l'utilisation d'unne image pré-construite
-
stage 1 installation de Miniconda et installation de r-essentials dans un connda env
-
stage 2 onn ne garde que l'environement minimal conda R dans l'image finale.
Sans multi-stage image finale pèse 1.1Go
Avec multi-stage image finale pèse 298Mo
TP8 Création d'image pour des Services
8)Exemple de serveur Apache.
Ce TP vous permettra de contruire une image contenant apache2 serveur.
Et de l'utiliser en daemon avec singularity instance.
TP9 Construction et Utilisation d'image avec interface graphique
9)Ce TP vous permettra de construire une image avec unne application graphique (GUI) et de l'exécuter.
Avec pour exemple: Rstudio
Utiliser ssh -X ou x2go client avec un xterm pour l'utiliser
TP10 Conversion de recettes Dockers en recettes Singularity
10)Conversions entre dockerfile et singularity définition file
Exemple avec un dockerfile
[!WARNING]! Attention Prefer to use recipes conversions reather images conversions