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 では、次のインスタンスの種類がサポートされています。

  • A2マシンファミリ:a2-highgpu-1g、a2-highgpu-2g、a2-highgpu-4g、a2-highgpu-8g、a2-megagpu-16g

これらのインスタンス タイプの詳細については、 「GCP アクセラレータに最適化されたマシン」を参照してください。また、これらのインスタンスが利用できる場所を確認するには、 「GCP リージョン」を参照してください。 GPU 対応のコンピュートを起動するには、Databricks デプロイメントがサポートされているリージョンに存在する必要があります。

GPU スケジューリング

Databricks Runtime 9.1 LTS 機械学習以降では、Apache Spark 3.0 のGPU 対応スケジューリングがサポートされています。 Databricks は GPU コンピュート上で事前構成します。

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

spark.task.resource.gpu.amount これは、変更が必要になる可能性がある GPU 対応スケジューリングに関連する唯一の Spark 構成です。 デフォルト構成ではタスクごとに 1 つの GPU を使用します。これは、すべての GPU ノードを使用する場合、分散推論ワークロードと分散トレーニングに最適です。 ノードのサブセットで分散トレーニングを実行するには、分散トレーニング中の通信オーバーヘッドを軽減するのに役立ちます。Databricks では、コンピュートSpark 構成spark.task.resource.gpu.amountをワーカー ノードあたりの GPU の数に設定することをお勧めします。

PySpark タスクの場合、Databricks は割り当てられた GPU をインデックス 0、1、.... タスクごとに 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 ドライバーのバージョンは 525.105.17 で、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 コンピュートを作成することはできません。 既存の GPU コンピュート上でジョブを実行できるのは、ジョブが新しいコンピュート UIで作成された場合のみです。

  • Databricks on Google Cloudでは、nvidia-smi などの一般的に使用される NVIDIA 実行可能ファイルは、PATH 環境変数に含まれていません。代わりに、彼らは /usr/local/nvidia/binにあります。 たとえば、 nvidia-smi を使用するには、 Web ターミナル または %sh ノートブックのマジック コマンドを使用して /usr/local/nvidia/bin/nvidia-smiを実行する必要があります。

  • Ganglia を使用したコンピュート メトリクスのモニタリングはDatabricks on Google Cloudではサポートされていません。