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

GPU対応コンピュート

注記

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

概要

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

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

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

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

  • Databricks RuntimeバージョンはRuntime 13.3 LTS ML (GPU、Scala 2.12.15、Spark 3.4.1) などの GPU 対応バージョンである必要があります。
  • ワーカータイプドライバータイプ は GPU インスタンスタイプである必要があります。

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

警告

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

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

  • GPU Type: NVIDIA H100 Tensor Core GPU

Instance Name

Number of GPUs

GPU Memory

vCPUs

CPU Memory

p5.48xlarge

8

80GBx8

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.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 は、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 を含む)。

Databricks Container Services on GPU コンピュート

備考

プレビュー

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

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

    このエラーを解決するには、別の可用性ゾーンでコンピュートを作成してみてください。 アベイラビリティーゾーンは、 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以降にアップグレードすることで解決できます。