Chargez les données à l'aide de Petastorm
Cet article décrit comment utiliser Petastorm pour convertir les données d'Apache Spark vers TensorFlow ou PyTorch. Il fournit également un exemple montrant comment utiliser Petastorm pour préparer les données pour le ML.
Le package petastorm est obsolète. Mosaic Streaming remplace avantageusement le chargement de grands datasets depuis le stockage cloud.
Petastorm est une bibliothèque d'accès aux données open source. Il permet l'entraînement et l'évaluation en nœud unique ou distribué de modèles de deep learning directement à partir de datasets au format Apache Parquet et de datasets déjà chargés en tant que DataFrames Apache Spark. Petastorm prend en charge les frameworks de Machine Learning (ML) populaires basés sur Python, tels que TensorFlow, PyTorch et PySpark. Pour plus d'informations sur Petastorm, consultez la documentation de l'API Petastorm.
Charger les données de Spark DataFrames à l’aide de Petastorm
L'API de convertisseur Petastorm Spark simplifie la conversion des données de Spark vers TensorFlow ou PyTorch. Le DataFrame Spark d'entrée est d'abord matérialisé au format Parquet, puis chargé comme un tf.data.Dataset ou torch.utils.data.DataLoader.
Consultez la section API Spark Dataset Converter dans la documentation de l'API Petastorm.
Le workflow recommandé est :
- Utilisez Apache Spark pour charger et éventuellement prétraiter les données.
- Utilisez la méthode
spark_dataset_converterPetastorm pour convertir les données d'un Spark DataFrame en un TensorFlow Dataset ou un PyTorch DataLoader. - Alimenter un framework DL en données pour l'entraînement ou l'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 de cache doit être un chemin DBFS commençant par file:///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():Pythonfrom petastorm.spark import SparkDatasetConverter, make_spark_converter
spark.conf.set(SparkDatasetConverter.PARENT_CACHE_DIR_URL_CONF, 'file:///dbfs/...')
Vous pouvez soit explicitement supprimer le cache après l'avoir utilisé en appelant converter.delete(), soit le gérer implicitement en configurant les règles de cycle de vie dans votre stockage d'objets.
Databricks prend en charge la formation DL dans trois scénarios :
- Entraînement sur nœud unique
- Ajustement distribué des hyperparamètres
- Formation distribuée
Pour des exemples de bout en bout, consultez les Notebooks suivants :
- Simplifiez la conversion des données de Spark à TensorFlow.
- Simplifier la conversion des données de Spark à PyTorch
Charger des fichiers Parquet directement à l'aide de Petastorm
Cette méthode est moins privilégiée que l'API du convertisseur Petastorm Spark.
Le workflow recommandé est :
- Utilisez Apache Spark pour charger et éventuellement prétraiter les données.
- Enregistrez les données au format Parquet dans un chemin DBFS qui possède un point de montage DBFS compagnon.
- Chargez les données au format Petastorm via le point de montage DBFS.
- Utilisez les données dans un framework DL pour l'entraînement ou l'inférence.
Voir l'exemple de notebook pour un exemple de bout en bout.
Exemples : Prétraiter les données et entraîner les modèles avec TensorFlow ou PyTorch
Ce notebook d'exemple illustre le workflow suivant sur Databricks :
- Charger des données avec Spark.
- Convertissez le Spark DataFrame en un TensorFlow Dataset à l’aide de Petastorm.
- Alimentez les données dans un modèle TensorFlow à nœud unique pour l'entraînement.
- Alimentez les données dans une fonction de réglage distribué des hyperparamètres.
- Alimentez les données dans un modèle TensorFlow distribué pour l'entraînement.
Simplifier la conversion des données de Spark vers un notebook TensorFlow
Ce notebook d'exemple illustre le workflow suivant sur Databricks :
- Charger des données avec Spark.
- Convertissez le Spark DataFrame en PyTorch DataLoader à l'aide de Petastorm.
- Alimentez les données dans un modèle PyTorch à nœud unique pour l'entraînement.
- Alimentez les données dans une fonction de réglage distribué des hyperparamètres.
- Alimentez les données dans un modèle PyTorch distribué pour l'entraînement.
Simplifiez la conversion des données de Spark vers le Notebook PyTorch
Exemple : Prétraiter les données et charger les fichiers Parquet avec Petastorm
Ce Notebook d’exemple vous présente le workflow suivant sur Databricks :
- Utilisez Spark pour charger et prétraiter les données.
- Enregistrez les données au format Parquet sous
dbfs:/ml. - Charger les données à l'aide de Petastorm via le montage FUSE optimisé
file:/dbfs/ml. - Introduire des données dans un cadre de deep learning pour l'entraînement ou l'inférence.