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ではサポートされていません。