Läsa in data med Petastorm

Den här artikeln beskriver hur du använder Petastorm för att konvertera data från Apache Spark till TensorFlow eller PyTorch. Det innehåller också ett exempel som visar hur du använder Petastorm för att förbereda data för ML.

Petastorm är ett öppen källkod dataåtkomstbibliotek. Det möjliggör enkel nod eller distribuerad träning och utvärdering av djupinlärningsmodeller direkt från datauppsättningar i Apache Parquet-format och datauppsättningar som redan har lästs in som Apache Spark DataFrames. Petastorm stöder populära Python-baserade ramverk för maskininlärning (ML), till exempel TensorFlow, PyTorch och PySpark. Mer information om Petastorm finns i Petastorm API-dokumentationen.

Läsa in data från Spark DataFrames med petastorm

Api:et för Petastorm Spark-konverteraren förenklar datakonverteringen från Spark till TensorFlow eller PyTorch. Spark DataFrame-indata materialiseras först i Parquet-format och läses sedan in som en tf.data.Dataset eller torch.utils.data.DataLoader. Se avsnittet Api för Spark Dataset Converter i Petastorm API-dokumentationen.

Det rekommenderade arbetsflödet är:

  1. Använd Apache Spark för att läsa in och eventuellt förbearbeta data.
  2. Använd Petastorm-metoden spark_dataset_converter för att konvertera data från en Spark DataFrame till en TensorFlow-datauppsättning eller en PyTorch DataLoader.
  3. Mata in data i ett DL-ramverk för träning eller slutsatsdragning.

Konfigurera cachekatalog

Petastorm Spark-konverteraren cachelagrar indata för Spark DataFrame i Parquet-format på en användardefinerad cachekatalogplats. Cachekatalogen måste vara en DBFS-sökväg som börjar med file:///dbfs/, till exempel, file:///dbfs/tmp/foo/ som refererar till samma plats som dbfs:/tmp/foo/. Du kan konfigurera cachekatalogen på två sätt:

  • Lägg till raden i spark-konfigurationen i klustret:petastorm.spark.converter.parentCacheDirUrl file:///dbfs/...

  • I anteckningsboken anropar du spark.conf.set():

    from petastorm.spark import SparkDatasetConverter, make_spark_converter
    
    spark.conf.set(SparkDatasetConverter.PARENT_CACHE_DIR_URL_CONF, 'file:///dbfs/...')
    

Du kan antingen uttryckligen ta bort cachen när du har använt den genom att anropa converter.delete() eller hantera cachen implicit genom att konfigurera livscykelreglerna i objektlagringen.

Databricks stöder DL-träning i tre scenarier:

  • Träning med en nod
  • Distribuerad hyperparameterjustering
  • Distribuerad träning

Exempel från slutpunkt till slutpunkt finns i följande notebook-filer:

Läs in Parquet-filer direkt med Petastorm

Den här metoden är mindre prioriterad än Petastorm Spark-konverterarens API.

Det rekommenderade arbetsflödet är:

  1. Använd Apache Spark för att läsa in och eventuellt förbearbeta data.
  2. Spara data i Parquet-format i en DBFS-sökväg som har en tillhörande DBFS-montering.
  3. Läs in data i Petastorm-format via DBFS-monteringspunkten.
  4. Använd data i ett DL-ramverk för träning eller slutsatsdragning.

Se exempelanteckningsboken för ett exempel från slutpunkt till slutpunkt.

Exempel: Förbearbeta data och träna modeller med TensorFlow eller PyTorch

Den här exempelanteckningsboken visar följande arbetsflöde i Databricks:

  1. Läs in data med Spark.
  2. Konvertera Spark DataFrame till en TensorFlow-datauppsättning med petastorm.
  3. Mata in data i en TensorFlow-modell med en nod för träning.
  4. Mata in data i en distribuerad hyperparameterjusteringsfunktion.
  5. Mata in data i en distribuerad TensorFlow-modell för träning.

Förenkla datakonvertering från Spark till TensorFlow Notebook

Hämta notebook-fil

Den här exempelanteckningsboken visar följande arbetsflöde i Databricks:

  1. Läs in data med Spark.
  2. Konvertera Spark DataFrame till en PyTorch DataLoader med petastorm.
  3. Mata in data i en PyTorch-modell med en nod för träning.
  4. Mata in data i en distribuerad hyperparameterjusteringsfunktion.
  5. Mata in data i en distribuerad PyTorch-modell för träning.

Förenkla datakonvertering från Spark till PyTorch Notebook

Hämta notebook-fil

Exempel: Förbearbeta data och läs in Parquet-filer med Petastorm

I den här notebook-filen visas följande arbetsflöde i Databricks:

  1. Använd Spark för att läsa in och förbearbeta data.
  2. Spara data med Parquet under dbfs:/ml.
  3. Läs in data med Petastorm via den optimerade FUSE-monteringen file:/dbfs/ml.
  4. Mata in data i ett ramverk för djupinlärning för träning eller slutsatsdragning.

Använda Spark och Petastorm för att förbereda data för notebook-filen för djupinlärning

Hämta notebook-fil