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.

Hinweis

Das Paket petastorm ist veraltet. Mosaic Streaming ist der empfohlene Ersatz für das Laden großer Datasets aus dem Cloudspeicher.

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