Sujet : reproducibility
-
Consigner une observation HTTP bornée
Une méthode concise pour consigner une observation HTTP unique, afin qu'une autre personne contributrice puisse la reproduire sans exposer d'identifiants ni de données privées.
-
Génération procédurale avec des flux aléatoires reproductibles
Gardez explicites les seeds du monde, les flux par sous-système, l'ordre des tirages et les versions du générateur, afin que le contenu procédural reste reproductible même lorsque la génération devient parallèle ou évolue.
-
Garder l'IC et les vérifications locales identiques : un point d'entrée unique, des outils figés, le même conteneur
Une vérification qui passe en local devrait passer en IC et inversement : définir chaque vérification une seule fois comme une tâche nommée, figer la chaîne d'outils dans un manifeste versionné à partir duquel l'amorçage et le pipeline installent tous deux, exécuter l'IC dans la même image de conteneur que l'environnement de développement, fixer la locale et le fuseau horaire, et traiter tout échec propre à l'IC comme un bug de parité à éliminer avant de corriger le symptôme.
-
Reproductibilité d'une expérience d'apprentissage automatique : graines, environnement, données et limites du déterminisme
Relancer une expérience et obtenir le même chiffre exige des états aléatoires fixés et transmis explicitement, des versions de bibliothèques figées, un jeu de données et un découpage identifiés, ainsi que la conscience que les noyaux GPU et les nouvelles versions de bibliothèques peuvent quand même changer les résultats ; le protocole rend les exécutions reproductibles là où c'est possible et documente les cas où cela ne l'est pas.
-
Provenance et versionnage pour les petits jeux de données
Garder les données brutes immuables, avec des sommes de contrôle et une origine consignée, dériver les nouveaux fichiers par des scripts plutôt que par édition, versionner les pointeurs de données avec le code (DVC ou Git LFS), décrire le paquet avec un datapackage.json, et noter la provenance en termes PROV, afin que chaque chiffre d'un rapport se résolve en un commit, une somme de contrôle et un script.
-
Rendre le JSON sérialisé déterministe pour le hachage
Définir un contrat de sérialisation étroit avant de hacher du JSON, et distinguer une sortie Python reproductible d'un JSON canonique interlangage.
-
Figer les dépendances NuGet : PackageReference, gestion centralisée des paquets et packages.lock.json
NuGet résout la version applicable la plus basse de chaque paquet au moment de la restauration, si bien qu'une restauration peut dériver quand de nouvelles versions ou des plages flottantes apparaissent ; une build reproductible déclare les versions une seule fois dans Directory.Packages.props, active RestorePackagesWithLockFile pour que packages.lock.json enregistre la fermeture transitive complète, versionne le fichier de verrouillage pour les applications, et restaure avec --locked-mode en intégration continue.
-
Préenregistrer une petite expérience avant de consulter les données
Consigner par écrit l'hypothèse, le critère de résultat principal, l'échantillon et la règle d'arrêt, les exclusions et le plan d'analyse, puis committer ou enregistrer le document avec un horodatage avant de recueillir ou de consulter les données ; rendre compte en premier de l'analyse prévue et qualifier tout le reste d'exploratoire.
-
Tenir un carnet pour les petites expériences : un protocole générique
Chaque exécution de benchmark, essai de configuration ou test A/B reçoit une entrée datée et en ajout seul, rédigée avant et après l'exécution : question, résultat attendu, configuration exacte avec versions et sommes de contrôle, sorties brutes, et une interprétation tenue à part de l'observation, de sorte que tout chiffre cité puisse être retracé et rejoué.
-
Versionner un modèle entraîné : l'artefact avec le code, les données, les paramètres et l'environnement qui l'ont produit
Un fichier de modèle seul ne peut être reproduit, audité ou remplacé en toute sécurité ; le versionner comme un enregistrement qui relie l'artefact sérialisé au commit de code, à la version du jeu de données, aux hyperparamètres, aux métriques sur le sous-ensemble de test fixe et aux versions exactes des dépendances, et promouvoir les versions par des alias plutôt qu'en écrasant un fichier.
Lisible par machine : JSON