Reproducibilité & Experiment Tracking
La reproductibilité est le talon d’Achille du machine learning. Deux chercheurs qui entraînent le même modèle avec le même code peuvent obtenir des résultats différents — et parfois, ne pas pouvoir reproduire leurs propres résultats six mois plus tard.
Les coupables sont multiples : seed non fixée, opérations GPU non-déterministes (scatter-add atomique), versions de bibliothèques différentes, hyperparamètres non documentés. Le problème est si grave que des conférences comme NeurIPS et ICML exigent désormais une checklist de reproductibilité.
La solution est double. D’abord, fixer l’aléatoire : torch.manual_seed(), numpy.random.seed(), et surtout torch.use_deterministic_algorithms(True) qui force CUDA à utiliser des implémentations déterministes (au prix de ~30% de performance). Ensuite, tracker les experiments : Weights & Biases (2018) est devenu le standard — chaque run est loggé avec ses hyperparamètres, ses métriques, ses artefacts, et son environnement.
Pour les données et les pipelines, DVC (Data Version Control, 2017) versionne les datasets comme Git versionne le code. Hydra (2019) permet de composer des configurations YAML avec override en ligne de commande. Et PyTorch Lightning encapsule le checkpointing, le logging, et la reproductibilité dans un trainer unique — plus besoin de réécrire la boucle d’entraînement pour chaque projet.
| Outil | Année | Concept |
|---|---|---|
| Seed + manual | — | torch.manual_seed(42) — basique mais insuffisant |
| Sacred | 2017 | Configuration + logging + seed management |
| MLflow | 2018 | Experiment tracking + model registry (Databricks) |
| Weights & Biases | 2018 | Dashboard cloud, collaboratif, hyperparameter search |
| Neptune | 2019 | Experiment tracking, metadata management |
| Comet | 2019 | Experiment tracking, model monitoring |
| DVC (Data Version Control) | 2017 | Git-like pour datasets + pipelines |
| Hydra (OmegaConf) | 2019 | Configuration composable (YAML override) |
| PyTorch Lightning | 2019 | Trainer modulaire, checkpointing, logging intégré |
| Gradio | 2020 | Démo ML rapide, partage via URL |
| Seed-fixing pour CUDA | 2022 | torch.use_deterministic_algorithms(True) — reproductibilité GPU |
Problème ouvert : Les opérations atomiques GPU (scatter-add, accumulate) sont non-déterministes. Avoir exactement les mêmes poids après entraînement GPU nécessite torch.use_deterministic_algorithms(True) + CUBLAS_WORKSPACE_CONFIG + seed fixe — mais ralentit de ~30%.
← Differential Privacy • 41 • Datasets de Référence par Domaine →