Freigeben über


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:

  1. Verwenden Sie Apache Spark zum Laden und optional zum Vorverarbeiten von Daten.
  2. Verwenden Sie die Petastorm-Methode spark_dataset_converter, um Daten aus Spark-Dataframes in ein TensorFlow-Dataset oder einen PyTorch-DataLoader zu konvertieren.
  3. 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:

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:

  1. Verwenden Sie Apache Spark zum Laden und optional zum Vorverarbeiten von Daten.
  2. Speichern Sie Daten im Parquet-Format in einem DBFS-Pfad, der über eine begleitende DBFS-Bereitstellung verfügt.
  3. Laden Sie Daten im Petastorm-Format über den DBFS-Bereitstellungspunkt.
  4. 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:

  1. Laden von Daten mithilfe von Spark.
  2. Konvertieren des Spark-DataFrames mithilfe von Petastorm in ein TensorFlow-Dataset.
  3. Einführen von Daten für das Training in ein TensorFlow-Modell mit einem Knoten.
  4. Eingeben der Daten in eine verteilte Hyperparameteroptimierungsfunktion.
  5. Eingeben der Daten für das Training in ein verteiltes TensorFlow-Modell.

Vereinfachen der Datenkonvertierung von Spark in ein TensorFlow-Notebook

Notebook abrufen

In diesem Beispielnotizbuch wird der folgende Workflow für Databricks veranschaulicht:

  1. Laden von Daten mithilfe von Spark.
  2. Konvertieren des Spark-DataFrames mithilfe von Petastorm in einen PyTorch-DataLoader.
  3. Einführen der Daten für das Training in ein PyTorch-Modell mit einem Knoten.
  4. Eingeben der Daten in eine verteilte Hyperparameteroptimierungsfunktion.
  5. Eingeben der Daten für das Training in ein verteiltes PyTorch-Modell ein.

Vereinfachen der Datenkonvertierung von Spark in ein PyTorch-Notebook

Notebook abrufen

Beispiel: Vorverarbeitung von Daten und Laden von Parquet-Dateien mit Petastorm

In diesem Beispielnotizbuch wird der folgende Workflow für Databricks veranschaulicht:

  1. Verwenden von Spark zum Laden und Vorverarbeiten von Daten.
  2. Speichern von Daten mithilfe von Parquet unter dbfs:/ml.
  3. Laden der Daten mithilfe von Petastorm über die optimierte FUSE-Einbindung file:/dbfs/ml.
  4. Geben der Daten zum Trainieren oder Rückschließen in ein Deep Learning-Framework ein.

Verwenden von Spark und Petastorm zum Aufbereiten von Daten für ein Deep Learning-Notebook

Notebook abrufen