Laden von Daten mit Petastorm
In diesem Artikel wird beschrieben, wie Sie Petastorm-Daten von Apache Spark in TensorFlow oder PyTorch konvertieren. Er enthält auch ein Beispiel für die Verwendung von Petastorm zur Vorbereitung von Daten für ML.
Petastorm ist eine Open-Source-Bibliothek für den Datenzugriff. Das ermöglicht Trainings mit einem Knoten oder verteilte Trainings sowie die Auswertung von Deep-Learning-Modellen direkt über Datasets im Apache Parquet-Format und Datasets, die bereits als Apache Spark-Dataframes geladen wurden. Petastorm unterstützt gängige Python-basierte Frameworks für maschinelles Lernen (ML) wie TensorFlow, PyTorch und PySpark. Weitere Informationen zu Petastorm finden Sie in der Dokumentation zur Petastorm-API.
Laden von Daten aus Spark-Dataframes mithilfe von Petastorm
Die Petastorm-Spark-Konverter-API vereinfacht die Datenkonvertierung von Spark in TensorFlow oder PyTorch. Der Spark-Eingabedataframe wird zuerst im Parquet-Format materialisiert und dann als tf.data.Dataset
oder torch.utils.data.DataLoader
geladen.
Lesen Sie den Abschnitt zur Spark-Datasetkonvertierungs-API in der Dokumentation zur Petastorm-API.
Dies ist der empfohlene Workflow:
- Verwenden Sie Apache Spark zum Laden und optional zum Vorverarbeiten von Daten.
- Verwenden Sie die Petastorm-Methode
spark_dataset_converter
, um Daten aus Spark-Dataframes in ein TensorFlow-Dataset oder einen PyTorch-DataLoader zu konvertieren. - Geben Sie Daten zum Trainieren oder Rückschließen in ein DL-Framework ein.
Konfigurieren des Cacheverzeichnisses
Der Spark-Dataframe wird vom Petastorm-Spark-Konverter im Parquet-Format an einem benutzerspezifischen Cacheverzeichnisspeicherort zwischengespeichert. Das Cacheverzeichnis muss ein mit file:///dbfs/
beginnender DBFS-Pfad sein (z. B. file:///dbfs/tmp/foo/
), der auf denselben Speicherort verweist wie dbfs:/tmp/foo/
. Sie können das Cacheverzeichnis auf zwei Arten konfigurieren:
Fügen Sie im Cluster Spark config die Zeile
petastorm.spark.converter.parentCacheDirUrl file:///dbfs/...
hinzu.Rufen Sie in Ihrem Notebook
spark.conf.set()
auf:from petastorm.spark import SparkDatasetConverter, make_spark_converter spark.conf.set(SparkDatasetConverter.PARENT_CACHE_DIR_URL_CONF, 'file:///dbfs/...')
Sie können den Cache nach der Verwendung entweder explizit durch Aufrufen von converter.delete()
löschen oder durch das Konfigurieren der Lebenszyklusregeln in Ihrem Objektspeicher implizit verwalten.
Databricks unterstützt das DL-Training in drei Szenarios:
- Training auf einem einzelnen Knoten
- Verteilte Hyperparameteroptimierung
- Verteiltes Training
Umfassende Beispiele finden Sie in den folgenden Notebooks:
- Vereinfachen der Datenkonvertierung von Spark in TensorFlow
- Vereinfachen der Datenkonvertierung von Spark in PyTorch
Direktes Laden von Parquet-Dateien mithilfe von Petastorm
Diese Methode wird im Vergleich zur Petastorm-Spark-Konvertierungs-API nicht zu häufig verwendet.
Dies ist der empfohlene Workflow:
- Verwenden Sie Apache Spark zum Laden und optional zum Vorverarbeiten von Daten.
- Speichern Sie Daten im Parquet-Format in einem DBFS-Pfad, der über eine begleitende DBFS-Bereitstellung verfügt.
- Laden Sie Daten im Petastorm-Format über den DBFS-Bereitstellungspunkt.
- Verwenden Sie Daten in einem DL-Framework für das Training oder für Rückschlüsse.
Ein umfassendes Beispiel finden Sie im Beispielnotebook.
Beispiele: Vorverarbeitung von Daten und Trainieren von Modellen mit TensorFlow oder PyTorch
In diesem Beispielnotizbuch wird der folgende Workflow für Databricks veranschaulicht:
- Laden von Daten mithilfe von Spark.
- Konvertieren des Spark-DataFrames mithilfe von Petastorm in ein TensorFlow-Dataset.
- Einführen von Daten für das Training in ein TensorFlow-Modell mit einem Knoten.
- Eingeben der Daten in eine verteilte Hyperparameteroptimierungsfunktion.
- Eingeben der Daten für das Training in ein verteiltes TensorFlow-Modell.
Vereinfachen der Datenkonvertierung von Spark in ein TensorFlow-Notebook
In diesem Beispielnotizbuch wird der folgende Workflow für Databricks veranschaulicht:
- Laden von Daten mithilfe von Spark.
- Konvertieren des Spark-DataFrames mithilfe von Petastorm in einen PyTorch-DataLoader.
- Einführen der Daten für das Training in ein PyTorch-Modell mit einem Knoten.
- Eingeben der Daten in eine verteilte Hyperparameteroptimierungsfunktion.
- Eingeben der Daten für das Training in ein verteiltes PyTorch-Modell ein.
Vereinfachen der Datenkonvertierung von Spark in ein PyTorch-Notebook
Beispiel: Vorverarbeitung von Daten und Laden von Parquet-Dateien mit Petastorm
In diesem Beispielnotizbuch wird der folgende Workflow für Databricks veranschaulicht:
- Verwenden von Spark zum Laden und Vorverarbeiten von Daten.
- Speichern von Daten mithilfe von Parquet unter
dbfs:/ml
. - Laden der Daten mithilfe von Petastorm über die optimierte FUSE-Einbindung
file:/dbfs/ml
. - Geben der Daten zum Trainieren oder Rückschließen in ein Deep Learning-Framework ein.