Partager via


Charger des données à l’aide de Petastorm

Cet article explique comment utiliser Petastorm convert data d’Apache Spark vers TensorFlow ou PyTorch. Il fournit également un exemple montrant comment utiliser Petastorm pour préparer des données pour Microsoft Azure Machine Learning (ML).

Petastorm est une bibliothèque open source d’accès aux données. Il permet un entraînement distribué ou à nœud unique et l’évaluation de modèles Deep Learning directement à partir de jeux de données au format Apache Parquet ainsi que des jeux de données qui sont déjà chargés en tant que DataFrames Apache Spark. Petastorm prend en charge les frameworks Machine Learning (ML) populaires basés sur Python, tels que TensorFlow, PyTorch et PySpark. Pour plus d’informations sur Petastorm, consultez la Documentation sur l’API Petastorm.

Charger des données à partir de DataFrames Spark avec Petastorm

L’API du convertisseur Petastorm Spark simplifie la conversion des données de Spark vers TensorFlow ou PyTorch. Le DataFrame Spark d’entrée est matérialisé au format Parquet, puis chargé en tant que tf.data.Dataset ou torch.utils.data.DataLoader. Consultez la section API du convertisseur de jeu de données Spark dans la documentation de l’API Petastorm.

Le workflow recommandé est le suivant :

  1. Utilisez Apache Spark pour charger et éventuellement prétraiter les données.
  2. Utilisez la méthode Petastorm spark_dataset_converter pour convertir les données d’un DataFrame Spark en jeu de données TensorFlow ou DataLoader PyTorch.
  3. Alimentez en données un framework DL à des fins d’entraînement ou d’inférence.

Configurer le répertoire de cache

Le convertisseur Petastorm Spark met en cache le DataFrame Spark d’entrée au format Parquet dans un emplacement de répertoire de cache spécifié par l’utilisateur. Le répertoire du cache doit être un chemin DBFS commençant parfile:///dbfs/, par exemple, file:///dbfs/tmp/foo/ qui fait référence au même emplacement que dbfs:/tmp/foo/. Vous pouvez configurer le répertoire de cache de deux manières :

  • Dans la configuration Spark du cluster, ajoutez la ligne : petastorm.spark.converter.parentCacheDirUrl file:///dbfs/...

  • Dans votre notebook, appelez spark.conf.set() :

    from petastorm.spark import SparkDatasetConverter, make_spark_converter
    
    spark.conf.set(SparkDatasetConverter.PARENT_CACHE_DIR_URL_CONF, 'file:///dbfs/...')
    

Vous pouvez soit supprimer explicitement le cache après l’avoir utilisé en appelant converter.delete(), soit gérer le cache de manière implicite en configurant les règles de cycle de vie dans votre stockage d’objets.

Databricks prend en charge l’entraînement DL dans trois scénarios :

  • Entraînement à nœud unique
  • Réglage distribué des hyperparamètres
  • Entraînement distribué

Pour obtenir des exemples de bout en bout, consultez les notebooks suivants :

Charger des fichiers Parquet directement avec Petastorm

Cette méthode est moins recommandée que l’API du convertisseur Petastorm Spark.

Le workflow recommandé est le suivant :

  1. Utilisez Apache Spark pour charger et éventuellement prétraiter les données.
  2. Enregistrez les données au format Parquet dans un chemin DBFS qui a un montage DBFS auxiliaire.
  3. Chargez des données au format Petastorm via le point de montage DBFS.
  4. Utilisez les données dans le framework DL à des fins d’entraînement ou d’inférence.

Pour obtenir un exemple de bout en bout, consultez l’exemple de notebook.

Exemples : Prétraiter des données et entraîner des modèles avec TensorFlow ou PyTorch

Cet exemple de notebook illustre le flux de travail suivant sur Databricks :

  1. Charger des données à l’aide de Spark.
  2. Convertissez le DataFrame Spark en jeu de données TensorFlow à l’aide de Petastorm.
  3. Alimentez les données dans un modèle TensorFlow à nœud unique pour l’entraînement.
  4. Alimentez les données dans une fonction de réglage des hyperparamètres distribuée.
  5. Alimentez les données dans un modèle TensorFlow distribué pour l’entraînement.

Simplification de la conversion des données de Spark vers un notebook TensorFlow

Obtenir le notebook

Cet exemple de notebook illustre le flux de travail suivant sur Databricks :

  1. Charger des données à l’aide de Spark.
  2. Convertissez le DataFrame Spark en un DataLoader PyTorch à l’aide de Petastorm.
  3. Alimentez les données dans un modèle PyTorch à nœud unique pour l’entraînement.
  4. Alimentez les données dans une fonction de réglage des hyperparamètres distribuée.
  5. Alimentez les données dans un modèle PyTorch distribué pour l’entraînement.

Simplification de la conversion des données de Spark vers un notebook PyTorch

Obtenir le notebook

Exemple : Prétraiter des données et charger des fichiers Parquet avec Petastorm

Cet exemple de notebook illustre le flux de travail suivant sur Databricks :

  1. Utiliser Spark pour charger et prétraiter les données.
  2. Enregistrez des données à l’aide de Parquet sous dbfs:/ml.
  3. Chargez des données à l’aide de Petastorm via le montage file:/dbfs/mlFUSE optimisé.
  4. Alimentez en données une infrastructure Deep Learning à des fins d’entraînement ou d’inférence.

Utiliser Spark et Petastorm pour préparer des données pour un notebook Deep Learning

Obtenir le notebook