次の方法で共有


Petastorm を使用してデータを読み込む

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

Note

petastorm パッケージが 非推奨になりました。 モザイク ストリーミングは、クラウド ストレージから大規模なデータセットを読み込む場合に推奨される代替方法です。

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

Petastorm を使用して Spark DataFrame からデータを読み込む

Petastorm Spark コンバーター API を使用すると、Spark から TensorFlow または PyTorch へのデータ変換が簡略化されます。 入力 Spark DataFrame は、まず Parquet 形式で具体化されてから、tf.data.Dataset または torch.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/ と同じ場所を参照します。 キャッシュ ディレクトリは、次の 2 つの方法で構成できます。

  • クラスターの 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 では、次の 3 つのシナリオで DL トレーニングがサポートされています。

  • 単一ノードのトレーニング
  • 分散ハイパーパラメーターのチューニング
  • 分散トレーニング

エンドツーエンドの例については、次のノートブックを参照してください。

Petastorm を使用して Parquet ファイルを直接読み込む

これは、Petastorm Spark コンバーター API よりも優先度が低い方法です。

推奨されるワークフロー:

  1. Apache Spark を使用してデータを読み込み、必要に応じて前処理を実行します。
  2. Parquet 形式のデータを、DBFS マウントに関連付けられた DBFS パスに保存します。
  3. DBFS マウント ポイントを介してペタストーミング形式でデータを読み込みます。
  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. Parquet を使用して dbfs:/ml にデータを保存する。
  3. 最適化された FUSE マウント file:/dbfs/ml で、Petastorm を使用してデータを読み込む。
  4. トレーニングまたは推論用に、ディープ ラーニング フレームワークにデータをフィードする。

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

ノートブックを入手