GPU-enabled集群

請注意

一些支持gpu的實例類型是存在的β當您在集群創建過程中選擇驅動程序和工作者類型時,會在下拉列表中這樣標記。

概述

Databricks支持使用圖形處理單元(gpu)加速的集群。本文描述了如何使用支持GPU的實例創建集群,並描述了安裝在這些實例上的GPU驅動程序和庫。

要了解關於支持gpu的集群上的深度學習的更多信息,請參見深度學習

創建GPU集群

創建GPU集群類似於創建Spark集群集群).你應該記住以下幾點:

  • 磚的運行時版本的必須是支持gpu的版本,例如LTS ML (GPU, Scala 2.12, Spark 3.1.2)

  • 工作類型而且驅動程序類型必須是GPU實例類型。

  • 對於沒有Spark的單機工作流,可以將工人數量設置為零。

Databricks支持以下gpu加速實例類型:

  • P2實例類型係列: p2。Xlarge、p2.8xlarge和p2.16xlarge

  • P3實例類型係列: p3.2xlarge、p3.8xlarge和p3.16xlarge。

    • P3實例隻在特定的AWS區域中可用。信息,請參閱Amazon EC2定價.您的Databricks部署必須位於支持的區域,以啟動支持gpu的集群。

  • P4d實例類型係列: p4d.24xlarge。

    • P4d實例需要Databricks Runtime 9.1 LTS ML或以上版本。

  • G4實例類型係列,為在生產中部署機器學習模型進行了優化。

  • G5實例類型係列,它可以用於廣泛的圖形密集型和機器學習用例。

    • G5實例需要Databricks Runtime 9.1 LTS ML或以上版本。

對於所有gpu加速的實例類型,請記住以下幾點:

  • 由於亞馬遜現貨實例價格飆升,GPU現貨實例很難保留。如有需要,可按需使用。

  • 你可能需要申請增加限額以便創建支持gpu的集群。

看到支持實例類型查看支持的GPU實例類型及其屬性的列表。

GPU調度

Databricks Runtime 7.0 ML及以上版本支持GPU-aware調度從Apache Spark 3.0。Databricks在GPU集群上預配置。

單節點集群未開啟GPU調度功能。

spark.task.resource.gpu.amount是唯一一個與gpu感知調度相關的Spark配置,您可能需要更改。默認配置為每個任務使用一個GPU,如果使用所有GPU節點,這對於分布式推理工作負載和分布式訓練非常理想。要在節點子集上進行分布式訓練,這有助於減少分布式訓練期間的通信開銷,Databricks建議設置spark.task.resource.gpu.amount為集群中每個工作節點的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)

對於7.0以下的Databricks Runtime版本,為了避免多個Spark任務試圖使用相同的GPU發生衝突,Databricks會自動配置GPU集群,以便每個節點最多有一個正在運行的任務。這樣,任務就可以使用節點上的所有gpu,而不會與其他任務發生衝突。

NVIDIA GPU驅動,CUDA和cuDNN

Databricks安裝在Spark驅動程序和工作實例上使用gpu所需的NVIDIA驅動程序和庫:

  • CUDA工具包,安裝在/usr/local/cuda

  • cuDNN: NVIDIA CUDA深度神經網絡庫。

  • NCCL: NVIDIA集體通信庫。

包含的NVIDIA驅動版本為470.57.02,支持CUDA 11.0。

有關所包含的庫的版本,請參閱發布說明您正在使用的特定Databricks運行時版本。

請注意

本軟件包含NVIDIA公司提供的源代碼。具體來說,為了支持gpu, Databricks包含了來自CUDA樣品

NVIDIA最終用戶許可協議(EULA)

當您在Databricks中選擇啟用gpu的“Databricks運行時版本”時,您即默認同意英偉達EULA關於CUDA、cuDNN和Tesla庫,以及NVIDIA最終用戶許可協議(附NCCL附錄)NCCL圖書館。

GPU集群上的Databricks Container服務

預覽

此功能已在公共預覽

您可以使用磚容器服務在帶有gpu的集群上創建具有定製庫的便攜式深度學習環境。看到使用Databricks容器服務定製容器的指令。

要為GPU集群創建自定義映像,必須為GPU選擇標準運行時版本,而不是Databricks runtime ML。當您選擇使用您自己的Docker容器,可以選擇標準運行時版本的GPU集群。GPU集群的自定義鏡像是基於官方CUDA容器,與GPU的Databricks Runtime ML不同。

在為GPU集群創建自定義映像時,不能更改NVIDIA驅動程序版本,因為它必須與主機上的驅動程序版本匹配。

databricksruntime碼頭工人中心包含具有GPU功能的基本圖像示例。用於生成這些圖像的dockerfile位於示例容器GitHub倉庫,其中還詳細介紹了示例圖像提供了什麼以及如何自定義它們。

錯誤消息

  • 以下錯誤表明AWS雲提供商沒有足夠的容量用於請求的計算資源。錯誤:集群終止。原因:AWS不足實例能力失敗

    要解決這個問題,可以嚐試在不同的可用分區中創建集群。可用分區位於集群配置下,高級選項.你也可以複習AWS保留實例定價購買額外配額。

  • 如果您的集群使用P4d或G5實例類型和Databricks Runtime 7.3 LTS ML,則7.3中的CUDA包版本與較新的GPU實例不兼容。在這些情況下,像TensorFlow Keras和PyTorch這樣的ML包會產生如下錯誤:

    • TensorFlow Keras:InternalError:CUDA運行時隱式的初始化GPU: x失敗了。狀態:設備內核圖像無效的

    • PyTorch:UserWarning:英偉達A100-SXM4-40GBCUDA能力sm_80兼容的當前的PyTorch安裝。

    您可以通過升級到Databricks Runtime 10.4 LTS ML或更高版本來解決這些錯誤。