Tutoriel Guix - Compas 2023
Résumé

Table of Contents

Vers une étude scientifique expérimentale reproductible avec Guix

Dans le domaine de l'informatique, reproduire une étude scientifique peut s'avérer très complexe. L'un des plus grands défis est de recréer le même environnement logiciel. Celui-ci est souvent construit à la main ou à l'aide des modules [1], notamment sur les plateformes de calcul. Le principal souci de cette approche est que les modules ainsi que les instructions de construction changent d'une machine à l'autre en fonction de la configuration système et des logiciels disponibles. Certains gestionnaires de paquets tels que Spack [2] permettent de définir ses propres variantes de paquets utilisant la configuration, les dépendences ou le compilateur de notre choix. Cependant, étant dépendants des compilateurs et autres composants fournis pas le système d'exploitation sous-jacent, la reproductibilité des environnements logiciels résultants reste menacée. De ce point de vue, les solutions de conteneurisation telles que Singularity [3] ou Docker [4] sont plus robustes mais elles ne facilitent ni la mise à jour, ni la gestion de plusieurs variantes d'un environnement logiciel. En effet, pour adapter un conteneur existant il faut soit reconstruire le conteneur entier, soit le modifier interactivement ce qui, en fin de compte, va à l'encontre de l'effort accordé à la reproductibilité.

Notre but est surmonter ces difficultés et d'être capable de générer des environnements logiciels sur lesquels nous avons le contrôle absolu et que nous pouvons adapter et reproduire facilement. À cette fin, nous proposons d'explorer l'utilisation de Guix [5][6]. Dans ce tutoriel, après un bref tour de Guix, de Nix et d'autres solutions possibles, nous partirons d'une étude expérimentale existante dont l'environnement logiciel peut être construit manuellement, à l'aide des modules ou d'un conteneur Singularity. Les participant·es apprendront les bases d'utilisation de Guix et pourront constater ses avantages par rapport aux solutions exposées ci-dessus. On utilisera ensuite Guix pour améliorer la reproductibilité de cette étude scientifique. À la fin de la session, les participant·es devraient avoir construit un répertoire Git autonome reprenant la même étude mais gérant l'environnement logiciel avec Guix. Le but ultime est de pouvoir reproduire la totalité de l'étude sur son ordinateur en rejouant l'ensemble des expériences, en post-traitant les résultats et en produisant l'article scientifique associé.

Public cible

Ce tutoriel s'adresse à des scientifiques et ingénieur·es ayant besoin d'environnements logiciels reproductibles, que ce soit pour des expériences en calcul intensif (HPC), pour arriver à des résultats de recherche reproductibles, ou pour partager des environnements de développement.

Une connaissance de base de GNU/Linux est requise : processus, ligne de commande, installation de logiciels.

Prérequis

Les travaux pratiques pourront se dérouler :

  • sur les portables des personnes participant, à condition qu'elles y aient installé GNU Guix version 1.4.0 au préalable en suivant les instructions ; il faudra prévoir environ 20 Go d'espace libre sur la partition racine « / » (root) pour l'environnement logiciel de l'étude expérimentale;
  • sur une machine de calcul qui sera rendue accessible aux participant·es en SSH ; il faudra donc dans ce cas disposer d'un client SSH et savoir l'utiliser.

Références

[1]
J. L. Furlani, “Providing a flexible user environment,” in Proceedings of the fifth large installation syst. administration (lisa v), 1991, pp. 141–152 [Online]. Available: http://modules.sourceforge.net/docs/Modules-Paper.pdf
[2]
T. Gamblin et al., “The Spack Package Manager: Bringing Order to HPC Software Chaos,” 2015, doi: 10.1145/2807591.2807623 [Online]. Available: https://github.com/spack/spack
[3]
G. M. Kurtzer, V. Sochat, and M. W. Bauer, “Singularity: Scientific containers for mobility of compute,” PLOS ONE, vol. 12, no. 5, pp. 1–20, 2017, doi: 10.1371/journal.pone.0177459. [Online]. Available: https://doi.org/10.1371/journal.pone.0177459
[4]
D. Merkel, “ Docker: Lightweight Linux Containers for Consistent Development and Deployment ,” Linux journal, vol. 2014, no. 239, Mar. 2014.
[5]
L. Courtès and R. Wurmus, “Reproducible and user-controlled software environments in HPC with Guix,” in Euro-par 2015: Parallel processing workshops, 2015, pp. 579–591 [Online]. Available: https://hal.inria.fr/hal-01161771/en
[6]
N. Vallet, D. Michonneau, and S. Tournier, “Toward practical transparent verifiable and long-term reproducible research using Guix,” Nature scientific data, vol. 9, 2022, doi: 10.1038/s41597-022-01720-9.

Date: May 05, 2023 | 16:25:03

Author: Ludovic Courtès, Marek Felšöci

Email: ludovic.courtès@inria.fr, marek.felsoci@inria.fr

Emacs 28.2 (Org mode 9.6.3)

Validate