Dataflow ML について

Dataflow ML のスケーリング データ処理機能は、予測と推論のパイプライントレーニング用のデータの準備に使用できます。

Dataflow ML ワークフローの図。

図 1. 完全な Dataflow ML ワークフロー。

要件と制限事項

  • Dataflow ML はバッチ パイプラインとストリーミング パイプラインをサポートしています。
  • RunInference API は、Apache Beam 2.40.0 以降のバージョンでサポートされています。
  • MLTransform API は、Apache Beam 2.53.0 以降のバージョンでサポートされています。
  • モデルハンドラは、PyTorch、scikit-learn、TensorFlow、ONNX、TensorRT で使用できます。サポートされていないフレームワークには、カスタムモデル ハンドラを使用できます。

トレーニング用データの準備

予測と推論のパイプライン

Dataflow ML は、Dataflow と Apache Beam の RunInference API を組み合わせて使用します。RunInference API では、モデルの特性とプロパティを定義し、その構成を RunInference 変換に渡します。この機能を使用すると、モデルの実装の詳細を知らなくても、Dataflow パイプライン内でモデルを実行できます。TensorFlow や PyTorch など、使用するデータに最適なフレームワークを選択できます。

パイプラインで複数のモデルを実行する

RunInference 変換を使用して、複数の推論モデルを Dataflow パイプラインに追加します。コードの詳細などについて詳しくは、Apache Beam ドキュメントのマルチモデル パイプラインをご覧ください。

言語間のパイプラインを構築する

Java パイプラインで RunInference を使用するには、言語間の Python 変換を作成します。このパイプラインは、前処理、後処理、推論を行う変換を呼び出します。

詳細な手順とサンプル パイプラインについては、Java SDK から RunInference を使用するをご覧ください。

Dataflow で GPU を使用する

アクセラレータを使用するバッチ パイプラインまたはストリーミング パイプラインでは、NVIDIA GPU デバイスで Dataflow パイプラインを実行できます。詳細については、GPU で Dataflow パイプラインを実行するをご覧ください。

Dataflow ML のトラブルシューティング

このセクションでは、Dataflow ML を使用する際に役立つトラブルシューティング方法とリンクについて説明します。

スタックで各テンソルが同じサイズと想定されている

RunInference API の使用時に、さまざまなサイズの画像や長さの異なる単語のエンベディングを指定すると、次のエラーが発生する可能性があります。

File "/beam/sdks/python/apache_beam/ml/inference/pytorch_inference.py", line 232, in run_inference batched_tensors = torch.stack(key_to_tensor_list[key]) RuntimeError: stack expects each tensor to be equal size, but got [12] at entry 0 and [10] at entry 1 [while running 'PyTorchRunInference/ParDo(_RunInferenceDoFn)']

このエラーは、RunInference API がさまざまなサイズのテンソル要素をバッチ処理できないために発生します。回避策については、Apache Beam ドキュメントのテンソル要素をバッチ処理できないをご覧ください。

次のステップ