メインコンテンツまでスキップ

Petastorm を使用したデータの読み込み

この記事では、 Petastorm を使用して Apache Spark から TensorFlow または PyTorch にデータを変換する方法について説明します。 また、Petastorm を使用して ML のデータを準備する方法を示す例も示します。

注記

petastorm パッケージは非推奨です。Mosaic ストリーミング は、クラウドストレージから大きなデータセットをロードするための推奨される代替品です。

Petastormはオープンソースのデータアクセスライブラリです。 これにより、Apache Parquet 形式のデータセットと Apache Spark DataFramesとして既に読み込まれているデータセットから直接、ディープラーニング モデルの単一ノードまたは分散トレーニングと評価が可能になります。 Petastorm は、TensorFlow、PyTorch、PySpark などの一般的な Python ベースの機械学習 (ML) フレームワークをサポートしています。 Petastormの詳細については、 Petastorm API のドキュメントを参照してください。

Petastorm を使用した Spark DataFrames からのデータの読み込み

Petastorm Spark コンバータ API は、Spark から TensorFlow または PyTorch へのデータ変換を簡素化します。 入力 Spark DataFrame は、最初に Parquet 形式で具体化され、次に tf.data.Dataset または torch.utils.data.DataLoaderとして読み込まれます。 Petastorm API ドキュメントの「 Spark Dataset Converter API」セクションを参照してください 。

推奨されるワークフローは次のとおりです。

  1. Apache Spark を使用して、データを読み込み、必要に応じて前処理します。
  2. Petastorm spark_dataset_converterメソッドを使用して、Spark DataFrameからTensorFlowデータセットまたはPyTorchDataLoaderにデータを変換します。
  3. トレーニングや推論のためにデータをDLフレームワークにフィードします。

キャッシュディレクトリの設定

Petastorm Spark コンバーターは、入力 Spark DataFrame をユーザー指定のキャッシュ ディレクトリの場所に Parquet 形式でキャッシュします。 キャッシュディレクトリは、file:///dbfs/で始まるDBFSパスである必要があります。たとえば、dbfs:/tmp/foo/と同じ場所を参照するfile:///dbfs/tmp/foo/。キャッシュディレクトリは、次の 2 つの方法で設定できます。

  • クラスター Spark設定に、次の行を追加します。 petastorm.spark.converter.parentCacheDirUrl file:///dbfs/...

  • ノートブックで、 spark.conf.set()に電話をかけます。

    Python
    from petastorm.spark import SparkDatasetConverter, make_spark_converter

    spark.conf.set(SparkDatasetConverter.PARENT_CACHE_DIR_URL_CONF, 'file:///dbfs/...')

キャッシュを使用した後に converter.delete() を呼び出して明示的に削除するか、オブジェクトストレージのライフサイクルルールを設定してキャッシュを暗黙的に管理することができます。

Databricks は、次の 3 つのシナリオで 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 ノートブックへのデータ変換を簡素化

Open notebook in new tab

このサンプル ノートブックは、Databricks での次のワークフローを示しています。

  1. Spark を使用してデータを読み込みます。
  2. Petastorm を使用して Spark DataFrame を PyTorch DataLoader に変換します。
  3. トレーニングのために、データを単一ノードの PyTorch モデルにフィードします。
  4. データを分散ハイパーパラメーターチューニング関数にフィードします。
  5. トレーニングのために、データを分散 PyTorch モデルにフィードします。

Spark から PyTorch ノートブックへのデータ変換を簡略化

Open notebook in new tab

例: Petastorm でデータを前処理し、Parquet ファイルを読み込む

このノートブックの例は、Databricks での次のワークフローを示しています。

  1. Spark を使用して、データの読み込みと前処理を行います。
  2. Parquet を使用して dbfs:/mlでデータを保存します。
  3. 最適化されたFUSEマウント file:/dbfs/mlを介してPetastormを使用してデータをロードします。
  4. データをディープラーニングフレームワークにフィードして、トレーニングや推論を行います。

Spark と Petastorm を使用してディープラーニング ノートブックのデータを準備する

Open notebook in new tab