Skip to content

Créer des dépôts de données pour le machine learning

Les dépôts de données (ou data repositories) jouent un rôle crucial en MLOps pour centraliser, organiser et sécuriser les données, assurant leur accessibilité pour l’entraînement, la validation et l’évaluation des modèles. Voici comment créer des dépôts de données robustes pour des applications de machine learning sur AWS, Azure, et d’autres plateformes adaptées.

1. Comprendre le rôle des dépôts de données pour le machine learning

Les dépôts de données centralisent les ensembles de données, permettent leur versionnage et offrent des structures de stockage optimisées pour le machine learning. Ils facilitent aussi le partage des données, la reproductibilité des expériences, et la gestion des autorisations.

2. Créer un dépôt de données sur AWS

a) Stockage de données avec Amazon S3

Amazon S3 (Simple Storage Service) est un service de stockage d’objets hautement scalable et adapté au machine learning pour stocker des données brutes, des fichiers transformés et des artefacts de modèles.

  1. Créer un bucket S3 :

    • Allez dans la console S3, cliquez sur Create bucket, nommez le bucket (unique dans AWS), et choisissez une région proche de votre infrastructure ML pour réduire la latence.
  2. Organiser les données dans des dossiers structurés (par exemple, train/, validation/, test/).

  3. Configurer les autorisations d’accès :

    • Utilisez les permissions IAM pour donner des accès spécifiques aux utilisateurs et services de votre équipe MLOps.
    • Activez S3 Object Versioning pour conserver l’historique des versions de chaque fichier.
  4. Accéder à S3 depuis SageMaker :

    • Pour charger les données dans SageMaker, vous pouvez pointer vers S3 comme source de données d’entraînement.

    Exemple :

    import sagemaker
    from sagemaker.inputs import TrainingInput
    s3_input = TrainingInput("s3://my-bucket/path-to-data/", content_type="csv")

b) Catalogue de données avec AWS Glue Data Catalog

AWS Glue Data Catalog permet de gérer les métadonnées des jeux de données et facilite leur recherche et leur utilisation.

  1. Cataloguer les jeux de données en utilisant Glue, en automatisant la détection des schémas pour chaque source de données stockée dans S3.
  2. Rechercher et analyser les jeux de données en interrogeant le catalogue avec AWS Athena ou en les utilisant dans les notebooks SageMaker.

3. Créer un dépôt de données sur Azure

a) Azure Blob Storage pour stocker des données ML

Azure Blob Storage est le service de stockage d’objets d’Azure, comparable à S3, qui permet de stocker de grandes quantités de données non structurées pour les applications ML.

  1. Créer un container Blob Storage :

    • Accédez à Azure Storage Account, créez un compte de stockage, puis un container (similaire à un bucket).
  2. Structurer et organiser les données en créant des dossiers et sous-dossiers.

  3. Gérer les autorisations d’accès avec Azure RBAC (Role-Based Access Control) pour définir les autorisations aux niveaux des utilisateurs et services ML.

  4. Utiliser les données dans Azure ML :

    • Dans Azure Machine Learning, vous pouvez monter le Blob Storage dans des notebooks ou pipelines d’entraînement, en utilisant par exemple Dataset.File.from_files() pour récupérer les fichiers du Blob.

b) Data Catalog avec Azure Purview

Azure Purview est un service de gouvernance de données qui vous permet de cataloguer et de gérer les métadonnées de vos jeux de données.

  1. Scanner et cataloguer les jeux de données dans Azure Blob Storage avec Purview.
  2. Ajouter des métadonnées pour chaque dataset, et activer les fonctionnalités de recherche et de gouvernance des données.

4. Utiliser des solutions multiplateformes pour les dépôts de données

Si vous avez des besoins de stockage multi-cloud ou on-premise, des outils comme Hugging Face Datasets, DVC (Data Version Control), ou Delta Lake offrent des solutions adaptées.

a) DVC pour le versionnage de données

DVC (Data Version Control) est un outil open source permettant de versionner les données, en les stockant sur des services de stockage comme S3 ou Azure Blob, tout en suivant leur historique de versions localement avec Git.

  1. Initialiser DVC dans le projet :
    Terminal window
    dvc init
  2. Ajouter un fichier de données à DVC et définir son emplacement de stockage distant (S3, Azure Blob, ou Google Cloud Storage) :
    Terminal window
    dvc remote add -d myremote s3://mybucket/path/
    dvc add data/raw-dataset.csv
    dvc push

b) Hugging Face Datasets

Hugging Face Datasets est une bibliothèque permettant d’accéder à de nombreux jeux de données ML et de gérer des dépôts de données multi-utilisateurs pour des cas ML spécifiques.

  1. Utiliser des datasets publics : Téléchargez et préparez des jeux de données disponibles directement dans votre environnement.
    from datasets import load_dataset
    dataset = load_dataset("dataset_name")
  2. Stocker et partager vos jeux de données personnalisés en les hébergeant sur la plateforme Hugging Face pour collaborer avec d’autres équipes.

5. Meilleures pratiques pour la gestion des dépôts de données

  • Mettre en place un contrôle des versions des données pour garantir la reproductibilité des modèles. Les outils comme DVC ou Delta Lake (si vous utilisez Apache Spark) permettent un suivi efficace.
  • Structurer les dossiers pour que chaque étape (entraînement, validation, test) soit bien définie, facilitant ainsi l’utilisation des données dans les pipelines ML.
  • Gérer les autorisations d’accès en suivant les principes de moindre privilège avec IAM (AWS) ou Azure RBAC.
  • Automatiser les mises à jour des dépôts de données en utilisant des pipelines d’ingestion pour récupérer les nouvelles données en continu.

Conclusion

En utilisant des services comme Amazon S3 et Glue, Azure Blob Storage et Purview, ou des outils indépendants comme DVC, vous pouvez mettre en place des dépôts de données robustes et optimisés pour les workflows MLOps. Ces solutions permettent une gestion efficace des données, assurent leur accessibilité et facilitent la collaboration, tout en garantissant la reproductibilité des projets machine learning.