Gegevens laden met Petastorm
In dit artikel wordt beschreven hoe u Petastorm-gegevens van Apache Spark converteert naar TensorFlow of PyTorch. Het bevat ook een voorbeeld waarin wordt getoond hoe u Petastorm gebruikt om gegevens voor te bereiden voor ML.
Petastorm is een opensource-bibliotheek voor gegevenstoegang. Het maakt het mogelijk om modellen met één knooppunt of gedistribueerde training en evaluatie rechtstreeks vanuit gegevenssets in Apache Parquet-indeling en -gegevenssets die al als Apache Spark DataFrames zijn geladen, mogelijk te maken. Petastorm ondersteunt populaire machine learning-frameworks (ML) op basis van Python, zoals TensorFlow, PyTorch en PySpark. Zie de Petastorm API-documentatie voor meer informatie over Petastorm.
Gegevens laden uit Spark DataFrames met petastorm
De Petastorm Spark-conversie-API vereenvoudigt de gegevensconversie van Spark naar TensorFlow of PyTorch. Het invoer-Spark DataFrame wordt eerst gerealiseerd in Parquet-indeling en vervolgens geladen als een tf.data.Dataset
of torch.utils.data.DataLoader
.
Zie de sectie Api voor Spark Dataset Converter in de petastorm-API-documentatie.
De aanbevolen werkstroom is:
- Gebruik Apache Spark om gegevens te laden en eventueel vooraf te verwerken.
- Gebruik de Petastorm-methode
spark_dataset_converter
om gegevens van een Spark DataFrame te converteren naar een TensorFlow-gegevensset of een PyTorch DataLoader. - Gegevens invoeren in een DL-framework voor training of deductie.
Cachemap configureren
De Petastorm Spark-conversieprogramma slaat het invoer-Spark DataFrame in Parquet-indeling op in een door de gebruiker opgegeven cachemaplocatie. De cachemap moet een DBFS-pad zijn dat begint met file:///dbfs/
, bijvoorbeeld, file:///dbfs/tmp/foo/
die verwijst naar dezelfde locatie als dbfs:/tmp/foo/
. U kunt de cachemap op twee manieren configureren:
Voeg in de Spark-configuratie van het cluster de regel toe:
petastorm.spark.converter.parentCacheDirUrl file:///dbfs/...
Roep in uw notitieblok het volgende aan
spark.conf.set()
:from petastorm.spark import SparkDatasetConverter, make_spark_converter spark.conf.set(SparkDatasetConverter.PARENT_CACHE_DIR_URL_CONF, 'file:///dbfs/...')
U kunt de cache expliciet verwijderen nadat u deze hebt gebruikt door de cache aan te roepen converter.delete()
of impliciet te beheren door de levenscyclusregels in uw objectopslag te configureren.
Databricks ondersteunt DL-training in drie scenario's:
- Training met één knooppunt
- Gedistribueerde hyperparameterafstemming
- Gedistribueerde training
Zie de volgende notebooks voor end-to-end-voorbeelden:
- Gegevensconversie van Spark naar TensorFlow vereenvoudigen
- Gegevensconversie van Spark naar PyTorch vereenvoudigen
Parquet-bestanden rechtstreeks laden met Petastorm
Deze methode heeft minder de voorkeur dan de Petastorm Spark-conversie-API.
De aanbevolen werkstroom is:
- Gebruik Apache Spark om gegevens te laden en eventueel vooraf te verwerken.
- Sla gegevens op in Parquet-indeling in een DBFS-pad met een bijbehorende DBFS-koppeling.
- Laad gegevens in Petastorm-indeling via het DBFS-koppelpunt.
- Gebruik gegevens in een DL-framework voor training of deductie.
Zie een voorbeeldnotitieblok voor een end-to-end-voorbeeld.
Voorbeelden: Gegevens vooraf verwerken en modellen trainen met TensorFlow of PyTorch
In dit voorbeeldnotebook ziet u de volgende werkstroom in Databricks:
- Gegevens laden met Behulp van Spark.
- Converteer het Spark DataFrame naar een TensorFlow-gegevensset met behulp van Petastorm.
- Voer de gegevens in een TensorFlow-model met één knooppunt in voor training.
- Voer de gegevens in een gedistribueerde hyperparameterafstemmingsfunctie in.
- Voer de gegevens in een gedistribueerd TensorFlow-model voor training in.
Gegevensconversie van Spark naar TensorFlow-notebook vereenvoudigen
In dit voorbeeldnotebook ziet u de volgende werkstroom in Databricks:
- Gegevens laden met Behulp van Spark.
- Converteer het Spark DataFrame naar een PyTorch DataLoader met behulp van Petastorm.
- Voer de gegevens in een PyTorch-model met één knooppunt in voor training.
- Voer de gegevens in een gedistribueerde hyperparameterafstemmingsfunctie in.
- Voer de gegevens in een gedistribueerd PyTorch-model voor training in.
Gegevensconversie van Spark naar PyTorch-notebook vereenvoudigen
Voorbeeld: Gegevens vooraf verwerken en Parquet-bestanden laden met Petastorm
In dit voorbeeldnotebook ziet u de volgende werkstroom in Databricks:
- Spark gebruiken om gegevens te laden en voor te verwerken.
- Sla gegevens op met Behulp van Parquet onder
dbfs:/ml
. - Laad gegevens met behulp van Petastorm via de geoptimaliseerde FUSE-koppeling
file:/dbfs/ml
. - Gegevens invoeren in een Deep Learning-framework voor training of deductie.