GPU 対応コンピュート

注:

一部の GPU 対応インスタンス タイプはベータ版であり、コンピュートの作成中にドライバーとワーカー タイプを選択するときにドロップダウン リストでそのようにマークされます。

概要

Databricks は、グラフィックス プロセッシング ユニット (GPU) で高速化されたコンピュートをサポートしています。 この記事では、GPU 対応インスタンスでコンピュートを作成する方法と、それらのインスタンスにインストールされる GPU ドライバーとライブラリについて説明します。

GPU 対応コンピュートのディープラーニングの詳細については、 ディープラーニングを参照してください。

GPUコンピュートを作成する

GPU コンピュートの作成は、他のコンピュートの作成と似ています。 次の点に注意してください。

  • Databricks Runtimeバージョンは、Runtime 13.3 LTS 機械学習 (GPU、Scala 2.12.15、Spark 3.4.1) などの GPU 対応バージョンである必要があります。

  • ワーカータイプドライバータイプ は GPU インスタンスタイプである必要があります。

サポートされているインスタンスタイプ

警告

Databricks は非推奨であり、 Amazon EC2 P3 インスタンスを使用したコンピュートのスピンアップはサポートされなくなります。これらのインスタンスは非推奨 AWS ためです。

Databricks では、次の GPU アクセラレーション インスタンスの種類がサポートされています。

  • GPUタイプ:NVIDIA H100 Tensor Core GPU

インスタンス名

GPU の数

GPUメモリ

vCPU

CPUメモリ

p5.48xラージ

8

80GB×8

192

2TBの

  • GPUタイプ:NVIDIA A100 Tensor Core GPU

インスタンス名

GPU の数

GPUメモリ

vCPU

CPUメモリ

p4d.24xlarge

8

40GB×8

96

1152ギガバイト

p4de.24xlarge

8

80GB×8

96

1152ギガバイト

  • GPUタイプ:NVIDIA L40S Tensor Core GPU

インスタンス名

GPU の数

GPUメモリ

vCPU

CPUメモリ

g6e.xlarge

1

48ギガバイト

4

32ギガバイト

g6e.2xlarge

1

48ギガバイト

8

64ギガバイト

g6e.4xlarge

1

48ギガバイト

16

128ギガバイト

G6E.8xラージ

1

48ギガバイト

32

256ギガバイト

G6E.16xラージ

1

48ギガバイト

64

512ギガバイト

G6E.12xラージ

4

48GB×4

48

384ギガバイト

G6E.24xラージ

4

48GB×4

96

768ギガバイト

G6E.48xラージ

8

48GB×8

192

1536ギガバイト

  • GPUタイプ:NVIDIA L4 TensorコアGPU

インスタンス名

GPU の数

GPUメモリ

vCPU

CPUメモリ

g6.xlarge

1

24ギガバイト

4

16ギガバイト

g6.2xlarge

1

24ギガバイト

8

32ギガバイト

g6.4xlarge

1

24ギガバイト

16

64ギガバイト

g6.8xlarge

1

24ギガバイト

32

128ギガバイト

G6.16xラージ

1

24ギガバイト

64

256ギガバイト

G6.12xラージ

4

24GB×4

48

192ギガバイト

g6.24xlarge

4

24GB×4

96

384ギガバイト

g6.48xlarge

8

24GB×8

192

768ギガバイト

  • GPUタイプ:NVIDIA A10G Tensor Core GPU

インスタンス名

GPU の数

GPUメモリ

vCPU

CPUメモリ

g5.xlarge

1

24ギガバイト

4

16ギガバイト

G5.2xラージ

1

24ギガバイト

8

32ギガバイト

G5.4倍大

1

24ギガバイト

16

64ギガバイト

g5.8xlarge

1

24ギガバイト

32

128ギガバイト

G5.16xラージ

1

24ギガバイト

64

256ギガバイト

g5.12xlarge

4

24GB×4

48

192ギガバイト

G5.24xラージ

4

24GB×4

96

384ギガバイト

G5.48xラージ

8

24GB×8

192

768ギガバイト

  • GPUタイプ:NVIDIA T4 TensorコアGPU

インスタンス名

GPU の数

GPUメモリ

vCPU

CPUメモリ

g4dn.xlarge

1

16ギガバイト

4

16ギガバイト

g4dn.2xlarge

1

16ギガバイト

8

32ギガバイト

g4dn.4xlarge

1

16ギガバイト

16

64ギガバイト

g4dn.8xlarge

1

16ギガバイト

32

128ギガバイト

g4dn.16xlarge

1

16ギガバイト

64

256ギガバイト

g4dn.12xlarge

4

24GB×4

48

192ギガバイト

  • GPUタイプ:NVIDIA V100 TensorコアGPU

インスタンス名

GPU の数

GPUメモリ

vCPU

CPUメモリ

p3.2xlarge

1

16ギガバイト

8

61ギガバイト

p3.8xlarge

4

16GB×4

32

244ギガバイト

p3.16xlarge

8

16GB×8

64

488ギガバイト

考慮事項

すべての GPU アクセラレーションインスタンスタイプについて、以下の点に注意してください。

  • Amazon スポットインスタンスの価格高騰により、GPU スポットインスタンスの保持が困難になっています。 必要に応じてオンデマンドで使用します。

  • GPU 対応のコンピュートを作成するには、 制限の増加をリクエストする必要がある場合があります。

サポートされている GPU インスタンスタイプとその属性のリストについては、サポートされているインスタンスタイプ を参照してください。

GPU スケジューリング

GPU スケジューリングは、Spark タスクを多数の GPU に効率的に分散します。

Databricks Runtime は、Apache Spark 3.0 からの GPU 対応スケジューリングをサポートしています。 Databricks GPU コンピュートにあらかじめ設定しています。

注:

GPU スケジューリングは、シングルノード コンピュートでは有効になっていません。

AIとMLのGPUスケジューリング

spark.task.resource.gpu.amount は、構成する必要がある可能性がある GPU 対応スケジューリングに関連する唯一の Spark 構成です。 デフォルトの構成では、タスクごとに 1 つの GPU が使用されるため、分散推論ワークロードと、すべての GPU ノードを使用する場合の分散トレーニングに適したベースラインです。

分散トレーニング時の通信オーバーヘッドを減らすために、Databricksコンピュート Spark構成でワーカーノードあたりのGPU数にspark.task.resource.gpu.amountを設定することをおすすめします。これにより、Spark ワーカーごとに Spark タスクが 1 つだけ作成され、そのワーカー ノード内のすべての GPU が同じタスクに割り当てられます。

分散ディープラーニング推論の並列化を強化するために、 spark.task.resource.gpu.amount を 1/2、1/3、1/4 などの小数値に設定できます。1/Nです。 これにより、GPU よりも多くの Spark タスクが作成されるため、より多くの同時タスクで推論要求を並列に処理できます。 たとえば、 spark.task.resource.gpu.amount0.50.33、または 0.25に設定した場合、使用可能な GPU はタスクの数が 2 倍、3 倍、または 4 倍に分割されます。

GPU インデックス

PySpark タスクの場合、Databricks は割り当てられた GPU を 0 から始まるインデックスに自動的に再マッピングします。 タスクごとに 1 つの GPU を使用するデフォルト設定では、タスクにどの GPU が割り当てられているかを確認せずに、デフォルトの GPU を使用できます。 タスクごとに複数の GPU を設定する場合 (例: 4)、割り当てられた GPU のインデックスは常に 0、1、2、3 です。 割り当てられた GPU の物理インデックスが必要な場合は、 CUDA_VISIBLE_DEVICES 環境変数から取得できます。

Scala を使用する場合は、タスクに割り当てられた GPU のインデックスを TaskContext.resources().get("gpu")から取得できます。

NVIDIA GPU ドライバー、CUDA、および cuDNN

Databricks では、Spark ドライバーとワーカー インスタンスで GPU を使用するために必要な NVIDIA ドライバーとライブラリがインストールされます。

  • CUDA Toolkit は、 /usr/local/cuda.

  • cuDNN: NVIDIA CUDA Deep ニューラルネットワーク ライブラリ。

  • NCCL: NVIDIA Collective Communications ライブラリ。

含まれている NVIDIA ドライバーのバージョンは 535.54.03 で、CUDA 11.0 をサポートしています。

含まれているライブラリのバージョンについては、使用している特定の Databricks Runtime バージョンの リリースノート を参照してください。

注:

本ソフトウェアには、NVIDIA Corporationが提供するソースコードが含まれています。 具体的には、GPU をサポートするために、Databricks には CUDA サンプルのコードが含まれています。

NVIDIA エンド ユーザー ライセンス契約 (EULA)

Databricks で GPU 対応の "Databricks Runtime バージョン" を選択すると、CUDA、cuDNN、Tesla ライブラリに関する NVIDIA EULA と、NCCL ライブラリに関する NVIDIA エンド ユーザー ライセンス契約 (NCCL 補足条項を含む) に概説されている使用条件に暗黙的に同意したことになります。

GPU コンピュート上のDatabricks Container Services

プレビュー

この機能はパブリックプレビュー段階です。

GPU を備えたコンピュート上のDatabricks Container Servicesを使用して、カスタマイズされたライブラリを備えたポータブルなディープラーニング環境を作成できます。 手順については、Databricks Container サービスを使用したコンテナーのカスタマイズを参照してください。

GPU コンピュートのカスタムイメージを作成するには、GPU の Databricks Runtime ML ではなく、標準のランタイムバージョンを選択する必要があります。 Use your own (独自の Docker コンテナーを使用する)を選択すると、標準のランタイム バージョンで GPU コンピュートを選択できます。GPU のカスタム イメージは、GPU の Databricks Runtime ML とは異なる 公式の CUDA コンテナーに基づいています。

GPU コンピュートのカスタム イメージを作成する場合、NVIDIA ドライバーのバージョンはホスト マシンのドライバー バージョンと一致する必要があるため、変更できません。

databricksruntime Docker Hub には、GPU 機能を備えたベース イメージの例が含まれています。これらのイメージの生成に使用される Dockerfile は、 サンプル コンテナーの GitHub リポジトリにあり、サンプル イメージが提供する内容とカスタマイズ方法の詳細も記載されています。

エラーメッセージ

  • 次のエラーは、AWS クラウドプロバイダーに、リクエストされたコンピュートリソースに十分な容量がないことを示します。 Error: Cluster terminated. Reason: AWS Insufficient Instance Capacity Failure

    このエラーを解決するには、別の可用性ゾーンでコンピュートを作成してみてください。 可用性ゾーンは、 詳細オプションコンピュート構成 にあります。また、リザーブドインスタンスの価格を確認してAWS追加のクォータを購入することもできます。

  • コンピュートが P4d または G5 インスタンス タイプと Databricks Runtime 7.3 LTS 機械学習を使用している場合、7.3 の CUDA パッケージ バージョンは新しい GPU インスタンスと互換性がありません。 そのような場合、TensorFlow Keras や PyTorch などの機械学習パッケージは次のようなエラーを生成します。

    • TensorFlow Keras: InternalError: CUDA runtime implicit initialization on GPU:x failed. Status: device kernel image is invalid

    • PyTorch の場合: UserWarning: NVIDIA A100-SXM4-40GB with CUDA capability sm_80 is not compatible with the current PyTorch installation.

    これらのエラーは、 Databricks Runtime 10.4 LTS ML以降にアップグレードすることで解決できます。