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 の料金ページで定められた料金が発生します。Preview サービスの期間中、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 の構成を示したものです。

GPU モデル GPU GPU メモリ 利用可能な vCPU 数 利用可能なメモリ 利用可能なゾーン
NVIDIA® Tesla® T4 1 GPU 16 GB GDDR6 1~24 vCPU 1~156 GB
  • asia-east1-a
  • asia-east1-c
  • asia-northeast1-a
  • asia-northeast1-c
  • asia-northeast3-b
  • asia-northeast3-c
  • asia-south1-a
  • asia-south1-b
  • asia-southeast1-b
  • asia-southeast1-c
  • australia-southeast1-a
  • europe-west2-a
  • europe-west2-b
  • europe-west3-b
  • europe-west4-b
  • europe-west4-c
  • southamerica-east1-c
  • us-central1-a
  • us-central1-b
  • us-central1-f
  • us-east1-c
  • us-east1-d
  • us-east4-b
  • us-west1-a
  • us-west1-b
2 GPU 32 GB GDDR6 1~48 vCPU 1~312 GB
4 GPU 64 GB GDDR6 1~96 vCPU 1~624 GB
NVIDIA® Tesla® P4 1 GPU 8 GB GDDR5 1~24 vCPU 1~156 GB
  • asia-southeast1-b
  • asia-southeast1-c
  • australia-southeast1-a
  • australia-southeast1-b
  • europe-west4-b
  • europe-west4-c
  • northamerica-northeast1-a
  • northamerica-northeast1-b
  • northamerica-northeast1-c
  • us-central1-a
  • us-central1-c
  • us-east4-a
  • us-east4-b
  • us-east4-c
  • us-west2-b
  • us-west2-c
2 GPU 16 GB GDDR5 1~48 vCPU 1~312 GB
4 GPU 32 GB GDDR5 1~96 vCPU 1~624 GB
NVIDIA® Tesla® V100 1 GPU 16 GB HBM2 1~12 vCPU 1~78 GB
  • asia-east1-c
  • europe-west4-a
  • europe-west4-b
  • europe-west4-c
  • us-east1-c
  • us-central1-a
  • us-central1-b
  • us-central1-c
  • us-central1-f
  • us-west1-a
  • us-west1-b
2 GPU 32 GB HBM2 1~24 vCPU 1~156 GB
4 GPU 64 GB HBM2 1~48 vCPU 1~312 GB
8 GPU 128 GB HBM2 1~96 vCPU 1~624 GB
NVIDIA® Tesla® P100 1 GPU 16 GB HBM2 1~16 vCPU 1~104 GB
  • asia-east1-a
  • asia-east1-c
  • australia-southeast1-c
  • us-central1-c
  • us-central1-f
  • us-east1-b
  • us-east1-c
  • us-west1-a
  • us-west1-b
  • europe-west1-b
  • europe-west1-d
  • europe-west4-a
2 GPU 32 GB HBM2 1~32 vCPU 1~208 GB
4 GPU 64 GB HBM2

1~64 vCPU
(us-east1-c、europe-west1-d、europe-west1-b)

1~96 vCPU
(その他すべてのゾーン)

1~208 GB
(us-east1-c、europe-west1-d、europe-west1-b)

1~624 GB
(その他すべてのゾーン)

NVIDIA® Tesla® K80 1 GPU 12 GB GDDR5 1~8 vCPU 1~52 GB
  • asia-east1-a
  • asia-east1-b
  • europe-west1-b
  • europe-west1-d
  • us-central1-a
  • us-central1-c
  • us-east1-c
  • us-east1-d
  • us-west1-b
2 GPU 24 GB GDDR5 1~16 vCPU 1~104 GB
4 GPU 48 GB GDDR5 1~32 vCPU 1~208 GB
8 GPU 96 GB GDDR5 1~64 vCPU

1~416 GB
(asia-east1-a と us-east1-d)

1~208 GB
(その他すべてのゾーン)

注:
  • ゾーンの詳細については、リージョンとゾーンをご覧ください。
  • NVIDIA® K80® ボードには、それぞれ 2 個の GPU が搭載されています。K80 GPU の料金は、ボード単位ではなく、個々の GPU 単位で課金されます。

次のステップ