メインコンテンツまでスキップ

GPU対応コンピュート

注記

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

概要​

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

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

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

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

  • 機械学習 チェックボックスをオンにする必要があります。GPU ML バージョンは、ワーカータイプに基づいて自動的に選択されます。
  • Photon acceleration チェックボックスはオフにする必要があります。Photon は GPU インスタンスタイプではサポートされていません。
  • ワーカータイプ は GPU インスタンスタイプである必要があります。
  • シングルノード チェックボックスをオンにすると、単一の GPU インスタンスを取得できます。

クラスターAPIを使用してGPUインスタンスを構成するプロセスは、kindフィールドが設定されているかどうかによって異なります。kind 、要求が 単純なフォーム 仕様を使用するかどうかを判断します。

  • kind = CLASSIC_PREVIEWの場合は、 "use_ml_runtime": trueを設定します。
  • kind フィールドを設定しない場合は、spark_version を 15.4.x-gpu-ml-scala2.12 などの GPU 対応バージョンに設定します。

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

警告

DatabricksではAmazon EC2 P3 インスタンスを非推奨としておりこれらを使用したコンピュートの起動はサポートされなくなります。これらのインスタンスをAWSが非推奨としているためです。

Databricks は、次の GPU アクセラレーション インスタンス タイプをサポートしています。

  • GPUタイプ:NVIDIA H100 Tensor Core GPU

インスタンス名

GPU の数

GPUメモリ

vCPU

CPUメモリ

p5.48xlarge

8

80GB×8

192

2TB

インスタンス名

GPU の数

GPUメモリ

vCPU

CPUメモリ

p5.48xlarge

8

80GB×8

192

2TB

考慮 事項​

すべての 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.amount を 0.5、 0.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 は、GPU を使用するために必要な NVIDIA ドライバーとライブラリを Spark ドライバーとワーカー インスタンスにインストールします。

  • CUDA Toolkit は、 /usr/local/cuda配下にインストールされます。
  • cuDNN: NVIDIA CUDA Deep ニューラルネットワーク ライブラリ.
  • NCCL: NVIDIA コレクティブ コミュニケーション ライブラリ。

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

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

注記

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

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

で GPU 対応の「Databricks Runtime Databricksバージョン」を選択すると、 NVIDIA EULACUDA は、 、cuDNN、Tesla ライブラリに関するものです。 NCCL ライブラリのNVIDIA エンド ユーザー ライセンス契約 (NCCL Supplement を含む)。

GPU コンピュートにおけるDatabricks Container Services​

備考

プレビュー

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

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

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

    このエラーを解決するには、別の可用性ゾーンでコンピュートを作成してみてください。 アベイラビリティーゾーンは、 Advanced > Access モードの コンピュート設定 にあります。また、リザーブドインスタンスの価格を確認してAWS追加のクォータを購入することもできます。

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

    • 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以降にアップグレードすることで解決できます。