Singularity¶
Pour diverses raisons, nous ne pouvons pas utiliser docker
dans nos machines ou dans une grille de calcul en général.
Le programme singularity
est une alternative à docker
qui permet à des utilisateurs sans privilèges de faire tourner des conteneurs.
Création d'un conteneur¶
Il y a 2 méthodes pour créer des conteneurs, la première étant à partir d'un docker déjà existant et l'autre qu'on construit soi-même à partir d'un fichier de définition.
Une fois construits, ces conteneurs sont immuables alors vous ne pouvez pas y écrire des fichiers de résultats ou y apporter des modificaitons. Toutefois, vous aurez accès à votre compte et vous pourrez y écrire. Vous pouvez aussi ajouter d'autres répertoires si vous avez besoin d'accès spécifiques.
Comme ces images requièrent beaucoup d'espace, il est préférable de les créer sur un disque local à la machine plutôt que dans votre compte. Aussi, lorsque votre conteneur est créé, vous pouvez vider la cache afin de libérer l'espace disque dans votre compte
singularity cache clean
Docker¶
Vous pouvez construire un conteneur singularity à partir d'une image docker et le faire tourner avoir accès à sudo ou à des privilèges élevés.
Par exemple, vous voulez utiliser le conteneur pytorch qui est créé par l'organisme. Vous pouvez construire une image avec la commande:
singularity build pytorch.sif docker://pytorch/pytorch
Fichier def¶
Pour pouvoir créer une image à partir de ce type de fichier, vous devrez avoir un ordinateur personnel avec singularity installé puisque cette méthode requiert des privilèges root que vous n'aurez pas au CIRRELT/GERAD.
Pour créer un conteneur de cette façon, vous pouvez utiliser la commande: singularity build ecole.sif ecole.def
Voici un exemple pour créer un conteneur avec le logiciel SCIP. Vous devez télécharger le logiciel et mettre l'archive quelque part pour pouvoir la copier dans l'image. La version utilisée dans cet exemple n'est pas la version la plus récente mais sert à illustrer le processus.
Utilisation d'un conteneur¶
Pour utiliser le conteneur, vous pouvez ensuite faire
singularity shell pytorch.sif
Vous aurez alors accès aux outils qui y sont installés.
Si vous êtes sur une machine GPU et que vous voulez y accéder dans le conteneur, vous devez utiliser l'option --nv
.