Dataflow での GPU のサポート

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

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

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

カスタム コンテナ イメージを提供するには、Dataflow Runner v2 を使用し、worker_harness_container_image パイプライン オプションを使用してコンテナ イメージを指定する必要があります。

GPU ドライバのバージョンは、Dataflow で現在使用されている Container-Optimized OS のバージョンによって異なります。

料金

GPU を使用するジョブでは、Dataflow の料金ページで定められた料金が発生します。プレビュー サービスの期間中、Dataflow の GPU リソースは割引されません。

考慮事項

マシンタイプの仕様

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

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

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

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

GPU とワーカーの並列処理

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

この複数のプロセス アーキテクチャと、Dataflow ワーカーの GPU がすべてのプロセスとスレッドに表示されるため、GPU のオーバーサブスクリプションを回避するには GPU アクセスの慎重な管理が必要になる場合があります。たとえば、TensorFlow を使用する場合は、GPU メモリの一部だけを使用するように各 TensorFlow プロセスを構成する必要があります。すべてのプロセスで一緒に GPU メモリをオーバーサブスクライブしないでください。詳細については、GPU のメモリ増加を制限するをご覧ください。

また、1 つの vCPU を持つワーカーを使用して、GPU にアクセスする同時プロセスの数を制限することもできます。カスタム マシンタイプを使用すると、vCPU が 1 つであるマシンのメモリ量を増やすことができます。

対象

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

次のステップ