La versionnage des données est la pratique consistant à suivre et à gérer les modifications apportées aux ensembles de données au fil du temps, garantissant la reproductibilité et la traçabilité dans les flux de travail d'apprentissage automatique. Elle applique aux actifs de données les principes du contrôle de version logiciel, permettant aux équipes d'enregistrer quelles données ont été utilisées, quand elles ont été modifiées et par qui, ce qui est essentiel pour auditer le comportement des modèles et déboguer des résultats inattendus.
Dans apprentissage automatique, les modèles ne sont fiables qu'à la hauteur des données sur lesquelles ils sont entraînés. Contrairement au code, qui évolue par des commits discrets, les ensembles de données évoluent par des ajouts, des suppressions, des corrections et des transformations. Sans versionnage systématique, un modèle entraîné sur un instantané de données ne peut pas être comparé de manière fiable à un autre entraîné sur une version ultérieure, ce qui entraîne des expériences non reproductibles et des difficultés à diagnostiquer les régressions de performance.
Principes fondamentaux
Les systèmes de versionnage des données capturent généralement trois éléments : le contenu de l'ensemble de données, ses métadonnées (telles que le schéma, la provenance et les étapes de prétraitement) et la lignée reliant chaque version à ses prédécesseurs. Une version est souvent identifiée par un hachage du contenu des données, garantissant que toute modification, aussi minime soit-elle, produit un identifiant distinct. Cette approche basée sur le hachage reflète la manière dont git gère les commits de code, mais elle est adaptée aux grands fichiers binaires et aux données structurées.
Les opérations clés incluent la validation d'un nouvel instantané, la création de branches pour explorer des pipelines de prétraitement alternatifs et la fusion de modifications provenant de plusieurs contributeurs. Les systèmes prennent également en charge le marquage, qui désigne une version spécifique comme significative, par exemple celle utilisée pour une version de modèle en production. Cela permet de revenir à un état connu et fiable si un ensemble de données plus récent introduit des erreurs.
Rôle dans la reproductibilité
La reproductibilité dans la recherche en intelligence artificielle exige que les expériences puissent être relancées avec des entrées identiques. Le versionnage des données fournit le mécanisme pour recréer les ensembles d'entraînement et de validation exacts utilisés dans un résultat publié. Par exemple, une équipe du laboratoire d'IA de Stanford pourrait publier un modèle avec une référence à une version spécifique de l'ensemble de données, permettant à d'autres de vérifier les résultats sans ambiguïté.
En pratique, cela implique de stocker non seulement les données brutes, mais aussi les scripts de transformation et leurs paramètres. Un ensemble de données versionné inclut souvent un fichier manifeste listant chaque fichier et sa somme de contrôle, ainsi que l'environnement dans lequel il a été traité. Ce niveau de détail aide à distinguer les changements causés par des mises à jour de données de ceux causés par des modifications de code.
Outils et intégration
Plusieurs outils open source ont émergé pour répondre au versionnage des données, notamment DVC (Data Version Control), Delta Lake et Pachyderm. DVC s'intègre aux dépôts git, stockant les métadonnées dans le dépôt tout en conservant les grands fichiers de données dans un stockage distant tel que Amazon Web Services S3 ou des compartiments Google Cloud. Delta Lake, développé par les créateurs d'Apache Spark, ajoute des transactions ACID et le voyage dans le temps aux lacs de données, permettant des requêtes sur des versions historiques.
Ces outils s'intègrent souvent à MLflow pour le suivi des expériences et aux pipelines CI/CD pour automatiser la validation des nouvelles versions de données. Dans les environnements d'entreprise, le versionnage est combiné à des contrôles d'accès pour garantir que seuls les utilisateurs autorisés peuvent modifier les ensembles de données, ce qui est important pour la conformité avec des réglementations comme le RGPD.
Défis et bonnes pratiques
Un défi principal est le surcoût de stockage, car chaque version peut consommer un espace disque important. Des techniques telles que la déduplication et l'encodage delta, qui stockent uniquement les changements plutôt que des copies complètes, atténuent ce problème. Une autre question est la gestion des données non tabulaires comme les images ou l'audio, où les différences binaires sont moins significatives ; ici, le versionnage repose souvent sur le hachage au niveau des fichiers.
Les bonnes pratiques incluent la validation des versions de données avant chaque session d'entraînement, la documentation des raisons des modifications et l'utilisation d'un versionnage sémantique (par exemple, 1.2.0) pour communiquer l'impact des mises à jour. Les équipes devraient également automatiser la capture des versions d'ensembles de données dans les journaux d'expériences, reliant chaque point de contrôle de modèle à sa source de données exacte. Cette discipline est particulièrement importante dans les secteurs réglementés comme la santé et la finance, où les pistes d'audit sont obligatoires.
Orientations futures
À mesure que les modèles de apprentissage profond gagnent en échelle, le versionnage des données évolue pour gérer les données en flux et les scénarios d'apprentissage continu. Les outils commencent à prendre en charge le versionnage des pipelines de données eux-mêmes, et pas seulement des instantanés statiques. Il existe également un intérêt croissant pour l'utilisation de données versionnées pour le débogage de modèles, par exemple pour identifier quels changements de données ont provoqué un décalage dans les performances des fonctions de perte.
Des groupes de recherche comme Berkeley AI Research et Carnegie Mellon University explorent des contrôles automatisés de qualité des données exécutés sur chaque nouvelle version, signalant les anomalies avant qu'elles ne se propagent à l'entraînement. Ces avancées visent à faire du versionnage des données une partie intégrante du cycle de vie de l'apprentissage automatique, réduisant la charge manuelle qui limite actuellement son adoption.