使用 Petastorm 載入資料

本文說明如何使用 Petastorm 將資料從 Apache Spark 轉換成 TensorFlow 或 PyTorch。 它也提供一個範例,示範如何使用 Petastorm 來準備 ML 的資料。

Petastorm 是開放原始碼資料存取程式庫。 它可讓您直接從 Apache Parquet 格式的資料集,以及已載入為 Apache Spark DataFrame 的資料集,對深度學習模型進行單一節點或分散式定型和評估。 Petastorm 支援熱門的 Python 型機器學習 (ML) 架構,例如 TensorFlow、PyTorch 和 PySpark。 如需 Petastorm 的詳細資訊,請參閱 Petastorm API 檔

使用 Petastorm 從 Spark DataFrame 載入資料

Petastorm Spark 轉換器 API 可簡化從 Spark 到 TensorFlow 或 PyTorch 的資料轉換。 輸入 Spark DataFrame 會先以 Parquet 格式具體化,然後載入為 tf.data.Datasettorch.utils.data.DataLoader 。 請參閱 Petastorm API 檔中的 Spark 資料集轉換器 API 一節

建議的工作流程為:

  1. 使用 Apache Spark 載入並選擇性地預先處理資料。
  2. 使用 Petastorm spark_dataset_converter 方法,將資料從 Spark DataFrame 轉換成 TensorFlow 資料集或 PyTorch DataLoader。
  3. 將資料摘要至 DL 架構以進行定型或推斷。

設定快取目錄

Petastorm Spark 轉換器會在使用者指定的快取目錄位置中,以 Parquet 格式快取輸入 Spark DataFrame。 快取目錄必須是以 開頭的 file:///dbfs/ DBFS 路徑,例如, file:///dbfs/tmp/foo/ 它指的是與 dbfs:/tmp/foo/ 相同的位置。 您可以透過兩種方式設定快取目錄:

  • 在叢集中 的 Spark 組態 中,新增這一行: petastorm.spark.converter.parentCacheDirUrl file:///dbfs/...

  • 在您的筆記本中,呼叫 spark.conf.set()

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

您可以藉由呼叫 converter.delete() 或透過在物件儲存體中設定生命週期規則,以隱含方式管理快取,以明確刪除快取。

Databricks 支援三種案例中的 DL 定型:

  • 單一節點訓練
  • 分散式超參數微調
  • 分散式訓練

如需端對端範例,請參閱下列筆記本:

使用 Petastorm 直接載入 Parquet 檔案

這個方法比 Petastorm Spark 轉換器 API 更不慣用。

建議的工作流程為:

  1. 使用 Apache Spark 載入並選擇性地預先處理資料。
  2. 將資料以 Parquet 格式儲存到具有隨附 DBFS 掛接的 DBFS 路徑。
  3. 透過 DBFS 掛接點以 Petastorm 格式載入資料。
  4. 在 DL 架構中使用資料進行定型或推斷。

如需端對端範例,請參閱 範例筆記本

範例:使用 TensorFlow 或 PyTorch 預先處理資料和定型模型

此範例筆記本示範 Databricks 上的下列工作流程:

  1. 使用 Spark 載入資料。
  2. 使用 Petastorm 將 Spark DataFrame 轉換成 TensorFlow 資料集。
  3. 將資料摘要至單一節點 TensorFlow 模型以進行定型。
  4. 將資料摘要至分散式超參數微調函式。
  5. 將資料摘要至分散式 TensorFlow 模型以進行定型。

簡化從 Spark 到 TensorFlow 筆記本的資料轉換

取得筆記本

此範例筆記本示範 Databricks 上的下列工作流程:

  1. 使用 Spark 載入資料。
  2. 使用 Petastorm 將 Spark DataFrame 轉換成 PyTorch DataLoader。
  3. 將資料摘要至單一節點 PyTorch 模型以進行定型。
  4. 將資料摘要至分散式超參數微調函式。
  5. 將資料摘要至分散式 PyTorch 模型以進行定型。

簡化從 Spark 到 PyTorch 筆記本的資料轉換

取得筆記本

範例:使用 Petastorm 預先處理資料和載入 Parquet 檔案

此範例筆記本會顯示 Databricks 上的下列工作流程:

  1. 使用 Spark 載入和前置處理資料。
  2. 使用 下的 dbfs:/ml Parquet 儲存資料。
  3. 透過優化的 FUSE 掛接 file:/dbfs/ml ,使用 Petastorm 載入資料。
  4. 將資料摘要至深度學習架構,以進行定型或推斷。

使用 Spark 和 Petastorm 準備深度學習筆記本的資料

取得筆記本