Dataflow での GPU のサポート

このページでは、GPU と Dataflow を連携させるための背景情報を提供します。Dataflow ジョブで GPU を有効にする方法と例については、GPU の使用GPU を使用した Landsat 衛星画像の処理をご覧ください。

Dataflow ジョブで GPU を使用すると、一部のデータ処理タスクを高速化できます。GPU は、CPU よりも特定の計算を高速に実行できます。これらの計算は通常、画像処理や機械学習のユースケースのような数値または線形代数です。パフォーマンス向上の程度は、ユースケース、計算のタイプ、処理されるデータの量によって異なります。

Dataflow で GPU を使用するための前提条件

Dataflow は、Docker コンテナ内のワーカー VM でユーザーコードを実行します。これらのワーカー VM は Container-Optimized OS を実行します。Dataflow ジョブで GPU を使用するには、次のインストールを行う必要があります。

料金

GPU を使用するジョブでは、Dataflow の料金ページで定められた料金が発生します。

考慮事項

マシンタイプの仕様

GPU は、カスタム N1 マシンタイプを含む N1 マシンタイプでサポートされています。

GPU のタイプと数により、ワーカーが使用できる vCPU とメモリの上限が決まります。対応する制限については、可用性のセクションをご覧ください。

より多くの CPU またはメモリを指定する場合は、より多くの GPU の数の指定が必要になることがあります。

詳細については、Compute Engine の GPU をご覧ください。

GPU とワーカーの並列処理

Dataflow Runner v2 アーキテクチャを使用する Python パイプラインの場合、Dataflow は VM コアごとに 1 つの Apache Beam SDK プロセスを起動します。各 SDK プロセスは、固有の Docker コンテナで実行され、多数のスレッドを生成します。各スレッドは受信データを処理します。

この複数のプロセス アーキテクチャと、Dataflow ワーカーの GPU がすべてのプロセスとスレッドに表示されるため、GPU メモリのオーバーサブスクリプションを回避するには GPU アクセスの慎重な管理が必要になる場合があります。TensorFlow を使用している場合は、次のいずれかの方法を使用して GPU メモリのオーバーサブスクリプションを回避できます。

  • ワーカー vCPU の数に関係なく、1 つのコンテナ化された Python プロセスのみを開始するように Dataflow ワーカーを構成する。これを構成するには、ジョブの起動時にパイプライン オプション --experiments=no_use_multiple_sdk_containers を使用します。
  • 1 つの vCPU のみのマシンタイプを使用する。

複数の TensorFlow プロセスが同じ GPU を使用する場合は、すべてのプロセスが GPU メモリのオーバーサブスクリプションを回避するように、GPU メモリの一部のみを使用するように各プロセスを構成する必要があります。このような構成は容易ではないため、上記のように TensorFlow プロセスの数を制限することをおすすめします。

対象

使用可能な GPU のタイプとワーカー VM の構成については、Dataflow のロケーションをご覧ください。

次のステップ